Dubbo多版本控制
当系统进行升级时,一般都是采用“灰度发布(又称为金丝雀发布)”过程。即在低压力时段,让部分消费者先调用新的提供者实现类,其余的仍然调用老的实现类,在新的实现类运行没有问题的情况下,逐步让所有消费者全部调用成新的实现类。多版本控制就是实现灰度发布的
一、创建提供者04-provider-version
(1) 创建工程
创建Maven的工程。

(2) 导入依赖
Spring的版本为4.3.16
需要的依赖有:
- dubbo2.7.0版本依赖
- zk客户端curator依赖
- servlet与jsp依赖
- spring相关依赖
- spring需要的commons-logging依赖
- 自定义00-api依赖
-
<dependencies>
-
<!-- zk客户端依赖:curator -->
-
<dependency>
-
<groupId>org.apache.curator</groupId>
-
<artifactId>curator-recipes</artifactId>
-
<version>2.13.0</version>
-
</dependency>
-
<dependency>
-
<groupId>org.apache.curator</groupId>
-
<artifactId>curator-framework</artifactId>
-
<version>2.13.0</version>
-
</dependency>
-
-
<!--业务接口工程依赖-->
-
<dependency>
-
<groupId>00-api</groupId>
-
<artifactId>00-api</artifactId>
-
<version>1.0-SNAPSHOT</version>
-
</dependency>
-
-
<!-- dubbo依赖 -->
-
<dependency>
-
<groupId>org.apache.dubbo</groupId>
-
<artifactId>dubbo</artifactId>
-
<version>2.7.0</version>
-
</dependency>
-
<!-- Spring依赖 -->
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-beans</artifactId>
-
<version>${spring-version}</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-core</artifactId>
-
<version>${spring-version}</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-context</artifactId>
-
<version>${spring-version}</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-expression</artifactId>
-
<version>${spring-version}</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-aop</artifactId>
-
<version>${spring-version}</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-aspects</artifactId>
-
<version>${spring-version}</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-tx</artifactId>
-
<version>${spring-version}</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-jdbc</artifactId>
-
<version>${spring-version}</version>
-
</dependency>
-
<!-- commons-logging依赖 -->
-
<dependency>
-
<groupId>commons-logging</groupId>
-
<artifactId>commons-logging</artifactId>
-
<version>1.2</version>
-
</dependency>
-
-
</dependencies>
(3)定义两个接口实现类


(4)修改配置文件
resources\META-INF\spring\spring-provider.xml目录
指定版本0.0.1对应的是oldService实例,而版本0.0.2对应的是newService实例

二、创建消费者04-consumer-version
(1) 创建工程

(2) 导入依赖
和提供者一样
(3) 创建消费者

(4) 修改配置文件

Dubbo多版本控制的更多相关文章
- dubbo连接zookeeper注册中心因为断网导致线程无限等待问题【转】
最近维护的系统切换了网络环境,由联通换成了电信网络,因为某些过滤规则导致系统连不上zookeeper服务器(应用系统机器在深圳,网络为电信线路,zookeeper服务器在北京,网络为联通线路),因为我 ...
- 精华【分布式、微服务、云架构、dubbo+zookeeper+springmvc+mybatis+shiro+redis】分布式大型互联网企业架构!
平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis ...
- 分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis
分类: 分布式技术(3) 目录(?)[+] 平台简介 Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. Jeesz本身集成D ...
- 上手Dubbo之 环境搭建
和传统ssm整合--写XML配置文件 搭建服务的提供者和服务的消费者,实现服务消费者跨应用远程调用服务提供者 公共模块抽取 公共模块的抽取 服务的消费者远程调用服务的提供者, 最起码他自己要得到在服务 ...
- Dubbo从入门到实战:实战篇
一.加入 zookeeper 作为注册中心 在前面的案例中,我们没有使用任何的注册中心,而是用一种直连的方式进行的.但是,实际上很多时候,我们都是使用 dubbo + zookeeper 的方式,使用 ...
- Dubbo从拜师到入坟
第一个Dubbo程序:Hello world 创建业务接口工程 我们将这个接口单独抽取出来,打成jar包被多个服务锁依赖 创建服务提供者Provider Provider工程的pom文件如下: < ...
- 分布式RPC系统框架Dubbo
导读 Apache Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. dubbo官网:点我直达 第一 ...
- java架构之路-(dubbo专题)dubbo的基本使用
今天我们来说一下dubbo的基本使用,没有什么高阶的知识,真的超级简单易懂. Dubbo核心功能解释 dubbo 阿里开源的一个SOA服务治理框架,从目前来看把它称作是一个RPC远程调用框架更为贴切. ...
- rpc框架dubbo学习入门及环境搭建(spring boot+Kotlin)
学习之前,确保有以下知识基础: Java网络编程 Socket传输数据 IO流 rpc简介及实现 rpc是remote procedure call的简写,意思为远程过程调用. rpc应用较多的情景是 ...
随机推荐
- js之变量与数据类型
变量 声明 一个变量被重新复赋值后,它原有的值就会被覆盖,变量值将以最后一次赋的值为准. var age = 18; age = 81; // 最后的结果就是81因为18 被覆盖掉了 同时声明多个变量 ...
- TypeScript 泛型及应用
TypeScript 泛型及应用 一.泛型是什么 二.泛型接口 三.泛型类 四.泛型约束 4.1 确保属性存在 4.2 检查对象上的键是否存在 五.泛型参数默认类型 六.泛型条件类型 七.泛型工具类型 ...
- 《手把手教你》系列技巧篇(四十二)-java+ selenium自动化测试 - 处理iframe -下篇(详解教程)
1.简介 经过宏哥长时间的查找,终于找到了一个含有iframe的网页.所以今天这一篇的主要内容就是用这个网页的iframe,宏哥给小伙伴或者童鞋们演示一下,在处理过程中遇到的问题以及宏哥是如何解决的. ...
- ES6基础知识(Map用法)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python 注释和键盘输入,输出数据格式化
Python中的注释有单行注释和多行注释: Python中单行注释以 # 开头,例如: # 这是一个注释 print("Hello, World!") 多行注释用三个单引号 ''' ...
- js--history 对象详解
前言 我们浏览一个网页时可能不太会注意网页前进后退这些操作,但是在开发时你是否想过页面之间的跳转经历了什么,浏览器时怎么保存的页面信息,重新返回上一个页面的时候是否需要重新加载页面呢,会有很对疑问,要 ...
- [atARC087F]Squirrel Migration
对这棵树重心情况分类讨论: 1.若这棵树存在两个重心,分别记作$x$和$y$,如果将$(x,y)$断开,两棵子树大小都相同(都为$\frac{n}{2}$),此时$p_{i}$与$i$必然不同属于一个 ...
- c语言if语句是如何变成汇编代码的?
1. 要编译的测试代码: int a; int b = 3; int main(void) { if (3) a = 4; else b = 5; } 2. 词法分析 词法分析将c源代码解析成一个个的 ...
- electron另一种运行方式
编写helloword 全局安装软件 npm install -g electron 快速编写html html:5 完整代码和流程: 1.index.html <!DOCTYPE htm ...
- ceph rgw的使用,dashboard和监控
1.部署RadosGW 服务 将ceph-mgr1.ceph-mgr2 服务器部署为高可用的radosGW 服务 1.1 安装radosgw 服务 root@mgr1:~# apt install r ...