Является ли zeromq правильным решением для однорангового видеочата?

Мне было интересно, верна ли моя идея zeromq? Я думал о написании приложения однорангового чата с использованием zeromq, но, как я читаю дальше, zeromq кажется более низким уровнем, чем то, что можно было бы использовать (сокеты tcp). Подходит ли zeromq для написания приложения для однорангового чата или этот вариант использования неприменим?


person Claire    schedule 06.01.2012    source источник


Ответы (2)


Во-первых, я бы не согласился с вашим утверждением, что zeromq более низкоуровневый, чем сокеты. AFAICT Zeromq представляет API, похожий на API сокетов. Однако он также может обрабатывать другие вещи, такие как отправка сообщений нескольким клиентам с одним и тем же вызовом отправки.

Во-вторых, ваш вопрос не очень ясен: что вы подразумеваете под хорошим: легко писать (так как вы имеете в виду низкоуровневый), надежный, достаточно эффективный и т. д.? Вы можете использовать что угодно, уровень сложности реализации конечно же будет разным.

Кроме того, вам, вероятно, следует использовать udp вместо tcp в приложении видеочата, поскольку более важно, чтобы данные поступали вовремя, чем все данные, но это совсем другая тема. Если вы можете использовать zeromq с udp (и вам придется изучить это), я не вижу причин, по которым вы не можете использовать его для видеочата.

Главный фактор, который необходимо учитывать, — это достаточно ли быстро вы можете отправлять данные между одноранговыми узлами, чтобы обеспечить приемлемое качество обслуживания: AFAIR максимальное значение RTT около 300 мс воспринимается как приемлемое для диалоговых служб.

Следующая ссылка относится к VOIP, но также должна применяться к требованиям видеочата:

Большинство вызывающих абонентов замечают двусторонние задержки, когда они превышают 250 мс, поэтому бюджет односторонней задержки обычно составляет 150 мс. 150 мс также указано в рекомендации ITU-T G.114 в качестве максимальной желаемой задержки в одном направлении для достижения высокого качества голоса. Помимо этой задержки туда и обратно, вызывающие абоненты начинают чувствовать себя неловко, поддерживая двусторонний разговор, и обычно заканчивают разговором друг с другом. При задержках в оба конца 500 мс и более телефонные звонки непрактичны, когда вы можете почти рассказать анекдот и рассмешить другого парня после того, как вы вышли из комнаты.

person Ralf    schedule 06.01.2012

Как указывает Ральф, ZeroMQ очень высокоуровневый, а не низкоуровневый. Кроме того, как правило, не рекомендуется использовать ZeroMQ для видео просто потому, что поддержка UDP является новой и еще не универсальной (см. этот ответ ). Как правило, ZeroMQ был построен на использовании сокетов TCP, и хотя архитектура PUB/SUB имитирует UDP, вы не получите реальной производительности UDP (что имеет решающее значение для видео), потому что проверка ошибок на сокетах TCP затрудняет получение задержки. достаточно низко, чтобы получить плавный видеопоток.

person bremen_matt    schedule 17.02.2017