3 votes

Vert.x y a-t-il une limite de Bus de l'événement en termes de mise à l'échelle

Essayer de comprendre les limites de EventBus dans le Vert.x.

Il y a une instance de Vert.x qui fonctionne en mode cluster, donc plusieurs Verticles s'exécutent sur plusieurs machines physiques. Disons que nous avons 2 machines avec 10 verticles chacune.

Donc, en chiffres : 1 instance de Vert.x en mode cluster 20 instances de Verticles (10 par machine) 2 machines, 1 Event Bus

1000 000 connexions par seconde arrivent à l'event bus, et sont renvoyées aux verticles.

Si 2 machines ne suffisent pas, je peux toujours obtenir 100 machines, mais :

D'après ce que je comprends, l'Event Bus (EB) est le point de congestion ici? Étant donné que l'EB est un "tube de communication" et parce qu'il est unique pour beaucoup, j'imagine qu'il commencera à collecter tout ce bruit de tous les événements qui lui parviennent (adresse -> service, pub-sub etc), en plus il opère entre les nœuds, cela ne va-t-il pas entraîner un surcoût de communication NET? Comment puis-je mettre l'EB à l'échelle? Devrais-je m'en préoccuper? (ou est-ce que le cluster Hazelcast devrait prendre soin de tout cela?)

Devrais-je envisager de créer N clusters avec 1 instance de Vert.x en mode cluster avec 10 verticles sur 100 machines?

Q : Pour poser une question simple, y a-t-il une limite à l'Event Bus en termes de mise à l'échelle et devrais-je envisager de créer une infrastructure avec N bus pour m'assurer que mon système est correctement dimensionné?

(je n'ai pas encore fait mes tests à ce sujet..)

5voto

tsegismont Points 3045

Lorsque vous utilisez l'EventBus clusterisé, deux choses se produisent :

  1. Vert.x crée des connexions TCP entre les nœuds enregistrés dans le cluster
  2. Le gestionnaire de cluster garde une trace des gestionnaires de messages EventBus (une multimappe faisant correspondre une adresse EventBus à des identifiants de nœuds)

Ensuite, si vous envoyez un message (point à point), Vert.x choisira un gestionnaire parmi les gestionnaires du gestionnaire de cluster et utilisera la connexion TCP pour l'envoyer au nœud distant.

Ou si vous publiez un message (publication/abonnement), Vert.x enverra le message à tous les nœuds possédant au moins un gestionnaire pour celui-ci (il revient au nœud récepteur de distribuer le message à tous les gestionnaires locaux).

Ainsi, il existe deux "limites" à la scalabilité de l'EventBus clusterisé : la taille de la multimappe (croissant avec le nombre d'adresses et de gestionnaires) et la bande passante du réseau.

Il est impossible de le déterminer sans test bien sûr, mais sur du matériel moderne et un réseau correct, vous devriez être en mesure de déployer un cluster de 100 nœuds en utilisant un nombre fixe d'adresses.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X