No, ZeroMQ je trochu složitější na čtení jako socket
-"protistrana"
Proč?
Klasické socket
je volně dostupný zdroj.
ZeroMQ je poměrně složitá hierarchie nápadů a principů chování (lepší - distribuované chování), které pomáhají navrhovat chytré distribuované výpočetní systémy, aniž by se dotýkaly nízkoúrovňových (dobře abstrahovaných ZeroMQ) detailů, které řídí skutečný tok událostí v bouřích. drsným podmínkám jsou všechny distribuované výpočetní systémy otevřené (a musí se odpovídajícím způsobem vypořádat s nízkou úrovní, pokud mají být splněny abstrakce na vysoké úrovni „slíbené“ ZeroMQ, které mají být dodrženy a usnadnit mysli designérů soustředit se spíše na své/ její hlavní aplikační část, nikoli předělání kol (se všemi pokusy a omyly) na tahání za nitky na O/S zdrojích a protřepávání systémových služeb pro sběr jen několika málo visících druhů ovoce).
Z těchto důvodů raději rovnou zapomeňte, že ZeroMQ bude „něco jako- socket
"
Hierarchie ZeroMQ za méně než pět sekund
1:
ZeroMQ slibuje snadné opětovné použití několika triviálních archetypů škálovatelných formálních komunikačních vzorů nabízející konkrétní distribuované chování { PUB/SUB | PUSH/PULL | PAIR/PAIR | XPUB/XSUB | ... | REQ/REP }
.
2:
S výjimkou případu, kdy výhradně používáte pouze bez zařízení inproc://
transportní třída, ve všech ostatních případech potřebuje ZeroMQ jednu nebo více instancí laditelného "enginu " - Context( nIOthreads = N )
, N >= 1
.
3:
S tímto, libovolným ( budoucí zásuvka ) Přístupový bod mohl získat instanci a nést archetyp chování od samého okamžiku narození:
aSubscribeCHANNEL = aLocalCONTEXT.socket( zmq.SUB ) # this is NOT a <SOCKET>
# ^^^^^^__________________ even it was typed in
4:
Mít „Přístupový bod instance připravena „uvnitř“ místního „enginu “, lze uzamknout jeho materializaci ve vnější realitě pomocí jednoho nebo více (ano, více... WOW! To znamená více příchozích tahání za nitky do / píšťal vycházejících z jednoho „chování-uzlu“ přístupového bodu) volání jedné z těchto metod:
.bind(
<transport-class>://<a-class-specific-address>
)
nebo
.connect(
<transport-class>://<a-class-specific-address>
)
5:
Pouze tehdy, když .bind()
-Přístupový bod A připravený na RTO "byl navštíven “ prvním živým .connect()
-Přístupový bod B připravený na RTO, který má jakékoli párování shodného chování, se aktivuje archetyp zpráv/signalizace ZeroMQ (také jej pojmenuje zásuvka byl pravděpodobně použit z historických důvodů, aby se usnadnilo vysvětlení v dobách )
( PUB/PUB
se z pochopitelných důvodů nikdy nevejde, zatímco PUB/SUB
a mnoho dalších párů chování a archetypů se bude krásně shodovat a vytvoří vzájemně „kompatibilní“ chování, které se konečně uvede do života a zůstane tak )
Takže
jak udělám to samé se socketem Python ZeroMQ,
vzhledem k počítači, který má více adres?
Jednoduše použijte plně kvalifikovanou specifikaci ve výzvě
.bind(
"{ tcp | pgm | epgm }://<ip>:<port#>"
)
a máte hotovo.
Tak snadné.
Skvělé, že?
Mnoho dalších příjemných překvapení pod kapotou ladění výkonu, snížení latence a vyladění zabezpečení.