重庆荣昌网站建设价格,网站设计公司网站设计,wordpress 设置不生效,北京建设工程联合验收网站接上一章节Eureka 服务注册中心自我保护机制#xff0c;这里讲讲Ribbon 是什么 Ribbon 是什么
通常说的负载均衡是指将一个请求均匀地分摊到不同的节点单元上执行#xff0c;负载均和分为硬件负载均衡和软件负载均衡#xff1a;
**硬件负载均衡#xff1a;**比如 F5、深信… 接上一章节Eureka 服务注册中心自我保护机制这里讲讲Ribbon 是什么 Ribbon 是什么
通常说的负载均衡是指将一个请求均匀地分摊到不同的节点单元上执行负载均和分为硬件负载均衡和软件负载均衡
**硬件负载均衡**比如 F5、深信服、Array 等 **软件负载均衡**比如 Nginx、LVS、HAProxy 等
硬件负载均衡或是软件负载均衡他们都会维护一个可用的服务端清单通过心跳检测来剔除故障的服务端节点以保证清单中都是可以正常访问的服务端节点。当客户端发送请求到负载均衡设备的时候该设备按某种算法比如轮询、权重、 最小连接数等从维护的可用服务端清单中取出一台服务端的地址然后进行转发。
Ribbon 是 Netflix 发布的开源项目主要功能是提供客户端的软件负载均衡算法是一个基于 HTTP 和 TCP 的客户端负载均衡工具。 Spring Cloud 对 Ribbon 做了二次封装可以让我们使用 RestTemplate 的服务请求自动转换成客户端负载均衡的服务调用。 Ribbon 支持多种负载均衡算法还支持自定义的负载均衡算法。 Ribbon 只是一个工具类框架比较小巧Spring Cloud 对它封装后使用也非常方便它不像服务注册中心、配置中心、API 网关那样需要独立部署Ribbon只需要在代码直接使用即可
Ribbon 与 Nginx 的区别 : Ribbon 是客户端的负载均衡工具而客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置不同在客户端负载均衡中所有客户端节点下的服务端清单需要自己从服务注册中心上获取比如 Eureka 服务注册中心。同服务端负载均衡的架构类似在客户端负载均衡中也需要心跳去维护服务端清单的健康性只是这个步骤需要与服务注册中心配合完成。在 Spring Cloud 中由于 Spring Cloud 对 Ribbon 做了二次封装所以默认会创建针对 Ribbon 的自动化整合配置
在 Spring Cloud 中Ribbon 主要与 RestTemplate 对象配合起来使用Ribbon会自动化配置RestTemplate 对象通过**LoadBalanced** 开启 RestTemplate对象调用时的负载均衡。
Ribbon 负载均衡策略
轮询策略默认
策略对应类名RoundRobinRule
实现原理轮询策略表示每次都顺序取下一个 provider比如一共有 5 个 provider第1次取第1个第2次取第2个第3次取第3个以此类推。
权重轮询策略
策略对应类名WeightedResponseTimeRule
实现原理
根据每个 provider 的响应时间分配一个权重响应时间越长权重越小被选中的可能性越小。原理一开始为轮询策略并开启一个计时器每 30 秒收集一次每个 provider 的平均响应时间当信息足够时给每个 provider 附上一个权重并按权重随机选择 provider越高权重的 provider 会被高概率选中。
随机策略
策略对应类名RandomRule 实现原理从 provider 列表中随机选择一个。
最少并发数策略
策略对应类名BestAvailableRule 实现原理选择正在请求中的并发数最小的 provider除非这个 provider 在熔断中。
重试策略
策略对应类名RetryRule
实现原理其实就是轮询策略的增强版轮询策略当服务不可用时不做处理而重试策略在服务不可用时会重新尝试集群中的其他节点。
可用性敏感策略
策略对应类名AvailabilityFilteringRule 实现原理过滤性能差的 provider
第一种过滤掉在 Eureka 中处于一直连接失败的 provider第二种过滤掉高并发繁忙的 provider
区域敏感性策略
策略对应类名ZoneAvoidanceRule
实现原理
以一个区域为单位考察可用性对于不可用的区域整个丢弃从剩下区域中选可用的 provider如果这个 ip 区域内有一个或多个实例不可达或响应变慢都会降低该 ip 区域内其他 ip 被选中的权重