背景
在日常开发中,我们经常需要本地启动服务进行 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 监听器中。
在注册服务前,需要获取服务注册地址。
ServiceConfig#doExportUrls()
dubbo.registry.register 就作用于 ConfigValidationUtils#loadRegistries(AbstractInterfaceConfig, boolean) 函数中
该函数会将 register=false 的注册地址过滤掉。
因此,服务在注册的时候,就拿不到注册中心地址,自然也不会向注册中心注册
OK,基本的原理到这里就结束了。