首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

springcloud学习手册-Ribbon

整合ribbon

一、如何添加并整合Ribbon

这段英文中主要提到添加整合Ribbon,需要引入spring-cloud-starter-ribbon 这个资源,但默认spring-cloud-starter-erueka的资源包已经包含了对于ribbon的实现。所以在pom.xml 配置中就不需要引入这个资源路径了。前面咱们已经介绍过erueka的引入和实现。

二、怎么使用Ribbon呢?使用Ribbon非常简单,不信往下看。

如何使用ribbon呢,主要是在启动类中添加@LoadBalanced注解。

在RestTemplate 上面添加@LoadBalanced这个注解,就可以实现使用ribbon;服务消费者直接通过调用被@LoadBalanced 注解修饰过的RestTemplate 来实现面向服务的接口调用 。RestTemplate,会使用Ribbon的自动化配置,通过@LoadBalanced开启客户端负载均衡。

GET请求 :getForEntity函数,它是对HTTP请求响应的封闭,其中主要存储了HTTP的几个重要元素。其它还包含:POST请求、PUT请求、DELETE请求。

三、Ribbon使用的策略

使用的是默认的策略,默认是轮询策略

四、@LoadBalancerClient

在Riibon中一个重要的组件为LoadBalancerClient,它作为负载均衡的一个客户端。它在spring-cloud-commons包下的LoadBalancerClient是一个接口,它的实现类是RibbonLoadBalancerClient 。最终的负载均衡的请求处理,由它来执行。

LoadBalancerClient是在初始化的时候,会向Eureka回去服务注册列表,并且向通过10s一次向EurekaClient发送“ping”,来判断服务的可用性,如果服务的可用性发生了改变或者服务数量和之前的不一致,则更新或者重新拉取。LoadBalancerClient有了这些服务注册列表,就可以根据具体的IRule来进行负载均衡。

五、为什么在RestTemplate加一个@LoadBalance注解就可以开启负载均衡呢?

LoadBalancerAutoConfiguration类,即LoadBalancer自动配置类。在该类中,首先维护了一个被@LoadBalanced修饰的RestTemplate对象的List,在初始化的过程中,通过调用customizer.customize(restTemplate)方法来RestTemplate增加拦截器LoadBalancerInterceptor。而LoadBalancerInterceptor,用于实时拦截,在LoadBalancerInterceptor这里实现来负载均衡。

六、总结

Ribbon的负载均衡,主要通过LoadBalancerClient来实现的,而LoadBalancerClient具体交给了ILoadBalancer来处理,ILoadBalancer通过配置IRule、IPing等信息,并向EurekaClient获取注册列表的信息,并默认10秒一次向EurekaClient发送“ping”,进而检查是否更新服务列表,最后,得到注册列表后,ILoadBalancer根据IRule的策略进行负载均衡。

而RestTemplate 被@LoadBalance注解后,能过用负载均衡,主要是维护了一个被@LoadBalance注解的RestTemplate列表,并给列表中的RestTemplate添加拦截器,进而交给负载均衡器去处理。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171214G0MR7U00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券