1.Ribbon介绍

Ribbon 是一个基于 Http 和 TCP 的客服端负载均衡工具,它是基于 Netflix Ribbon 实现的。
它不像 spring cloud 服务注册中心、配置中心、API 网关那样独立部署,但是它几乎存在于每个 spring cloud 微服务中。包括 feign 提供的声明式服务调用也是基于该 Ribbon 实现的。
ribbon 默认提供很多种负载均衡算法,例如 轮询、随机 等等。甚至包含自定义的负载均衡算法。

2.Ribbon作用

他解决并提供了微服务的访问和负载均衡的问题。

3.负载均衡解决方案

  1. 集中式负载均衡
    即在 consumer 和 provider 之间使用独立的负载均衡设施(可以是硬件,如 F5, 也可以是软件,如 nginx), 由该设施负责把 访问请求 通过某种策略转发至 provider。
  2. 进程内负载均衡
    将负载均衡逻辑集成到 consumer,consumer 从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的 provider。Ribbon 就属于后者,它只是一个类库,集成于 consumer 进程,consumer 通过它来获取到 provider 的地址。

4. Ribbon常见负载均衡策略

id 策略名称 策略对应的类名 实现原理
1 轮询策略(默认) RoundRobinRule 轮询策略表示每次都顺序取下一个 provider,比如一共有 5 个 provider,第 1 次取第 1 个,第 2 次取第 2 个,第 3 次取第 3 个,以此类推
2 权重轮询策略 WeightedResponseTimeRule 1.根据每个provider的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性越低。
2.原理:一开始为轮询策略,并开启一个计时器,每30秒收集一次每个provider的平均响应时间,当信息足够时,给每个provider 附上一个权重,并按权重随机选择
3 随机策略 RandomRule 从provider列表中随机选择一个provider
4 最少并发数策略 BestAvailableRule 选择正在请求中的并发数最小的provider,除非这个 provider在熔断中。
5 在“选定的负载均衡策略”基础上进行重试机制 RetryRule 1.“选定的负载均衡策略”这个策略是轮询策略RoundRobinRule
2.该重试策略先设定一个阈值时间段,如果在这个阈值时间段内当选择provider不成功,则一直尝试采用“选定的负载均衡策略:轮询策略”最后选择一个可用的 provider
6 可用性敏感策略 AvailabilityFilteringRule 过滤性能差的provider,有2种:
第一种:过滤掉在eureka中处于一直连接失provider 第二种:过滤掉高并发的provider
7 区域敏感性策略 ZoneAvoidanceRule 1.以一个区域为单位考察可用性,对于不可用的区域整个丢弃,从剩下区域中选可用的 provider
2.如果这个 ip 区域内有一个或多个实例不可达或响应变慢,都会降低该 ip 区域内其他 ip 被选中的权重。

Ribbon(1、简介)相关推荐

  1. Ribbon基本简介

    Ribbon是什么? Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具. 简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能 ...

  2. Spring Cloud 5分钟搭建教程(附上一个分布式日志系统项目作为参考) - 推荐

    http://blog.csdn.net/lc0817/article/details/53266212/ https://github.com/leoChaoGlut/log-sys 上面是我基于S ...

  3. Spring Cloud 5分钟搭建教程(附上一个分布式日志系统项目作为参考)

    Spring Cloud 5分钟搭建教程(附上一个分布式日志系统项目作为参考) 上面是我基于Spring Cloud ,Spring Boot 和 Docker 搭建的一个分布式日志系统. 目前已在我 ...

  4. Spring Cloud 5分钟搭建教程

    1.前言: 1.1.以下内容是我通过阅读官方文档,并成功实践后的经验总结,希望能帮助你更快地理解和使用Spring Cloud. 1.2.默认读者已经熟练掌握Spring 全家桶,Spring Boo ...

  5. 微服务简介,Euraka,Ribbon,openFeign

    微服务简介 首先理解一个概念--高可用,即保证服务器的高度可用,减少停工时间:原来的单体应用只有一个服务器,所有服务(功能)都在该服务器上,如果出现某些突发情况,服务器挂了,整个系统就停工了.而微服务 ...

  6. 五、springcloud之客户端负载均衡Ribbon

    一.简介 在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式: 一种是ribbon+restTemplate, ...

  7. SpringCloud系列一:SpringCloud的简介和架构

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 一.SpringCloud简介 SpringCloud就是一套分布式服务治理的框架,既然它是一套服务治理的框架,那么它本身不会提 ...

  8. Spring Cloud第二篇:服务消费者RestTemplate+Ribbon

    在上一篇文章,讲了服务的注册和发现.在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式,一种是ribbon+r ...

  9. java B2B2C Springboot仿淘宝电子商城系统-负载均衡之ribbon+feign

    一. feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单.使用Feign,只需要创建一个接口并注解.它具有可插拔的注解特性,可使用Feign注解和JAX-RS注 ...

最新文章

  1. 使用 U 盘制作 Ubuntu 系统启动盘
  2. 业余无线电通信_登山与业余无线电的完美结合,便携式电台参加VHF比赛心得体会...
  3. 用python编写一个高效搜索代码工具
  4. mongodb存入mysql_关于mongodb转存MySQL
  5. panel中html怎么写,panel控件有什么用 请写出Panel控件的用途
  6. 美国只有两样东西要比中国 贵,一个是智慧财产权,一个是人工
  7. 训练日志 2019.1.31
  8. 收藏 | 图解 Git 工作原理
  9. 麦克风增强软件_麦克风电流声去除方法(不花一分钱去电流声)
  10. 众说纷纭的ul、ol、li
  11. 如何解决NullPointerException in android.view.GLES20RecordingCanvas
  12. 怎么用python扫描主机_python 扫描内网存活主机
  13. macbook WIN10系统安装教程
  14. 股票资金建仓分仓补仓计算器
  15. 安卓控制新大陆云平台(二)
  16. Ubuntu 安装netstat网络工具
  17. Rhino学习教程——1.4
  18. 微信小程序开发工具项目的基本组成结构
  19. javascript的getDay()方法
  20. JQuery的可见性选择器与show、hide的关系

热门文章

  1. 24V转5V稳压芯片,低功耗降线性稳压器
  2. 关于java中输出流flush()方法
  3. SpringBoot2学习笔记
  4. 内存的永久保存区内存溢出解决
  5. Java项目:课程在线学习与测试系统(java+SSM+redis+Bootstrap+Tomcat+mysql)
  6. 中国互联网11个创业派系456创始人名单大全
  7. java时间戳 时间格式转换与时差
  8. FreeDOM —— 一个可迁移的网页信息抽取模型
  9. Android Studio(AS)连接mumu模拟器的方法
  10. 三阶魔方大中小魔公式_三阶魔方还原公式