负载均衡Netflix Ribbon
Netflix Ribbon是一个经过实战检验的进程间通信库(IPC),专为远程过程调用设计,它内置了软件负载均衡器,广泛应用于高负载的云环境,Ribbon以Java为主要编程语言实现,支持多种序列化方案,核心设计围绕REST调用展开。
Netflix Ribbon简介
Netflix Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起,Ribbon属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。
Ribbon的核心组件
IRule:根据特定算法从服务列表中选取一个要访问的服务,其实现类包括轮询、随机、可用性过滤、加权响应时间等多种策略。
Ribbon的工作步骤
1、先选择EurekaServer,它优先选择在同一个区域内负载较少的Server。
2、根据用户指定的策略,从Server取到的服务注册列表中选择一个地址。
为什么IRule默认使用RoundRobinRule?
首先从RestTemplate添加注解@LoadBalanced可知,负载均衡离不开LoadBalancerClient接口,该接口只有一个实现类:RibbonLoadBalancerClient,在获取Server时,默认key为default,因此默认使用RoundRobinRule策略。
单元表格:Ribbon核心组件及其功能
组件 | 功能描述 |
IRule | 根据特定算法从服务列表中选取一个要访问的服务。 |
RoundRobinRule | 最基础的轮询算法--默认使用的算法。 |
RandomRule | 随机选取。 |
AvailabilityFilteringRule | 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问。 |
WeightedResponseTimeRule | 根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高,刚启动时如果统计信息不足,会使用 RoundRobinRule策略,等统计信息足够,会切换到WeightedResponseTimeRule。 |
RetryRule | 先按照 RoundRobinRule策略获取服务,如果获取服务失败则在指定时间内会进行重试获取可用的服务。 |
BestAvailableRule | 先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选取一个并发量最小的服务。 |
ZoneAvoidanceRule | 复合判断Server所在区域的性能和Server的可用性来选择服务器。 |
相关问题与解答栏目
问题1:什么是Netflix Ribbon?
答:Netflix Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起,它是一个基于HTTP和TCP的客户端负载均衡工具,可以在分布式系统中实现高效的负载均衡。
问题2:Netflix Ribbon有哪些核心组件?
答:Netflix Ribbon的核心组件包括IRule,它是根据特定算法从服务列表中选取一个要访问的服务的规则,具体实现类有RoundRobinRule(轮询)、RandomRule(随机)、AvailabilityFilteringRule(可用性过滤)、WeightedResponseTimeRule(加权响应时间)、RetryRule(重试)、BestAvailableRule(最佳可用)和ZoneAvoidanceRule(区域回避)等。
各位小伙伴们,我刚刚为大家分享了有关“负载均衡netflix”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/642468.html