Dubbo服务中,接口并不能唯一确定一个服务,只有 接口+分组+版本号
的三元组才能唯一确定一个服务。
本文示例完整源码可在以下链接查看:
使用 @DubboService 注解,配置 group
参数和 version
参数:
接口定义:
接口实现1:
接口实现2:
客户端接口调用:
使用 @DubboReference 注解,添加 group 参数和 version 参数
使用 @DubboReference 注解,添加 group 参数
同样启动 Dubbo 服务后,可在注册中心看到相同服务名不同分组的引用者,以 Nacos 作为注册中心为例,显示如下内容:
使用 <dubbo:service /> 标签,添加 group 参数
启动 Dubbo 服务,可在注册中心看到相同服务名不同分组的服务,以 Nacos 作为注册中心为例,显示如下内容:
使用 dubbo:reference/ 注解,添加 group 参数
同样启动 Dubbo 服务后,可在注册中心看到相同服务名不同分组的引用者,以 Nacos 作为注册中心为例,显示如下内容:
使用 org.apache.dubbo.config.ServiceConfig 类,添加 group 参数
启动 Dubbo 服务,可在注册中心看到相同服务名不同分组的服务,以 Nacos 作为注册中心为例,显示如下内容:
使用 org.apache.dubbo.config.ReferenceConfig,添加 group 参数
同样启动 Dubbo 服务后,可在注册中心看到相同服务名不同分组的引用者,以 Nacos 作为注册中心为例,显示如下内容:
总是 只调 一个可用组的实现
通过分组对结果进行聚合并返回聚合后的结果,比如菜单服务,用 group 区分同一接口的多种实现,现在消费方需从每种 group 中调用一次并返回结果,对结果进行合并之后返回,这样就可以实现聚合菜单项。
相关代码可以参考 dubbo 项目中的示例
将多个服务提供者分组作为一个提供者进行访问。应用程序能够像访问一个服务一样访问多个服务,并允许更有效地使用资源。
指定方法合并结果,其它未指定的方法,将只调用一个 Group
某个方法不合并结果,其它都合并结果
指定合并策略,缺省根据返回值类型自动匹配,如果同一类型有两个合并器时,需指定合并器的名称 合并结果扩展
指定合并方法,将调用返回结果的指定方法进行合并,合并方法的参数类型必须是返回结果类型本身
2.1.0
开始支持按照以下的步骤进行版本迁移
当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
参考用例 https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-version
老版本服务提供者配置
新版本服务提供者配置
老版本服务消费者配置
新版本服务消费者配置
如果不需要区分版本,可以按照以下的方式配置