一篇文章掌握负载均衡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的可用性选择服务器】

相关推荐
山北雨夜漫步8 小时前
微服务01
分布式·微服务·架构
桌面运维家9 小时前
Linux网络负载均衡:Nginx实战优化Web性能
linux·网络·负载均衡
小七mod10 小时前
【Nacos】Nacos1.4.x服务注册源码分析
java·spring cloud·微服务·nacos·源码·集群·注册中心
sanggou10 小时前
Spring Cloud负载均衡组件到底是哪一个?
spring·spring cloud·负载均衡
西门吹雪分身11 小时前
nginx的负载均衡配置
nginx·github·负载均衡
天远云服12 小时前
PHP微服务风控架构:无缝接入天远劳动仲裁信息查询API排查用工黑产
大数据·微服务·架构·php
十月南城13 小时前
电商案例复盘:从单体到微服务的取舍账本——以业务增长阶段为主线复盘架构演进与决策依据
微服务·云原生·架构
重庆小透明13 小时前
微服务,不仅仅是“小服务”
java·后端·spring cloud·微服务·云原生·架构
中科三方14 小时前
DNS解析负载均衡:实现原理、核心策略与权威实践
运维·负载均衡
爱丽_14 小时前
Nginx 从入门到项目部署(反向代理 / 负载均衡 / 静态资源)
运维·nginx·负载均衡