负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】

负载均衡-Ribbon

基本介绍
  1. Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。

  2. Ribbon 主要功能是提供客户端负载均衡算法和服务调用

  3. Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。

  4. Ribbon 会基于某种规则(如简单轮询,随机连接等)去连接指定服务

  5. 程序员很容易使用 Ribbon 的负载均衡算法实现负载均衡

  6. 一句话: Ribbon == 负载均衡 + RestTemplate 调用

LB(Load Balance 负载均衡)分类
集中式LB

即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如Nginx),由该设施负责把访问请求通过某种策略转发至服务的提供方;

进程内LB

将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些服务地址可用,然后再从这些地址中选择出一个合适的服务地址。
Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址

Ribbon机制

图片

负载均衡算法

策略名

描述

BestAvailableRule

选择一个最小的并发请求的server。逐个考察Server,如果Server被tripped(跳闸)了,则忽略,再选择其中ActiveRequestsCount最小的server。

AvailabilityFilteringRule

过滤掉那些因为一直连接失败的被标记为circuittripped的后端server,并过滤掉那些高并发的的后端server(active connections超过配置的阈值)。

WeightedResponseTimeRule

根据响应时间分配一个weight,响应时间越长,weight越小,被选中的可能性越低。

RetryRule

对选定的负载均衡策略加上重试机制。在一个配置时间段内当选择server不成功,则一直尝试使用subRule的方式选择个可用的server。

RoundRobinRule【默认】

轮询index,选择index对应位置的server。

RandomRule

随机选择一个server。在index上随机,选择index对应位置的server。

ZoneAvoidanceRule

复合判断server所在区域的性能和server的可用性选择server。

替换默认的负载均衡算法
  1. 编写配置类

    //配置自己的负载均衡算法
    @Configuration
    publicclassRibbonRule {
    
    //    配置注入负载均衡算法
    @Bean
    public IRule myRibbonRule(){
    returnnewRandomRule();//new 的就是负载均衡算法 ,自己选择,这里是随机算法
        }
    }
    
  2. 在主启动类指定负载均衡用的配置类

    @EnableEurekaClient
    @SpringBootApplication
    @EnableDiscoveryClient//启动服务发现
    @RibbonClient(name="MEMBER_SERVICE_PROVIDER_URL",configuration = RibbonRule.class)//指定负载均衡的名字和配置
    publicclassMemberConsumerApplication {
    publicstaticvoidmain(String[] args) {
            SpringApplication.run(MemberConsumerApplication.class,args);
        }
    }
    

在之前的笔记,消费者远程调用提供者底层就是用的 负载均衡 + RestTemplate 调用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值