服务注册

Dubbo 分类

Dubbo当前常用的有2个分支版本,一个是apache dubbo(GroupID是org.apache.dubbo), 一个是dubbox (GroupID是com.alibaba)。两个分支的dubbo,对应不同的接入插件,大家接入之前可以先通过GroupID判断下当前项目依赖的是哪个分支的dubbo。

Apache Dubbo 接入

支持版本

当前只支持dubbo 2.x版本的接入,dubbo 3.x暂未支持。

引入依赖

首先,需要将插件 org.apache.dubbo.extensions:dubbo-registry-polaris 引入到业务的POM中,插件版本建议使用最新版本:release

  • org.apache.dubbo.extensions:dubbo-registry-polaris:北极星接入插件
  1. <dependency>
  2. <groupId>org.apache.dubbo.extensions</groupId>
  3. <artifactId>dubbo-registry-polaris</artifactId>
  4. <version>1.0.0</version>
  5. </dependency>

配置北极星注册中心地址

接下来,需要添加北极星registry的配置,指定北极星的地址及相关配置信息,可以通过配置文件及代码的方式进行指定:

配置文件方式添加:

  1. <dubbo:registry address="polaris://127.0.0.1:8091"/>

北极星地址的URL支持通过参数指定可选的配置,具体参数列表如下:

参数类型含义
namespace字符串指定服务的命名空间
token字符串指定用户token

执行注册

使用Dubbo原生的注册方式把服务注册到北极星上。

  1. // 定义服务
  2. ServiceConfig<DemoServiceImpl> service = new ServiceConfig<>();
  3. service.setInterface(DemoService.class);
  4. service.setRef(new DemoServiceImpl());
  5. // 执行注册并接受请求
  6. DubboBootstrap bootstrap = DubboBootstrap.getInstance();
  7. bootstrap.application(new ApplicationConfig("dubbo-demo-api-provider"))
  8. .registry(registryConfig)
  9. .service(service)
  10. .start()
  11. .await();

如需指定服务实例的其他元数据信息(比如版本等),可以通过在定义服务时,添加parameter的方式进行实现。

  1. ServiceConfig<DemoServiceImpl> service = new ServiceConfig<>();
  2. service.setInterface(DemoService.class);
  3. service.setRef(new MiddleDemoServiceImpl(version, bootstrap));
  4. // 指定实例版本号
  5. service.setParameters(CollectionUtils.toStringMap(CommonConstants.VERSION_KEY, version));

注册后,可以在北极星控制台看到注册后的效果:

服务注册 - 图1

样例

服务注册样例可以参考:dubbo-discovery-provider