环境背景
dubbo(版本:2.7.22)服务注册在zookeeper,目前只部署一套zookeeper的前提下,需要部署多套系统,但是多套系统之间的dubbo服务需要隔离
备选方案
-
dubbo直连
dubbo服务消费者,在注入的提供者api上添加:
@DubboReference(version="1.0.0", url="dubbo://ip:port/com.xxx.xxx:1.0.0")
可使用配置文件配置:(com.xxx.xxx 是接口的全路径)
com.xxx.xxx=dubbo://ip:20880/com.xxx.xxx:1.0.0
-
服务分组隔离
1、 服务注册分组隔离,跨组的服务不会相互影响,也无法相互调用,如以下配置:
dubbo.registry.group=shanghai
但是,配置之后服务在dubbo admin上默认无法查看,也调用不到该服务
创建的节点和dubbo同级
2、 服务分组隔离,适用于一个接口多个实现:
可全局配置
dubbo.provicder.group=shanghai
dubbo.consumer.group=shanghai
也可只针对某个api进行配置:
@DubboService(group="shanghai")
@DubboReference(group="shanghai")
-
版本号服务隔离
适用于一个接口的实现出现不兼容升级时,进行版本号过渡,版本号不同的服务相互间不引用:
可全局配置:
dubbo.provider.version=1.0.0
dubbo.consumer.version=1.0.0
也可配置到某个api服务,此时优先级大于全局配置:
@DubboService(version="1.0.0")
@DubboReference(version="1.0.0")