Ribbon负载均衡策略配置

在这里吐槽一句:网上很多文章真是神坑,你不看还好,看了只会问题越来越多,就连之前的问题都没有解决!!!

不多说了,Ribbon作为后端负载均衡器,比Nginx更注重的是请求分发而不是承担并发,可以直接感知后台动态变化来指定分发策略。它一共提供了7种负载均衡策略:

策略名 策略声明 策略描述 实现说明
BestAvailableRule public class BestAvailableRule extends ClientConfigEnabledRoundRobinRule 选择一个最小的并发请求的server 逐个考察Server,如果Server被tripped了,则忽略,在选择其中ActiveRequestsCount最小的server
AvailabilityFilteringRule public class AvailabilityFilteringRule extends PredicateBasedRule 过滤掉那些因为一直连接失败的被标记为circuit tripped的后端server,并过滤掉那些高并发的的后端server(active connections 超过配置的阈值) 使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个server的运行状态
WeightedResponseTimeRule public class WeightedResponseTimeRule extends RoundRobinRule 根据响应时间分配一个weight,响应时间越长,weight越小,被选中的可能性越低。 一个后台线程定期的从status里面读取评价响应时间,为每个server计算一个weight。Weight的计算也比较简单responsetime 减去每个server自己平均的responsetime是server的权重。当刚开始运行,没有形成status时,使用roubine策略选择server。
RetryRule public class RetryRule extends AbstractLoadBalancerRule 对选定的负载均衡策略机上重试机制。 在一个配置时间段内当选择server不成功,则一直尝试使用subRule的方式选择一个可用的server
RoundRobinRule public class RoundRobinRule extends AbstractLoadBalancerRule roundRobin方式轮询选择server 轮询index,选择index对应位置的server
RandomRule public class RandomRule extends AbstractLoadBalancerRule 随机选择一个server 在index上随机,选择index对应位置的server
ZoneAvoidanceRule public class ZoneAvoidanceRule extends PredicateBasedRule 复合判断server所在区域的性能和server的可用性选择server 使用ZoneAvoidancePredicate和AvailabilityPredicate来判断是否选择某个server,前一个判断判定一个zone的运行性能是否可用,剔除不可用的zone(的所有server),AvailabilityPredicate用于过滤掉连接数过多的Server。

这里以随机访问策略来举个栗子:

1、ribbon配置文件添加:

service-B.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
  • 1
  • 1

其中service-B是我注册到Eureka的serviceID,一共起了3个示例。

2、main类注册:

    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Bean
    public IRule ribbonRule() {
        return new RandomRule();//这里配置策略,和配置文件对应
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

一定记得加第二个注册,很多文章没有。里面配具体的策略。

3、Controller:

@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private LoadBalancerClient loadBalancerClient;  

    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public String add(@RequestParam Integer a,@RequestParam Integer b) {
        this.loadBalancerClient.choose("service-B");//随机访问策略
        return restTemplate.getForEntity("http://service-B/add?a="+a+"&b="+b, String.class).getBody();

    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

好了,打完收工。

整个工程搭建,请访问我的github:https://github.com/Lovnx/micro-service

http://blog.csdn.net/rickiyeat/article/details/64918756

 

时间: 2024-09-27 19:55:02

Ribbon负载均衡策略配置的相关文章

简单测试Apache是如何完成负载均衡策略配置_Linux

随着访问量的不断提升,以及对响应速度要求的苛刻,进行负载均衡设置就显得尤为重要了.公司的系统在最初设计的时候就已经考虑到了负载均衡的规划,www静态服务器配置了两台,由于初期项目时间紧,并且访问量并不高,所以当时只用了一台,另一台在内网中,只是进行了同步,并为发挥出效用来.此次就是对负载均衡的一个简单测试. 先介绍一下apache mod_proxy_balancer的几个配置规则: 将Apache作为LoadBalance前置机分别有三种不同的部署方式,分别是: 1 )轮询均衡策略的配置 进入

Apache服务器实现负载均衡策略配置详解

随着访问量的不断提高,以及对响应速度的要求,进行负载均衡设置就显得非常必要了.公司的系统在最初设计的时候就已经考虑到了负载均衡的规 划,www静态服务器配置了两台,由于初期项目时间紧,并且访问量并不高,所以当时只用了一台,另一台在内网中,只是进行了同步,并为发挥出效用来.此次 就是对负载均衡的一个简单测试. 先介绍一下apache mod_proxy_balancer的几个配置规则: 将Apache作为LoadBalance前置机分别有三种不同的部署方式,分别是: 1 )轮询均衡策略的配置 进入

Spring Cloud -- Ribbon负载均衡

Overview Ribbon是Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组 件提供一系列完善的配置项如连接超时,重试等.简单的说,就是在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器.我们也很容易使用Ribbon实现 自定义的负载均衡算法. Ribbon提供的主要负载均衡策略介绍 简单轮询负载均衡(RoundRobin)

Dubbo负载均衡策略

参考内容:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 负载均衡 (+) (#) 在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用. 可以自行扩展负载均衡策略,参见:负载均衡扩展 Random LoadBalance 随机,按权重设置随机概率. 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重. 权重加倍 RoundRobin

几种软负载均衡策略分析

公司去年上了F5,好用是好用,但是费用太高昂了,所以最近一直在研究软负载均衡这一块儿,恰巧今年年初谷歌开源了seesaw,让自己可以绕过很多弯路.特此总结下之前了解的负载均衡策略. -Sunface 在分布式系统中,负载均衡是非常重要的环节,通过负载均衡将请求派发到网络中的一个或多个节点上进行处理.通常来说,负载均衡分为硬件负载均衡及软件负载均衡.硬件负载均衡,顾名思义,在服务器节点之间安装专门的硬件进行负载均衡的工作,F5便为其中的佼佼者.软件负载均衡则是通过在服务器上安装的特定的负载均衡软件

Oracle ARC负载均衡具体配置详解

本文详细介绍了Oracle负载均衡的具体配置.通过客户端和服务器端两方面进行配置,文中代码比 较全面,值得大家参考. 对于专业的数据处理存储的Oracle ARC而言,负载均衡的设置就更为重要了.那么如何对Oracle负 载均衡进行配置呢?就让我们一起看看本文来学习一下吧.我们将从客户端和服务器端来进行解说. Oracle负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工 作,在Oracle负载均衡中分为两种,一种是基于客户端连接的,另外一种是基于服务器端的,

多WAN口宽带路由器负载均衡策略

负载均衡策略多WAN口宽带路由器的最突出的技术就是"负载均衡",是多WAN口宽带路由器最重要的特征.分配各WAN口的数据流量是多WAN口宽带路由器要解决的问题,根据策略的不同,负载均衡的实现方式也不同.常见和流行的负载均衡策略有以下三种:会话( Session )方式系统以会话数目为计数单位,所有会话按平均的比例均分到所有启用的WAN口.在接入的线路带宽不同时会出现不均衡,导致一个WAN口可能出现拥塞,而另一个却还有盈余.Weight round robin 方式也是按会话,但会话的比

CentOS6.4 LVS+keepalived高可用负载均衡服务配置

CentOS6.4 LVS+keepalived高可用负载均衡服务配置     一:测试环境信息 服务器DELL-R720 虚拟化 KVM 虚拟机4台: ipvs01,ipvs02,web01,web02 [root@KVM01~]# virsh list  Id    Name                           State ----------------------------------------------------  1     SN-web01         

负载均衡—实现配置篇(Nginx)

首先我们来回顾下上篇的概念: 负载均衡 == 分身的能力. 既然要有分身的能力嘛,这好办,多弄几台服务器就搞定了. 今天我们讲的实例嘛-..我们还是先看图比较好: 还是图比较清晰,以下我都用别名称呼: PA : 负载均衡服务器/WEB入口服务器/www.mydomain.com P1 : WEB服务器/分身1/192.168.2.3 P2 : WEB服务器/分身2/192.168.2.4 P3 : WEB服务器/分身3/192.168.2.5 PS:首先我们学这个的开始之前吧,不懂防火墙的童鞋们