动态路由
Dubbo 分类
Dubbo当前常用的有2个分支版本,一个是apache dubbo(GroupID是org.apache.dubbo), 一个是dubbox (GroupID是com.alibaba)。两个分支的dubbo,对应不同的接入插件,大家接入之前可以先通过GroupID判断下当前项目依赖的是哪个分支的dubbo。
Apache Dubbo 接入
支持版本
当前只支持dubbo 2.x版本的接入,dubbo 3.x暂未支持。
引入依赖
首先,动态路由需要依赖以下2个插件,需要将2个插件引入POM中,插件版本建议使用最新版本。
org.apache.dubbo.extensions:dubbo-registry-polaris:北极星接入插件
org.apache.dubbo.extensions:dubbo-cluster-polaris-dubbo2:北极星动态路由插件
<dependency>
<groupId>org.apache.dubbo.extensions</groupId>
<artifactId>dubbo-registry-polaris</artifactId>
<version>1.0.0<version>
</dependency>
<dependency>
<groupId>org.apache.dubbo.extensions</groupId>
<artifactId>dubbo-cluster-polaris-dubbo2</artifactId>
<version>1.0.0<version>
</dependency>
配置北极星注册中心地址
接下来,需要添加北极星registry的配置,指定北极星的地址及相关配置信息,可以通过配置文件及代码的方式进行指定:
配置文件方式添加:
<dubbo:registry address="polaris://127.0.0.1:8091"/>
使用动态路由能力
*** 说明 ***
动态路由可以实现基于dubbo的请求消息内容来对请求调度到不同的实例分组,比如将带了某些user标签的请求调度到灰度分组。
当前支持针对dubbo消息的以下内容进行路由调度:
消息类型 | dubbo消息内容 | 路由规则请求类型 |
---|---|---|
消息头 | attachment | 请求头(HEADER) |
RPC方法 | method | 路径(PATH) |
*** 配置路由规则 ***
配置自定义路由规则,指定带有附件user为archer的请求,路由到版本1.0.0的实例上。
执行服务调用,调用时,需要设置一下当前请求的attachement。
// 设置attachment,指定当前用户
RpcContext.getContext().setAttachment("user", userName);
String message = service.sayHello("hello");
System.out.printf("message from %s is %s%n", userName, message);
样例
动态路由样例包括3个工程,代表的是多个服务之间调用,调用链路为:front->middle->back。
- front工程:dubbo-router-front
- middle工程:dubbo-router-middle
back工程:dubbo-router-back
- 下一篇→