-
[SpringCloud教程]5. Ribbon负载均衡
Spring Cloud Ribbon 是一个客户端负载均衡工具,用于提供客户端的软件负载均衡算法和服务调用
- SpringCloud教程合集: https://www.cnblogs.com/spzmmd/tag/微服务教程/
- 案例项目地址: https://gitee.com/spzmmd/spring-cloud-demo
概念
目前Ribbon项目是维护模式
集中式LB(负载均衡)
在服务提供者和消费者之间独立出一个负载均衡设施(硬件、nginx等),由该设施负责通过策略来转发请求
进程式LB(负载均衡)
将负载均衡逻辑集成于服务消费者,消费者从注册中心里获取哪些地址可以用,然后自己根据策略来选择合适服务
Ribbon本地负载均衡客户端和Nginx服务端负载均衡的区别
- Nginx是服务器负载均衡(集中式LB),所有请求交给Nginx转发,负载均衡由服务端实现
- Ribbon是本地负载均衡(进程式LB),客户端会从注册中心获取服务注册列表缓存到JVM本地,而后在本地实现RPC远程调用
集成
如果注册中心使用Eureka,服务消费者使用Eureka 客户端,则不需要加入Ribbon依赖,因为下方的依赖里包含了
<!-- eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
其他情况下需要加入Ribbon依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>2.2.5.RELEASE</version>
</dependency>
前文基于Eureka的服务注册发现案例模块里,使用了支持Ribbon负载均衡的的RestTemplate工具(只需要在RestTemplate的Bean声明里加入注解@LoadBalanced即可),所以这里不再赘述Ribbon集成方法。
Ribbon负载均衡算法(了解)
Ribbon的负载均衡实现均继承自接口IRule,常见实现算法如下:
- RoundRobinRule: 默认轮询的方式
- RandomRule: 随机方式
- WeightedResponseTimeRule: 根据响应时间来分配权重的方式,响应的越快,分配的值越大。
- BestAvailableRule: 选择并发量最小的方式
- RetryRule: 在一个配置时间段内当选择server不成功,则一直尝试使用subRule的方式选择一个可用的server
- ZoneAvoidanceRule: 复合判断server所在区域的性能和server的可用性选择服务器
- AvailabilityFilteringRule: 先过滤掉故障实例,再选择并发较小的实例
Ribbon自定义负载均衡算法
-
轮询算法公式
调用服务器位置下标 = rest接口第几次请求数 % 服务器集群总数量 -
自定义负载均衡算法参考
https://blog.csdn.net/shunhua19881987/article/details/75466797
出 处:https://www.cnblogs.com/spzmmd/p/14648084.html
最新更新
带有参数的装饰器
类装饰器
django中的auth模块与admin后台管理
python的日期处理
字符串常用方法
基本数据类型概述
python-map()函数基本用法
python带你实现任意下载AcFun视频数据~
bbs项目之注册功能
变量的定义和使用
三大常用数据库事务详解之三:事务运行
三大常用关系型数据库事务详解之二:基
三大关系型数据库事务详解之一:基本概
MongoDB常用命令(2)
MongoDB基本介绍与安装(1)
SQLServer触发器调用JavaWeb接口
SQL Server索引的原理深入解析
SqlServer2016模糊匹配的三种方式及效率问题
SQL中Truncate的用法
sqlserver 多表关联时在where语句中慎用tri
VB.NET中如何快速访问注册表
ASP.NET中图象处理过程详解
Vue(1)Vue安装与使用
JavaScript 语言入门
js将一段字符串的首字母转成大写
纯原生html编写的h5视频播放器
H5仿原生app短信验证码vue2.0组件附源码地
TypeScript(4)接口
TypeScript(3)基础类型
TypeScript(2)WebStorm自动编译TypeScript配置