当前位置: 首页 > news >正文

Spring cloud alibaba(二)RibbonLoadBalance

一、负载均衡

        其含义就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行;(就是客户端调用服务提供方时的如何调用多个实例的策略)

1、主流负载均衡的方案

        集中式负载均衡:在消费者和服务提供方中间使用独立的方式进行负载;(Nginx)

        客户端根据自己的请求情况做负载均衡,Ribbon就属于客户端自己做负载均衡;

2、客户端的负载均衡

        例如Spring cloud中的Ribbon,客户端会有一个服务器地址列表,再请求发送前通过负载均衡算法选择一个服务器;即在客户端就进行负载均衡算法分配;

3、常见的负载均衡算法

        随机、轮训、加权轮训、地址hash、最小连接数;

二、Ribbion

        Spring Cloud Ribbon是基于Netflix Ribbon 实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现我们自己的负载均衡算法。

1、Ribbon扩展功能

        Ribbon相关接口:org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration
IClientConfig:Ribbon的客户端配置,默认采用DefaultClientConfigImpl实现。

        Rule:Ribbon的负载均衡策略,默认采用ZoneAvoidanceRule实现,该策略能够在多区域环境下选出最佳区域的实例进行访问。
        IPing:Ribbon的实例检查策略,默认采用DummyPing实现,该检查策略是一个特殊的实现,实际上它并不会检查实例是否可用,而是始终返回true,默认认为所有服务实例都是可用的。
        ServerList:服务实例清单的维护机制,默认采用ConfigurationBasedServerList实现。        

        ServerListFilter:服务实例清单过滤机制,默认采ZonePreferenceServerListFilter,该策略能够优先过滤出与请求方处于同区域的服务实例。
        ILoadBalancer:负载均衡器,默认采用ZoneAwareLoadBalancer实现,它具备了区域
感知的能力。

2、Ribbon负载均衡策略

        a、RandomRule:随机选择一个Server

        b、RetryRule:对选择的Server做重试,直到选择到一个可用的Server;

        c、RoundRobinRule:轮训选择;

        d、AvailabilityFilteringRule:过滤链接失败的Server,并过滤掉那些高并发的后端Server;其实就是检查Staus里记录的各个Server状态;

        e、BestAvailableRule:选择最小的并发请求的Server,跳过不健康的Server;

        f、WeightedResponseTimeRule:根据响应时间加权,响应时间越长权重越小,被选中可能性越低;

        g、ZoneAvoidanceRule:默认的负载均衡策略,即复合判断Server所在区域的性能和Server的可用性选择Server,在没有区域的环境下,类似于轮询

        h、NacosRule: 优先调用同一集群的实例,基于随机权重

3、饥饿加载

        Ribbon默认懒加载,意味着只有在发起调用时才会创建客户端;可通过配置修改为饥饿加载:ribbon:eger-load:enabled:true ribbon:eger-load:clients:执行需要饥饿加载的服务名

三、LoadBlancer

        Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器, 用来替代
Ribbon。


http://www.mrgr.cn/news/11789.html

相关文章:

  • OpenCV几何图像变换(4)亚像素图像截取函数getRectSubPix()的使用
  • SQL进阶技巧:近距离有效的缺失值填充问题【last_value实现版】
  • 什么是红黑树-面试中常问的数据结构
  • ARM32开发——(八)中断
  • 【计算阶乘求和】计算1!+3!+5!+...+n!/(n+1)!
  • SSRF以及CSRF
  • Datawhale X 李宏毅苹果书 AI夏令营|机器学习基础之案例学习
  • Java | Leetcode Java题解之第375题猜数字大小II
  • 计算机毕业设计选题推荐-高中素质评价档案系统-Java/Python项目实战
  • 数据结构;顺序表;链式表
  • 天玑9400顶级图形技术曝光,GPU新技术让光追画质超一个档次
  • Python-进阶-Excel基本操作
  • 【Matlab】时间序列模型(ARIMA)
  • 【Rust光年纪】Rust多媒体处理库全面比较:探索安全高效的多媒体处理利器
  • 算法-单词规律(290)
  • 大模型企业应用落地系列》基于大模型的对话式推荐系统》技术架构设计全攻略
  • USB设备驱动代码分析(鼠标)
  • 【yarn publish : 报错 passed folder/tarball doesn‘t exist 】
  • 【SQL】连续出现的数字
  • LabVIEW高速数据采集关键问题