Skip to content

treachery/expt

Repository files navigation

分层ab实验

实验模型

	|-------------------|-------------------|
	|     expt2:50%     |               	|
	|---------|---------|               	|
	|expt3:25%|expt4:25%|               	|
	|---------|---------|    expt1:50%      |
	|expt6:25%|         |               	|
	|---------|expt5:25%|               	|
	|expt7:25%|         |               	|
	|---------|---------|-------------------|
  1. 实现流量的分层和独占逻辑,支持实验正交和互斥(使用fnv做hash后取模,每个layer分为100个mod)
  2. 每个实验内部可组件化添加selector,filter,trafficer,用于支持白名单,灰度,人群规则筛选,多种分流策略等
  3. 食用方式见example
  4. 更多功能待扩展

更多思考

接入方式

根据个人经验,业务接入ab系统,场景大概分为3类。

  • 可变的配置化参数

在同一个接口内,返回数据不同,例如facebook的planout的接入方式:value=get(key), 此种后端接口结构不会变化,对返回数据做override即可实现。

  • 接口版本的变化

不同版本对应不同接口,最常见的是接入多种推荐算法进行比对,不保证接口数据结构的一致,此种一般是将ab系统接入到网关层进行路由分发。

  • 完全无法抽象的

例如业务流程改版,样式/数据/接口等都完全不一样了,这种只能提供接口,ab系统作为分流工具,将版本id提供给业务,业务代码内写if else逻辑。

实践:基于envoy-http-filter-lua的ab接入策略

为了减轻业务接入ab系统时的开发迭代,可以使用envoy-http-filter-lua对业务接口进行流量拦截,可以无开发量地接入 可变的配置化参数/接口版本的变化 两种场景。对接口响应效率的影响还需评估

About

分层ab实验

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages