Spring Cloud 系列之负载均衡(五)
鉴于章节(四)文章中引入了拓展思考,在很多场景下,我们需要自定义 Ribbon 的配置,此篇主要 demo 示例为修改 Ribbon 的负载均衡策略。
Ribbon
配置自定义
配置自定义可以分为如下两种:
- 使用
Java
代码自定义Ribbon
配置,配置指定名称的Ribbon Client
实际上就是通过注解声明式的实现了1
2
3
4
5
6
7IClientConfig ribbonClientConfig: DefaultClientConfigImpl
IRule ribbonRule: ZoneAvoidanceRule
IPing ribbonPing: DummyPing
ServerList<Server> ribbonServerList: ConfigurationBasedServerList
ServerListFilter<Server> ribbonServerListFilter: ZonePreferenceServerListFilter
ILoadBalancer ribbonLoadBalancer: ZoneAwareLoadBalancer
ServerlistUpdater ribbonServerListUpdater: PolingServerListUpdaterRibbon Client
的负载均衡策略 - 使用属性自定义
Ribbon
配置,客观感觉此种方式也是比Java
代码配置的方式更加方便,此章节的demo
示例也是基于此种形式实现的。1
2
3
4
5NFLoadBalancerClassName: 配置 ILoadBalancer 的实现类
NFLoadBalancerRuleClassName: 配置 IRule 的实现类
NFLoadBalancePingClassName:配置 IPing 的实现类
NIWSServerlistClassName: 配置 ServerList 的实现类
NIWSServerListFilterClassName:配置 ServerListFilter 的实现类项目组织结构
服务消费者
microservice-consumer-moive-ribbon
application.yaml
中通过定义配置来实现负载均衡策略,追加如下内容:1
2
3microservice-provider-user-ribbon:
ribbon:
NFLoadBalanceerRuleClassName: com.netflix.loadbalancer.RnadomRule- 另外两个服务无需改动*
验证
启动microservice-discovery-eureka
实例一个,microservice-consumer-moive-ribbon-customizing-properties
实例一个,microservice-provider-user-ribbonn
实例一个,如果运行无误的情况下会嗨皮的发下Eureka Portal
页面如下:
多次请求 consumer user-log-instance
接口,查看 provider
日志会发现,请求响应的实例确实发生了变化:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 kirago杂谈!