Regal灰度發佈智能分組引擎

Regal 是一個用於"灰度發佈"或 A/B Testing的智能分組引擎前端

主要功能:nginx

  • 提供發佈策略,動態智能分流git

  • 支持多版本分組和優先級github

  • 數據格式化服務器

  • 同時兼容Python2和Python3併發

Regal能作什麼?

舉個最簡單的例子,好比須要針對一個版本進行灰度發佈,而這一版本對應的多是一大堆服務器集羣, 以下圖:app

Markdown

就像圖中描述的同樣,不管你的服務器是多仍是少,尤爲不少中小型企業在進行灰度發佈時,一般會遇到所制定的分流策略在實際的技術或開發中如何去實現,是機器直接寫死?框架

所以讓Regal智能分組引擎直接介入,讓它來根據你的策略提早進行動態地分組分流。
在這裏,我再舉一個簡單的例子,方便你們可以更清楚的明白Regal的主要工做:ssh

假設有一個版本A,須要針對六臺機器進行發佈異步

Markdown

如今應該已經瞭解Regal究竟是什麼乾貨了吧,固然了,上面的例子是服務器很是少的狀況,實際狀況中,所面對的服務器集羣是很是多,這個時候能夠經過提供的combineschedule兩個API進行策略調整。詳情能夠見下文的使用介紹

  • Feature:

    1. 提供發佈策略,動態智能分流

    2. 支持多版本分組和優先級

    3. 數據格式化

    4. 同時兼容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 但願以每組多少臺服務器做爲一組,進行用戶羣B的分流
             # 在這個例子中爲2臺
             # 默認:每組1臺
)

# grouping() 進行分組
In [11]: smart_grouping = ab.grouping() 


# result屬性 進行分組後的返回結果
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

你能夠進入項目Github地址,來了解更多Regal引擎的多種運用使用場景及說明

分流分組以後?

Regal自己只是一個分組引擎,所以它並不承擔直接發佈的做用,可是經過Regal分組以後,你所獲得數據,是很是容易和其餘能夠用來發布的組件進行配合;下面是個人一些建議和指導。

versionA:

  (第一組)    groupA   ip......     用戶羣A    
  (第二組)    groupB1  ip...... __ 
  (第三組)    groupB2  ip......   |
  (第四組)    groupB3  ip......   | --   用戶羣B   
   ......                       --|
  • 關於發佈

分組以後,每一組的全部機器能夠看做一個總體,扔進發布組件,進行'組內併發'

你能夠把每一組直接放在ansible、saltstack、pssh或異步IO框架等等進行發佈;

甚至你也能夠和前端nginx+lua進行組合;

  • 關於中止發佈

每組進行發佈,一旦出現異常,你能夠利用發佈組件,或者你本身寫一套異常抓取工具來中止發佈,這個時候就不會再針對剩下的組進行發佈操做了。

  • 關於回滾

把回滾也看做一種發佈,就很少說了

相關文章
相關標籤/搜索