微服务负载均衡器Ribbo

一、对一些常用的接口说明及方法

1.IRule

这是所用负载均衡策略的父接口,里面的核心方法就是choose方法,用来选择一个服务的实例。

2.AbstractLoadBalancerRule

AbstractLoadBalancerRule是一个抽象类,里面主要定义了一个ILoadBanlancer,就是我们所用的负载均衡,定义它的目的主要是辅助负载均衡策略选取的服务端实例,

3.RandomRule 

RandomRule他是一个随机选 择一个服务实例,看源码我们知道,在RandomRlue的无惨构造方法中初始化了一个Random对象,然后在他重写的choose方法又调用choose这个重载的choose方法,这个重载的choose方法中,每此利用random对性生成一个不大于服务实例总数的随机数,并将该数作为下标所以获取一个服务实例,

4.RoundRobinRule

RoundRobinRule这种负载均衡策略叫做线性轮询负载均衡策略,这个类的choose函数整体逻辑是这样的:开启一个计数器count,在while循坏中遍历服务清单,货物清单之前,先通过incrementAndGetModule方法获取一个下标,这个下标是一个不断自增的数先加1然后和服务清单总数去摸之后获取到的,拿着下标再去服务清单列表中去服务,每次循环计数器都会加1,如果连续10次都没有取到服务,则会报一个警告 No available alive servers after 10 tries from load balancer:xxx

5.RetryRlue(在轮询的基础上进行重试功能)

这种负载均衡策略带有重试功能,首先RetryRule又定义了一个subRule,他的实现类是RoundRobbinRule,然后在RetyRule的choose方法中,每次还是采用RoundRobinRule中的choose规则来选择一个服务实例,如果选到的实例正常就返回,如果选择的服务实例为null或者已经失败,则在失效的时间deadline之前不断的进行重试,若果超过了deandline还是没有取到服务实例就返回null

6.weightedResponseTimeRule(权重nacos的nacosRule,Nacos还扩展了一个自己基于配置的权重扩展)

它是RoundRobinRule的一个子类,它是对RoundRule的功能扩展,weightedResponseTimeRule中会根据每一个实例的运行情况来给计算出该实例的一个权重,然后在挑选实例的时候则根据权重进行挑选,默认情况下,每隔30秒会计算一次各个服务实例的权重

饥饿加载

Ribbon 默认采用赖加载,即第一次访问的时候才会去创建LoadBalanceClient,所以第一次请求的时候时间会长一点,而饥饿加载则会在项目启动的时候创建LoadBalanceClient,降低了第一次访问的耗时,会没可以指定一个服务开启饥饿加载,在yml文件中配置

ribbon:
    eager-load:
        enable: true        //开启饿汉加载
        clients: user-service   //指定user-service这个服务要开启这个饿汉加载

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值