spring cloud alibaba 基本负载均衡(二)

1、ribbon 负载均衡策略:

策略类   命名 描述
RandomRule 随机策略 随机选择server
RoundRobinRule 轮询策略 轮询选择, 轮询index,选择index对应位置的Server;
RetryRule 重试策略 对选定的负载均衡策略机上重试机制,在一个配置时间段内当选择Server不成功,则一直尝试使用subRule的方式选择一个可用的server;
BestAvailableRule 最低并发策略 逐个考察server,如果server断路器打开,则忽略,再选择其中并发链接最低的server
AvailabilityFilteringRule 可用过滤策略 过滤掉一直失败并被标记为circuit tripped的server,过滤掉那些高并发链接的server(active connections超过配置的阈值)或者使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个Server的运行状态;
ResponseTimeWeightedRule 响应时间加权重策略 根据server的响应时间分配权重,响应时间越长,权重越低,被选择到的概率也就越低。响应时间越短,权重越高,被选中的概率越高,这个策略很贴切,综合了各种因素,比如:网络,磁盘,io等,都直接影响响应时间
ZoneAvoidanceRule 区域权重策略 综合判断server所在区域的性能,和server的可用性,轮询选择server并且判断一个AWS Zone的运行性能是否可用,剔除不可用的Zone中的所有server

2、ribbon 继承关系:

3、ribbon 配置方式:

        1、 配置类的方式:用户选择配置类的方式选择已有的负载均衡策略,配置类不能放在@ComponentScan所扫描的当前包以及子包下,否则会全局覆盖为当前的负载均衡策略。

        

@Configuration
public class RibbonConnfig {

    @Bean
    public IRule iRule(){
        return  new NacosRule(); // 新建已有的负载均衡类或者自定义的负载均衡类
    }
}

           2、配置文件的方式:

                服务名:

                        ribbon:

                                NFLoadBalanceRuleCLassName:负载均衡全类名

server:
  port:8080
stock-service:
  ribbon:
    NFLoadBalancerRuleClassName:com.alibaba.cloud.nacos.ribbon.NacosRule

        以上配置方式选择一种即可。

4、实现ribbon:

        启动类添加注解:可以针对每一个服务调用不同的负载均衡策略。

        

@SpringBootApplication
@RibbonClients(value = {@RibbonClient(name = "stock-service",configuration = RibbonConnfig.class)}) // ribbon 注解,name 掉用的服务名称,configuration 调用的ribbon策略
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class,args);
    }


    @Bean
    @LoadBalanced // 添加负载均衡的机制,默认使用的是轮询策略
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        return builder.build();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_31319235/article/details/121378121
今日推荐