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添加拦截器,进而交给负载均衡器去处理。

声明:文章属于个人原创,转载请注明文章出处

相关阅读:

springcloud学习手册-Ribbon(第一节)

原文发布于微信公众号 - 全华班(quanhuaban)

原文发表时间:2017-12-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

扫码关注云+社区