news 2026/8/14 7:10:03

【微服务负载均衡器】Ribbon

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【微服务负载均衡器】Ribbon

Ribbon

  • 1. 什么是Ribbon
    • 1.1 客户端的负载均衡
    • 1.2 服务端的负载均衡
    • 1.3 常见负载均衡算法
  • 2. Nacos使用了Ribbon
    • 2.1 🎯 @LoadBalanced 做了什么?
  • 3. Ribbon负载均衡策略与支持的算法
    • 3.1 修改默认负载均衡策略
  • 4. 自定义负载均衡策略
  • 5. 使用LoadBalancer替换Ribbon
    • 5.1 RestTemplate整合LoadBalancer

1. 什么是Ribbon

目前主流的负载均衡方案可以分为以下两种:

  • 集中式负载均衡器,在消费者和服务提供方中间使用独立的代理方式进行负载,有应该的(比如F5)还有软件的如Nginx
  • 客户端根据自己的请求情况做负载均衡,Ribbon就属于客户端自己做负载均衡

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现我们自己的负载均衡算法。

1.1 客户端的负载均衡

例如Spring Cloud中的Ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;即在客户端就进行负债均衡算法分配。

1.2 服务端的负载均衡

例如Nginx,通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器直接按选择一个进行访问;即在服务器端再进行负载均衡算法分配。

1.3 常见负载均衡算法

  • 随机,通过随机选择服务进行执行
  • 轮询,负载均衡默认的实现方式,请求之后排队处理
  • 加权轮询,通过对服务器新能分型,给高配置,低负载的服务器分配更高的权重,均衡各个服务器的压力
  • 地址hash,通过客户端请求的地址的HASH值取模映射进行服务器调度。ip hash
  • 最小链接数,即使请求均衡,压力不一定会均衡,最小连接数法就是根据服务器的情况,比如请求积压数等参数,将请求分配到当前压力最小的服务器上。

2. Nacos使用了Ribbon

Nacos中默认就集成了Ribbon,如下图所示

如下使用@LoadBalanced就开启了负载均衡

@ConfigurationpublicclassRestConfig{@Bean@LoadBalancedpublicRestTemplaterestTemplate(){returnnewRestTemplate();}}

2.1 🎯 @LoadBalanced 做了什么?

它会给 RestTemplate自动注入一个 LoadBalancerInterceptor,让 RestTemplate 支持:

✔️服务名调用(自动从注册中心获取实例)

例如调用:

restTemplate.getForObject("http://user-service/api/user/1",String.class);

其中 user-service 并不是域名,而是服务名。

🎯Spring Cloud 会:

  1. 从注册中心(Nacos/Eureka)获取 user-service 的所有实例列表
  2. 使用 Load Balancer(Ribbon、Spring Cloud LoadBalancer)根据策略 轮询 / 随机 / 权重选择一个实例
  3. 将最终 URL 转换为:
http://192.168.1.10:8080/api/user/1
  1. 发起真实请求

3. Ribbon负载均衡策略与支持的算法


3.1 修改默认负载均衡策略

全局配置:调用其他微服务,一律使用指定的负载均衡算法。

1.配置类

========补充图===============

2.配置文件
调用指定微服务提供的服务时,使用对应的负载均衡算法。
修改application.yml

4. 自定义负载均衡策略

只需要我们都来实现IRule或者实现AbstractLoadBalancerRule

实现基于Nacos权重的负载均衡策略

5. 使用LoadBalancer替换Ribbon

Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器,用来替代Ribbon。

Spring官方提供了两种负载均衡的客户端:

1. Rest Template
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Htp服务的方法,能够大大提高客户端的编写效率。默认情;况下,RestTemplate默认依赖jdk的HTTP连接工具。

2. WebClient
Webclient是从Spring WebFlux 5.0版本开始提供的一个非阻塞的基于响应式编程的进行Http请求的容户端工具。它的响应式编程的基于Reactor的。WebClient中提供了标准Http请求方式对应的get、post、put、delete等方法,可以用来发起相应的请求。

5.1 RestTemplate整合LoadBalancer

1. 引入依赖

注意这里的父,也需要加上spring-cloud的版本

然后自定义一个LoadBalance的配置类

@ConfigurationpublicclassRestTemplateConfig{@Bean@LoadBalanced// 核心,一行开启 Spring LoadBalancerpublicRestTemplaterestTemplate(){returnnewRestTemplate();}}

⭐ Bonus:如果你想换成随机策略

加一个自定义配置即可:

@ConfigurationpublicclassMyLoadBalancerConfig{@BeanReactorLoadBalancer<ServiceInstance>randomLoadBalancer(Environmentenv,LoadBalancerClientFactoryfactory){StringserviceName=env.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);returnnewRandomLoadBalancer(factory.getLazyProvider(serviceName,ServiceInstanceListSupplier.class),serviceName);}}

application.yml:

spring:cloud:loadbalancer:configurations:provider-service:myLoadBalancerConfig
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 7:09:33

vscode-live-sass-compiler高级用法:多格式输出与Source Map配置指南

vscode-live-sass-compiler高级用法&#xff1a;多格式输出与Source Map配置指南 【免费下载链接】vscode-live-sass-compiler Compile Sass or Scss file to CSS at realtime with live browser reload feature. 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-live-s…

作者头像 李华
网站建设 2026/8/14 7:07:45

Windows系统文件TrustedSignalCredProv.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/8/14 7:03:49

Windows系统文件tspubwmi.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/8/14 7:03:31

Graph Engineering与多智能体系统:Codex V2的动态派生与并行执行实践

1. 项目概述&#xff1a;从单兵作战到“图”谋大业最近在折腾多智能体系统&#xff0c;发现一个挺有意思的现象&#xff1a;很多团队一开始雄心勃勃&#xff0c;搞了七八个Agent&#xff0c;每个都号称能独当一面&#xff0c;结果真跑起来&#xff0c;要么是“一核有难&#xf…

作者头像 李华
网站建设 2026/8/14 7:02:44

数学建模竞赛复盘:从评分要点到高分思路的深度解析

1. 项目概述&#xff1a;一次高含金量竞赛的深度复盘 每年九月的那个周末&#xff0c;对于全国数十万大学生而言&#xff0c;都是一场没有硝烟的“头脑风暴”。全国大学生数学建模竞赛&#xff0c;简称“国赛”&#xff0c;其分量不言而喻。2021年的赛题&#xff0c;无论是A题的…

作者头像 李华
网站建设 2026/8/14 7:02:25

Weakpass哈希查询教程:MD5/NTLM/SHA1密码在线秒解的秘密

Weakpass哈希查询教程&#xff1a;MD5/NTLM/SHA1密码在线秒解的秘密 【免费下载链接】weakpass Weakpass collection of tools for bruteforce and hashcracking 项目地址: https://gitcode.com/gh_mirrors/we/weakpass Weakpass是一套客户端密码与哈希破解工具集&#…

作者头像 李华