Ribbon规则IRule调整遇到的坑


背景

技术线,springcloud,zookeeper,ribbon

由于公司发版比较频繁,每次服务提供方发版总会有些有些异常

No instances available for ***

解决方式

ribbon的配置主要在RibbonClientConfiguration中。

通过变更IRule可以更改获取server的规则


规则图

实际使用准备结合这2中rule来替换。


问题点

这里的${ribbon.client.name}无法配置,因为每个server是一个独立的context,具体实现是SpringClientFactory,每个server name一个独立的AnnotationConfigApplicationContext。我们项目中设置配置会出错。

替补

项目启动的时候扫描所有feignclinet注解类,拿到所有的server-name

这时候可以通过System.setProperty("XXX.ribbon.NFLoadBalancerRuleClassName",MyRetryRule)的方式设置。

虽然绕了一点,但是在不改变底层设计的方式上实现了需求。

你可能感兴趣的:(Ribbon规则IRule调整遇到的坑)