GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kontrolliert man die Quell-IP-Adresse eines ZeroMQ-Pakets auf einem Rechner mit mehreren IPs?

Nun, ZeroMQ ist etwas schwierig als socket zu lesen -"Gegenpartei"

Warum?

Klassisches socket ist eine frei nutzbare Ressource.

ZeroMQ ist eine ziemlich komplexe Hierarchie von Ideen und Verhaltensprinzipien ( besser verteilte Verhaltensweisen ), die beim Entwurf intelligenter verteilter Computersysteme helfen, ohne die Details auf niedriger Ebene ( ZeroMQ gut abstrahiert ) zu berühren, die den tatsächlichen Ablauf von Ereignissen in den Stürmen steuern rauen Bedingungen sind alle verteilten Computersysteme offen gegenüber ( und müssen entsprechend auf niedriger Ebene damit umgehen, wenn die von ZeroMQ "versprochenen" High-Level-Abstraktionen erfüllt werden sollen und den Geist der Designer erleichtern sollen, sich eher auf seine/ihre/ ihr Kernanwendungsteil, nicht das Neugestalten von Rädern (mit allen Versuchen und Irrtümern), das Ziehen von Fäden an O/S-Ressourcen und das Schütteln von Systemdiensten zum Sammeln von nur ein paar niedrig hängenden Arten von Früchten).

Aus diesen Gründen vergiss ZeroMQ besser gleich, "sowas- zu sein socket "

ZeroMQ-Hierarchie in weniger als fünf Sekunden

1:
ZeroMQ verspricht eine einfache Wiederverwendung einiger trivialer Archetypen von skalierbaren formalen Kommunikationsmustern ein bestimmtes verteiltes Verhalten anbieten { PUB/SUB | PUSH/PULL | PAIR/PAIR | XPUB/XSUB | ... | REQ/REP } .

2:
Außer in dem Fall, dass ausschließlich nur ein gerätloses verwendet wird inproc:// Transportklasse, in allen anderen Fällen benötigt ZeroMQ eine oder mehrere Instanzen einer abstimmbaren "Engine " - ein Context( nIOthreads = N ) , N >= 1 .

3:
Mit diesem, jedem (zukünftigen socket ) Zugangspunkt könnte instanziiert werden und seit dem Moment der Geburt einen Verhaltensarchetyp tragen:

aSubscribeCHANNEL = aLocalCONTEXT.socket( zmq.SUB )      # this is NOT a <SOCKET>
#                                 ^^^^^^__________________ even it was typed in

4:
Mit einem "Zugriffspunkt " Instanz bereit "innerhalb" der lokalen "Engine ", man kann seine Materialisierung in der externen Realität einschließen, indem man einen oder mehrere verwendet ( ja, mehr ... WOW! Das heißt, mehr eingehende Fäden ziehen / Pfeifen aus einem einzigen Access Point "Verhaltensknoten") Aufrufe einer dieser Methoden:
.bind( <transport-class>://<a-class-specific-address> )
oder
.connect( <transport-class>://<a-class-specific-address> )

5:
Nur wenn ein .bind() -RTO-fähiger Access Point A "wird besucht " von einem ersten live .connect() - RTO-fähiger Access Point B, der über eine passende Verhaltenspaarung verfügt, der ZeroMQ-Nachrichten-/Signalisierungs-Archetyp wird live geschaltet (auch als Socket bezeichnet). wurde wahrscheinlich aus historischen Gründen verwendet, um eine Erklärung in Zeiten zu erleichtern )

( PUB/PUB wird aus offensichtlichen Gründen nie passen, wohingegen PUB/SUB und viele andere Verhaltens-Archetyp-Paare werden und werden wunderbar zusammenpassen und die gegenseitig "kompatiblen" Verhaltensweisen bilden, die schließlich live gehen und bleiben werden )

Also,
wie mache ich dasselbe mit einem Python ZeroMQ-Socket,
einer Maschine gegeben, die mehrere Adressen hat?

Verwenden Sie einfach die vollqualifizierte Spezifikation in einem Anruf an
.bind( "{ tcp | pgm | epgm }://<ip>:<port#>" ) Methode und du bist fertig.

So einfach.

Cool, oder?

Viele weitere angenehme Überraschungen unter der Haube von Leistungsoptimierung, Latenzkorrektur und Sicherheitsoptimierung.


Linux
  1. So stellen Sie die IP-Adresse von C in Linux ein

  2. Wie kann ich mehrere Tor-Prozesse gleichzeitig mit unterschiedlichen Exit-IPs ausführen?

  3. Wie kann ich der ssh-Konfigurationsdatei eine IPv6-Adresse mit einer Bereichs-ID hinzufügen?

  4. Wie behält Linux die Kontrolle über die CPU auf einem Single-Core-Rechner?

  5. mehrere physische Schnittstellen mit IPs im selben Subnetz

So installieren Sie vyOS RouterOS mit KVM

So finden Sie die IP-Adresse einer virtuellen KVM-Maschine

So finden Sie Dateien mit dem fd-Befehl in Linux

So hosten Sie mehrere WordPress-Sites auf demselben Server mit Docker

So funktioniert die Versionskontrolle mit Git auf der Kommandozeile

So holen Sie mit Ansible mehrere Dateien vom Remote-Computer auf den lokalen Computer