A distributed queue in a single JSON file on object storage
Nous avons remplacé notre file d’attente interne des travaux d’indexation par un seul fichier dans le stockage d’objets, avec un broker sans état garantissant une exécution FIFO et des livraisons au moins une fois. La solution la plus simple fonctionnait étonnamment bien pour jusqu’à une requête par seconde et bénéficiait des propriétés du stockage d’objets, mais elle ne suffisait pas pour des charges plus élevées. Pour augmenter le débit, nous avons introduit queue.json avec group commit, tamponnant les demandes en mémoire et les flushant après une écriture CAS. Puis un broker sans état a coordonné les group commits pour tous les clients, éliminant les contensions et permettant à des centaines ou des milliers de clients de fonctionner sans blocage. Enfin, la solution haute disponibilité écrit l’adresse du broker dans queue.json et utilise des heartbeats pour réattribuer les tâches en cas de panne, offrant une file d’attente fiable, scalable et à livraison au moins une fois.