Spring Cloud Ribbon 是一个客户端负载均衡工具 , 用于提供客户端的软件负载均衡算法和服务调用
- SpringCloud教程合集: https://www.cnblogs.com/spzmmd/tag/微服务教程/
- 案例项目地址: https://gitee.com/spzmmd/spring-cloud-demo
集中式LB(负载均衡)在服务提供者和消费者之间独立出一个负载均衡设施(硬件、nginx等) , 由该设施负责通过策略来转发请求
进程式LB(负载均衡)将负载均衡逻辑集成于服务消费者 , 消费者从注册中心里获取哪些地址可以用 , 然后自己根据策略来选择合适服务
Ribbon本地负载均衡客户端和Nginx服务端负载均衡的区别
- Nginx是服务器负载均衡(集中式LB) , 所有请求交给Nginx转发 , 负载均衡由服务端实现
- Ribbon是本地负载均衡(进程式LB) , 客户端会从注册中心获取服务注册列表缓存到JVM本地 , 而后在本地实现RPC远程调用
<!-- eureka client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>其他情况下需要加入Ribbon依赖:【springchicken [SpringCloud教程]5. Ribbon负载均衡】
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId><version>2.2.5.RELEASE</version></dependency>前文基于Eureka的服务注册发现案例模块里 , 使用了支持Ribbon负载均衡的的RestTemplate工具(只需要在RestTemplate的Bean声明里加入注解@LoadBalanced即可) , 所以这里不再赘述Ribbon集成方法 。Ribbon负载均衡算法(了解)Ribbon的负载均衡实现均继承自接口IRule , 常见实现算法如下:
- RoundRobinRule: 默认轮询的方式
- RandomRule: 随机方式
- WeightedResponseTimeRule: 根据响应时间来分配权重的方式 , 响应的越快 , 分配的值越大 。
- BestAvailableRule: 选择并发量最小的方式
- RetryRule: 在一个配置时间段内当选择server不成功 , 则一直尝试使用subRule的方式选择一个可用的server
- ZoneAvoidanceRule: 复合判断server所在区域的性能和server的可用性选择服务器
- AvailabilityFilteringRule: 先过滤掉故障实例 , 再选择并发较小的实例
- 轮询算法公式
调用服务器位置下标 = rest接口第几次请求数 % 服务器集群总数量
- 自定义负载均衡算法参考
https://blog.csdn.net/shunhua19881987/article/details/75466797
- QQ群
欢迎加入Java交流群(qq群号: 776241689 )
- 欢迎关注公众号"后端技术学习分享"获取更多技术文章!
PS:小到Java后端技术、计算机基础知识 , 大到微服务、Service Mesh、大数据等 , 都是本人研究的方向 。我将定期在公众号中分享技术干货 , 希望以我一己之力 , 抛砖引玉 , 帮助朋友们提升技术能力 , 共同进步!
文章插图
- 博客
- 掘金
- CSDN
- 博客园
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
