dubbo服务环境隔离

发布时间 2023-12-22 16:56:43作者: bud

环境背景

dubbo服务注册在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")