一:Ribbon是什么?

Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。愿意了解源码的朋友直接求求交流分享技术 一七九一七四三三八零

二:LB方案分类

目前主流的LB方案可分成两类:一种是集中式LB, 即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;另一种是进程内LB,将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。Ribbon就属于后者,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。

三:Ribbon的主要组件与工作流程

Ribbon的核心组件(均为接口类型)有以下几个:

ServerList

用于获取地址列表。它既可以是静态的(提供一组固定的地址),也可以是动态的(从注册中心中定期查询地址列表)。

ServerListFilter

仅当使用动态ServerList时使用,用于在原始的服务列表中使用一定策略过虑掉一部分地址。

IRule

选择一个最终的服务地址作为LB结果。选择策略有轮询、根据响应时间加权、断路器(当Hystrix可用时)等。

Ribbon在工作时首选会通过ServerList来获取所有可用的服务列表,然后通过ServerListFilter过虑掉一部分地址,最后在剩下的地址中通过IRule选择出一台服务器作为最终结果。

四:Ribbon提供的主要负载均衡策略介绍

1:简单轮询负载均衡(RoundRobin)

以轮询的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。

2:随机负载均衡 (Random)

随机选择状态为UP的Server

3:加权响应时间负载均衡 (WeightedResponseTime)

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

4:区域感知轮询负载均衡(ZoneAvoidanceRule)

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

Ribbon自带负载均衡策略比较

转载于:https://juejin.im/post/5c6e0668e51d4520f01772f8

spring cloud构建互联网分布式微服务云平台-Ribbon相关推荐

  1. spring cloud构建互联网分布式微服务云平台- Netflix

    该项目通过自动配置为Spring Boot应用程序提供Netflix OSS集成,并绑定到Spring环境和其他Spring编程模型成语.通过几个简单的注释,您可以快速启用和配置应用程序中的常见模式, ...

  2. spring cloud构建互联网分布式微服务云平台-消息总线

    Spring Cloud Bus除了支持RabbitMQ的自动化配置之外,还支持现在被广泛应用的Kafka.在本文中,我们将搭建一个Kafka的本地环境,并通过它来尝试使用Spring Cloud B ...

  3. spring cloud构建互联网分布式微服务云平台-Spring Cloud Commons 普通抽象

    诸如服务发现,负载平衡和断路器之类的模式适用于所有Spring Cloud客户端可以独立于实现(例如通过Eureka或Consul发现)的消耗的共同抽象层.愿意了解源码的朋友直接求求交流分享技术一七九 ...

  4. spring cloud构建互联网分布式微服务云平台-docker部署spring cloud项目

    一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...

  5. spring cloud构建互联网分布式微服务云平台-断路器聚合监控(Hystrix Turbine)

    一.Hystrix Turbine简介 看单个的Hystrix Dashboard的数据并没有什么多大的价值,要想看这个系统的Hystrix Dashboard数据就需要用到Hystrix Turbi ...

  6. spring cloud互联网分布式微服务云平台规划分析--spring cloud系统管理平台

    1.介绍 鸿鹄云架构[系统管理平台]是一个大型企业.分布式.微服务.云架构的JavaEE体系快速研发平台,基于模块化.微服务化.原子化.热部署的设计思想,使用成熟领先的无商业限制的主流开源技术构建. ...

  7. spring cloud互联网分布式微服务云平台规划分析--服务统一配置中心

    1.介绍 鸿鹄云架构[服务统一配置中心]为分布式系统中的外部配置提供服务器和客户端支持.使用commonservice-config,可以在所有环境中管理应用程序的外部属性.应用程序可通过从开发人员到 ...

  8. 互联网分布式微服务云平台规划分析--服务监控中心

    1.介绍 鸿鹄云架构[服务监控中心]提供简洁的可视化WEB UI,来管理 Spring Cloud 微服务应用程序. 2.平台基础功能 服务在线状态监控.Logging日志级别管理.JMX beans ...

  9. 互联网分布式微服务云平台规划分析--SSO单点登录系统

    介绍 鸿鹄云架构[SSO单点登录系统]为所有微服务提供统一的用户认证服务,系统本身属于微服务模式,使用JWT+Redis分布式存储方案,确保不同微服务.系统之间的安全通讯和统一用户校验.认证.在整个服 ...

最新文章

  1. 如何在centos7上网卡名称回归传统
  2. 剖析boot.img的制作流程
  3. 第六届 蓝桥杯 省赛 Java B组 牌型总数
  4. python矩阵的平方_NumPy之计算两个矩阵的成对平方欧氏距离
  5. 数据库-DQL练习(附答案)
  6. *如何循序渐进向DotNet架构师发展(转)
  7. vue 加载太慢_Vue首页加载过慢 解决方案
  8. (转)openlayers实现在线编辑
  9. 自定义---单批次训练函数
  10. PRML第四章之分类的线性模型
  11. 经典的同态滤波算法的优化及其应用参数配置
  12. 煤矿智能更衣柜管理系统解决方案
  13. 别被别人抢走了你的时间!
  14. KEIL工程中汇编文件添加条件编译宏
  15. 《机器学习实战:基于Scikit-Learn、Keras和TensorFlow第2版》-学习笔记(9):无监督学习技术
  16. 2019数据安装勾选_如何安装勾选认证平台安全控件,以及如何勾选认证发票
  17. 自相关函数和自协方差函数
  18. CSS3新增的相关属性
  19. 《离散数学》学习笔记
  20. ARDUINO使用MLX90614红外温度传感器研究笔记

热门文章

  1. 移动端实现文字轮播_js实现移动端轮播图
  2. python3解释器执行long(10)的结果为_Python3解释器执行'AB2C3D'.lower().title()的结果是( )。...
  3. ACM常用之 异或运算的性质。
  4. Python学习6——条件,循环语句
  5. java+redis+lua生成自动增长的ID序列号
  6. 2-1 nodejs和npm的安装和环境搭建
  7. 第二章 DateTime工具类
  8. OA项目实战(二) 开发准备
  9. CString之GetBuffer、ReleaseBuffer
  10. 非常恶俗地分享一首歌曲(童年·葫芦娃)