2012-01-06 5 views
5

Me preguntaba si mi idea de zeromq es correcta? Estaba pensando en escribir una aplicación de chat de igual a igual usando zeromq, pero a medida que leo más adentro, zeromq parece tener un nivel más bajo que el que se usaría (sockets tcp). ¿Es bueno zeromq para escribir la aplicación de chat de igual a igual o este caso de uso no es aplicable?¿Es zeromq la solución adecuada para el video chat de igual a igual

Respuesta

11

En primer lugar, estoy de acuerdo con su declaración de que es zeromq más bajo nivel de sockets. AFAICT zeromq presenta una API que es similar a la API de socket. Sin embargo, también puede manejar otras cosas como enviar mensajes a múltiples clientes con la misma llamada de envío.

En segundo lugar, su pregunta no es muy clara: ¿qué es lo que quiere decir con buena : Fácil de escribir (ya que se refieren a bajo nivel), fiable, eficiente suficiente, etc? Puede usar cualquier cosa que desee, el nivel de complejidad de implementación diferirá, por supuesto.

Además, probablemente debería utilizar UDP en lugar de TCP en una aplicación de chat de vídeo, ya que es más importante que los datos llegan oportunamente que llega todos los datos, pero eso es un tema totalmente diferente. Si puedes usar zeromq con udp (y tendrás que investigar eso), no veo ninguna razón por la cual no puedas usarlo para video chat.

El factor principal que debe tener en cuenta es si puede enviar datos entre los pares lo suficientemente rápido como para proporcionar una QoS aceptable: AFAIR un RTT máximo de alrededor de 300ms se considera aceptable para servicios de conversación.

A continuación link se aplica a VOIP sino también debe aplicarse a reqirements de chat de vídeo:

La mayoría de las personas que llaman cuenta los retrasos de ida y vuelta cuando exceden 250 ms, por lo que el presupuesto de latencia unidireccional sería típicamente 150 ms. 150 mSec también se especifica en la recomendación ITU-T G.114 como la máxima latencia unidireccional deseada para lograr voz de alta calidad. Más allá de la latencia de ida y vuelta, los llamantes comienzan a sentirse incómodos manteniendo una conversación bidireccional y generalmente terminan hablando el uno sobre el otro. Con 500 mSec de retardos de ida y vuelta y más, las llamadas telefónicas son poco prácticas, donde casi se puede contar una broma y hacer reír al otro tipo después de que haya salido de la habitación.

+0

+1 para "los datos llegan de forma oportuna". Es una broma – aitchnyu

0

Como señala Ralf, ZeroMQ es de muy alto nivel, no de bajo nivel. Además, generalmente se desaconsejaría usar ZeroMQ para video simplemente porque el soporte UDP es nuevo y aún no es universal (see this answer). En general, ZeroMQ se construyó utilizando sockets TCP, y aunque la arquitectura PUB/SUB imita a UDP, no obtendrás un rendimiento UDP real (que es crucial para el video) porque la comprobación de errores en sockets TCP hace que sea difícil obtener la latencia lo suficientemente bajo como para obtener una transmisión de video sin problemas.