dubbo集群容错之router路由规则

  Router服务路由, 根据路由规则从多个Invoker中选出一个子集AbstractDirectory是所有目录服务实现的上层抽象, 它在list列举出所有invokers后,会在通过Router服务进行路由过滤。

   Router应用隔离,读写分离,灰度发布中都发挥作用。

 

   灰度发布

     概念:

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

灰度期:灰度发布开始到结束期间的这一段时间,称为灰度期。

          过程:

1.首先在192.168.22.58192.168.22.59两台机器上启动Provider,然后启动Consumer

2.假设我们要升级192.168.22.58服务器上的服务,接着我们去dubbo的控制台配置路由,切断192.168.22.58的流量,配置完成并且启动之后,就看到此时只调用192.168.22.59的服务

3.假设此时你在192.168.22.58服务器升级服务,升级完成后再次将启动服务.

4.由于服务已经升级完成,那么我们此时我们要把刚才的禁用路由取消点,于是点了禁用,但是此时dubbo的这个管理平台就出现了bug

惊奇的发现点了禁用,数据就变两条了,继续点禁用,还是两条,而且删除还删除不了,但是一直删不了也不是办法,解决办法也是有的,那就是去zookeeper上删除节点,然后刷新控制台的界面,如下图那么就只剩下一条了

6.那么此时我们再看控制台的输出,已经恢复正常,整个灰度发布流程结束

首先还是上图:

三个实现类,分别是ConditionRouter,MockInvokersSelector,ScriptRouter。

ConditionRouter:

      条件路由主要就是根据dubbo管理控制台配置的路由规则来过滤相关的invoker,当我们对路由规则点击启用的时候,就会触发RegistryDirectory类的notify方法。条件路由有一个特点,就是他的getUrl是有值的

思考 :为什么这个notify方法传入的是List<URL>呢?

所有配置最终都将转换为 URL 表示,并由服务提供方生成,经注册中心传递给消费方,各属性对应 URL 的参数,参见配置项一览表中的 "对应URL参数" 列

重点来了:

因为我们在管理后台配置了禁用192.168.56.2,所以最后添加进invokers的就只有192.168.56.3

猜你喜欢

转载自blog.csdn.net/z15732621582/article/details/81071674
今日推荐