JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

原来Nginx 也可以做AB test nginx keycloak

wys521 2024-10-24 16:12:39 精选教程 19 ℃ 0 评论

大家在开发过程中是否有接触到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. 字符串
  2. 一个活多个变量
  3. 变量与字符串的组合


下面来介绍一下如何根据已有变量,来确定百分比 生成新的变量的呢?

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版本。

或者根据年龄段 来划分用户。

不知道大家有没有好的建议?

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表