zoukankan      html  css  js  c++  java
  • 使用nginx实现的灰度发布思路研究(待实践)

    灰度发布也叫 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

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

  • 相关阅读:
    pe文件结构
    dll
    术语
    创建内存映射文件
    函数的调用约定
    串口
    linux 之 tcpdump
    linux 之程序管理
    perl 之eval
    2020-10-27_组合快捷键
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6443548.html
Copyright © 2011-2022 走看看