Dubbo3 应用级服务发现

本文专门介绍用户在升级到 Dubbo 3.0 后如何快速启用应用级服务发现的新功能。

应用级服务发现是应用程序之间进行服务发现的协议。因此,要使用应用级服务发现,消费者和服务器都必须升级到 Dubbo 3.0 并启用新功能(默认启用)才能在链路中使用应用级服务发现。利用应用级服务发现。

开放方法

服务器

应用程序升级到 Dubbo 3.0 后,服务器会自动启用接口级 + 应用级双注册功能,默认情况下开发者无需修改任何配置。

消费者端

应用程序升级到 Dubbo 3.0 后,消费者端会自动启动接口级 + 应用级双订阅功能,默认情况下开发者无需修改任何配置。建议服务器升级到 Dubbo 3.0 并启用应用级注册后,通过规则配置消费者端关闭接口级订阅,释放相应的内存空间。

详细描述

服务器配置

  1. 全局开关

应用程序配置(可以通过配置文件或 -D 指定)dubbo.application.register-mode 启用实例的全局注册开关(仅注册应用级)和所有(接口级和应用级注册)。配置此开关后,默认情况下,应用级地址将注册到所有注册中心,以便在消费者端进行服务发现。

示例: [https://github.com/apache/dubbo-samples/blob/master/dubbo-samples-cloud-native/dubbo-servicediscovery-migration/dubbo-servicediscovery-migration-provider2/src/main/resources/ dubbo.properties](https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-servicediscovery-migration/dubbo-servicediscovery-migration-provider2/src /main/resources/dubbo.properties)

# double registration
dubbo.application.register-mode=all
# Application-level registration only
dubbo.application.register-mode=instance
  1. 注册中心地址参数配置

可以在注册中心的地址上配置 Registry-type=service,以显示将注册中心指定为应用级服务发现的注册中心,具有此配置的注册中心将只执行应用级服务发现。

示例: [https://github.com/apache/dubbo-samples/blob/master/dubbo-samples-cloud-native/dubbo-demo-servicediscovery-xml/servicediscovery-provider/src/main/resources/spring/ dubbo-provider.xml](https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-demo-servicediscovery-xml/servicediscovery-provider/src /main/resources/spring/dubbo-provider.xml)

<dubbo:registry address="nacos://${nacos.address:127.0.0.1}:8848?registry-type=service"/>

消费者订阅模式

FORCE_INTERFACE:仅接口级订阅,行为与 Dubbo 2.7 及之前版本一致。APPLICATION_FIRST:接口级 + 应用级多订阅,如果应用级可以订阅地址,则使用应用级订阅,如果地址无法订阅,则使用接口级订阅,以确保迁移过程中的最大兼容性。(注意:由于同时订阅行为,此模式下的内存使用量会增加一定程度,因此建议所有服务器升级到 Dubbo 3.0 后迁移到 FORCE_APPLICATION 模式以减少内存使用量)FORCE_APPLICATION:仅应用级订阅,将只使用新的服务发现模型。

消费者配置

  1. 默认配置(无需配置)

升级到 Dubbo 3.0 后,默认行为是接口级 + 应用级多订阅。如果地址可以在应用级订阅,则使用应用级订阅。如果地址无法订阅,则使用接口级订阅,以确保最大兼容性。

  1. 订阅参数配置

应用程序配置(可以通过配置文件或 -D 指定)dubbo.application.service-discovery.migrationAPPLICATION_FIRST 以启用多订阅模式,配置为 FORCE_APPLICATION 可以强制仅应用级订阅模式。可以在 ReferenceConfig 中的 parameters 中配置特定接口订阅,Key 为 migration.step,Value 为 APPLICATION_FIRSTFORCE_APPLICATION 键值对以配置单个订阅。

示例: [https://github.com/apache/dubbo-samples/blob/master/dubbo-samples-cloud-native/dubbo-servicediscovery-migration/dubbo-servicediscovery-migration-consumer/src/test/java/ org/apache/dubbo/demo/consumer/DemoServiceConfigIT.java](https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-servicediscovery-migration /dubbo-servicediscovery-migration-consumer/src/test/java/org/apache/dubbo/demo/consumer/DemoServiceConfigIT.java)

System.setProperty("dubbo.application.service-discovery.migration", "APPLICATION_FIRST");
ReferenceConfig<DemoService> referenceConfig = new ReferenceConfig<>(applicationModel. newModule());
referenceConfig.setInterface(DemoService.class);
referenceConfig.setParameters(new HashMap<>());
referenceConfig.getParameters().put("migration.step", mode);
return referenceConfig.get();
  1. 动态配置(最高优先级,配置可以在运行时修改)

此配置需要基于配置中心推送,Key 为应用名称 + .migration(例如 demo-application.migraion),Group 为 DUBBO_SERVICEDISCOVERY_MIGRATION。有关规则体配置的详细信息,请参阅 从接口级服务发现迁移到应用级服务发现的指南

示例: [https://github.com/apache/dubbo-samples/blob/master/dubbo-samples-cloud-native/dubbo-servicediscovery-migration/dubbo-servicediscovery-migration-consumer/src/main/java/ org/apache/dubbo/demo/consumer/UpgradeUtil.java](https://github.com/apache/dubbo-samples/blob/master/2-advanced/dubbo-samples-service-discovery/dubbo-servicediscovery-migration /dubbo-servicediscovery-migration-consumer/src/main/java/org/apache/dubbo/demo/consumer/UpgradeUtil.java)

step: FORCE_INTERFACE

上次修改时间:2023 年 8 月 9 日:修复损坏的链接 (#2790) (99c8bd6ec1c)