鹰眼(Hawkeye)是美国漫威漫画旗下超级英雄,初次登场于《悬疑故事》(Tales of Suspense)第57期(1964年9月),由斯坦·李和唐·海克联合创造。本名克林顿·弗朗西斯·巴顿(Clinton Francis Barton),小名克林特(Clint),曾化名为歌利亚(Goliath)与浪人(Ronin),是个在马戏团长大的孤儿,师从剑客(Swordsman)和捷射(Trick Shot),天赋异常,小时候便获得“鹰眼“和“世界最佳狙击手”的称号,因在某次演出时看到钢铁侠救人的一幕后,决定利用自己的能力成为超级英雄,后加入复仇者联盟,成为其中重要的一员。
- 数据持久化到redis里面
- 大量使用redis-lua脚本(基本每一个接口都是使用redis-lua脚本实现,提升性能的同时,能利用redis-lua脚本的原子性达到类似事务的效果)
- 获取变量接口(需要返回现在配置的层+实验+实验变量,以获取从属的实验版本)
- 回传指标接口,直接存redis,需要在redis里面使用hashset存储对应的实验,以及实验指标,还有指标的值
- 增加一个接口直接输出对应实验的统计指标,开始的时候只要求有一个简单的列表就好了(TODO)
docker pull lloydzhou/ab
docker run --rm -it -e INTERVAL=60 -e HTPASSWD='abadmin:$apr1$EJ2gyYP1$JirougEJ3sK/nF8aj63Zw1' -v `pwd`/data:/data:rw -p 8011:80 lloydzhou/ab
docker run --rm -it -e INTERVAL=60 -e HTPASSWD="$(docker run --rm -it xmartlabs/htpasswd abadmin abpasswd )" -v `pwd`/data:/data/:rw -p 8011:80 lloydzhou/ab
// 获取AB测试的变量值
export const getABTestValue = (name, defaultValue) => {
return request(`/ab/var?name=${name}`, {
headers: {
'X-User-Id': getUserId(),
'X-Env': getEnv(),
},
})
.then(({ data }) => {
if (data.code === 0) {
if (data.type === 'number') {
return parseInt(data.value, 10)
}
return data.value
}
return defaultValue
})
.catch((e) => {
return defaultValue
})
}
// 发送AB测试的指标
export const postABTestTarget = (targets) => {
return request(`/ab/track`, {
method: 'POST',
body: targets,
headers: {
'X-User-Id': getUserId(),
'X-Env': getEnv(),
},
})
}
// getEnv() --> "production/development"