5.1 Ribbon 介绍
5.1.1 Ribbon 是什么
- Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端 负载均衡的工具。
- Ribbon 主要功能是提供客户端负载均衡算法和服务调用
- Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。
- Ribbon 会基于某种规则(如简单轮询,随机连接等)去连接指定服务
- 程序员很容易使用 Ribbon 的负载均衡算法实现负载均衡
- 一句话: Ribbon: 负载均衡+RestTemplate 调用
5.1.2 官网
5.1.2.1 https://github.com/Netflix/ribbon
5.1.3 Ribbon 进入维护状态
- 官网地址: https://github.com/Netflix/ribbon
- Ribbon 目前进入维护模式, 未来替换方案 是 Spring Cloud LoadBalancer
5.1.4 LB(Load Balance)
5.1.4.1 LB 分类
- 集中式 LB
即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是
软件,如Nginx),由该设施负责把访问请求通过某种策略转发至服务的提供方; LB(Load Balance 负载均衡) - 进程内 LB
将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些服务地址可用,然后再
从这些地址中选择出一个合适的服务地址。
Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获
取到服务提供方的地址
5.1.4.2 实例-前面 member-consumer 轮询负载访问 10000/10002 底层就是 Ribbon 默认的轮询负载算法
5.2 Ribbon 原理
5.2.1 Ribbon 架构图&机制
Ribbon 机制
- 先选择 EurekaServer,它优先选择在同一个区域内负载较少的 server
- 再根据用户指定的策略,在从 server 取到的服务注册列表中选择一个地址
- Ribbon 提供了多种策略∶ 比如轮询、随机和根据响应时间加权。
5.2.2 Ribbon 常见负载算法:
5.3 替换负载均衡算法-应用实例
5.3.1 需求分析/图解
- 需求: 将默认的轮询算法改成随机算法 RandomRule
- 浏览器输入 : http://localhost/member/consumer/get/1
- 要求 访问的 10000/10002 端口的服务是随机的