2017-07-12 1 views
1

J'ai une application qui a un modèle de communication tout-à-tout. Je pense qu'il est logique d'avoir un socket PULL et un socket PUSH sur chacun des N processus, et ont toutes les sockets PUSH se connecter à toutes les sockets PULL. Mais plutôt que de sélectionner le récepteur de manière circulaire, je veux envoyer à un récepteur spécifique de manière sélective, au cas par cas. Par exemple, si je veux envoyer un message de la prise PUSH de Process- i à la prise PULL de Process- j, ne savez-vous comment faire?Comment faire fonctionner ZeroMQ PUSH/PULL avec identité?

SUIVI 1:

Une solution que je peux penser est de créer une ROUTER prise sur chaque processus, et chaque douille ROUTER se connecter à toutes les ROUTER douilles des autres procédés (tout-à-tous connexion). Ça marchera?

SUIVI 2:

Une autre solution que je peux penser est d'utiliser à la place ROUTER et DEALER socket. Peut-être que je peux avoir chaque processus créer un socket DEALER pour se connecter au socket ROUTER de chacun des autres processus (plusieurs connexions tout-à-un). Est-ce une bonne solution?

Répondre

0

Si en effet un ami d'une topologie en étoile maillée entièrement (en interne), peut-être le PUB/SUB avec TOPIC-filtre peut fonctionner pour votre scénario suffisamment bien.

Tous SUB -s seront .connect() à PUB -s, que .bind(), inverse .bind()/.connect() -s sont également possibles. La version la plus récente effectue le filtrage TOPIC côté PUB, de sorte que, dans certaines dimensions raisonnables, le schéma doit suffire. .setsockopt() peaufiner est évident et nécessaire. Comme ni la latence, ni la cadence, ni la taille des messages n'ont été mentionnées, il est difficile de comparer les avantages et les inconvénients d'une topologie étoilée entièrement maillée à une approche de passage rotatif «doux» ou à une autre approche consommant peu de ressources.

(je suis encore en utilisant ZeroMQ 2.1.11 et aime le faire)

pouvez aussi aimer this new, custom-made scalable formal communication pattern design example - une approche intéressante hors de question pour Moteur de Martin SUSTRIK , si un besoin d'échelle au-delà de ~ 10k + agents.