當系統進行升級時,一般都是采用“灰度發布(又稱為金絲雀發布)”過程。即在低壓力時段,讓部分消費者先調用新的提供者實現類,其余的仍然調用老的實現類,在新的實現類運行沒有問題的情況下,逐步讓所有消費者全部調用成新的實現類。多版本控制就是實現灰度發布的
一、創建提供者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) 修改配置文件