[toc]

作者:雨中散步撒哈拉
来源:https://liudongdong.top
公众号:雨中散步撒哈拉
备注:欢迎关注公众号,学习技术,一起成长!
吃水不忘挖井人:https://www.bilibili.com/video/BV18E411x7eT

一、Ribbon是什么

Spring Cloud RibbonNetflix是基于 Ribbon实现的一套客户端负载均衡的工具。
简单的说, RibbonNetflix是发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。 Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。
简单的说,就是在配置文件中列出 Load Balancer(简称LB)后面所有的机器, Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们很容易使用 Ribbon实现自定义的负载均衡算法。

如果微服务才有Eureka做注册中心,其中已包含ribbon组件。
image.png

二、负载均衡

1. LB负载均衡(Load Balance)是什么

简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。
常见的负载均衡有软件 Nginx,LVS,硬件F5等。

  1. Ribbon本地负载均衡客户端 VS Nginx服务端负载均衡区别
  2. Nginx是服务器负载均衡,客户端所有请求都会交给 nginx,然后由 nginx实现转发请求。即负载均衡是由服务端实现的。

Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远
程服务调用技术。

2. 集中式LB

即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如ngix),由该设施负责把访问请求通过某种策
略转发至服务的提供方;

3. 进程内LB

将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。
Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。

三、ribbon在eureka中的体现

1. 服务运行架构

image.png
Ribbon在工作时分成两步

  1. 先选择 EurekaServer,它优先选择在同一个区域内负载较少的 server.
  2. 再根据用户指定的策略,在从 server取到的服务注册列表中选择一个地址。

2. 代码中的多种实现

其中 Ribbon提供了多种策略:比如轮询、随机和根据响应时间加权。
image.png

3. 多种负载策略

image.png

Q.E.D.


只有创造,才是真正的享受,只有拚搏,才是充实的生活。