依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> <version>2.1.0.RELEASE</version> </dependency>
原文:https://blog.csdn.net/wo18237095579/article/details/83384134?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
参考:https://blog.csdn.net/Jaycrees/article/details/105467629?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1
Ribbon 的负载均衡策略
默认为轮询策略
方式1:全局策略设置
增加 Ribbon 负载均衡策略配置类
@Configuration public class RibbonGlobalLoadBalancingConfiguration { /** * 随机规则 */ @Bean public IRule ribbonRule() { return new RandomRule(); } }
方式2:
基于注解的针对单个服务的 Ribbon 负载均衡策略
这里把上一步的的全局配置给删掉。
基于注解的针对单个服务的 Ribbon 负载均衡策略
这里把上一步的的全局配置给删掉。
注解方式
增加一个针对单个服务的 Ribbon 负载聚恒策略配置类:
@Configuration /** 用来标记使用的注解,方便排除或者引用 **/ @AvoidScan public class RibbonRandomLoadBalancingConfiguration { @Resource IClientConfig clientConfig; @Bean public IRule ribbonRule(IClientConfig clientConfig) { return new RandomRule(); } }
- **IClientConfig:**针对客户端的配置管理器。
在主启动类上方做针对单个服务的负载均衡策略:
/** 配置针对单个服务的 Ribbon 负载均衡策略 **/ @RibbonClient(
//服务名 name = "demo-goods", configuration = RibbonRandomLoadBalancingConfiguration.class ) /** 此处配置根据标识 @AvoidScan 过滤掉需要单独配置的 Ribbon 负载均衡策略,不然就会作用于全局,启动就会报错 */ @ComponentScan( excludeFilters = @ComponentScan.Filter( type = FilterType.ANNOTATION, value = AvoidScan.class ) )
方式3:
基于配置文件方式:
我个人也不太喜欢上方的那种注解方式针对单个服务的负载均衡策略,下面是配置文件的方式:
application.yml
- .ribbon.*
-
### 针对单个服务的 Ribbon 配置 demo-goods-service: ribbon: # 基于配置文件形式的 针对单个服务的 Ribbon 负载均衡策略 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
my-load-balanced-service: ribbon: listOfServers: localhost:1001,localhost:1002,localhost:1003 NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule NFLoadBalancerPingClassName: com.netflix.loadbalancer.responseTimeWeightedRule
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2019-06-19 mongoDB 笔记 https://www.runoob.com/mongodb/mongodb-query.html