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 条评论
登录 后参与评论

相关文章

来自专栏F_Alex

SpringCloud-客户端的负载均衡Ribbon(三)

1253
来自专栏编程软文

SpringCloud微服务框架搭建

2419
来自专栏kl的专栏

Apollo应用之动态调整线上数据源(DataSource)

博主之前写过使用apollo的配置动态推送能力来动态修改线上环境的日志输出级别,具体可见《spring boot动态调整线上日志级别》,今天来实现一个类似的应用...

3607
来自专栏F_Alex

SpringCloud-容错处理Hystrix熔断器(五)

1463
来自专栏芋道源码1024

注册中心 Eureka 源码解析 —— Eureka-Server 启动(一)之 ServerConfig

本文主要基于 Eureka 1.8.X 版本 1. 概述 2. EurekaServerConfig 2.1 类关系图 2.2 配置属性 2.3 Default...

3385
来自专栏帅小子的日常

SSM三大框架整合

41513
来自专栏battcn

一起来学SpringBoot | 第十二篇:初探RabbitMQ消息队列

MQ全称(MessageQueue)又名消息队列,是一种异步通讯的中间件。可以将它理解成邮局,发送者将消息传递到邮局,然后由邮局帮我们发送给具体的消息接收者(消...

681
来自专栏冷冷

基于Spring Cloud 少量配置完成单点登录开发

单点登录概念 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登...

3466
来自专栏Java修行之道

常用数据库连接池 (DBCP、c3p0、Druid) 配置说明

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性...

1034
来自专栏程序猿DD

Spring Cloud实战小贴士:Feign的继承特性(伪RPC模式)

通过之前发布的《Spring Cloud构建微服务架构:服务消费者(Feign)》,我们已经学会如何使用Spring MVC的注解来绑定服务接口。我们几乎完全可...

2258

扫描关注云+社区