LoadBalancer负载均衡:集群高可用调用优化
LoadBalancer负载均衡集群高可用调用优化一个服务三个节点请求来了该打给谁你总不能闭着眼睛随机点一个吧——那叫非洲大草原式负载均衡。今天聊聊 SpringCloud 官方的 LoadBalancer让你的请求分配得明明白白。一、负载均衡到底在均衡什么假设你的product-service部署了 3 个节点每天被调用 10 万次。如果没有负载均衡所有请求可能全打到节点 A 上——节点 A CPU 飙到 99%节点 B 和 C 闲得发慌。这就是典型的流量分配不均。负载均衡解决三个问题分摊压力请求分散到多个节点避免单点过热提高可用性某个节点挂了自动切换到健康的节点横向扩展流量涨了就加节点负载均衡自动把新节点纳入调度1.1 客户端 vs 服务端负载均衡服务端负载均衡 (Nginx) 客户端负载均衡 (LoadBalancer) Client → Nginx ┬→ Server A Client ─── 拉取实例列表 ──→ 注册中心 ├→ Server B │ └→ Server C ├─ 选节点A → 直连 ├─ 选节点B → 直连 └─ 选节点C → 直连 请求先到Nginx 请求直接打到后端省去一层转发 Nginx负责分发 客户端自己做负载决策特性服务端 (Nginx)客户端 (LoadBalancer)流量路径请求→Nginx→实例请求→实例直连性能开销多一跳无额外跳转配置管理集中配置分散在客户端典型场景网关入口微服务内部调用实例发现手动配置 upstream自动从注册中心拉取微服务架构里服务端负载均衡常放在最外层网关入口内部服务间调用用客户端负载均衡——两者不是替代关系而是互补。二、LoadBalancer 替代 RibbonRibbon 曾是 SpringCloud 标配的客户端负载均衡组件但 Netflix 在 2018 年宣布其进入维护模式不再加新功能。SpringCloud 官方推出了 Spring Cloud LoadBalancer 作为替代。为什么要换Ribbon 已停更Bug 不会再修Ribbon 基于阻塞式 HTTP 客户端不适配 WebFlux 响应式场景LoadBalancer 原生支持 Spring Reactor响应式友好2.1 依赖引入dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency无需额外注解LoadBalancer 会自动配置。如果你同时引入了 Feign 或 SpringCloud GatewayLoadBalancer 会自动整合。2.2 LoadBalancer 整合 Nacos┌──────────────────────────────────────────────┐ │ Nacos 注册中心 │ │ product-service: [192.168.1.10, .11, .12] │ └──────────────────────────────────────────────┘ ↑ 注册 ↓ 定时拉取30s间隔 ┌─────────────────┐ ┌─────────────────────┐ │ product-service │ │ order-service │ │ (3个实例) │ │ ┌─────────────────┐ │ │ │←───│ │ LoadBalancer │ │ │ │ 调用│ │ ↓ 选一个实例 │ │ └─────────────────┘ │ │ 直连调用 │ │ │ └─────────────────┘ │ └─────────────────────┘关键点LoadBalancer 从 Nacos 获取的是服务实例列表的快照缓存默认每 30 秒刷新一次。这意味着新实例上线最多 30 秒后才能被调用方感知——如果你的服务扩缩容很频繁需要调小刷新间隔。三、负载均衡策略3.1 内置策略LoadBalancer 默认提供两种策略策略实现类说明轮询 (RoundRobin)RoundRobinLoadBalancer依次轮转默认策略随机 (Random)RandomLoadBalancer随机选一个实例默认就是轮询如果你就是想要随机的加个配置即可ConfigurationpublicclassLoadBalancerConfig{BeanpublicReactorLoadBalancerServiceInstancerandomLoadBalancer(Environmentenvironment,LoadBalancerClientFactoryloadBalancerClientFactory){Stringnameenvironment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);returnnewRandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name,ServiceInstanceListSupplier.class),name);}}3.2 自定义策略基于权重的负载均衡生产环境中很可能不是所有节点配置相同——8 核 16G 的机器和 4 核 8G 的机器分配的流量应该不一样。我们来写一个权重负载均衡Slf4jpublicclassWeightedLoadBalancerimplementsReactorServiceInstanceLoadBalancer{privatefinalObjectProviderServiceInstanceListSupplierserviceInstanceListSupplierProvider;privatefinalStringserviceId;publicWeightedLoadBalancer(ObjectProviderServiceInstanceListSuppliersupplierProvider,StringserviceId){this.serviceInstanceListSupplierProvidersupplierProvider;this.serviceIdserviceId;}OverridepublicMonoResponseServiceInstancechoose(Requestrequest){ServiceInstanceListSuppliersupplierserviceInstanceListSupplierProvider.getIfAvailable();returnsupplier.get(request).next().map(instances-{ServiceInstancechosenchooseByWeight(instances);if(chosennull){returnnewEmptyResponse();}log.debug(权重策略选中: {}:{},chosen.getHost(),chosen.getPort());returnnewDefaultResponse(chosen);});}privateServiceInstancechooseByWeight(ListServiceInstanceinstances){if(instances.isEmpty())returnnull;// 从 Nacos 元数据中读取权重默认 1inttotalWeightinstances.stream().mapToInt(i-Integer.parseInt(i.getMetadata().getOrDefault(weight,1))).sum();if(totalWeight0){// 没有权重配置时回退到轮询returninstances.get(ThreadLocalRandom.current().nextInt(instances.size()));}// 按权重随机intoffsetThreadLocalRandom.current().nextInt(totalWeight);for(ServiceInstanceinstance:instances){intweightInteger.parseInt(instance.getMetadata().getOrDefault(weight,1));offset-weight;if(offset0){returninstance;}}returninstances.get(0);}}配置这个自定义策略ConfigurationpublicclassWeightedLoadBalancerConfig{BeanpublicReactorLoadBalancerServiceInstanceweightedLoadBalancer(Environmentenvironment,LoadBalancerClientFactoryfactory){Stringnameenvironment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);returnnewWeightedLoadBalancer(factory.getLazyProvider(name,ServiceInstanceListSupplier.class),name);}}然后在 Nacos 配置实例元数据weight3权重越高被选中的概率越大。这下你那台 16 核机器的weight设成 34 核机器设成 1流量自然分配得更合理。四、健康检查与缓存机制LoadBalancer 依赖 Nacos 的健康检查。Nacos 客户端会定时默认 5 秒向服务实例发送心跳如果超时没收到就标记该实例不健康下一轮 LoadBalancer 拉取时就不会包含它。spring:cloud:loadbalancer:cache:enabled:truettl:30s# 缓存过期时间即多久刷新一次实例列表capacity:1000# 缓存容量nacos:discovery:heartbeat-interval:5s# 心跳间隔注意cache.ttl不宜设得太小否则频繁从 Nacos 拉取会增加注册中心压力太大则服务上下线感知慢。30 秒是个合理的默认值。五、与 Feign 的关系大多数开发者不需要直接操作 LoadBalancer因为 Feign 已经帮你集成了——引入spring-cloud-starter-loadbalancer后Feign 会自动走 LoadBalancer 选节点。你在代码里只用关心 Feign 接口怎么写负载均衡全程在幕后工作。User Code ↓ 调用 FeignClient 代理 ↓ 拦截请求 LoadBalancer.choose(serviceName) ↓ 选出一个实例 HttpURL → http://192.168.1.10:8081/api/product/1 ↓ 发起请求 product-service 实例六、负载均衡策略对比策略原理优点缺点适用场景轮询依次分配实现简单、各节点尽可能平均不考虑节点性能差异节点配置相同随机随机选取简单可能不均匀对均衡性要求不高权重按比例分配适配异构集群需维护权重信息节点配置不同最少连接选当前连接最少的动态均衡需维护连接计数长连接场景一致性哈希同参数请求到同一节点缓存友好节点变化时受影响需要会话保持总结LoadBalancer 是微服务内部调用的流量调度器它从 Nacos 感知服务拓扑按策略选择目标实例。日常开发中你甚至感觉不到它的存在——Feign 帮你挡掉了所有复杂性。但当你的服务出现流量倾斜、某些节点负载过高时就该优化负载均衡策略了。

相关新闻

无人机编队控制:自适应滑模与神经网络容错技术

无人机编队控制:自适应滑模与神经网络容错技术

1. 项目背景与核心挑战主从式无人机编队控制在军事侦察、农业植保、灾害救援等领域具有广泛应用前景。这种控制模式通常由一架领航无人机(主节点)和多架跟随无人机(从节点)组成,通过无线通信实现协同飞行。在实际应用中…

2026/8/1 1:00:34阅读更多 →
2026年制造业短视频运营公司深度评测:工厂短视频获客选型参考

2026年制造业短视频运营公司深度评测:工厂短视频获客选型参考

数字营销新浪潮:短视频AI搜索重构制造企业获客路径时代背景与行业数据2026年,数字营销正式进入短视频与AI搜索深度融合的新阶段。抖音、视频号、小红书等平台凭借精准的算法推荐与搜索能力,成为工业品、制造业、工程建设等ToB高客单行业品牌曝…

2026/8/1 0:58:32阅读更多 →
UiPath Community Register

UiPath Community Register

https://cloud.uipath.com/portal_/register打开链接 → 注册账号(QQ/163 等个人邮箱均可,无需企业邮箱) 注册类型选择 Community(社区版免费方案) 邮箱验证完成,进入云端控制台 左侧菜单【资源中心 Resour…

2026/8/1 0:58:29阅读更多 →
Chrome开发者必知:趣味彩蛋与实用调试技巧全解析

Chrome开发者必知:趣味彩蛋与实用调试技巧全解析

最近在整理浏览器使用技巧时,发现很多开发者朋友对谷歌浏览器(Google Chrome)内置的一些趣味“彩蛋”很感兴趣。这些彩蛋不仅是程序员的幽默体现,更隐藏着一些实用的调试技巧、版本信息,甚至是离线娱乐的小游戏。本文将…

2026/8/1 2:18:52阅读更多 →
ADC采样数字滤波算法全解析:从原理到实战选型指南

ADC采样数字滤波算法全解析:从原理到实战选型指南

1. 项目概述:为什么ADC采样后必须滤波?做嵌入式或者硬件开发的朋友,对ADC(模数转换器)肯定不陌生。无论是测量温度、压力,还是采集音频、心电信号,我们都需要把现实世界连续变化的模拟量&#x…

2026/8/1 2:18:52阅读更多 →
Agents Hate Friction: 你的DX,对Agent真的够吗?

Agents Hate Friction: 你的DX,对Agent真的够吗?

本文字数:5153;估计阅读时间:13 分钟作者:Al Brown我们用了数十年时间才领悟到为人类设计软硬件的真谛。你知道第一个鼠标原型是木头做的,只有一个角落里的小红按钮吗?那个体验糟透了。但自那时&#xff08…

2026/8/1 2:18:52阅读更多 →
RPG Maker加密文件处理:如何在不安装软件的情况下本地解密游戏资源?

RPG Maker加密文件处理:如何在不安装软件的情况下本地解密游戏资源?

RPG Maker加密文件处理:如何在不安装软件的情况下本地解密游戏资源? 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项…

2026/8/1 2:18:52阅读更多 →
AI Agent技术实现与行业应用实践

AI Agent技术实现与行业应用实践

1. AI Agent时代的商业范式转型过去十年间,我见证过上百家企业从传统软件销售向智能化服务转型的完整历程。2023年成为AI Agent技术爆发的分水岭,最显著的变化是:客户不再满足于购买功能固化的软件包,而是需要能够封装行业know-ho…

2026/8/1 2:18:52阅读更多 →
SolidWorks_动画模拟与仿真11_重力与载荷施加

SolidWorks_动画模拟与仿真11_重力与载荷施加

重力与载荷施加:将物理世界的力量注入模拟系统 摘要:在物理仿真与游戏开发中,仅仅拥有刚体运动学与碰撞检测是远远不够的。一个让用户感到“真实”的虚拟世界,必须遵循牛顿力学的法则。本文将从零开始,深入剖析如何在自…

2026/8/1 2:16:52阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →