一.Ribbon简介
Ribbon 是 Netflix 公司实现的一套基于 HTTP、TCP 的客户端负载均衡的工具。 SpringCloud 已将其集成到 spring-cloud-netflix 中,实现 SpringCloud 的服务调用、负载均衡。 用于在微服务架构中管理服务间的通信。它能够实现动态的服务发现和负载均衡,从而提高系统的可靠性和性能。 Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等。就是在配置文件中列出Loade Balancer(简称LB)后面的所有机器,Ribbon会自动的帮助基于某种规则(轮询,随机等)去连接这些机器。也可以使用 Ribbon 实现自定义的负载均衡算法。 Ribbon 是 Spring Cloud 技术栈中非常重要的基础框架,它为 Spring Cloud 提供了负载均衡的能力,比如 Fegin 和 OpenFegin 都是基于 Ribbon 实现的,就连 Nacos 中的负载均衡也使用了 Ribbon 框架。
注: Ribbon 虽然已进入维护模式,但是一时半会还不容易被完全淘汰,还是可以学习一下基本使用的。 Ribbon 替代产品是 Loadbalancer。 【相关网址:】 https://github.com/Netflix/ribbon http://jvm123.com/doc/springcloud/index.html#spring-cloud-ribbon
二.Ribbon 与 Nginx 负载均衡区别
【负载均衡(Load Balance):】
负载均衡指的是 将工作任务 按照某种规则 平均分摊到 多个操作单元上执行。
注:
Web 项目的负载均衡,可以理解为:将用户请求 平均分摊到 多个服务器上处理,从而提高系统的并发度、可用性。
【负载均衡分类:】
按照软硬件划分:
硬件负载均衡: 一般造价昂贵,但数据传输更加稳定。比如: F5 负载均衡。
软件负载均衡: 一般采用某个代理组件,并使用 某种 负载均衡 算法实现(一种消息队列分发机制)。比如:Nginx、Ribbon。
按照负载均衡位置划分:
集中式负载均衡:提供一个 独立的 负载均衡系统(可以是软件,比如:Nginx,可以是硬件,比如:F5)。
通过此系统,将服务消费者的 请求 通过某种负载均衡策略 转发给 服务提供者。
客户端负载均衡(进程式负载均衡):将负载均衡逻辑整合到 服务消费者中,服务消费者 定时同步获取到 服务提供者信息,并保存在本地。
每次均从本地缓存中取得 服务提供者信息,并根据 某种负载均衡策略 将请求发给 服务提供者。
注:
使用集中式负载均衡时,服务消费者 不知道 任何一个服务提供者的信息,只知道独立负载均衡设备的信息。
使用客户端负载均衡时,服务消费者 知道 所有服务提供者的信息。
【Nginx 负载均衡:】
Nginx 实现的是 集中式负载均衡,Nginx 接收 客户端所有请求,并将请求转发到不同的服务器进行处理。
【Ribbon 负载均衡:】
Ribbon 实现的是 客户端负载均衡,从注册中心获得服务信息并缓存在本地,在本地进行 负载均衡。
三.Ribbon组件来实现负载均衡
(1)maven的坐标引入
<!‐‐加入nocas‐client‐‐>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring‐cloud‐alibaba‐nacos‐discovery</artifactId>
</dependency>
<!‐‐加入ribbon‐‐>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
(2)在 RestTemplate 上加入 @LoadBalanced 注解
@Configuration
public class WebConfig {
@LoadBalanced
@Bean
public RestTemplate restTemplate( ) {
return new RestTemplate();
}
}
这样,restTemplate就会使用Ribbon 做负载均衡,Ribbon 默认的负载均衡策略是简单轮询(RoundRobin)。
(3)Nacos 中已经内置了 Ribbon,所以在实际项目开发中无需再添加 Ribbon 依赖了
(4)对于 eureka 来说,其 eureka-client 依赖中已经集成了 ribbon 依赖,所以无需再次引入
四.Ribbon的负载均衡策略介绍
Ribbon 框架的强大之处在于,它不仅内置了 7 种负载均衡策略,同时还支持用户自定义负载均衡策略,所以其开放性和便利性也是它得以流行的主要原因。
(1)负载均衡策略
1. RoundRobinRule:轮询策略。轮询选择,轮询下标,选择下标对应位置的Server
标签:负载,Nginx,Ribbon,均衡,服务提供者,cloud From: https://blog.csdn.net/qq_40551070/article/details/140798214