Split Clients#

El módulo genera variables para pruebas A/B, despliegues canarios y otros escenarios que dirigen un porcentaje específico de clientes a un servidor o configuración mientras que el resto se dirige a otro lugar.

Ejemplo de configuración#

stream {
    # ...
    split_clients "${remote_addr}AAA" $upstream {
                  0.5%                feature_test1;
                  2.0%                feature_test2;
                  *                   production;
    }

    server {
        # ...
        proxy_pass $upstream;
    }
}

Directivas#

split_clients#

Sintaxis

split_clients string $variable { ... }

Predeterminado

Contexto

stream

Crea una $variable aplicando un hash a la string; las variables en la string se sustituyen, el resultado se somete a hash y el valor del hash se usa para seleccionar el valor de la cadena asignado a la $variable.

La función de hash utiliza MurmurHash2 (32 bits), y todo su rango de valores (0 a 4294967295) se asigna a grupos en orden de aparición; los porcentajes determinan el tamaño de los grupos. Un comodín (*) puede aparecer al final; los hashes que no caigan en otros grupos se asignan a su valor correspondiente.

Ejemplo:

split_clients "${remote_addr}AAA" $variant {
               0.5%               .one;
               2.0%               .two;
               *                  "";
}

Aquí, tras la sustitución en la cadena $remote_addrAAA, los valores de hash se distribuyen de la siguiente manera:

  • valores de 0 a 21474835 (0,5%) producen .one

  • valores de 21474836 a 107374180 (2%) producen .two

  • valores de 107374181 a 4294967295 (todos los demás) producen "" (una cadena vacía)