Regal 是一个用于"灰度发布"或 A/B Testing的智能分组引擎前端
主要功能:nginx
提供发布策略,动态智能分流git
支持多版本分组和优先级github
数据格式化服务器
同时兼容Python2和Python3并发
举个最简单的例子,好比须要针对一个版本进行灰度发布,而这一版本对应的多是一大堆服务器集群, 以下图:app
就像图中描述的同样,不管你的服务器是多仍是少,尤为不少中小型企业在进行灰度发布时,一般会遇到所制定的分流策略在实际的技术或开发中如何去实现,是机器直接写死?框架
所以让Regal智能分组引擎
直接介入,让它来根据你的策略提早进行动态地分组分流。
在这里,我再举一个简单的例子,方便你们可以更清楚的明白Regal的主要工做:ssh
假设有一个版本A,须要针对六台机器进行发布异步
如今应该已经了解Regal究竟是什么干货了吧,固然了,上面的例子是服务器很是少的状况,实际状况中,所面对的服务器集群是很是多,这个时候能够经过提供的combine
和schedule
两个API进行策略调整。详情能够见下文的使用介绍
Feature:
提供发布策略,动态智能分流
支持多版本分组和优先级
数据格式化
同时兼容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']])]
你能够进入项目Github地址,来了解更多Regal引擎的多种运用使用场景及说明
Regal自己只是一个分组引擎,所以它并不承担直接发布的做用,可是经过Regal分组以后,你所获得数据,是很是容易和其余能够用来发布的组件进行配合;下面是个人一些建议和指导。
versionA: (第一组) groupA ip...... 用户群A (第二组) groupB1 ip...... __ (第三组) groupB2 ip...... | (第四组) groupB3 ip...... | -- 用户群B ...... --|
关于发布
分组以后,每一组的全部机器能够看做一个总体,扔进发布组件,进行'组内并发'
你能够把每一组直接放在ansible、saltstack、pssh或异步IO框架等等进行发布;
甚至你也能够和前端nginx+lua进行组合;
关于中止发布
每组进行发布,一旦出现异常,你能够利用发布组件,或者你本身写一套异常抓取工具来中止发布,这个时候就不会再针对剩下的组进行发布操做了。
关于回滚
把回滚也看做一种发布,就很少说了