La differenza è che una presa PUB
invia lo stesso messaggio a tutti abbonati, mentre PUSH
fa un round-robin tra tutti i suoi collegati PULL
prese.
Nel tuo esempio, se invii solo un singolo messaggio dalla radice, tutti gli utenti lo riceveranno (salvo gli abbonati lenti, ecc.) Ma solo 1 lavoratore.
Il modello pub/sub viene utilizzato per la distribuzione ampia dei messaggi in base agli argomenti. Il modello push/pull è davvero un meccanismo di pipeline. Il tuo esempio push/pull sembra tentare di eseguire il bilanciamento del carico, il che va bene, ma req/rep potrebbe essere più adatto a questo a causa di altri problemi.
Sembra che i "problemi" qui sono descritti nella stessa parte del 0MQ guidare avete ottenuto l'immagine da: push/pull ventilator example
Vorrei anche conoscere la differenza in termini di messaggi persi ... vale a dire ciò che accadrebbe se il server PUB o PUSH un messaggio e il client [1] perdesse connessione e riconnettersi [2] il client fosse collegato tutto il tempo ma il client era occupato a fare lavoro e non era in .recv() – Bhuvan
'SUB' e' PULL' socket hanno in comune la proprietà che consumano dai messaggi disponibili anche quando il codice client non sta facendo un 'recv', quindi nel tuo esempio, il client [2] otterrebbe i messaggi in entrambi i casi, e il client [1] inizierà a ricevere nuovi messaggi quando si ricollega. È importante sottolineare che nessuno dei due tipi di socket è "indirizzato" a un particolare client. – SteveLove
dove stai ottenendo questa informazione .... colpisci e prova con zeroMQ o hai trovato qualche risorsa interessante? – Bhuvan