多版本|学习笔记

简介: 快速学习多版本

开发者学堂课程【阿里巴巴分布式服务框架 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版本服务。


三、进行测试

先将服务提供者启动起来

image.png

测试结果为old

image.png待新版本测试稳定,将老版本 version 换成 version=”2.0.0”,接下来打印的将是 new,进行测试

测试结果为new

此外也可以通过修改 consumer 里的 version 改为 version=”*”,

代码为 id=“userService” timeout=”5000” reties=”3” version=”*”

随机任意调用一个版本,测试结果不一定是 old 还是 new,说明是 dubbo 的随机调用,这样就可以从平滑的旧版本升级到新版本,也就是 dubbo 官网里介绍的实现灰度发布。

相关文章
|
6月前
|
存储 关系型数据库 数据库
聊多版本并发控制(MVCC)
MVCC是数据库并发控制技术,用于减少读写冲突。它维护数据的多个版本,使事务能读旧数据而写新数据,无需锁定记录。当前读获取最新版本,加锁防止修改;快照读不加锁,根据读取时的读视图(readview)决定读哪个版本。InnoDB通过隐藏字段(DB_TRX_ID, DB_ROLL_PTR)和undo log存储版本,readview记录活跃事务ID。读已提交每次读取都创建新视图,可重复读则在整个事务中复用一个视图,确保一致性。MVCC通过undo log版本链和readview规则决定事务可见性,实现了非阻塞并发读。
286 5
聊多版本并发控制(MVCC)
|
2月前
|
关系型数据库 MySQL 数据库
MySQL高级篇——MVCC多版本并发控制
什么是MVCC、快照读与当前读、隐藏字段、Undo Log版本链、ReadView、举例说明、InnoDB 解决幻读问题
MySQL高级篇——MVCC多版本并发控制
|
5月前
|
存储 关系型数据库 MySQL
第16章_多版本并发控制
第16章_多版本并发控制
33 0
|
6月前
|
存储 关系型数据库 MySQL
MVCC:深入解析多版本并发控制机制
【4月更文挑战第20天】MVCC是数据库并发控制的关键技术,通过保存数据多个版本,使读写操作无锁并发,减少锁竞争,提高并发性能。它保证事务看到一致数据快照,避免并发问题,并支持事务回滚与恢复。MVCC广泛应用于PostgreSQL、InnoDB等,提供时间旅行查询和无锁读等功能,对于构建高性能、高并发数据库系统至关重要。
146 13
|
关系型数据库 MySQL
第16章 多版本并发控制【3.事务篇】【MySQL高级】2
第16章 多版本并发控制【3.事务篇】【MySQL高级】2
61 0
|
存储 关系型数据库 Go
深入理解 PostgreSQL 中的 MVCC(多版本并发控制)机制
深入理解 PostgreSQL 中的 MVCC(多版本并发控制)机制
236 0
|
SQL 关系型数据库 MySQL
第16章 多版本并发控制【3.事务篇】【MySQL高级】3
第16章 多版本并发控制【3.事务篇】【MySQL高级】3
88 0
|
存储 关系型数据库 MySQL
第16章 多版本并发控制【3.事务篇】【MySQL高级】1
第16章 多版本并发控制【3.事务篇】【MySQL高级】1
123 0
|
存储 关系型数据库 MySQL
第16章_多版本并发控制(上)
第16章_多版本并发控制
100 0
|
SQL 关系型数据库 MySQL
第16章_多版本并发控制(下)
第16章_多版本并发控制
125 0
下一篇
无影云桌面