Ribbon在工作时分为两步:

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

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

其中Ribbon提供了多种策略,比如轮询、随机、根据响应时间加权。

一、Ribbon算法的介绍

Ribbon的源码地址:https://github.com/Netflix/ribbon

IRule:根据特定算法中从服务器列表中选取一个要访问的服务,Ribbon默认的算法为轮询算法;

Ribbon中的7中负载均衡算法:

(1)RoundRobinRule:轮询;

(2)RandomRule:随机;

(3)AvailabilityFilteringRule:会先过滤掉由于多次访问故障而处于断路器状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问;

(4)WeightedResponseTimeRule:根据平均响应时间计算所有服务的权重,响应时间越快的服务权重越大被选中的概率越大。刚启动时如果统计信息不足,则使用RoundRobinRule(轮询)策略,等统计信息足够,会切换到WeightedResponseTimeRule;

(5)RetryRule:先按照RoundRobinRule(轮询)策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用的服务;

(6)BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务;

(7)ZoneAvoidanceRule:复合判断Server所在区域的性能和Server的可用性选择服务器;

ribbion的负载均衡算法结构:

二、配置指定的负载均衡算法

1、打开消费者工程,增加如下的配置:

@Configuration
public class ConfigBean
{
@Bean
@LoadBalanced //Ribbon 是客户端负载均衡的工具;
public RestTemplate getRestTemplate()
{
return new RestTemplate();
} //配置负载均衡的策略为随机,默认算法为轮询算法
@Bean
public IRule myRule()
{
//return new RoundRobinRule();
return new
RandomRule();
}

}

2、启动类增加 @EnableEurekaClient 注解

@SpringBootApplication
@EnableEurekaClient //本服务启动后自动注册到eureka中
public class DeptProvider8001_App
{
public static void main(String[] args)
{
SpringApplication.run(DeptProvider8001_App.class, args);
}
}

3、然后重启这个消费者服务,访问:http://localhost/consumer/dept/get/1;查看到随机访问到3个生产者服务。

Ribbon核心组件IRule及配置指定的负载均衡算法的更多相关文章

  1. 【Ribbon篇四】Ribbon核心组件IRule(3)

    Ribbon在工作时分为两步: 先选择 EurekaServer,它优先选择在同一个区域内负载较少的Server: 再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址: 其中Rib ...

  2. Ribbon提供的负载均衡算法IRule(四)

    一.Ribbon算法的介绍 Ribbon的源码地址:https://github.com/Netflix/ribbon IRule:根据特定算法中从服务器列表中选取一个要访问的服务,Ribbon默认的 ...

  3. SpringCloud全家桶学习之客户端负载均衡及自定义负载均衡算法----Ribbon(三)

    一.Ribbon是什么? Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端  负载均衡的工具(这里区别于nginx的负载均衡).简单来说,Ribbon是Netf ...

  4. Ribbon整合Eureka组件,以实现负载均衡

    1整体框架的说明 在本案例的框架里,我们将配置一个Eureka服务器,搭建三个提供相同服务的Eureka服务提供者,同时在Eureka服务调用者里引入Ribbon组件,这样,当有多个url向服务调用者 ...

  5. Spring Cloud Ribbon 源码分析---负载均衡算法

    上一篇分析了Ribbon如何发送出去一个自带负载均衡效果的HTTP请求,本节就重点分析各个算法都是如何实现. 负载均衡整体是从IRule进去的: public interface IRule{ /* ...

  6. Docker+nginx+tomcat7配置简单的负载均衡

    本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/4995513.html 本文介绍在Docker上配置简单的负载均衡,宿主机为Ubuntu 14.04.2 ...

  7. windows配置nginx实现负载均衡集群

    windows配置nginx实现负载均衡集群2014-08-20 09:44:40   来源:www.abcde.cn   评论:0 点击:617 网上大部分关于nginx负载均衡集群的教程都是lin ...

  8. 图文解说:Nginx+tomcat配置集群负载均衡

    图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用  作者:niumd Blog:http://ari.iteye ...

  9. 转】Nginx+tomcat配置集群负载均衡

    原博文出自于:http://blog.csdn.net/bruce_6/article/details/38228299         感谢! 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食 ...

随机推荐

  1. STM (软件事务内存)

  2. ansible简易使用

    一.本地环境: centos 7    192.168.10.10      主控机 centos 7    192.168.10.130    被控机 Windows7  192.168.10.13 ...

  3. Python笔记:装饰器

    装饰器        1.特点:装饰器的作用就是为已存在的对象添加额外的功能,特点在于不用改变原先的代码即可扩展功能: 2.使用:装饰器其实也是一个函数,加上@符号后放在另一个函数“头上”就实现了装饰 ...

  4. python课程单元三编程题讲解(上)

    目录 1.快乐的数字 2.凯撒密码I 3.凯撒密码II 4.括号配对检测 A @     下面向大家介绍一下我在学习python课程的一些题目的解法,如果大家有什么更好的解法请私信我.这里只显示题目与 ...

  5. BindRequired and Required

    [https://www.cnblogs.com/tdfblog/p/required-and-bindrequired-in-asp-net-core-mvc.html] Required:对值进行 ...

  6. 浅聊标签<include>和<viewStub>

    在开发中我们往往会遇到这种情况,当一个布局文件比较复杂时,我们一个劲地往里面拖各种控件button,textView,imageView阿等等,等过了一段时间后,出现bug,自己都把自己搞懵比啦,特别 ...

  7. Fundebug前端JavaScript插件更新至1.8.2,修复2个小BUG

    摘要: 修复2个BUG,请大家及时更新. Fundebug前端异常监控服务 Fundebug是专业的程序异常监控平台,我们JavaScript插件可以提供全方位的异常监控,可以帮助开发者第一时间定位各 ...

  8. spark 修改默认log4j.properties 配置

    spark-submit \ --files ${CONF_DIR}/log4j-driver.properties,${CONF_DIR}/log4j-executor.properties \ - ...

  9. brew安装mongodb报错Error: No available formula with the name 'mongodb'

    原因:MongoDB不再是开源的了,并且已经从Homebrew中移除 #43770 设定:  $ brew tap mongodb/brew 安装: $ brew install mongodb-co ...

  10. python 的 encode 、decode、字节串、字符串

    一.摆个图 DJ  DJ  DJ   Decode. J 解码 首先得知道字符串有哪些编码格式,至于为什么会有这么多的编码格式,以后再了解更新. 1.ASCII 占1个字节,只支持英文 2.GB231 ...