springcloud dubbo 禁止向注册中心注册

52 阅读1分钟

背景

在日常开发中,我们经常需要本地启动服务进行 debug, 但正常来说,我们会使用 QA 环境的配置,顺其自然的就会使用 QA 的注册中心,这样就使得我们本地启动的服务会注册到 QA 的注册中心,从而污染 QA 测试环境。
本篇内容着重于从原理、使用 2 个维度告诉你如何禁止注册到 QA 注册中心

环境

dubbo: 2.7.23
spring-cloud-alibaba: 2.3.5

禁止注册

JVM 环境变量,配置上:

-Ddubbo.registry.register=false

该参数的作用为:禁止 provider 向注册中心注册,不影响服务引用。

原理

dubbo 的服务注册发生在 DubboBootstrapApplicationListener 监听器中。

image.png

在注册服务前,需要获取服务注册地址。
ServiceConfig#doExportUrls()

image.png

dubbo.registry.register 就作用于 ConfigValidationUtils#loadRegistries(AbstractInterfaceConfig, boolean) 函数中

image.png

该函数会将 register=false 的注册地址过滤掉。
因此,服务在注册的时候,就拿不到注册中心地址,自然也不会向注册中心注册
OK,基本的原理到这里就结束了。

image.png