首页 > 其他分享 >Ribbon

Ribbon

时间:2024-07-31 17:26:54浏览次数:15  
标签:负载 Nginx Ribbon 均衡 服务提供者 cloud

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

相关文章

  • 科普文:springcloud之-Ribbon
    一、SpringCloudRibbon 客户端负载均衡       Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端侧负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。Bibbon 的架构图如下所示:        简单的说,SpringcloudRibbo......
  • 【深入理解SpringCloud微服务】深入理解Ribbon原理并手写一个微服务负载均衡器
    深入理解Ribbon原理并手写一个微服务负载均衡器负载均衡器理解Ribbon原理手写一个微服务负载均衡器总体设计LoadBalanceClientHttpRequestFactorySimpleLoadBalanceClientSimpleLoadBalancerLoadBalanceRulespring.factories与LoadBalanceConfig负载均衡器在微服务......
  • 负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】
    负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】负载均衡-Ribbon基本介绍SpringCloudRibbon是基于NetflixRibbon实现的一套客户端负载均衡的工具。Ribbon主要功能是提供客户端负载均衡算法和服务调用Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等......
  • spring cloud 上云的情况下,Ribbon 客户端负载均衡 与 ALB 服务端负载均衡的选择
    在云环境(例如AWS)中,由于云提供商通常提供强大的负载均衡服务(如AWS的ALB),一般不再需要使用Ribbon这种客户端负载均衡方案。云环境中的负载均衡器通常能够提供更高的可靠性、可扩展性和简化的配置,因此在上云的情况下,使用云提供的负载均衡器是更优的选择。理由分析云提供的负载均衡......
  • Could not recover RibbonLoadBalancerClient.choose ServiceInstance
    org.springframework.retry.TryException:Couldnotrecover;nestedexceptionisjava.lang.AbstractMethodError:org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;......
  • Windows11系统System.Windows.Controls.Ribbon.resources.dll文件丢失问题
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个System.Windows.Controls.Ribbon.resources.......
  • Feign Hystrix Ribbon 超时配置原理解析
    超时配置我们发现feign、ribbon、hystrix中都有超时时间配置,每个组件中超时的具体含义是什么?在三者结合协作后,又应该如何配置?Feign超时配置feign中的超时配置,针对的是一次请求时的连接时间和读取时间。执行一次请求的最长时间=feign连接超时+feign读取超时超时配置由Fe......
  • Openfeign集成Ribbon、Hystrix原理解析
    本篇内容为解析SpringCloudOpenfeign在如下场景中的运行原理Openfeign单独使用集成负载均衡器,这里选择Ribbon,也可以选择SpringLoadBalancer集成断路器,这里选择Hystrix,也可以选择Sentinel相关依赖如下,使用的SpringCloud版本为Hoxton.SR3<dependency><groupId>org.s......
  • Ribbon负载均衡
    SpringCloudRibbon是一套基于NetflixRibbon实现的客户端负载均衡和服务调用工具。负载均衡是系统处理高并发、缓解网络压力和服务端扩容的重要手段之一。通过Ribbon,以将面向服务的REST模板(RestTemplate)请求转换为客户端负载均衡的服务调用,SpringCloud微服务之间的......
  • SpringCloud(2)-Ribbon相关配置
    Ribbon是一套提供客户端负载均衡的工具Ribbon=负载均衡+RestTemplateRibbon属于进程内LoadBalance,含义是将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些服务地址可用,然后再从这些地址中选择出一个合适的服务地址。Ribbon常见负载算法:我们接下来以随机负载......