Ribbon(1、简介)
1.Ribbon介绍
Ribbon 是一个基于 Http 和 TCP 的客服端负载均衡工具,它是基于 Netflix Ribbon 实现的。
它不像 spring cloud 服务注册中心、配置中心、API 网关那样独立部署,但是它几乎存在于每个 spring cloud 微服务中。包括 feign 提供的声明式服务调用也是基于该 Ribbon 实现的。
ribbon 默认提供很多种负载均衡算法,例如 轮询、随机 等等。甚至包含自定义的负载均衡算法。
2.Ribbon作用
他解决并提供了微服务的访问和负载均衡的问题。
3.负载均衡解决方案
- 集中式负载均衡
即在 consumer 和 provider 之间使用独立的负载均衡设施(可以是硬件,如 F5, 也可以是软件,如 nginx), 由该设施负责把 访问请求 通过某种策略转发至 provider。
- 进程内负载均衡
将负载均衡逻辑集成到 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、简介)相关推荐
- Ribbon基本简介
Ribbon是什么? Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具. 简单的说,Ribbon 是 Netflix 发布的开源项目,主要功能 ...
- Spring Cloud 5分钟搭建教程(附上一个分布式日志系统项目作为参考) - 推荐
http://blog.csdn.net/lc0817/article/details/53266212/ https://github.com/leoChaoGlut/log-sys 上面是我基于S ...
- Spring Cloud 5分钟搭建教程(附上一个分布式日志系统项目作为参考)
Spring Cloud 5分钟搭建教程(附上一个分布式日志系统项目作为参考) 上面是我基于Spring Cloud ,Spring Boot 和 Docker 搭建的一个分布式日志系统. 目前已在我 ...
- Spring Cloud 5分钟搭建教程
1.前言: 1.1.以下内容是我通过阅读官方文档,并成功实践后的经验总结,希望能帮助你更快地理解和使用Spring Cloud. 1.2.默认读者已经熟练掌握Spring 全家桶,Spring Boo ...
- 微服务简介,Euraka,Ribbon,openFeign
微服务简介 首先理解一个概念--高可用,即保证服务器的高度可用,减少停工时间:原来的单体应用只有一个服务器,所有服务(功能)都在该服务器上,如果出现某些突发情况,服务器挂了,整个系统就停工了.而微服务 ...
- 五、springcloud之客户端负载均衡Ribbon
一.简介 在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式: 一种是ribbon+restTemplate, ...
- SpringCloud系列一:SpringCloud的简介和架构
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 一.SpringCloud简介 SpringCloud就是一套分布式服务治理的框架,既然它是一套服务治理的框架,那么它本身不会提 ...
- Spring Cloud第二篇:服务消费者RestTemplate+Ribbon
在上一篇文章,讲了服务的注册和发现.在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式,一种是ribbon+r ...
- java B2B2C Springboot仿淘宝电子商城系统-负载均衡之ribbon+feign
一. feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单.使用Feign,只需要创建一个接口并注解.它具有可插拔的注解特性,可使用Feign注解和JAX-RS注 ...
最新文章
- 使用 U 盘制作 Ubuntu 系统启动盘
- 业余无线电通信_登山与业余无线电的完美结合,便携式电台参加VHF比赛心得体会...
- 用python编写一个高效搜索代码工具
- mongodb存入mysql_关于mongodb转存MySQL
- panel中html怎么写,panel控件有什么用 请写出Panel控件的用途
- 美国只有两样东西要比中国 贵,一个是智慧财产权,一个是人工
- 训练日志 2019.1.31
- 收藏 | 图解 Git 工作原理
- 麦克风增强软件_麦克风电流声去除方法(不花一分钱去电流声)
- 众说纷纭的ul、ol、li
- 如何解决NullPointerException in android.view.GLES20RecordingCanvas
- 怎么用python扫描主机_python 扫描内网存活主机
- macbook WIN10系统安装教程
- 股票资金建仓分仓补仓计算器
- 安卓控制新大陆云平台(二)
- Ubuntu 安装netstat网络工具
- Rhino学习教程——1.4
- 微信小程序开发工具项目的基本组成结构
- javascript的getDay()方法
- JQuery的可见性选择器与show、hide的关系
热门文章
- 24V转5V稳压芯片,低功耗降线性稳压器
- 关于java中输出流flush()方法
- SpringBoot2学习笔记
- 内存的永久保存区内存溢出解决
- Java项目:课程在线学习与测试系统(java+SSM+redis+Bootstrap+Tomcat+mysql)
- 中国互联网11个创业派系456创始人名单大全
- java时间戳 时间格式转换与时差
- FreeDOM —— 一个可迁移的网页信息抽取模型
- Android Studio(AS)连接mumu模拟器的方法
- 三阶魔方大中小魔公式_三阶魔方还原公式