Dubbo剖析-服务分组与服务版本号

一、前言

在Dubbo中接口类并不能唯一确定一个服务,在dubbo中接口+服务分组+版本号才能唯一确定一个服务,本文就来讲解下服务分组和版本号的使用。

二、服务分组

当一个接口有多种实现时,可以用 group 区分。

  • 服务提供方:

image.png

上面配置在服务提供方法提供了com.test.UserServiceBo接口的两套实现,服务分组分别为olddubbo,newdubbo。

  • 服务消费方

image.png

上面配置在服务消费方消费com.test.UserServiceBo接口的两套实现,服务分组分别为olddubbo,newdubbo。

需要注意的是消费方只能消费与自己服务分组相同的提供方的服务,这里userServiceOld生成的是服务提供方分组为olddubbo的接口的代理。 userServiceNew生成的是服务提供方分组为newdubbo的接口的代理。

三、服务版本

当同一个服务分组的接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。 可以按照以下的步骤进行版本迁移:

  1. 在低压力时间段,先升级一半提供者为新版本
  2. 再将所有消费者升级为新版本
  3. 然后将剩下的一半提供者升级为新版本

比如:

  • 服务提供方

image.png

服务提供方法在分组dubbo下提供了两个版本号的服务

  • 服务消费方

image.png

同理需要注意的是服务消费方只能消费与自己接口+分组+版本一致的服务提供方的服务。

四、总结

dubbo中唯一确定一个服务的是接口+服务分组+版本号,服务提供方和消费方提供和消费服务时候显示的配置服务分组和版本号是一个最佳实践。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏noteless

如何解决svn清理失败 不能更新 cleanup失败 cleanup乱码 更新乱码 svn更新提示清理 清理乱码不能清理 svn故障修复SVN cleanup 陷入死循环 svn cleanup时遇

平时使用svn的过程中,有的时候由于自己操作故障或者系统原因,导致svn不能更新,提示cleanup也不能成功,陷入了死循环

39420
来自专栏黑泽君的专栏

svn: Can't connect to host 'localhost': 由于目标计算机积 的原因及解决办法

今天使用eclipse连接svn服务器提交代码的时候提示:svn: Can't connect to host 'localhost': 由于目标计算机积 ,如...

20920
来自专栏web编程技术分享

【php增删改查实例】第二十一节 - 用户修改功能19.1 添加用户修改的按钮

21640
来自专栏张伟博客

Linux系统中修改文件夹及文件读写权限

如果目录下的所有文件都需要以管理员的方式进行文件的复制,创建,和移动。比如我的data目录 ,此时只需要。

2.2K20
来自专栏挖坑填坑

Angular4记账webApp练手项目之一(利用angular-cli构建Angular4.X项目)

官方文档 :https://github.com/angular/angular-cli

9930
来自专栏小狼的世界

使用phpize给PHP动态添加扩展

2、执行phpize。/home/fltrpsrv2/srv2/bin/phpize

18520
来自专栏smy

git同步远程已删除的分支和删除本地多余的分支

可以发现红框中的分支是远程分支已被删除的分支,根据提示可以使用 git remote prune 来同步删除这些分支。

14720
来自专栏更流畅、简洁的软件开发方式

当前登录人管理——UserManage源代码下载(2009.10.16更新)

一、介绍和下载 名称: 当前登录人管理(UserManage) 版本: 1.0.0 上传时间: 2009.10.28 主要功能: 用户登录,保存登录状...

24860
来自专栏测试驿栈

Jmeter(二十一)_完整Demo

3:设置你的信息头管理器:application/json;text/plain;charset=UTF-8  

31530
来自专栏桥路_大数据

nginx的安装和打点服务器配置

495110

扫码关注云+社区

领取腾讯云代金券