¿Qué es un load balancer?
Un load balancer toma entradas cualesquiera y da a cada salida el caudal exacto que has pedido, mandando lo que sobra a un sumidero. Las entradas no tienen que ser iguales ni estar saturadas: escribes lo que llega y luego lo que cada máquina debe recibir.
Lo que sale es una orden de construcción — los splitters y los mergers que hay que colocar, el caudal exacto en cada cinta, y una línea de excedente por cada contenedor que habrá que vaciar. Nada se promedia y nada se simula: o cada caudal pedido se alcanza exactamente, o el problema se rechaza.
¿En qué se diferencia de un belt balancer?
Un belt balancer da el mismo caudal a todas las salidas; un load balancer da a cada una el que has elegido. De esa única diferencia nace el excedente, que es justo la parte que la mayoría de los montajes hechos a mano se dejan por el camino.
| Belt balancer | Load balancer |
|---|
| Entradas | cintas saturadas | caudales cualesquiera, iguales o no |
| Salidas | N salidas, todas al mismo caudal | un caudal por salida, escrito a mano |
| Excedente | ninguno, la entrada se divide entera | todo lo que los objetivos no piden |
| Uso típico | alimentar N máquinas idénticas | alimentar una línea mixta, o pinchar en un bus |
En cambio, con las cintas los dos obedecen la misma regla: la capacidad es una restricción dura, y un problema para el que ningún plano se mantiene por debajo del caudal del nivel se rechaza en lugar de dibujarse.
¿Por qué hay que consumir el excedente?
Porque el round-robin del splitter se salta cualquier salida bloqueada y reparte su parte entre las demás. Los objetivos reciben entonces más que el caudal pedido y todo el cálculo exacto se derrumba — sin ruido, porque las cintas siguen teniendo muy buen aspecto.
Así que la línea de excedente se dibuja siempre, y lo que enchufas al final es una decisión de verdad: otra fábrica, un contenedor que vacías, un AWESOME Sink. Cualquier cosa que siga tragando objetos sirve; cualquier cosa que se llene romperá el plano aguas arriba.
Antes esto era una casilla, y la casilla no cambiaba nada: el grafo era idéntico en los dos casos, solo se movía el tono del mensaje. Hacer declarar una intención sin efecto no le enseña nada a nadie — la condición se enuncia ahora una sola vez, como aviso, y la línea se traza marques lo que marques.
¿Cómo se reparte el excedente entre los contenedores?
Entre el menor número posible de salidas, y sin que ninguna supere el caudal de la cinta. Un excedente de 600 objetos/min no cabe en un Mk4, que se queda en 480: sale por dos salidas en lugar de por una cinta imposible.
El reparto llena siempre el contenedor menos cargado y solo abre uno nuevo cuando ya no cabe nada más, porque dos contenedores medio llenos se mantienen vacíos con más facilidad que uno lleno y otro vacío. Un caso medido — tres entradas de 300 objetos/min hacia dos objetivos de 150, en Mk4:
- total de entrada: 900 objetos/min;
- pedido por los objetivos: 2 × 150 = 300 objetos/min;
- excedente: 600 objetos/min, repartidos en dos salidas de 250 y 350 objetos/min — las dos por debajo del techo de 480;
- coste: 6 splitters y 4 mergers, sin un solo bucle de retorno.
En Mk6 el mismo problema ya no tiene nada que repartir: los 600 objetos/min caben en una sola cinta, y el plano baja a 2 splitters y 2 mergers.
¿Y si un objetivo supera la capacidad de la cinta?
Entonces ninguna topología puede hacer nada, y la herramienta se niega en lugar de dibujar algo que no se construye. Un objetivo es una máquina que has declarado, y se alimenta por una cinta: más allá del caudal de la cinta, ya no es un problema de reparto sino de fábrica.
El suelo de este modo es el mayor entre la entrada más grande y el objetivo más grande; por debajo no existe ningún plano, por ingenioso que sea. El solver prueba primero un tronco único, luego un reparto entrada por entrada, y luego un reparto previo cuando el bucle de retorno sigue desbordándose, y se queda con la primera disposición que no satura nada. Si no pasa ninguna de las tres, anuncia el suelo y el nivel de cinta que lo supera.
Preguntas frecuentes
¿Pueden tener las entradas caudales distintos?
Sí, y tampoco tienen que estar saturadas. Tres entradas de 200, 100 y 60 objetos/min hacia dos objetivos de 90 y 45: es un problema corriente aquí, resuelto de forma exacta y sin que ninguna cinta supere los 270 objetos/min de un Mk3.
¿Qué es un sumidero?
En esta página es el destino del excedente: la cinta que se lleva todo lo que los objetivos no han pedido. En el juego puede ser otra fábrica, un contenedor que vacías o un AWESOME Sink — cualquier cosa que siga aceptando objetos, porque un sumidero que se llena rompe el round-robin aguas arriba.
¿Por qué se rechaza mi plano?
Por una de las dos razones que nombra el mensaje. O los objetivos piden más de lo que dan las entradas, y la falta viene cifrada: 480 objetos/min de entrada frente a un objetivo de 500, faltan 20. O ninguna topología mantiene todas las cintas por debajo del caudal de su nivel, y entonces se anuncia el suelo, junto con el nivel de cinta capaz de superarlo.
¿Cuántos edificios hacen falta?
Menos de los que la aritmética hace temer, porque el árbol se poda. Sacar 70 objetos/min de una cinta Mk4 saturada a 480 equivale a dividir por 7/48, y el árbol entero pediría 31 splitters y 23 mergers; el plano podado se arregla con 5 y 3. Baja de 480 a 240, luego 120, luego 60, echando al excedente cada mitad que no sirve, y saca 10 de un último 60 dividido en tres: 60 + 10 = 70, mientras 410 objetos/min se van al sumidero.