成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

網(wǎng)關(guān)實(shí)現(xiàn)灰度發(fā)布

stormjun / 2770人閱讀

摘要:就是一種灰度發(fā)布方式,讓一部分用戶繼續(xù)用,一部分用戶開始用,如果用戶對(duì)沒有什么反對(duì)意見,那么逐步擴(kuò)大范圍,把所有用戶都遷移到上面來?;叶劝l(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)調(diào)整問題,以保證其影響度。

一、背景
互聯(lián)網(wǎng)產(chǎn)品開發(fā)有個(gè)非常特別的地方,就是不停的升級(jí),升級(jí),再升級(jí)。采用敏捷開發(fā)的方式,基本上保持每周或者每?jī)芍芤淮蔚陌l(fā)布頻率,系統(tǒng)升級(jí)總是伴隨著各種風(fēng)險(xiǎn),新舊版本兼容的風(fēng)險(xiǎn),用戶使用習(xí)慣突然改變而造成用戶流失的風(fēng)險(xiǎn),系統(tǒng)宕機(jī)的風(fēng)險(xiǎn),500錯(cuò)誤服務(wù)不可用的風(fēng)險(xiǎn)等等。為了避免這些風(fēng)險(xiǎn),很多產(chǎn)品都采用了灰度發(fā)布的策略,其主要思想就是把影響集中到一個(gè)點(diǎn),然后再發(fā)散到一個(gè)面,出現(xiàn)意外情況后很容易就回退,即使影響也是可控的。
任何脫離實(shí)際業(yè)務(wù)的技術(shù)工作都是耍流氓,技術(shù)需要服務(wù)于業(yè)務(wù)。因此,本文盡量淡化了業(yè)務(wù)方面的因素,聚焦于技術(shù)層面,建議在實(shí)際運(yùn)用中還是要根據(jù)各自的業(yè)務(wù)場(chǎng)景去變化和調(diào)整。

二、什么是灰度
灰度發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。AB test就是一種灰度發(fā)布方式,讓一部分用戶繼續(xù)用A,一部分用戶開始用B,如果用戶對(duì)B沒有什么反對(duì)意見,那么逐步擴(kuò)大范圍,把所有用戶都遷移到B上面來。灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。
互聯(lián)網(wǎng)系統(tǒng),灰度其實(shí)就是根據(jù)設(shè)定的規(guī)則將請(qǐng)求路由到我們的灰度版本(灰度機(jī)器)上來。比如對(duì)于API來說,一般有如下幾個(gè)需求:特定用戶(比如測(cè)試帳號(hào))、 特定的App(比如測(cè)試app或者合作App)、特定的模塊、接口(只有某些接口需要灰度,這種一般是API Container的修改,拿一些不是很重要的API做灰度測(cè)試)、特定的機(jī)器(某些請(qǐng)求IP轉(zhuǎn)發(fā)到灰度機(jī))等。

三、灰度的優(yōu)勢(shì)
1、 在發(fā)布過程中降低上線風(fēng)險(xiǎn)
2、 降低影響范圍,并且范圍可控
3、 降低對(duì)測(cè)試的依賴,減少線下自測(cè)的數(shù)據(jù)構(gòu)造成本
4、 特定的請(qǐng)求能夠指向特定的服務(wù)器,方便集中監(jiān)控日志,方便跟蹤完整的調(diào)用鏈路
5、 方便系統(tǒng)流量切入
6、 便于隨時(shí)回滾
7、 指定特定人群,方便系統(tǒng)回訪,方便產(chǎn)品需求收集,完善產(chǎn)品功能,提升產(chǎn)品質(zhì)量
8、 在無狀態(tài)的情況下保障用戶使用到的版本一致
9、 避免宕機(jī)給用戶帶來不好的體驗(yàn)和使用

四、目標(biāo)
1、 做到對(duì)現(xiàn)有業(yè)務(wù)系統(tǒng)無侵入性
2、 能夠發(fā)揮以上提到的灰度的優(yōu)勢(shì)
3、 發(fā)布系統(tǒng)的靈活配置
4、 發(fā)布系統(tǒng)和業(yè)務(wù)系統(tǒng)的松耦合
5、 和網(wǎng)關(guān)系統(tǒng)結(jié)合,讓操作平滑

五、功能
1、 路由策略管理/配置
2、 灰度規(guī)則管理
3、 開啟/關(guān)閉開關(guān)

六、系統(tǒng)設(shè)計(jì)
需要設(shè)計(jì)的系統(tǒng)分為兩種場(chǎng)景,一種是http方式接入,需要借助網(wǎng)關(guān)(gate-way)去實(shí)現(xiàn)流量的切換,和系統(tǒng)路由;另一種是rpc接入(目前為dubbo),需要借助dubbo提供的負(fù)載均衡策略
來實(shí)現(xiàn),結(jié)合自帶的qos(dubbo的在線運(yùn)維命令)實(shí)現(xiàn)服務(wù)啟動(dòng)/關(guān)閉。
【說明】:服務(wù)內(nèi)部執(zhí)行線程監(jiān)控待定,sentinel 、 pinpoint or other。

1、http方式接入

其中分為幾個(gè)重要的部分:
接入層網(wǎng)關(guān),接入客戶端請(qǐng)求,根據(jù)下發(fā)的配置將符合條件的請(qǐng)求轉(zhuǎn)發(fā)到新舊系統(tǒng)上.
配置管理后臺(tái),這個(gè)后臺(tái)可以配置不同的轉(zhuǎn)發(fā)策略給接入層網(wǎng)關(guān).
穩(wěn)定和灰度兩種處理客戶端請(qǐng)求的業(yè)務(wù)服務(wù)器.

http請(qǐng)求的入口都落在網(wǎng)關(guān)上,網(wǎng)關(guān)會(huì)根據(jù)管控平臺(tái)(admin dashboard)的配置進(jìn)行uri的選擇。此時(shí)請(qǐng)求數(shù)據(jù)會(huì)判斷當(dāng)前應(yīng)用是否已經(jīng)開啟灰度,再次判斷是應(yīng)用級(jí)別的灰度還是服務(wù)級(jí)別的灰度,然后根據(jù)管控平臺(tái)配置的灰度策略進(jìn)行灰度,可以支持白名單、權(quán)重、ip段、業(yè)務(wù)域等。
管控平臺(tái)會(huì)調(diào)用引擎管理執(zhí)行相應(yīng)的指令,進(jìn)行關(guān)閉、開啟、更新策略和白名單數(shù)據(jù)等,每次網(wǎng)關(guān)重新reload和重啟時(shí)會(huì)從灰度管理系統(tǒng)調(diào)用接口讀取配置應(yīng)用的信息,加入緩存。
為了提升性能,應(yīng)用的基本信息、灰度策略、白名單等數(shù)據(jù)緩存在內(nèi)存或者類redis這樣的緩沖中,靈活的進(jìn)行緩存數(shù)據(jù)的更新。
實(shí)現(xiàn)功能:
1、動(dòng)態(tài)路由
2、服務(wù)動(dòng)態(tài)編排,實(shí)現(xiàn)流量的自由切換
3、啟服/停服
4、服務(wù)自檢

2、rpc(dubbo)接入

如果直接停機(jī)重啟rpc service會(huì)有什么影響:
服務(wù)發(fā)布時(shí),直接重啟Tomcat,導(dǎo)致節(jié)點(diǎn)正在處理的請(qǐng)求會(huì)受到影響,嚴(yán)重時(shí)會(huì)有數(shù)據(jù)異常。
服務(wù)發(fā)布時(shí)如果節(jié)點(diǎn)正在作為task_tracker運(yùn)行l(wèi)ts任務(wù),會(huì)導(dǎo)致任務(wù)失敗并retry。
服務(wù)發(fā)布時(shí)如果節(jié)點(diǎn)正在消費(fèi)RocketMQ中的消息,會(huì)導(dǎo)致消息消費(fèi)異常,甚至進(jìn)入retry或dlq隊(duì)列。
服務(wù)發(fā)布完成后沒有即時(shí)驗(yàn)證機(jī)制,直接暴露給用戶,如有異常影響面很廣。
線上無法同時(shí)存在新老版本的服務(wù)來用于長(zhǎng)時(shí)間的驗(yàn)證。
竟然有這么多問題,想想就可怕,淚崩~,因此必須想法優(yōu)雅的實(shí)現(xiàn)服務(wù)的啟停,因此引出dubbo 服務(wù)的持續(xù)發(fā)布:

dubbo-consumer實(shí)現(xiàn)不同的負(fù)載均衡,在負(fù)載的時(shí)候進(jìn)行白名單校驗(yàn)和策略選擇。系統(tǒng)對(duì)灰度管控平臺(tái)非強(qiáng)制依賴,管控平臺(tái)出現(xiàn)問題不影響系統(tǒng)正常運(yùn)行。
負(fù)載動(dòng)態(tài)路由,阻止后續(xù)流量進(jìn)入,監(jiān)控服務(wù)是否還有執(zhí)行的線程,加入鉤子offline服務(wù)或者接口,進(jìn)行服務(wù)升級(jí),自檢,啟動(dòng)online,接入負(fù)載均衡。

由于很多接口都有在Dubbo中進(jìn)行注冊(cè),因此需要有辦法能夠?qū)ζ銹rovider Service接口進(jìn)行下線或屏蔽,使其不提供服務(wù),即其它服務(wù)無法調(diào)用它的接口。
Service接口下線后,此consumer機(jī)器自然無任何流量流入,因此也無流量返回,達(dá)到下線consumer機(jī)器的目的,然后即可部署代碼。
官方有提供Dubbo-Admin工具,用于對(duì)Dubbo中各APP及其Service接口進(jìn)行管理,里面自然也包含有實(shí)現(xiàn)下線的功能,可以有3種方法:
屏蔽,貌似一直沒有效果(尷尬);
禁用,可以成功禁用;
權(quán)重調(diào)節(jié),可以設(shè)置0-100的權(quán)重,設(shè)置為0時(shí)即不提供服務(wù)。


經(jīng)過權(quán)重調(diào)節(jié)方案,通過Dubbo-Admin對(duì)需要下線機(jī)器的APP應(yīng)用接口權(quán)限設(shè)置為0。

實(shí)現(xiàn)的功能:
1、緩存負(fù)載策略
在系統(tǒng)啟動(dòng)的時(shí)候要根據(jù)系統(tǒng)配置拉取灰度策略,并且保存在內(nèi)存中,定時(shí)獲取最新的負(fù)載策略,需要提供及時(shí)觸發(fā)的策略更新接口。
2、 負(fù)載均衡
在系統(tǒng)上線之前選擇運(yùn)行時(shí)使用的負(fù)載均衡進(jìn)行調(diào)用。
3、系統(tǒng)配置
系統(tǒng)在上線前需要錄入管控平臺(tái),并且完成相應(yīng)的配置,在啟動(dòng)的時(shí)候作為唯一標(biāo)識(shí)能夠拉取相應(yīng)的配置。
4、監(jiān)控和統(tǒng)計(jì)
系統(tǒng)在內(nèi)存中緩存統(tǒng)計(jì)信息,定時(shí)上傳管控平臺(tái),監(jiān)控出現(xiàn)問題不影響系統(tǒng)正常使用(sentinel,or dubbo-amdin模塊擴(kuò)展)。
5、qos運(yùn)維工具
系統(tǒng)的啟動(dòng)使用qos,停服采用延時(shí)關(guān)閉結(jié)合jvm鉤子。

七、檢查機(jī)制

為了平滑發(fā)布的順利進(jìn)行,檢查確認(rèn)機(jī)制不可或缺,即確保Dubbo/Http中的下線都已生效,并且無流量發(fā)生,我們從以下兩個(gè)維度去檢查:

接口檢查,調(diào)用Dubbo、Http的API接口,檢查業(yè)務(wù)服務(wù)機(jī)器狀態(tài),是否為已經(jīng)下線。當(dāng)然,在做了下線功能的同時(shí),我們也有檢查功能和上線功能,可供調(diào)用。
監(jiān)控檢查,調(diào)用監(jiān)控平臺(tái)(ELK)的API接口,檢查業(yè)務(wù)服務(wù)機(jī)器的請(qǐng)求訪問數(shù)和日志流量是否都已經(jīng)為0,已經(jīng)處于下線狀態(tài)。
經(jīng)過上述改造后,我們新的發(fā)布流程如下,基本解決了平滑發(fā)布問題,發(fā)布時(shí)對(duì)業(yè)務(wù)的影響降到了最低;

八、停服/啟服后小范圍驗(yàn)證
1.灰度驗(yàn)證--不影響線上用戶
2.部分實(shí)例發(fā)布-- 導(dǎo)部分流量到新實(shí)例(可通過網(wǎng)關(guān)路由規(guī)則:用戶ID取模,區(qū)域限制等等)
3.全部發(fā)布

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/73004.html

相關(guān)文章

  • 如何使用SpringCloud進(jìn)行灰度發(fā)布

    摘要:灰度發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。如何使用進(jìn)行灰度發(fā)布呢將分一下四步第一,設(shè)置網(wǎng)關(guān)權(quán)重路由設(shè)置中提供了去實(shí)現(xiàn)根據(jù)分組設(shè)置權(quán)重進(jìn)行路由,因此使用起來相對(duì)比較簡(jiǎn)單,有興趣的可以閱讀源碼。 灰度發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。在其上可以進(jìn)行A/B testing,即讓一部分用戶繼續(xù)用產(chǎn)品特性A,一部分用戶開始用產(chǎn)品特性B,如果用戶對(duì)B沒有什么反對(duì)意見,那...

    Jackwoo 評(píng)論0 收藏0
  • Mac下使用ABTestingGateway快速搭建灰度網(wǎng)關(guān)

    摘要:下使用快速搭建灰度網(wǎng)關(guān)簡(jiǎn)介是新浪開源的一個(gè)可以動(dòng)態(tài)設(shè)置分流策略的灰度發(fā)布系統(tǒng),工作在層,基于和開發(fā),使用作為分流策略數(shù)據(jù)庫(kù),可以實(shí)現(xiàn)動(dòng)態(tài)調(diào)度功能。目前在京東如實(shí)時(shí)價(jià)格秒殺動(dòng)態(tài)服務(wù)單品頁(yè)列表頁(yè)等都在使用架構(gòu),其他公司如淘寶去哪兒網(wǎng)等。 Mac下使用ABTestingGateway快速搭建灰度網(wǎng)關(guān) ABTestingGateway簡(jiǎn)介 ABTestingGateway 是新浪開源的一個(gè)可以...

    2bdenny 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<