springboot+nacos+gateway實現(xiàn)灰度發(fā)布的實例詳解
概要
如何在微服務實現(xiàn)灰度發(fā)布呢?
- 灰度發(fā)布(又名金絲雀發(fā)布)是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。在其上可以進行A/B testing,即讓一部分用戶繼續(xù)用產(chǎn)品特性A,一部分用戶開始用產(chǎn)品特性B,如果用戶對B沒有什么反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面來。
有什么功能
首先我是自定義了一個灰度發(fā)布的sdk,引入該包可以實現(xiàn),指定服務灰度發(fā)布,并指定灰度權重
指定權重后,網(wǎng)關調(diào)用時會根據(jù)權重打到灰度服務,當然調(diào)用的時候需要指定灰度版本
技術細節(jié)
1.在網(wǎng)關中引入灰度發(fā)布包
<dependency>
<groupId>com.zbm.gray</groupId>
<artifactId>springboot-gray-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>2.網(wǎng)關配置灰度策略
gray:
loadbalancer:
enabled: true
weight: 20 //灰度權重20%3.灰度服務A
gray:
loadbalancer:
enabled: true
version: 2 //灰度版本號4.網(wǎng)關接口調(diào)用
@Autowired
@Qualifier("newRestTemplate")
private RestTemplate restTemplate;
@GetMapping("/testGray")
public String testGray(){
MultiValueMap<String, String> headers=new HttpHeaders();
headers.add("version","2");
HttpEntity<?> requestEntity = new HttpEntity<>(headers);
ResponseEntity<String> exchange = restTemplate.exchange("http://test-gray/api/v1/test", HttpMethod.GET, requestEntity, String.class);
return exchange.getBody();
}說明:如果調(diào)用過程中不傳遞version,那么不會調(diào)用到灰度服務上
5.原理說明
首先我們需要在灰度服務引入灰度sdk,然后發(fā)布,我們正常服務不需要引入,在網(wǎng)關引入并配置灰度策略,那么會根據(jù)負載均衡策略和我們配置的權重選擇服務。
小結
具體示例代碼可見github:https://github.com/zbmzbm/gray-project
到此這篇關于springboot+nacos+gateway實現(xiàn)灰度發(fā)布的實例詳解的文章就介紹到這了,更多相關springboot 灰度發(fā)布內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java實現(xiàn)上傳和下載功能(支持多個文件同時上傳)
這篇文章主要介紹了Java實現(xiàn)上傳和下載功能,支持多個文件同時上傳,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12
淺談Java之Map 按值排序 (Map sort by value)
下面小編就為大家?guī)硪黄獪\談Java之Map 按值排序 (Map sort by value)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08

