J'ai plusieurs frontends à mon service écrit dans Node.js et les travailleurs écrits en Ruby. Maintenant, la question est de savoir comment faire communiquer ceux-ci? J'ai besoin de maintenir un pool dynamique de travailleurs pour gérer la charge (engendrer plus de travailleurs lorsque la charge augmente) et les messages sont assez gros ~ 2-3M parce que j'envoie des images aux travailleurs téléchargés par les utilisateurs via les interfaces Node.js. Parce que je veux une bonne mise à l'échelle j'ai pensé à une solution de file d'attente, mais je n'ai trouvé aucune solution existante (ou des guides mal compris) qui fourniront:Solution/Architecture: files d'attente ou autre chose?
- Mécanismes de repli. Les solutions que j'ai trouvées jusqu'ici ont un seul point de défaillance - le courtier de messages et il n'y a pas moyen de fournir des solutions de repli.
- Sérialisation. Ainsi, lorsque le courtier échoue, les tâches ne sont pas perdues.
- Possibilité de transmettre de gros messages.
- API facile pour Ruby et Node.js
- Une API pour suivre la taille de la file d'attente afin que je puisse réorganiser le pool de travailleurs.
- Préférablement léger.
Peut-être que mon approche est erronée? Peut-être que je ne devrais pas utiliser les files d'attente mais d'une autre manière? Ou y at-il une solution de mise en file d'attente qui correspond aux exigences ci-dessus?
Quand vous dites file d'attente pour vous voulez dire quelque chose dans le style de lapin MQ? – Adrian
J'ai vu MQ chez le lapin et ça semble convenir plus ou moins, mais je n'ai pas erlang et je ne l'ai pas dans des paquets si difficiles à déployer. De plus, d'après ce que j'ai lu, cela ajoute beaucoup de latence au cas où vous auriez besoin de transmettre de gros messages. – Daniel