可在控制面对服务的路由进行精细控制,是一个成熟 RPC 系统必备的能力之一。作为一个逐步走向成熟的 RPC 系统,Apache/dubbo-go(以下简称 dubbo-go )的最新版本 v1.4 中已经实现了 Condition Router 和 Health Instance First Router 等路由。
实现一个功能,首先要清楚其本质。那到底什么是路由规则,我们为什么需要路由规则?设想这么一个场景:现在要对某服务的新版本进行一次灰度发布,需要将一些对实验流量进行引流到灰度机器,其余流量依旧使用正常服务。此时就可以考虑使用路由策略达到目的。
路由规则( routing rule )是为了改变网络流量所经过的途径而修改路由信息的技术,通过改变路由属性(包括可达性)达到引流的目的。在发起一次 RPC 调用前,它会过滤目标服务器地址,将消费端最终发起 RPC 调用的目标范围限定在过滤后的地址列表。