【微服务】面试 2、负载均衡

Ribbon 负载均衡流程

  • Spring Cloud 中负载均衡组件是 Ribbon,在使用 Feign 等组件发起远程调用时,底层会调用 Ribbon 进行负载均衡。
  • 以订单服务(order service)调用用户服务(user service)为例,当 order service 发起远程调用时,会指定 user service 名称,接着调用 Ribbon 组件。Ribbon 从注册中心拉取 user service 的相关信息,获取到如 localhost:8081 和 localhost:8082 等地址后,依据特定策略(如轮询)决定调用哪一台服务器,此过程在客户端(即远程调用发起方)完成。

Ribbon 常见负载均衡策略介绍

  • 轮询(Round Robin):按顺序依次调用服务实例,如有两个实例,先调用 8081,下次则调用 8082,依此类推。
  • 权重选择 :依据服务器的响应时间确定权重,响应时间越长权重越小,被选中概率越低。
  • 随机测量:随机挑选一个可用服务器进行调用。
  • 最小连接数(Best Available):忽略短路服务器,选择并发数较低(即空闲较多)的服务器。例如有两台服务器,连接数分别为 100 和 50,会选择连接数为 50 的服务器。
  • 重试机制(Retry):先按轮询方式选择服务进行远程调用,若服务实例不存在或宕机,会按指定时间不断重试获取该服务。
  • 可用性敏感策略:先过滤掉非健康的服务器,再选择连接数较小的服务器进行远程调用。
  • 区域敏感策略 :Ribbon 的默认策略。以区域可用服务器为基础进行选择,若存在区域概念(如机房、机架划分),优先选择同一区域内的服务器;若无区域概念,则采用轮询方式。建议在面试中能陈述出轮询、权重、随机、区域敏感这四种常见策略。

Ribbon 自定义负载均衡策略实现方法

  • 可创建类实现特定接口(如 IRule 接口),再通过配置类或配置文件进行配置。
  • 配置方式分为全局和局部:
    • 全局配置是在服务发起方添加代码,使所有使用 Ribbon 的远程调用都采用该策略。
    • 局部配置则是在客户端配置文件中指定对某一特定服务调用时使用的负载均衡策略。
相关推荐
nice_lcj5209 小时前
Java Lambda 表达式入门:怎么写、怎么用、常用方法有哪些
java·开发语言·后端·面试
nice_lcj52013 小时前
ThreadLocal 入门:它是怎么隔离数据的、为什么会导致内存泄漏
java·开发语言·后端·面试·并发编程·内存泄漏·threadlocal
胡写代码14 小时前
把数据库连接搬进配置中心,服务起不来:spring.config.import 的 4 个必填项
spring cloud·微服务
Yuzhiyuxia15 小时前
【AI Agent面试系列】上下文管理1
人工智能·面试·职场和发展
CoderYanger17 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
java·数据库·spring·面试·职场和发展·java-ee·mybatis
Rain的Java大神之路19 小时前
公交App上“还有2站,约5分钟”怎么实现?90%的人答错这道大厂面试题:GPS漂移、ETA不准、10万QPS热点读全拆透(附完整代码)
java·后端·面试
利威尔xu19 小时前
2026-11-05-Go内存管理面试
面试·golang
aZhe的全栈知识分享1 天前
AI 还原 Figma 效果总达不到预期?先别急着让它写代码
前端·后端·面试
Fuyo_11191 天前
C++ 运行时多态与虚函数机制全面剖析【面试重点】
开发语言·c++·面试
IT规划师1 天前
一文讲透五种发布机制:滚动、蓝绿、金丝雀、红黑与 AB
后端·面试