Ribbon 快速上手

Ribbon 快速上手

Ribbon 是一个负载均衡组件,基于Http和TCP客户端的负载均衡工具,通过spring cloud 封装,面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。有多种负载均衡的策略。不需要,像注册中心之类的需要部署,Ribbon 可以存在每一个spring Cloud 构建的微服务基础设施中,Feign,zuul都集成了Ribbon

Ribbon官网文档

spring Cloud Ribbon 官中


image-20220508161708579

负载均衡策略

image-20220509110406867

内置策略

策略类策略描述实现
RandomRule随机随机调用 service
RoundRobinRule轮询循环选择 service
RetryRule重试对选定的负载均衡策略机上重试在一个配置时间段内当选择服务器不成功,则一直尝试 subRule 方式选择一个可用 服务
BestAvailableRule最低并发选择一个并发请求量最少的服务器逐个考察服务器,如果服务器的断路器打开,则忽略,再选择其他并发连接数最低的服务
AvailabilityFiteringRule可用过滤过滤一直连接失败的并标记为 circuit tipped 的服务
过滤高并发连接服务器(active connections 超过配置值)
使用 AvailabilityPredicate 来包含过滤服务器逻辑。
WeightedResponseTimeRule响应时间加权根据服务器的响应时间分配权重,响应时间越长,权重月底前后台线程,定期从status 中读取响应时间,计算权重。
第一次计算前使用轮训的策略选择服务器
ZoneAvoidanceRule区域权衡综合判断服务器所在区域的性能和服务器可用性来轮询选择服务器,并且判断一个Zone的运气性能是否可用。自动剔除不可用的 Zone 中的所有服务器使用 ZoneAvoidancePredicate 和 AvailabilityPredicate 来判断是否选择某个服务器,前一个判断判定一个zone 的运行性能是否可用,剔除不可用的zone 的所有服务器,AvailabilityPredicate 则用与过滤掉连接数过多的服务器

核心 接口

接口描述默认实现类
IClientConfig定义Ribbon 中管理配置接口DefaultClientConfigImpl
IRule定义Ribbon 中负载均衡的策略接口ZoneAvoidanceRule
IPing定义定期ping 服务检测可用性的接口DummyPing
ServerList<Server>定义获取服务列表方法的接口ConfigurationBasedServerList
ServerListFilter<Server>定义期望获取服务列表方法接口ZonePreferenceServerLsitFilter
ILoadBalancer定义负载均衡选择服务的核心方法的接口ZoneAwareLoadBalancer
ServerListUpDater为 DynamicServerListLoadBalancer 定义动态跟新服务列表的接口PollingServerListUpdater

项目实战

在此项目上修改的

nocas 本身就是使用 ribbon 做的负载均衡,只需要简单的配置即可
这里 IRule 是现象的策略,需要什么策略直接 new 即可。其他的地方代码都不需要修改

image-20220509113842756
image-20220509114446333

底部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值