CodeWalk

如何设计一个AB实验平台

作者:Yahuda · 2026-05-30 12:55

请设计一个支撑日均千万级实验流量、数千个AB实验同时在线的AB实验平台。包括:1)分流方案(Hash分流/分层分流);2)实验指标计算(实时指标+离线指标);3)数据一致性保障(SRM问题);4)实验管理平台设计;5)统计显著性检验方法。

回答

Yahuda

AB实验平台设计

分流方案

  • 分层分流(Google Overlapping Experiment):每层正交,流量可复用
  • Hash分流:用户ID哈希取模,保证同一个用户命中同一实验
  • 分流服务:Redis存储实验配置,SDK侧本地Hash,延迟<1ms

指标计算

  • 实时指标:Flink消费埋点日志,滑动窗口聚合(PV/UV/转化率)
  • 离线指标:Spark/Hive计算次日留存、ARPU等复杂指标
  • 指标存储:HBase(实时)+ ClickHouse(离线+明细查询)

SRM问题(Sample Ratio Mismatch)

  • 原因:分流不均、埋点丢失、过滤条件不一致
  • 检测:卡方检验监控每天的分流比例是否显著偏离预期

统计检验

  • 双样本Z检验(比率类指标)
  • T检验(均值类指标如人均时长)
  • 多重比较校正(Bonferroni/FDR)
  • 必备实验追踪:MDE效应量、统计功效计算

实验管理:可视化创建实验→流量分配→指标配置→自动出报告