文章
问答
冒泡
Spring Cloud 系列之负载均衡(五)

鉴于章节(四)文章中引入了拓展思考,在很多场景下,我们需要自定义 Ribbon 的配置,此篇主要 demo 示例为修改 Ribbon 的负载均衡策略。

Ribbon 配置自定义

配置自定义可以分为如下两种:

  1. 使用 Java 代码自定义 Ribbon 配置,配置指定名称的 Ribbon Client
IClientConfig ribbonClientConfig: DefaultClientConfigImpl
IRule ribbonRule: ZoneAvoidanceRule
IPing ribbonPing: DummyPing
ServerList<Server> ribbonServerList: ConfigurationBasedServerList
ServerListFilter<Server> ribbonServerListFilter: ZonePreferenceServerListFilter
ILoadBalancer ribbonLoadBalancer: ZoneAwareLoadBalancer
ServerlistUpdater ribbonServerListUpdater: PolingServerListUpdater

在我的理解看来,实际上就是通过注解声明式的实现了 Ribbon Client 的负载均衡策略

2. 使用属性自定义 Ribbon 配置,客观感觉此种方式也是比 Java 代码配置的方式更加方便,此章节的 demo 示例也是基于此种形式实现的。

NFLoadBalancerClassName: 配置 ILoadBalancer 的实现类
NFLoadBalancerRuleClassName: 配置 IRule 的实现类
NFLoadBalancePingClassName:配置 IPing 的实现类
NIWSServerlistClassName: 配置 ServerList 的实现类
NIWSServerListFilterClassName:配置 ServerListFilter 的实现类

项目组织结构

服务消费者

microservice-consumer-moive-ribbon

  • application.yaml 中通过定义配置来实现负载均衡策略,追加如下内容:
microservice-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 日志会发现,请求响应的实例确实发生了变化:



此章节示例 demo 代码:chapter3-2


--------------------- 分割线 ---------------------

感觉写这玩意有点健身的意思:),想想今天还没码字感觉怪怪的,还是在半夜把这玩意搞了,舒坦些。

springcloud

关于作者

Kirago
个人站点 https://kiragoo.github.io/
获得点赞
文章被阅读