对于 Dubbo2 老用户而言,在升级 Dubbo3 时有以下两个选择,而决策的考虑因素仅有一个:性能。
基于以上决策结论,请在升级 Dubbo3 框架时调整以下配置。
在升级到 Dubbo3 框架时,您需要调整应用配置如下,(仅仅是一个配置项调整,提供者应用必须配置、消费者应用可选):
<dubbo:application name="xxx" register-mode="interface">
或者
dubbo:
application:
name: xxx
register-mode: interface #表示继续使用老版本服务发现模型,可选值 interface、instance、all
或者,以上是全局默认配置,可以根据每个注册中心来单独配置
<dubbo:registry address="nacos://localhost:8848" register-mode="interface">
或者
dubbo:
registry:
address: nacos://localhost:8848
register-mode: interface #表示继续使用老版本服务发现模型,可选值 interface、instance、all
对于老用户而言,如果要启用应用级服务发现,就需要一个平滑迁移的过程。这时需要让新升级的 Dubbo3 应用进行双注册双订阅(当前框架默认行为,因此用户无需修改任何配置,以下内容均会自行发生,注意:未来版本可能切换为应用级单注册单订阅),以确保新老服务发现模型都能兼顾。
dubbo.application.register-mode=instance
,即在一开始就配置仅使用应用级服务发现。在默认情况下,Dubbo3 框架会同时注册接口级、应用级两种服务发现地址,因此,集群中的新老应用都能够正常的发现改应用地址,并正常发起调用。如下图所示:
在默认情况下,Dubbo3 框架具备同时发现 Dubbo2 与 Dubbo3 地址列表的能力。在默认情况下,如果集群中存在可以消费的 Dubbo3 的地址,将自动消费 Dubbo3 的地址,如果不存在新地址则自动消费 Dubbo2 的地址(Dubbo3 提供了开关来控制这个行为),具体如下图所示:
关于以上双注册、双订阅行为的更多详细解释,以及如何尽快完成服务发现模型的收敛,请参考博客文章 Dubbo3 服务发现平滑迁移步骤与原理。