服务注册

Dubbo 分类

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

Apache Dubbo 接入

引入依赖

首先,需要将插件 com.tencent.polaris:dubbo-registry-polaris 引入到业务的POM中,插件版本建议使用源码库的最新版本:release

  • com.tencent.polaris:dubbo-registry-polaris:北极星注册中心接入插件
 <dependency>
      <groupId>com.tencent.polaris</groupId>
      <artifactId>dubbo-registry-polaris</artifactId>
      <version>${latest_version}<version>
</dependency>

配置北极星注册中心地址

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

配置文件方式添加:

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

代码方式指定:

RegistryConfig registryConfig = new RegistryConfig("polaris://127.0.0.1:8091")

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

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

执行注册

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

// 定义服务
ServiceConfig<DemoServiceImpl> service = new ServiceConfig<>();
service.setInterface(DemoService.class);
service.setRef(new DemoServiceImpl());

// 执行注册并接受请求
DubboBootstrap bootstrap = DubboBootstrap.getInstance();
bootstrap.application(new ApplicationConfig("dubbo-demo-api-provider"))
                .registry(registryConfig)
                .service(service)
                .start()
                .await();

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

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

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

样例

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