Ribbon

一.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࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值