• home > OMD > TEST >

    灰度发布方案(1):灰度/AB测试/负载均衡/分流概述

    Author:zhoulujun Date:

    灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A B testing。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

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

    灰度发布概述

    灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing。

    灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

    实现思路方向

    以nginx为例的分流,IP是最终的关键,从而以IP围绕中心,可以衍生出很多定义,比如用户标识、用户分组、设备ID及分组等,但是最终还是离不开IP去分流。更进一步,可以通过热重启重新加载lua脚本配置。

    当然,这只是最常见的思考。采用分层的思想。灰度发布,也可以分为:

    在客户端中做

    在客户端中实现逻辑

    在接入层做

    多套(隔离的)线上环境,接入层针对不同用户转发到不同的环境中

    介绍在接入层使用的方式

    1. 在nginx层实现(使用ngx+lua)

    2. 在网关层实现((OpenResty/Kong/Zuul2/SpringCloudGateway 等))。

    3. dubbo的灰度,项目中如果使用dubbo,有可能会需要dubbo服务的灰度实现。


    在后台做

    比如spring cloud 做分层

    在虚拟层做

    待续

    负载均衡

    负载均衡又可分为服务端负载均衡和客户端负载均衡

    • 服务器端负载均衡:例如Nginx,通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器之间选择一个进行访问;即在服务器端再进行负载均衡算法分配。

    • 客户端负载均衡:例如ribbon或者dubbo,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;即在客户端就进行负载均衡算法分配。



    参考内容:

    Mac下使用ABTestingGateway快速搭建灰度网关 https://segmentfault.com/a/1190000015637357



    转载本站文章《灰度发布方案(1):灰度/AB测试/负载均衡/分流概述》,
    请注明出处:https://www.zhoulujun.cn/html/Operation/test/2020_0810_8536.html