开发者学堂课程【阿里巴巴分布式服务框架 Dubbo 快速入门:多版本】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/624/detail/9469
多版本
内容介绍:
一、多版本
二、进行配置
三、进行测试
一、多版本
dubbo 中一个重要功能多版本,它的使用场景是,某一个接口功能出现了一个不兼容的升级,系统中刚写完的新功能立即全用上,有可能新功能不稳定导致整个系统不稳定,可以先让系统中的一部分人来用新功能,另外一部分人依旧用这个功能的老版本,如果发现新功能的版本都稳定了,再把这部分老版本替换成新版本,就可以利用到多版本的特性。
二、进行配置
把以前服务均停掉,以 user-service 为例,用一个版本打印 old,代码为System.out.println(“UserServixeImpl……old…”)
;
再为其写上一个版本,名称为 UserServiceImpl2,打印 new,代码为System.out.println(“UserServixeImpl……new…”)
,此时相当于一个 Userservice 接口有新旧功能,可在 provider里配置出来,比如第一个 user-service 接口指向的是 userServiceImpl01,可在 service 这规定一个 version 版本为1.0.0,
代码为
<dubbo:service interface=””com.atguigu.gmall.service.UserService”
ref=”UserServiceImpl01” timeout=”1000” version=”1.0.0”
<dubbo:method name=”geuUserAddressList” timeout=”1000”></dubbo:method>
</dubbo:service>
同时给提供者再配置一个
代码为
<bean id”yserServiceImpl01” class = “”com.atguigu.gmall.service.imp.User-Service
<dubbo:service interface=””com.atguigu.gmall.service.UserService”
ref=”UserServiceImpl01” timeout=”1000” version=”2.0.0”
<dubbo:method name=”geuUserAddressList” timeout=”1000”></dubbo:method>
</dubbo:service>
<bean id=”userServiceImpl02”class=
com.atguigu.gmall.service.impl.UserServiceImpl2”></bean>
上一个 version 版本为1.0.0,下一个 version 版本为2.0.0,两个版本同时存在,这样在消费方声明调用 reference 引用时,就可以通过 version 声明,用 User-service1.0.0版本服务。
三、进行测试
先将服务提供者启动起来
测试结果为old
待新版本测试稳定,将老版本 version 换成 version=”2.0.0”,接下来打印的将是 new,进行测试
测试结果为new
此外也可以通过修改 consumer 里的 version 改为 version=”*”,
代码为 id=“userService” timeout=”5000” reties=”3” version=”*”
随机任意调用一个版本,测试结果不一定是 old 还是 new,说明是 dubbo 的随机调用,这样就可以从平滑的旧版本升级到新版本,也就是 dubbo 官网里介绍的实现灰度发布。