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