springboot+nacos+gateway實(shí)現(xiàn)灰度發(fā)布的實(shí)例詳解
概要
如何在微服務(wù)實(shí)現(xiàn)灰度發(fā)布呢?
- 灰度發(fā)布(又名金絲雀發(fā)布)是指在黑與白之間,能夠平滑過(guò)渡的一種發(fā)布方式。在其上可以進(jìn)行A/B testing,即讓一部分用戶繼續(xù)用產(chǎn)品特性A,一部分用戶開(kāi)始用產(chǎn)品特性B,如果用戶對(duì)B沒(méi)有什么反對(duì)意見(jiàn),那么逐步擴(kuò)大范圍,把所有用戶都遷移到B上面來(lái)。
有什么功能
首先我是自定義了一個(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();
}說(shuō)明:如果調(diào)用過(guò)程中不傳遞version,那么不會(huì)調(diào)用到灰度服務(wù)上
5.原理說(shuō)明
首先我們需要在灰度服務(wù)引入灰度sdk,然后發(fā)布,我們正常服務(wù)不需要引入,在網(wǎng)關(guān)引入并配置灰度策略,那么會(huì)根據(jù)負(fù)載均衡策略和我們配置的權(quán)重選擇服務(wù)。
小結(jié)
具體示例代碼可見(jiàn)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í)現(xiàn)上傳和下載功能(支持多個(gè)文件同時(shí)上傳)
這篇文章主要介紹了Java實(shí)現(xiàn)上傳和下載功能,支持多個(gè)文件同時(shí)上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
淺談Java之Map 按值排序 (Map sort by value)
下面小編就為大家?guī)?lái)一篇淺談Java之Map 按值排序 (Map sort by value)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
MyBatis實(shí)現(xiàn)高級(jí)映射的示例代碼
高級(jí)映射主要還是映射,只是映射中的數(shù)據(jù)關(guān)系復(fù)雜了,其中就包括一對(duì)一、一對(duì)多、多對(duì)多的關(guān)系,本文主要介紹了MyBatis實(shí)現(xiàn)高級(jí)映射的示例代碼,感興趣的可以了解一下2024-06-06
Mybatis結(jié)果集映射與生命周期詳細(xì)介紹
結(jié)果集映射指的是將數(shù)據(jù)表中的字段與實(shí)體類中的屬性關(guān)聯(lián)起來(lái),這樣 MyBatis 就可以根據(jù)查詢到的數(shù)據(jù)來(lái)填充實(shí)體對(duì)象的屬性,幫助我們完成賦值操作2022-10-10
Maven項(xiàng)目更換本地倉(cāng)庫(kù)過(guò)程圖解
這篇文章主要介紹了Maven項(xiàng)目更換本地倉(cāng)庫(kù)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07

