网站首页 > 精选教程 正文
大家在开发过程中是否有接触到AB Test?
那什么是AB Test呢?
我们的产品不太确定开发的功能,我们的用户是否能够接受,所以就推出多个版本的功能。按不同的百分比给不同的用户使用不同的版本。
举个栗子:v1.1.0 v1.1.1 v1.1.2。 让5%的人 使用v1.1.0 10% 的用户使用v1.1.1 20% 的用户使用v1.1.2。然后根据这些用户的反馈数据,比如点击 浏览 使用次数等。来决定最终使用哪个版本的功能。
在Nginx中有一个模块:split_clients 就可以实现这个功能。
这个模块默认是编译进Nginx的,(为啥我一直都不知道他的存在呢?)
模块其实就根据已有变量的值来确定百分比的。
已有变量包括:
- 字符串
- 一个活多个变量
- 变量与字符串的组合
下面来介绍一下如何根据已有变量,来确定百分比 生成新的变量的呢?
1. 会对上面说的已有变量进行MurmurHash2算法 得到32位的整形hash值。
2. 32位无符号整形的最大数字是2的32次方 -1,是最大值。
3. 用第一步得到的hash值与第二步最大值相除 ,hash/max 这就得到了一个百分比。
4. 然后根据配置文件中明确指出,各百分比对应的值。如: 0-5%, 5-10%等。
5. 当第三步的百分比 落在哪个范围里,新变量的值就是对应的值。
这个配置文件里的百分比加起来 不能超过100%,我们也没必要都算的那么精准。
如果只写了 0-5%, 5-10% 剩下的90%不想写也可以可用通配符 *来表达。(* 表达的就是 100 - (手动列出的值相加的和))
百分比的精度可以到小数点后2位。
语法:
Syntax: split_clients string $variable { ... }
Default: —
Context: http
可以看下这样的配置有什么问题吗?
split_clients "${http_testcli}" $variant {
0.51% .one;
20.0% .two;
50.5% .three;
40% .four;
* "";
}
是的,这里的百分比加起来超过了100%,所以是有问题的。
但是 这里只能基于比例来划分用户,却不能根据条件来划分用户,
比如根据地理信息,北京的用户访问1.1.1版本 南京的用户访问1.1.2版本。
或者根据年龄段 来划分用户。
不知道大家有没有好的建议?
猜你喜欢
- 2024-10-24 Docker实战十一之Redis部署 docker搭建redis-cluster集群
- 2024-10-24 java项目测试环境搭建 java搭建测试平台
- 2024-10-24 JAVA 项目如何进行 git 多人协作开发
- 2024-10-24 helm中部署nginx-test Chart 为示例
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)