Ribbon负载均衡

一、负载均衡是一个算法,可以通过该算法实现从地址列表中获取一个地址进行服务调用。

二、Ribbon提供了轮询、随机两种负载均衡算法(默认是轮询)可以实现从地址列表中使用负载均衡算法获取地址进行服务调用

三、需求:可以使用RestTemplate访问http://user-service/user/8获取服务数据。

可以使用Ribbon负载均衡:在执行RestTemplate发送服务地址请求的时候,使用负载均衡拦截器拦截,根据服务名,在服务地址列表中获取服务地址的时候,使用Ribbon负载均衡算法从服务地址列表中选择一个服务地址,访问该地址获取服务数据。

四、总结

    Ribbon其实就是一个软负载均衡,依赖EurekaClient客户端组件,Ribbon就是负载均衡算法 + RestTemplate

    Ribbon在工作分成两步

    第一步选择EurekaServer,它优先选择在同一个区域内负载较少的Server

    第二步再根据用户指定策略,在从Server取到的服务注册列表中选择一个地址


    Ribbon自身的负载均衡算法(10种算法)

          1) RoundRobinRule(轮询算法)

          2) RandomRule(随机算法)

          3) RetryRule():先按照RoundRobinRule的策略获取服务,如果获取失败则在制定时间内进行重试,获取可用的服务
      
          4) BestAviableRule():会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务

          5) WeightedResponseTimeRule():根据平均响应的时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高,刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够会切换到WeightedResponseTimeRule
posted @ 2020-09-17 18:27  jock_javaEE  阅读(205)  评论(0编辑  收藏  举报