Qu’est-ce qu’un load balancer ?
Un load balancer prend des entrées quelconques et donne à chaque sortie le débit exact demandé, le reste partant vers un conteneur. Les entrées n’ont besoin d’être ni égales ni saturées : on tape ce qui arrive, puis ce que chaque machine doit recevoir.
Ce qui en sort est un ordre de construction — les splitters et les mergers à poser, le débit exact sur chaque belt, et une ligne de surplus par conteneur à vider. Rien n’est moyenné, rien n’est simulé : ou bien chaque débit demandé est atteint exactement, ou bien le problème est refusé.
En quoi diffère-t-il d’un belt balancer ?
Un belt balancer donne le même débit à toutes les sorties ; un load balancer donne à chacune celui qu’on a choisi. De cette seule différence naît le surplus — précisément la partie que la plupart des montages faits à la main oublient.
| Belt balancer | Load balancer |
|---|
| Entrées | des belts saturés | des débits quelconques, égaux ou non |
| Sorties | N sorties, toutes au même débit | un débit par sortie, tapé à la main |
| Surplus | aucun, l’entrée est divisée en entier | tout ce que les cibles ne réclament pas |
| Usage typique | alimenter N machines identiques | alimenter une ligne mixte, ou puiser sur un bus |
Sur les belts, en revanche, les deux obéissent à la même règle : la capacité est une contrainte dure, et un problème pour lequel aucun plan ne tient sous le débit du palier est refusé plutôt que dessiné.
Pourquoi le surplus doit-il être consommé ?
Parce qu’un splitter saute en round-robin toute sortie bloquée et distribue sa part aux autres. Les cibles reçoivent alors plus que le débit demandé et tout le calcul exact s’écroule — sans bruit, puisque les belts continuent d’avoir l’air d’aller très bien.
La ligne de surplus est donc toujours tracée, et ce qu’on branche au bout relève d’une vraie décision : une autre usine, un conteneur qu’on vide, un AWESOME Sink. Tout ce qui continue d’avaler des objets fera l’affaire ; tout ce qui se remplit cassera le plan en amont.
C’était autrefois une case à cocher, et elle ne changeait rien : le graphe restait identique dans les deux cas, seul le ton du message variait. Faire déclarer une intention sans effet n’apprend rien à personne — la condition est désormais énoncée une fois, à titre d’avertissement, et la ligne est tracée quoi qu’on coche.
Comment le surplus se répartit-il sur les conteneurs ?
Sur le moins de sorties possible, et sans qu’aucune ne dépasse le débit du belt. Un surplus de 600 objets/min ne tient pas sur du Mk4, qui plafonne à 480 : il part donc sur deux sorties plutôt que sur un belt impossible.
La répartition remplit toujours le conteneur le moins chargé et n’en ouvre un nouveau qu’une fois le précédent plein, parce que deux conteneurs à demi remplis se vident plus facilement qu’un plein et un vide. Un cas mesuré — trois entrées de 300 objets/min vers deux cibles de 150, en Mk4 :
- total en entrée : 900 objets/min ;
- réclamé par les cibles : 2 × 150 = 300 objets/min ;
- surplus : 600 objets/min, répartis sur deux sorties à 250 et 350 objets/min — l’une comme l’autre sous le plafond de 480 ;
- coût : 6 splitters et 4 mergers, sans aucune boucle de retour.
En Mk6, le même problème n’a plus rien à répartir : les 600 objets/min tiennent sur un seul belt, et le plan retombe à 2 splitters et 2 mergers.
Et si une cible dépasse la capacité du belt ?
Aucune topologie n’y peut alors quoi que ce soit, et l’outil refuse au lieu de dessiner de l’inconstructible. Une cible est une machine qu’on a déclarée, et elle est alimentée par un belt : au-delà du débit du belt, ce n’est plus un problème de découpage mais un problème d’usine.
Le plancher de ce mode est le plus grand de la plus grosse entrée et de la plus grosse cible ; en dessous, aucun plan n’existe, quelle que soit l’astuce. Le solveur tente d’abord un tronc unique, puis une découpe entrée par entrée, puis un pré-découpage lorsque la boucle de retour déborde encore, et retient le premier agencement qui ne sature rien. Si aucun des trois ne passe, il annonce le plancher et le palier qui le franchit.
Questions fréquentes
Les entrées peuvent-elles avoir des débits différents ?
Oui, et elles n’ont pas non plus à être saturées. Trois entrées de 200, 100 et 60 objets/min vers deux cibles de 90 et 45 : c’est un problème ordinaire ici, résolu exactement sans qu’aucun belt dépasse les 270 objets/min d’un Mk3.
Qu’est-ce qu’un sink ?
Sur cette page, c’est la destination du surplus : le belt qui emporte tout ce que les cibles n’ont pas réclamé. En jeu, ce peut être une autre usine, un conteneur qu’on vide ou un AWESOME Sink — n’importe quoi qui continue d’accepter des objets, car un sink qui se remplit casse le round-robin en amont de lui.
Pourquoi mon plan est-il refusé ?
Pour l’une des deux raisons que le message nomme. Soit les cibles réclament plus que les entrées ne fournissent, et le manque est chiffré : 480 objets/min en entrée face à une cible de 500, il en manque 20. Soit aucune topologie ne garde tous les belts sous le débit de leur palier, et c’est alors le plancher qui est annoncé, avec le palier capable de le franchir.
Combien de bâtiments faut-il ?
Moins que l’arithmétique ne le laisse craindre, car l’arbre est élagué. Prélever 70 objets/min sur un belt Mk4 saturé à 480 revient à diviser par 7/48, et l’arbre entier demanderait 31 splitters et 23 mergers ; le plan élagué s’en tire avec 5 et 3. Il descend de 480 à 240, puis 120, puis 60, en versant au surplus chaque moitié inutile, et prélève 10 sur un dernier 60 divisé en trois : 60 + 10 = 70, tandis que 410 objets/min filent vers le sink.