SpringCloud Ribbon

SpringCloud Ribbon

上篇文章主要提到Eureka的服务注册和发现,本片文章主要讲述其服务的负载均衡

思考以下问题

  1. 负载均衡有哪些?
  2. Ribbon是什么?

分析如下

1.客户端负载均衡、服务器负载均衡(Nginx\F5)
2.Ribbon是Netflix发布云中键层服务开源项目,主要提供客户端负载均衡算法

架构图如下:

01
Ribbon工作步骤:

第一步先选择Eureka Server,优先选择同一个Zone且负载较少的Server
第二步根据用户指定的策略、再从Server取到服务注册列表中选择一个地址,其提供多种策略,例如(轮询、随机、根据响应时间加权等)

@LoadBalanced注册到微服务上可以实现负载均衡,此时默认算法是轮询

接下来分析Ribbon的定制化配置

适用场景:有些服务需要自定义策略、有些服务需要采用默认策略,Ribbon同时支持针对多个服务多种策略

配置方式如下

  1. 同@SpringBootApplication注解配置一起,@RibbonClient(name=“服务应用名”,configuration=CheckConfiguration.class),此时CheckConfiguration.class不能和Application放到同个package下,否则启动加载会覆盖掉
 @Configuration
 public class CheckConfiguration{
     @Bean
     public  IRule ribbonRule(IClientConfig config){
          return new RandomRule();//随机
     }
   }
  1. 自定义CheckConfiguration.class类同Application放到同个package下,此时可以使用排查加载注解 @ComponentScan(excludeFilters={@ComponentScan.Filter(type=FilterType.ANNOTATION,value=ExcludeComponentScan.class)})
 public @interface ExcludeComponentScan{

   }

此时CheckConfiguration加上排查扫描加载类注解

 @Configuration
 @ExcludeComponentScan
 public class CheckConfiguration{
     @Bean
     public  IRule ribbonRule(IClientConfig config){
          return new RandomRule();//随机
     }
   }
  1. 通过配置application.yml 提供者应用名 : ribbon:NFLoadBlancerRuleClassName:com.netflix.loadblancer.RandomRule
    直接指定随机策略

调用者可以使用如下

 @RestController
 public class MovieController{
 	@Autowired
    private LoadBalancerClient loadBalancerClient;//Ribbon API
    
    @GetMapping("/test1")
     public  String test1(){
         ServiceInstance  serviceInstance=this.loadBalancerClient.choose("服务提供者ServiceId");
         System.out.println("Host:"+serviceInstance.getHost()+":"+"Port:"+serviceInstance.getPort()+":"+"ServiceId:"+serviceInstance.getServiceId())
     }
   }

Ribbon也可以在脱离Eureke下使用,如果 Eureka Server上有多个服务,Ribbon可以禁止使用它,application.yml 配置ribbon:eureka:enabled:false

总结:本文主要讲述Ribbon作为客户端负载均衡的使用方式,以及在多个服务下如何自定义服务策略达到高效目的

作者简介:张程 技术研究

更多文章请关注微信公众号:zachary分解狮 (frankly0423)

公众号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值