Split Clients#
Модуль генерирует переменные для A/B-тестирования, канареечных релизов и других сценариев, которые направляют определенный процент клиентов на один сервер или конфигурацию, а остальных — куда-то еще.
Пример конфигурации#
stream {
# ...
split_clients "${remote_addr}AAA" $upstream {
0.5% feature_test1;
2.0% feature_test2;
* production;
}
server {
# ...
proxy_pass $upstream;
}
}
Директивы#
split_clients#
Создает $переменную, хэшируя строку; переменные в строке подставляются, результат хэшируется, затем по значению хэша выбирается строковое значение $переменной.
Функция хэширования использует
MurmurHash2
(32 бит),
и весь диапазон ее значений
(с 0 по 4294967295)
сопоставляется с корзинами в порядке появления;
процентные величины определяют размер корзин.
В конце может стоять метасимвол (*
);
хэши, не попавшие в другие корзины, сопоставляются с приданным ему значением.
Пример:
split_clients "${remote_addr}AAA" $variant {
0.5% .one;
2.0% .two;
* "";
}
Здесь после подстановки в строке $remote_addrAAA
значения хэша распределяются следующим образом:
значения от 0 до 21474835 (0,5%) дают
.one
;значения от 21474836 до 107374180 (2%) дают
.two
;значения от 107374181 до 4294967295 (все остальные) дают
""
(пустую строку).