Spring cloud alibaba(二)Ribbon&LoadBalance

一、负载均衡

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

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。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值