灰度发布也叫 A/B 测试,原理是一套系统在实现了负载均衡,全国节点都部署了系统之后,可以在新功能上线后,让一小部分用户先使用,从中收集使用信息来做对比和发现bug,及时调整,最终分发到全国的节点。

实现灰度发布的几个思路:

1、以nginx为例的分流,IP是最终的关键,从而以IP围绕中心,可以衍生出很多定义,比如用户标识、用户分组、设备ID及分组等,但是最终还是离不开IP去分流。

2、nginx支持模块开发,如果在一套成熟的系统中,可以开发自己的模块,从而脱离IP为分流导向,指定自己的精确分流的导向,比如设备ID这样更小颗粒度的定向风流。

3、nginx支持一些lua脚本的配置,比如lua更新nginx的配置,可以通过热重启重新加载lua脚本配置,但是现在我发现还有一种更简单的方法,就是nginx本身的配置文件,针对特定的IP分流配置,可以通过热重启nginx(也叫重新加载nginx的配置文件)来进行重新加载。

4、要实现灰度发布,还有一种非常重要的点,就是日志的收集,针对负载均衡的系统,由于节点很多,日志的收集非常重要,所以需要一套统一的日志平台进行收集和分析平台。

实现的具体方式:

在github上,我发现了在发布时,通过修改配置文件的形式,让nginx进行热重启重新加载配置文件的方式去实现;比如实现一套管理nginx的配置系统,再结合配置系统开发自己特定的业务发布平台,然后生成的配置文件上传到nginx上,最终重新让nginx加载新配置文件。

下面是我收集的一些链接,可以作为参考:

https://github.com/CNSRE/ABTestingGateway

https://github.com/boylegu/regal

https://github.com/Web4Nginx/Web4Nginx

https://github.com/pbchen/versionSwitchTool

https://github.com/zenxds/grey

https://github.com/songweihang/knight

https://github.com/xausky/ngx_http_dyabt_module

在github上搜索的关键字:灰度部署,灰度发布,AB TEST

现在这里做个思路研究记号,后续再实现。

最新文章

  1. 让MyEclipse2013兼容Retina屏幕
  2. JSONObject和JSONArray使用
  3. References & the Copy-Constructor
  4. BitMap 内存使用优化
  5. ☀【移动】Google Maps JavaScript API v3
  6. cf C. Inna and Dima
  7. Xcode 4.1~4.6 + iOS 5、iOS 6免证书(iDP)开发+真机调试+生成IPA全攻略
  8. Mina2 研究总结
  9. 智能的API、云服务和SOA测试解决方案——Parasoft SOAtest
  10. Spring的bean管理(注解)
  11. MySQL的JOIN(三):JOIN优化实践之内循环的次数
  12. [android] 绑定方式开启服务&调用服务的方法
  13. CentOS6.5系统下RPM包安装MySQL5.6(转)
  14. 手机视频编辑软件APP
  15. Python_oldboy_自动化运维之路(二)
  16. Oracle 11g R2 RAC 高可用连接特性
  17. post和updatebatch区别 delphi
  18. WebCalendar.js
  19. linux基础 -nginx和nfs代理 开发脚本自动部署及监控
  20. 《挑战程序设计竞赛》2.2 贪心法-区间 POJ2376 POJ1328 POJ3190

热门文章

  1. IDEA配置好maven后新建maven项目一直build失败的解决方法
  2. Flask With
  3. loj2291 「THUSC 2016」补退选
  4. IOS开发学习笔记024-UIButton和UIImageView的区别
  5. centos开机启动项设置命令:chkconfig
  6. jmeter快捷键
  7. 安装 Redis的Python客户端redis-py
  8. pythonic编程示例及简析
  9. PAT1029
  10. mysql再次安装问题