springboot+nacos+gateway實(shí)現(xiàn)灰度發(fā)布的實(shí)例詳解
概要
如何在微服務(wù)實(shí)現(xiàn)灰度發(fā)布呢?
- 灰度發(fā)布(又名金絲雀發(fā)布)是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。在其上可以進(jìn)行A/B testing,即讓一部分用戶繼續(xù)用產(chǎn)品特性A,一部分用戶開始用產(chǎn)品特性B,如果用戶對(duì)B沒有什么反對(duì)意見,那么逐步擴(kuò)大范圍,把所有用戶都遷移到B上面來。
有什么功能
首先我是自定義了一個(gè)灰度發(fā)布的sdk,引入該包可以實(shí)現(xiàn),指定服務(wù)灰度發(fā)布,并指定灰度權(quán)重
指定權(quán)重后,網(wǎng)關(guān)調(diào)用時(shí)會(huì)根據(jù)權(quán)重打到灰度服務(wù),當(dāng)然調(diào)用的時(shí)候需要指定灰度版本
技術(shù)細(xì)節(jié)
1.在網(wǎng)關(guān)中引入灰度發(fā)布包
<dependency> <groupId>com.zbm.gray</groupId> <artifactId>springboot-gray-starter</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
2.網(wǎng)關(guān)配置灰度策略
gray: loadbalancer: enabled: true weight: 20 //灰度權(quán)重20%
3.灰度服務(wù)A
gray: loadbalancer: enabled: true version: 2 //灰度版本號(hào)
4.網(wǎng)關(guān)接口調(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,那么不會(huì)調(diào)用到灰度服務(wù)上
5.原理說明
首先我們需要在灰度服務(wù)引入灰度sdk,然后發(fā)布,我們正常服務(wù)不需要引入,在網(wǎng)關(guān)引入并配置灰度策略,那么會(huì)根據(jù)負(fù)載均衡策略和我們配置的權(quán)重選擇服務(wù)。
小結(jié)
具體示例代碼可見github:https://github.com/zbmzbm/gray-project
到此這篇關(guān)于springboot+nacos+gateway實(shí)現(xiàn)灰度發(fā)布的實(shí)例詳解的文章就介紹到這了,更多相關(guān)springboot 灰度發(fā)布內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 數(shù)據(jù)結(jié)構(gòu)哈希算法之哈希桶方式解決哈希沖突
實(shí)際上哈希桶是解決哈希表沖突的一種方法。常見的解決沖突的兩種方法:分離鏈接法、開放定址法。其中使用分離鏈接法,得到的對(duì)應(yīng)關(guān)系即為哈希桶2022-02-02Java?file.delete刪除文件失敗,Windows磁盤出現(xiàn)無法訪問的文件問題
這篇文章主要介紹了Java?file.delete刪除文件失敗,Windows磁盤出現(xiàn)無法訪問的文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06詳解Java中super的幾種用法并與this的區(qū)別
這篇文章主要介紹了Java中super的幾種用法并與this的區(qū)別,有需要的朋友可以參考一下2013-12-12Java System.getProperty()-獲取系統(tǒng)參數(shù)案例詳解
這篇文章主要介紹了Java System.getProperty()-獲取系統(tǒng)參數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08