摘要:灰度發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。如何使用進行灰度發(fā)布呢將分一下四步第一,設置網(wǎng)關權重路由設置中提供了去實現(xiàn)根據(jù)分組設置權重進行路由,因此使用起來相對比較簡單,有興趣的可以閱讀源碼。
灰度發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。在其上可以進行A/B testing,即讓一部分用戶繼續(xù)用產(chǎn)品特性A,一部分用戶開始用產(chǎn)品特性B,如果用戶對B沒有什么反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面來?;叶劝l(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。
在開發(fā)或者測試的時候,或者線上發(fā)布,線上服務多版本控制的時候,需要對服務提供權重路由,最常見的使用就是,一個服務有兩個版本,舊版本V1,新版本v2。在線上灰度的時候,需要通過網(wǎng)關動態(tài)實時推送,路由權重信息。比如95%的流量走服務v1版本,5%的流量走服務v2版本。
如何使用SpringCloud進行灰度發(fā)布呢?將分一下四步:
第一,設置網(wǎng)關權重路由設置Spring Cloud Gateway中提供了org.springframework.cloud.gateway.handler.predicate.WeightRoutePredicateFactory去實現(xiàn)根據(jù)分組設置權重進行路由,因此使用起來相對比較簡單,有興趣的可以debug閱讀源碼。
我們通過在Spring Cloud Gateway中會配置不同的權重信息到不同URL上,Spring Cloud Gateway會根據(jù)我們配置的路由權重信息,將請求分發(fā)到不同的源服務組,權重信息如ch4/ch4-gateway中的application.yml所示,主要配置信息如下。
spring:
cloud:
gateway: discovery: locator: enabled: true routes: - id: order-service1 uri: lb://order/order/create1 order: 8000 predicates: - Path=/order/create filters: - StripPrefix=1 - Weight=order-service, 95 - id: order-service2 uri: lb://order/create2 order: 8000 predicates: - Path=/order/create filters: - StripPrefix=1 - Weight=order-service, 5
Weight=order-service1, 95,Weight=service1, 5就是路由的權重信息。
第二、源服務配置源服務在本案例中為order模塊源服務,主要提提供Gateway Server權重路由對應的后端源服務。因為比較簡單因此不做詳細說明,主要代碼如下所示。
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OrderController {
@RequestMapping("/create1")
public String orderCreateV1() {
//此處寫業(yè)務邏輯代碼 return "success";
}
@RequestMapping( "/ceate2")
public String v2() {
//此處寫業(yè)務邏輯代碼 return “success”;
}
}
第三、進行測試分別啟動gateway,order進行訪問:http://localhost:5001/order/create 測試,發(fā)現(xiàn)會根據(jù)所設權重進行路由。
第四,使用zookeeper config實現(xiàn)動態(tài)權重路由到第三步完成以后,現(xiàn)在可以通過修改配置的如何根據(jù)現(xiàn)有的服務在線動態(tài)更新權重呢?使用zookeeper作為spring cloud的注冊和配置中心,gateway模塊和order模塊配置監(jiān)控配置的變化,如果想做動態(tài)灰度發(fā)布,增加后臺在線配置管理界面,并在線修改gateway的配置,實現(xiàn)動態(tài)的灰度發(fā)布,而不用每次修改都要重新啟動gateway。
spring:
cloud:
zookeeper: enabled: true connect-string: localhost:2181 config: root: /config enabled: true watcher: enabled: true第五,使用zkui進行配置修改
使用ZKUI來可視化管理Zookeeper,登錄ZKUI->import 選擇對應文件導入即可。ZKUI安裝使用請自行百度。
以上就是我使用spring cloud進行灰度發(fā)布的過程記錄。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/72300.html
摘要:于是,市面上出現(xiàn)了分布式的配置中心。為什么呢因為要結(jié)合分布式配置中心微服務,才能真正實現(xiàn)我們所理解的。所謂灰度發(fā)布,是說一個微服務集群里面,比如有個訂單系統(tǒng),做了一些配置上的更新。數(shù)人云分布式統(tǒng)一配置中心數(shù)人云分布式統(tǒng)一配置中心,取名。 本文來自1月18日數(shù)人云資深工程師在IT大咖說平臺的線上直播分享。 今天主要探討這幾方面: 一、配置中心的定位二、云化的微服務對于配置中心的要求三、微...
摘要:一持續(xù)集成對于微服務的意義拆之前要先解決合的問題在很多微服務化的文章中,很少會把持續(xù)集成放在第一篇,因為大多數(shù)的文章都會將如何拆的問題,例如拆的粒度,拆的時機,拆的方式。二持續(xù)集成就是不斷的嘗試在一起集成就是在一起。 此文已由作者劉超授權網(wǎng)易云社區(qū)發(fā)布。 歡迎訪問網(wǎng)易云社區(qū),了解更多網(wǎng)易技術產(chǎn)品運營經(jīng)驗。 一、持續(xù)集成對于微服務的意義:拆之前要先解決合的問題 在很多微服務化的文章中,很...
摘要:導言耦合性,是對模塊間關聯(lián)程度的度量。模塊間的耦合度是指模塊之間的依賴關系,包括控制關系調(diào)用關系數(shù)據(jù)傳遞關系。 導言: 耦合性,是對模塊間關聯(lián)程度的度量。耦合的強弱取決于模塊間接口的復雜性、調(diào)用模塊的方式以及通過界面?zhèn)魉蛿?shù)據(jù)的多少。模塊間的耦合度是指模塊之間的依賴關系,包括控制關系、調(diào)用關系、數(shù)據(jù)傳遞關系。模塊間聯(lián)系越多,其耦合性越強,同時表明其獨立性越差。軟件設計中通常用耦合度和內(nèi)聚...
閱讀 2073·2021-09-29 09:35
閱讀 2872·2021-09-22 15:25
閱讀 2112·2021-08-23 09:43
閱讀 2177·2019-08-30 15:54
閱讀 3484·2019-08-30 15:53
閱讀 2530·2019-08-30 13:50
閱讀 2539·2019-08-30 11:24
閱讀 2410·2019-08-29 15:37