Regal 是一個(gè)用于"灰度發(fā)布"或 A/B Testing的智能分組引擎
主要功能:
提供發(fā)布策略,動(dòng)態(tài)智能分流
支持多版本分組和優(yōu)先級(jí)
數(shù)據(jù)格式化
同時(shí)兼容Python2和Python3
Regal能做什么?舉個(gè)最簡(jiǎn)單的例子,比如需要針對(duì)一個(gè)版本進(jìn)行灰度發(fā)布,而這一版本對(duì)應(yīng)的可能是一大堆服務(wù)器集群, 如下圖:
就像圖中描述的一樣,無(wú)論你的服務(wù)器是多還是少,尤其很多中小型企業(yè)在進(jìn)行灰度發(fā)布時(shí),通常會(huì)遇到所制定的分流策略在實(shí)際的技術(shù)或開(kāi)發(fā)中如何去實(shí)現(xiàn),是機(jī)器直接寫(xiě)死?
因此讓Regal智能分組引擎直接介入,讓它來(lái)根據(jù)你的策略提前進(jìn)行動(dòng)態(tài)地分組分流。
在這里,我再舉一個(gè)簡(jiǎn)單的例子,方便大家能夠更清楚的明白R(shí)egal的主要工作:
假設(shè)有一個(gè)版本A,需要針對(duì)六臺(tái)機(jī)器進(jìn)行發(fā)布
現(xiàn)在應(yīng)該已經(jīng)了解Regal到底是什么干貨了吧,當(dāng)然了,上面的例子是服務(wù)器非常少的情況,實(shí)際情況中,所面對(duì)的服務(wù)器集群是非常多,這個(gè)時(shí)候可以通過(guò)提供的combine和schedule兩個(gè)API進(jìn)行策略調(diào)整。詳情可以見(jiàn)下文的使用介紹
Feature:
提供發(fā)布策略,動(dòng)態(tài)智能分流
支持多版本分組和優(yōu)先級(jí)
數(shù)據(jù)格式化
同時(shí)兼容Python2.5以上和Python3以上的版本(建議使用Python2.7+或者Python3.5以后的版本)
安裝和使用 安裝pip install regal
使用說(shuō)明單個(gè)版本場(chǎng)景
In [1]: from regal import BaseInfo # 初始化信息,請(qǐng)注意一下格式 In [6]: ab = BaseInfo( version_host={"app-test-version1.0":"10.1.1.1,10.1.1.2,10.1.1.3,10.1.1.4,10.1.1.1.5"}, combine=2 # combine 希望以每組多少臺(tái)服務(wù)器作為一組,進(jìn)行用戶群B的分流 # 在這個(gè)例子中為2臺(tái) # 默認(rèn):每組1臺(tái) ) # grouping() 進(jìn)行分組 In [11]: smart_grouping = ab.grouping() # result屬性 進(jìn)行分組后的返回結(jié)果 In [12]: smart_grouping.result Out[12]: [("app-test-version1.0", [["10.1.1.1"], ["10.1.1.2", "10.1.1.3"], ["10.1.1.4", "10.1.1.1.5"]])]Demo
你可以進(jìn)入項(xiàng)目Github地址,來(lái)了解更多Regal引擎的多種運(yùn)用使用場(chǎng)景及說(shuō)明
分流分組之后?Regal本身只是一個(gè)分組引擎,因此它并不承擔(dān)直接發(fā)布的作用,但是通過(guò)Regal分組之后,你所得到數(shù)據(jù),是非常容易和其他可以用來(lái)發(fā)布的組件進(jìn)行配合;下面是我的一些建議和指導(dǎo)。
versionA: (第一組) groupA ip...... 用戶群A (第二組) groupB1 ip...... __ (第三組) groupB2 ip...... | (第四組) groupB3 ip...... | -- 用戶群B ...... --|
關(guān)于發(fā)布
分組之后,每一組的所有機(jī)器可以看作一個(gè)整體,扔進(jìn)發(fā)布組件,進(jìn)行"組內(nèi)并發(fā)"
你可以把每一組直接放在ansible、saltstack、pssh或異步IO框架等等進(jìn)行發(fā)布;
甚至你也可以和前端nginx+lua進(jìn)行組合;
關(guān)于停止發(fā)布
每組進(jìn)行發(fā)布,一旦出現(xiàn)異常,你可以利用發(fā)布組件,或者你自己寫(xiě)一套異常抓取工具來(lái)停止發(fā)布,這個(gè)時(shí)候就不會(huì)再針對(duì)剩下的組進(jìn)行發(fā)布操作了。
關(guān)于回滾
把回滾也看作一種發(fā)布,就不多說(shuō)了
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38624.html
摘要:基于的前端灰度發(fā)布方案灰度發(fā)布和測(cè)試簡(jiǎn)介灰度發(fā)布將某個(gè)功能灰度發(fā)布逐漸放量給特定線上人群,避免新功能全量上線帶來(lái)的風(fēng)險(xiǎn)。如果我們把這些版本信息管理起來(lái),并且通過(guò)特定的手段對(duì)用戶請(qǐng)求應(yīng)用測(cè)試就可以完成前端不同版本的灰度發(fā)布。 基于Nodejs的前端灰度發(fā)布方案 1. 灰度發(fā)布和A/B測(cè)試簡(jiǎn)介 灰度發(fā)布 將某個(gè)功能灰度發(fā)布(逐漸放量)給特定線上人群,避免新功能全量上線帶來(lái)的風(fēng)險(xiǎn)。 show...
摘要:摘要導(dǎo)語(yǔ)近日,阿里云發(fā)布了智能媒體管理服務(wù),通過(guò)離線處理能力關(guān)聯(lián)授權(quán)的云存儲(chǔ),提供便捷的海量多媒體數(shù)據(jù)一鍵分析,并通過(guò)該分析過(guò)程構(gòu)建價(jià)值元數(shù)據(jù),更好支撐內(nèi)容檢索。標(biāo)準(zhǔn)統(tǒng)一,訪問(wèn)接口統(tǒng)一為阿里云的標(biāo)準(zhǔn)。場(chǎng)景化一鍵式處理,提高易用性。 摘要: 導(dǎo)語(yǔ) 近日,阿里云發(fā)布了智能媒體管理(Intelligent Media Management)服務(wù), 通過(guò)離線處理能力關(guān)聯(lián)授權(quán)的云存儲(chǔ),提供便捷的...
摘要:灰度發(fā)布是指在黑與白之間,能夠平滑過(guò)渡的一種發(fā)布方式。如何使用進(jìn)行灰度發(fā)布呢將分一下四步第一,設(shè)置網(wǎng)關(guān)權(quán)重路由設(shè)置中提供了去實(shí)現(xiàn)根據(jù)分組設(shè)置權(quán)重進(jìn)行路由,因此使用起來(lái)相對(duì)比較簡(jiǎn)單,有興趣的可以閱讀源碼。 灰度發(fā)布是指在黑與白之間,能夠平滑過(guò)渡的一種發(fā)布方式。在其上可以進(jìn)行A/B testing,即讓一部分用戶繼續(xù)用產(chǎn)品特性A,一部分用戶開(kāi)始用產(chǎn)品特性B,如果用戶對(duì)B沒(méi)有什么反對(duì)意見(jiàn),那...
摘要:就是一種灰度發(fā)布方式,讓一部分用戶繼續(xù)用,一部分用戶開(kāi)始用,如果用戶對(duì)沒(méi)有什么反對(duì)意見(jiàn),那么逐步擴(kuò)大范圍,把所有用戶都遷移到上面來(lái)。灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)調(diào)整問(wèn)題,以保證其影響度。 一、背景互聯(lián)網(wǎng)產(chǎn)品開(kāi)發(fā)有個(gè)非常特別的地方,就是不停的升級(jí),升級(jí),再升級(jí)。采用敏捷開(kāi)發(fā)的方式,基本上保持每周或者每?jī)芍芤淮蔚陌l(fā)布頻率,系統(tǒng)升級(jí)總是伴隨著各種風(fēng)險(xiǎn),新舊版本兼...
閱讀 1173·2021-11-22 15:22
閱讀 3847·2021-10-19 13:13
閱讀 3596·2021-10-08 10:05
閱讀 3305·2021-09-26 10:20
閱讀 2993·2019-08-29 14:21
閱讀 2203·2019-08-27 10:55
閱讀 1879·2019-08-26 10:31
閱讀 2588·2019-08-23 16:47