springcloud(十二):Ribbon客户端负载均衡介绍
springcloud(十二):Ribbon客户端负载均衡介绍
Ribbon简介
使用分布式微服务脚骨的应用系统,在部署的时候通常会为部分或者全部微服务搭建集群环境,通过提供多个实例来提高系统的稳定型。既然有多个服务实例,那么调用的时候应该如果选择呢?这就需要实现一定的负载均衡策略。
实现负载均衡主要有两种方式,第一种是通过服务端进行负载均衡,第二种是通过客户端进行负载均衡。服务端方式的实现原理是通过反向代理并按照某种负载均衡策略把客户端请求分发到可用的服务端节点上,如Nginx。客户端方式的实现原理是在客户端先获取所有可用的服务端节点,再通过某种负载均衡策略选择其中一个节点进行访问。
Ribbon就是一种客户端负载均衡的实现,它是有Netflix发布的一个基于HTTP和TCP的客户端负载均衡工具。服务消费者继承Ribbon后,只需要配置服务提供者地址,Ribbon就可以基于指定的负载均衡算法,自动帮服务消费者分配请求。Ribbon提供了很多常见的负载均衡算法,入轮询、随机、权重等。作为Spring Cloud体系中的一员,Ribbon可以和Eureka方便地集合使用,可以直接从Eureka Server中获取所有服务提供者的节点地址,然后根据指定的负载均衡策略选择某个节点进行访问。
Ribbon是一个在云服务中久经沙场的客户端IPC库,它提供以下的一些特性:
- 负载均衡
- 故障容错
- 在异步和动态的模型中支持多协议通讯(HTTP、TCP、UDP)
- 缓存与批处理
引入Ribbon依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
Ribbon所包含的模块
- ribbon:在其他Ribbon模块和Hystrix上集成负载均衡、容错、缓存/批处理的api
- ribbon-loadbalancer:可以独立或与其他模块一起使用的负载均衡器的api
- ribbon-eureka:使用Eureka客户端为云提供动态服务器列表的api
- ribbon-transport:使用带有负载均衡功能的RxNetty支持HTTP、TCP和UDP协议的传输客户端
- ribbon-httpclient:构建在Apache HttpClient之上,与负载均衡器集成的REST客户端
- ribbon-example:提供了一些示例
- ribbon-core:客户端配置api和其他共享api
负载均衡器组件
Ribbon提供的基本功能
- 向通信客户端提供公共DNS名称或单个服务器的IP
- 根据特定的逻辑选择服务器
Ribbon提供的高级功能
- 通过将客户端划分为区域(如数据中心的机架),在相同区域中减少服务器延迟,从而在客户端和服务器之间建立关联
- 保持服务器的统计信息,避免出现高延迟或频繁故障的服务器
- 保持区域的统计信息,避免可能出现停机的区域
负载均衡器的三大子模块
- Rule:确定从列表返回哪个服务的逻辑组件
- Ping:在后台运行的组件以确保服务的活跃度
- ServerList:这可以是静态的或动态的。如果它是动态的(由DynamicServerListLoadBalancer使用),后台线程将在特定的时间间隔刷新和过滤列表
创建Ribbon程序

如架构图所示,Ribbon充当负载均衡器的作用,能够让我们的服务消费者调用到自己想使用的服务,服务消费者不用关心中间具体的操作,只需要将要调用的服务信息告诉负载均衡器,Ribbon就会从相应的服务集群中选择一个可以使用的服务器,供服务消费者调用。
负载均衡策略
- WeightedResponseTimeRule:根据响应时间分配一个weight(权重),响应时间越长,weight越小,被选中的可能性越低。
- RoundRobinRule:轮询选择服务节点(此为默认的负载均衡策略)。
- RandomRule:随机选择一个服务节点。
- ZoneAvoidanceRule:综合考虑服务节点所在区域的性能和服务节点的可用性来选择服务节点。
- RetryRule:重试机制。在一个配置时间段内,当选择服务节点不成功时会一直尝试重新选择。
- BestAvailableRule:选择一个并发请求最小的服务节点。
- AvailabilityFilteringRule:过滤掉那些因为一直连接失败而被标记为circuit tripped的服务节点和那些高并发的服务节点(active connections 超过配置值)
转载请注明出处:https://blog.csdn.net/MrSpirit/article/details/80182508
springcloud(十二):Ribbon客户端负载均衡介绍的更多相关文章
- springcloud(十三):Ribbon客户端负载均衡实例
一.采用默认的负载均衡策略:RoundRobinRule 轮询策略 1.修改提供者原的控制类 在之前的eureka-client-provider项目的CenterController.java中加入 ...
- SpringBoot(三) - Ribbon客户端负载均衡,Zuul网关,Config配置中心
1.Ribbon客户端负载均衡 1.1 依赖 1.2 配置信息 # feign默认加载了ribbon负载均衡,默认负载均衡机制是:轮询 # 负载均衡机制是添加在消费端(客户端)的,如果改为随机,指定服 ...
- spring cloud --- Ribbon 客户端负载均衡 + RestTemplate + Hystrix 熔断器 [服务保护] ---心得
spring boot 1.5.9.RELEASE spring cloud Dalston.SR1 1.前言 当超大并发量并发访问一个服务接口时,服务器会崩溃 ,不仅导致这个接口无法 ...
- spring cloud --- Ribbon 客户端负载均衡 + RestTemplate ---心得【无熔断器】
spring boot 1.5.9.RELEASE spring cloud Dalston.SR1 1.前言 了解了 eureka 服务注册与发现 的3大角色 ,会使用RestTem ...
- ③SpringCloud 实战:使用 Ribbon 客户端负载均衡
这是SpringCloud实战系列中第三篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
- SpringCloud实战-Ribbon客户端负载均衡
前面我们已经完成了注册中心和服务提供者两个基础组件.接着介绍使用Spring Cloud Ribbon在客户端负载均衡的调用服务. ribbon 是一个客户端负载均衡器,可以简单的理解成类似于 ngi ...
- springcloud 之Ribbon客户端负载均衡配置使用
pom.xml添加配置说明:这里服务注册与发现用的是Eureka,所以消费者端需要引入eureka,使用EurekaClient来调用服务 <dependency> <groupId ...
- Spring Cloud入门教程(二):客户端负载均衡(Ribbon)
对于大型应用系统负载均衡(LB:Load Balancing)是首要被解决一个问题.在微服务之前LB方案主要是集中式负载均衡方案,在服务消费者和服务提供者之间又一个独立的LB,LB通常是专门的硬件,如 ...
- 笔记:Spring Cloud Ribbon 客户端负载均衡
Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,基于 Netflix Ribbon 实现,通过Spring Cloud 的封装,可以让我们轻松的将面向服 ...
随机推荐
- Android下载资源
下面提供了源码下载地址,供有兴趣的朋友下载, android音乐播放器源码 由于本人才疏学浅,有很多地方不够完善,希望大家指证. 免费下载地址在 http://linux.linuxidc.com ...
- openstack 配置dnsmasq 域名解析
- vs code 快速生成vue 模板
vs code 快速生成vue 模板 1.使用快捷Ctrl + Shift + P唤出控制台,然后输入snippets并选择.(或 文件>首选项>用户代码片断里面,输入 vue.json ...
- 使用IntelliJ IDEA 创建Maven项目(入门)
一. 下载Maven 下载地址:http://maven.apache.org/download.cgi tar.gz压缩格式用于unix操作系统,而zip用于windows的操作系统,但在windo ...
- MARK ZUCKERBERG, A letter to our daughter(转)
A letter to our daughter MARK ZUCKERBERG·WEDNESDAY, DECEMBER 2, 2015 Dear Max, Your mother and I ...
- bzoj 4326: NOIP2015 运输计划【树链剖分+二分+树上差分】
常数巨大,lg上开o2才能A 首先预处理出运输计划的长度len和lca,然后二分一个长度w,对于长度大于w的运输计划,在树上差分(d[u]+1,d[v]+1,d[lca]-2),然后dfs,找出所有覆 ...
- WPF-CheckBox(复选框、功能开关)美化
老规矩,先放图 按钮美化背景: 由于特殊需求,复选框样式单一,所以我们需要将其按钮重构和美化达到我们的需求 复选框美化思维引导: 图中1为背景色 图中2为边框 图中3为句柄控件组成(Path+Rect ...
- 【题解】TES-Intelligence Test
[题解]\(TES-Intelligence\) \(Test\) 逼自己每天一道模拟题 传送:\(TES-Intelligence\) \(Test\) \([POI2010]\) \([P3500 ...
- xshell、xftp最新版下载方法
https://www.netsarang.com/download/main.html 登录邮箱打开第一个下载地址进行下载
- jQuery图片区域选择控件_imgAreaSelect
软考报名时发现可以进行头像区域裁剪功能,F12了一下,发现使用了imgAreaSelect控件. 控件官网: http://odyniec.net/projects/imgareaselect/ 控件 ...