2012-01-06 10 views
5

Mi chiedevo se la mia idea di zeromq è giusta? Stavo pensando di scrivere un'applicazione di chat peer-to-peer usando zeromq, ma man mano che lo rileggo, zeromq sembra essere più basso di quello che si vorrebbe usare (socket tcp). Zeromq è buono per scrivere app di chat peer-to-peer o questo caso d'uso non è applicabile?Zeromq è la soluzione giusta per la chat video peer-to-peer

risposta

11

In primo luogo, non sarei d'accordo con la tua affermazione che zeromq è più di livello inferiore ai socket. AFAICT zeromq presenta un'API simile all'API socket. Tuttavia può anche gestire altre cose, come l'invio di messaggi a più client con la stessa chiamata di invio.

In secondo luogo, la tua domanda non è molto chiara: cosa intendi per buona: Facile da scrivere (poiché ti riferisci a basso livello), affidabile, efficiente, ecc.? Puoi usare qualsiasi cosa tu voglia, il livello di complessità di implementazione sarà ovviamente diverso.

Inoltre, probabilmente si dovrebbe utilizzare UDP invece di TCP in un'applicazione di video chat, dato che è più importante che i dati arrivino in tempo utile rispetto che arriva tutti i dati, ma che è tutto un argomento diverso. Se puoi usare zeromq con udp (e dovrai fare ricerche su questo), non vedo perché non potresti usarlo per la chat video.

Il fattore principale da considerare è se è possibile inviare dati tra i peer abbastanza velocemente per fornire una QoS accettabile: AFAIR un RTT massimo di circa 300 ms è percepito come ok per i servizi di conversazione.

Di seguito link vale per VOIP, ma dovrebbe valere anche per le chat video reqirements:

La maggior parte dei chiamanti noti ritardi di andata e ritorno quando superano 250ms, in modo che il budget di latenza unidirezionale sarebbe tipicamente 150 ms. 150 mSec viene inoltre specificato nella raccomandazione ITU-T G.114 come massima latenza unidirezionale desiderata per ottenere una voce di alta qualità. Al di là della latenza di andata e ritorno, i chiamanti iniziano a sentirsi a disagio in una conversazione a doppio senso e di solito finiscono per parlare gli uni con gli altri. Con ritardi di andata e ritorno di 500 mSec e oltre, le telefonate sono poco pratiche, dove puoi quasi dire una battuta e far ridere l'altro dopo che hai lasciato la stanza.

+0

+1 per "i dati arrivano puntualmente". Stavo solo scherzando – aitchnyu

0

Come sottolinea Ralf, ZeroMQ è di livello molto alto, non di basso livello. Inoltre, in genere si sconsiglia di utilizzare ZeroMQ per i video semplicemente perché il supporto UDP è nuovo e non ancora universale (see this answer). Generalmente, ZeroMQ è stato costruito usando i socket TCP, e sebbene l'architettura PUB/SUB simuli UDP, non si otterranno prestazioni UDP reali (che è cruciale per il video) perché il controllo degli errori sui socket TCP rende difficile ottenere la latenza abbastanza basso da ottenere un flusso video uniforme.

Problemi correlati