4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
文章目录
- 4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
- 前言
- 1. Ribbon 介绍
- 2. Ribbon 原理
- 3. Spring Cloud Ribbon 实现负载均衡算法-应用实例
- 4. 总结:
- 5. 最后:
前言
1. Ribbon 介绍
Ribbon 是什么 ?
1.Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端,负载均衡的工具
2.Ribbon 主要功能是提供客户端负载均衡算法和服务调用
3.Ribbon 客户端组件提供一系列完善的配置项如“连接超时,重试”
4.Ribbon 会基于某种规则(如简单轮询,随机连接等)去连接指定服务
5.程序员很容易是由 Ribbon 的负载均衡算法实现负载均衡
6.一句话: Ribbon: 负载均衡 + RestTemplate 调用
Ribbon 的官网地址: https://github.com/Netflix/ribbon
Ribbon 进入维护状态?
1.1 LB(Load Balance 负载均衡)
LB 分类
- 集中式: LB
即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如 Nginx)
由该设施负责把访问请求通过某种策略转发至服务的提供方。
- 进程内 LB
将 LB逻辑集成到消费方,消费方服务注册中心获知有哪些地址可用,然后再从这些地址中选择
一个合适的服务地址
Ribbon 就属于进程内 L B,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。
2. Ribbon 原理
Ribbon 架构图&机制
2.2 Ribbon 机制
Ribbon 机制:
Ribbon 常见负载算法
3. Spring Cloud Ribbon 实现负载均衡算法-应用实例
需求分析/图解
- 需求: 将默认的轮询算法改成随机算法 RandomRule
- 浏览器输入 : http://localhost/member/consumer/get/1
- 要求 访问的 10000/10002 端口的服务是随机的,也就是设置为:RandomRule 随机负载均衡
其实:所谓的随机是在少量数据上是随机的,但是在大量数据的基础上,随机的结果基本上和平均 差不多。
- 首先:创建 member-service-consumer-80 com/rainbowsea/springcloud/config/RibbonRule.java,随机负载均衡的算法的配置类,进行配置随机负载均衡 。
package com.rainbowsea.springcloud.config;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RibbonRule {
@Bean // 配置注入自己的负载均衡算法
public IRule myRibbonRule() {
// 这里老师返回的是 RandomRule,大家也可以指定其他的内容。
//return new WeightedResponseTimeRule();
return new RandomRule(); // 随机算法
}
}
测试
- 浏览器输入 : http://localhost/member/consumer/get/1
- 观察访问的 10000/10002 端口的服务是随机的。
4. 总结:
- Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端,负载均衡的工具。
- LB(Load Balance 负载均衡) 两种分类:
- 集中式: LB
- 进程内 LB
- Ribbon 原理和机制
- Ribbon 常见的负载均衡算法。
- 配置 Spring Cloud Ribbon 的三点: