大数据spark程序员

ABT架构设计

2019-04-11  本文已影响4人  jacksu在简书

背景

策略或算法需要在线上不断上线,不断优化,优化之后怎么确定是好是坏。这时就需要ABTest来确定,最近想的办法、优化的算法、优化的逻辑数据是正向的,是有意义的,是提升数据效果的。

ab需求能方便测试,提供界面快速调整流量,调整流量后能够方便看效果变化,以及不同ab分支算法对比到底是a算法好、还是b算法好、还是c算法好。再有就是白名单配置上线新算法时,实现新算法上线测试,验证程序是否正确。

根据ABtest需求,系统有三部分构成。

配置管理

配置管理利用现在的Apollo配置平台,以json格式进行配置,每个业务详细配置如下:

{
  "layers": [
    {
      "id":10001,
      "name": "search",
      "is_stop":false,
      "experiments": [
        {
          "name": "searchA",
          "id":11,
          "weight": 20
        {
          "name": "searchB",
          "id":22,
          "weight": 10
        }
      ]
    },
    {
      "id":10002,
      "name": "ctr",
      "is_stop":false,
      "experiments": [
        {
          "name": "v1",
          "id":1,
          "weight": 50
        },
        {
          "name": "v3",
          "id":3,
          "weight": 50
        }
        ]
    },
    {
      "id":10003,
      "name": "bid",
      "is_stop":false,
      "experiments": [
        {
          "name": "v3",
          "id":3,
          "weight": 100
        }
        ]
    }
  ]
}

实时分流服务

考虑延迟性,ABT以SDK方式提供服务

image.png

实时效果分析

ABT相关信息打印在ABT的log中,基于开源组件实现可视化。下面是数据可视化数据流:

数据流
实时数据可视化效果

如有疑问,欢迎关注下面公众号进行交流。

image.png

参考

Google 重叠实验框架:更多,更好,更快地实验

互联网AbTest系统设计思考

上一篇下一篇

猜你喜欢

热点阅读