第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

nacos&ribbon

標(biāo)簽:
Java

整合nacos

先整合spring cloud alibaba

<dependencyManagement>
    <dependencies>
        <!--    整合spring cloud-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!--            整合spring cloud alibaba-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>0.9.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

导入nacos

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

不需写注解,配置好配置文件

spring
    cloud:
      nacos:
        discovery:
          server-addr: 127.0.0.1:8848
          cluster-name: BJ #集群名称
    application:
      name: content-center #服务名称


整合ribbon

依赖已经在nacos中一起导入了

https://img1.sycdn.imooc.com//60eaa37e00019cb811630571.jpg

在启动类中restTemplate,加上注解

@LoadBalanced//为restTemplate整合Ribbon

配置负载均衡规则

https://img1.sycdn.imooc.com//60eaa45900010bb719200668.jpg

在包外面定义ribbon所使用的规则


https://img1.sycdn.imooc.com//60eaa4900001aebb19201034.jpg

在包内运用该规则

@RibbonClient(name = "user-center",configuration = RibbonConfiguration.class)//单独配置
@RibbonClients(defaultConfiguration = RibbonConfiguration.class)//全局配置

建议在配置文件中直接定义规则

#指定该服务用到RandomRule规则
#user-center:
#  ribbon:
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule



饥饿加载:减少第一次访问的时间

#指定该服务开启饥饿加载
ribbon:
  eager-load:
    clients: user-center # 后面可用逗号分隔为那些服务进行饥饿加载,解决首次加载过慢:user-center,user-center2,user-center3.....
    enabled: true


以下规则直接在包外配置文件RibbonConfiguration中配置调用

nacos搭配ribbon调用权重大的服务

package com.itmuch.usercenter.configuretion;

import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.*;
import com.netflix.ribbon.proxy.annotation.Var;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties;
import org.springframework.cloud.alibaba.nacos.ribbon.NacosServer;

@Slf4j
public class NacosWeightedRule extends AbstractLoadBalancerRule {

    @Autowired
    private NacosDiscoveryProperties nacosDiscoveryProperties;

    @Override
    public void initWithNiwsConfig(IClientConfig iClientConfig) {
        //读取配置文件并初始化NacosWeightedRule
        //暂时用不到,robbon里面的规则这个也都用不到
    }

    @Override
    public Server choose(Object o) {
        try {
            //ribbon的入口,需要用到getname,所以用BaseLoadBalancer强转一下
            BaseLoadBalancer  loadBalancer = (BaseLoadBalancer) this.getLoadBalancer();
//        log.info("lb:{}",loadBalancer);
            String name = loadBalancer.getName();

            //实现负载均衡算法
            NamingService namingService = nacosDiscoveryProperties.namingServiceInstance();//拿到服务发现的相关API

            //nacos client自动通过基于权重的负载均衡算法,给我们一个实例
            Instance instance = namingService.selectOneHealthyInstance(name);
            log.info("选择的实例是:port:{},instance:{}",instance.getPort(),instance);
            return new NacosServer(instance);
        } catch (NacosException e) {
            return null;
        }
    }
}
//public class NacosWeightedRule implements IRule {
//    @Override
//    public Server choose(Object o) {
//        return null;
//    }
//
//    @Override
//    public void setLoadBalancer(ILoadBalancer iLoadBalancer) {
//
//    }
//
//    @Override
//    public ILoadBalancer getLoadBalancer() {
//        return null;
//    }


nacos调用不同集群下的服务

package com.itmuch.usercenter.configuretion;

import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.*;
import com.netflix.ribbon.proxy.annotation.Var;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties;
import org.springframework.cloud.alibaba.nacos.ribbon.NacosServer;

@Slf4j
public class NacosWeightedRule extends AbstractLoadBalancerRule {

    @Autowired
    private NacosDiscoveryProperties nacosDiscoveryProperties;

    @Override
    public void initWithNiwsConfig(IClientConfig iClientConfig) {
        //读取配置文件并初始化NacosWeightedRule
        //暂时用不到,robbon里面的规则这个也都用不到
    }

    @Override
    public Server choose(Object o) {
        try {
            //ribbon的入口,需要用到getname,所以用BaseLoadBalancer强转一下
            BaseLoadBalancer  loadBalancer = (BaseLoadBalancer) this.getLoadBalancer();
//        log.info("lb:{}",loadBalancer);
            String name = loadBalancer.getName();

            //实现负载均衡算法
            NamingService namingService = nacosDiscoveryProperties.namingServiceInstance();//拿到服务发现的相关API

            //nacos client自动通过基于权重的负载均衡算法,给我们一个实例
            Instance instance = namingService.selectOneHealthyInstance(name);
            log.info("选择的实例是:port:{},instance:{}",instance.getPort(),instance);
            return new NacosServer(instance);
        } catch (NacosException e) {
            return null;
        }
    }
}
//public class NacosWeightedRule implements IRule {
//    @Override
//    public Server choose(Object o) {
//        return null;
//    }
//
//    @Override
//    public void setLoadBalancer(ILoadBalancer iLoadBalancer) {
//
//    }
//
//    @Override
//    public ILoadBalancer getLoadBalancer() {
//        return null;
//    }











點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開發(fā)工程師
手記
粉絲
0
獲贊與收藏
1

關(guān)注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消