¿Cómo se aplica la Ley de Little al software?

La Ley de Little se aplica ampliamente en los sistemas de mensajería en tiempo real. Es una relación hermosa y simple que se aplica a todas las colas: teoría de colas. Sin embargo, va más allá de las colas básicas e influirá en la forma en que diseña todos los sistemas en línea.

[matemáticas] L = \ lambda W [/ matemáticas]

La Ley de Little es particularmente importante hoy porque la mayoría de los grandes sistemas de datos funcionan en tiempo real, o más correctamente, casi en tiempo real. Esto permite que sitios como Quora lo orienten a nuevos usuarios y temas recomendados, tan pronto como comience a interactuar con el sitio. Emplearían perfiles en tiempo real o modelos en línea en sistemas posteriores.

Suponga que tiene N máquinas que recopilan eventos y los escriben en una cola. En el otro extremo están los lectores M, que procesan los eventos. El tiempo promedio de servicio W es la cantidad promedio de tiempo que cada evento pasa en la cola, esperando ser procesado. La velocidad de llegada efectiva [math] \ lambda [/ math] es la velocidad a la que los escritores N escriben los eventos en esa cola. Usamos el término efectivo para distinguir los eventos que realmente se escribieron en la cola. La tasa de llegada puede ser mayor que la tasa efectiva, momento en el que está descartando eventos porque está por encima de su capacidad.

RabbitMQ, ActiveMQ, Kestrel, Kafka, etc. son ejemplos de colas de software listas para usar. Las colas se pueden usar como un bus de mensajes en toda su organización o proporcionar un acoplamiento flexible entre los componentes.

Las colas de software son naturalmente análogas a la Ley. Por ejemplo, puede configurar colas para que tengan un tiempo de espera máximo para los eventos, momento en el que se eliminarán automáticamente. Puede interpretar esto como un límite superior para el tiempo de servicio .

La mayoría de las colas dejarán caer los eventos más antiguos cuando superen su capacidad. Sin embargo, suponga que su cola no admite esto. Aplique la Ley de Little de la siguiente manera: [matemáticas] L / \ lambda = W [/ matemáticas]. Dejando que L iguale la capacidad de su cola, W nos da el tiempo de espera preciso para mantener la cola en la capacidad, eliminando los eventos más antiguos al exceder el tiempo de espera. Esto es ideal para cuando los sistemas posteriores han fallado por completo. Puede continuar apuntando a sus usuarios que están en línea ahora mismo cuando esos sistemas están respaldados. Esto supone una constante [matemática] \ lambda [/ matemática], por lo tanto, apunte al 90% de su capacidad para L en la práctica. Sin embargo, si su cola se puede configurar para eliminar los eventos más antiguos, la solución mecánica siempre es mejor.

El poder de Little’s Law va más allá de las colas básicas. En términos más generales, cualquier sistema que recibe eventos puede considerarse como una cola. Supongamos que tiene un servicio REST sobre una base de datos. Si mide el tiempo de solicitud promedio durante el desarrollo (W), y el total de solicitudes simultáneas que puede admitir con un gráfico de codo (L), entonces ahora está al tanto de su tasa de llegada efectiva [math] \ lambda [/ math] para Una máquina individual. Divida su tasa de llegada total por su tasa efectiva para obtener la cantidad total de máquinas necesarias para su servicio distribuido. Utilice siempre datos reales o una aproximación cercana.

Si tiene varios servicios encadenados, la tasa de eventos salientes debe ser mayor o igual que la tasa efectiva entrante. De lo contrario, su sistema se considera inestable , L aumentará y su capacidad será mayor.

Suponga que tiene un sistema descendente con un número predeterminado de solicitudes por segundo que puede hacerle. Utilice RateLimiter de Google en su biblioteca de Guava, que utiliza la Ley de Little bajo el nombre: Google Core Libraries for Java 19.0-SNAPSHOT API).

Estas técnicas le permiten construir sistemas estables y resistentes en tiempo real. Estoy seguro de que la aplicación de la Ley de Little va mucho más allá de estos pocos ejemplos. Tengo curiosidad por lo que otros han hecho.