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

相关推荐
星期一研究室39 分钟前
用视频与文件,给文档注入生命力
微服务·产品·设计
天远Date Lab6 小时前
分布式微服务实战:基于天远车辆估值构建自动化车价评估网关
人工智能·分布式·微服务·自动化
飞鸟真人7 小时前
亿级用户IM系统 之 接入网关负载均衡架构(一、网络结构与DPVS部署)
架构·负载均衡·亿级im系统
judezh7 小时前
一次 agent 请求要经过 12 个服务,它们分别在替你做什么
微服务·架构
YOU OU7 小时前
多机部署/负载均衡-LoadBalance
运维·负载均衡
随遇而安zx8 小时前
Spring Cloud Gateway 微服务网关 设计思想与深度解析
java·spring cloud·微服务·架构
新兴AI民工8 小时前
# 【Linux内核三十六】进程管理模块:CFS负载均衡(一):sched_domain与sched_group层级构建
linux·运维·负载均衡
星期一研究室1 天前
原来知识库,还能这么玩?
微服务·产品·设计
2601_962219012 天前
版本平滑升级架构:万象生鲜系统 V4.3.3 迭代无停机更新技术拆解
微服务·云原生·架构
2601_962218472 天前
万象生鲜系统冷链物联网接入技术实现生鲜企业温控管理数字化
大数据·运维·微服务·云原生·架构