一篇文章掌握负载均衡Ribbon作用和架构以及核心组件

目录

1、Ribbon是什么

2、Ribbon的作用

1.集中式LB

2.进程式LB

3、Ribbon负载均衡架构

总结:

4、Ribbon核心组件IRule


1、Ribbon是什么

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具

简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将

NetFlix的中间层服务连接在一起。

Ribbon的客户端组件提供一系列完整的配置项如:连接超时、重试等等。简单的说,就是在配置

文件中列出LoadBalancer(简称LB:负载均衡 )后面所有的机器,Ribbon会自动的帮助你基于某

种规则(如简单轮询,随机连接等等)去连接这些机器。我们也很容易使用Ribbon实现自定义的

负载均衡算法!

2、Ribbon的作用

LB,即负载均衡 (Load Balance),在微服务或分布式集群中经常用的一种应用。

负载均衡简单的说就是将用户的请求平摊的分配到多个服务上 ,从而达到系统的HA(高可用)。

常见的负载均衡软件有 Nginx,Lvs 等等。

SpringCloud的负载均衡算法,可以自定义负载均衡简单分类:

1.集中式LB

  • 即在服务的消费方和提供方之间使用独立的LB设施

  • 如之前学习的Nginx,由该设施负责把访问请求通过某种策略转发至服务的提供方!

2.进程式LB

  • 将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地 址中选出一个合适的服务器。

  • Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务 提供方的地址!

Ribbon的github地址 : GitHub - Netflix/ribbon: Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support.Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support. - GitHub - Netflix/ribbon: Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support.https://github.com/NetFlix/ribbon

Ribbon和Eureka整合后Consumer可以直接调用服务而不用再关心地址和端口号!

3、Ribbon负载均衡架构

Ribbon在工作时分成两步:

  • 第一步,先选择EurekaServer,它优先选择在同一个区域内负载均衡较少的Server。

  • 第二步,在根据用户指定的策略,在从server去到的服务注册列表中选择一个地址。

其中Ribbon提供了多种策略,比如轮询(默认),随机和根据响应时间加权重等等

总结:

Ribbon其实就是一个软负载均衡的客户端组件,他可以和其他所需请求的客户端结合使用,和

Eureka结合只是其中的一个实例。

4、Ribbon核心组件IRule

IRule:根据特定算法从服务列表中选取一个要访问的服务

  • RoundRobinRule轮询

  • RandomRule随机

  • AvailabilityFilterRule【会先过滤掉由于多次访问故障而处于断路器跳闸的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问】

  • WeightedResponseTimeRule【根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大,被选中的概率越高,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等待统计信 息足够,会切换到WeightedResponseTimeRule】

  • RetryRule【先按照RoundRobinRule的策略获取服务,如果获取服务失败,则在指定时间内会进行重试,获取可用的服务】

  • BestAvailableRule【会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务】

  • ZoneAvoidanceRule【默认规则,复合判断server所在区域的性能和server的可用性选择服务器】

相关推荐
白仑色4 小时前
Spring Cloud Gateway 实战指南
spring boot·微服务·路由转发·限流熔断
小郭的学习日记14 小时前
互联网大厂Java面试:从Spring Boot到微服务的场景应用
spring boot·微服务·java面试·技术栈·电商平台
金心靖晨16 小时前
笔记-极客-DDD实战-基于DDD的微服务拆分与设计
java·笔记·微服务
Kookoos19 小时前
ABP VNext + 多级缓存架构:本地 + Redis + CDN
redis·缓存·微服务·架构·abp vnext
DATAO丶19 小时前
ALB、NLB、CLB 负载均衡深度剖析
运维·计算机网络·负载均衡
撰卢2 天前
【个人笔记】负载均衡
运维·笔记·负载均衡
喵叔哟2 天前
27.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--币种服务(一)
微服务·架构·.net
天上掉下来个程小白2 天前
MybatisPlus-06.核心功能-自定义SQL
java·spring boot·后端·sql·微服务·mybatisplus
✧北辰٩(ˊωˋ*)و南冥✧3 天前
nginx 负载均衡配置(加解决重复登录问题)
运维·nginx·负载均衡
大曰编程3 天前
分布式系统高可用性设计-负载均衡与容错机制深度解析
负载均衡