Как использовать ZeroMQ для прослушивания и анализа UDP-данных на конкретном порту?
Привет Дирборну / UoM,
Давайте сначаларазоблачить проблему, хорошо?
ZeroMQ не является самоизолирующим инструментом, он может и также говорит или слушает сокеты, отличные от ZeroMQ.
@ tadman былправильно и неправильно одновременно.
ZeroMQ не прослушивает пакеты UDP.// == True;
(по состоянию на 2018-Q2, API ~ 4.2.2)
Он прослушивает пакеты ZeroMQ. // == False;
Поскольку собственный API ZeroMQ ~ 4. +, ZeroMQ может и слушать, и разговаривать с сокетами, отличными от ZeroMQ, т. Е. Ваше желание может привести к работе ZeroMQ Context()
с простым сокетом.
Если новичок вZeroMQ распределенная система , разработанные для экосистемы, вы можете сначала краткое дисбигумацию прочитать в основные концептуальные различия в [ Иерархия ZeroMQ менее чем за пять секунд ] Раздел, чтобы лучше понять корни решаемой проблемы.
ZeroMQ имеет udp://
<transport-class>
,
можно использовать только для { ZMQ_RADIO | ZMQ_DISH }
Только архетипы
В то время как ZeroMQ имеет транспортный класс udp://
готовый к использованиюкак для одноадресных, так и для многоадресных адресов AccessPoint пока невозможно заставить Context()
создавать экземпляр такого источника данных для одноранговых одноранговых одноранговых устройств, отличных от ZeroMQ.
ZeroMQ может общаться с одноранговыми узлами, отличными от ZeroMQ,
, но чуть более tcp://
<transport-class>
одноранговые узлы без ZeroMQ могут подключатьсяиспользование простого носка, исправленного (по многим причинам архитектуры / дизайна API) внутри реализации ZeroMQ в ZeroMQ-совместимый масштабируемый формальный архетип с именем ZMQ_STREAM
).Это здорово и позволяет использовать гомогенные стратегии для обработки и этих типов взаимодействующих одноранговых узлов, однако существует просто необходимость использовать транспортный класс tcp://
, если это необходимо.
Как?
Учитывая, что ваш источник данных находится под вашим контролем, попытайтесь использовать его в экосистеме ZeroMQ, с которой он может быть удобно использован как любая другая ZeroMQ udp://
-кросс-соединенная AccessPoint.
Если конструктивные или «политические» ограничения мешают вам сделать это, принимающая сторона не может быть непосредственно ZeroMQ, поэтому решите создать шлюз протокола для конкретного приложения, опосредуя трафик не-ZeroMQ-udpк любой форме «расходных материалов» ZeroMQ, будь то ZMQ_STREAM
по сравнению с plain-tcp: (если решено сделать функционально минималистичный дизайн прокси или решить оснастить такой прокси напрямую любым другим, более умным архетипом ZeroMQ, для связина более высоком уровне комфорта с вашим основным сборщиком данных / процессором).
Если аудио предназначено дляayload и накапливающаяся задержка - это проблема, лучше также узнать больше о том, как легко можно настроить производительность основного движка - увеличьте количество IOthreads, грамотно отобразив ZMQ_AFFINITY
и ZMQ_PRIORITY
настройки - все, что может повлиять на целевую задержку + конверты производительности пропускной способности.
Последнее, но не менее важное требование 10 [Hz]
thisодна действительно хорошая часть, которая проверит свое понимание координации асинхронных процессов.Основной механизм ZeroMQ (Context () - instance (s)) работает асинхронно и нескоординированным образом.
Это означает, что не существует прямого способа избежать накопленной задержки или проверить какой-либо из параметров без посредников,управляемый на одноранговый узел, асинхронный с помощью задания буфера очереди сообщений, чтобы " travel " - "back
" - во времени, в режиме реального времени 10 [Hz]
зондирование.
Если это сработает в слабой / «мягкой» (не строгой R / T) координации системы времени (без ограничений стабильности системы управления / критической системы / системы жизнеобеспечения или аналогичной системы)ответственность, как это имеет сложный дизайн системы R / T), и поэтому допускает определенное количество джиттера, связанного с выполнением кода RTT
- / [транспортировка + (пере) обработка) - задержки умного дизайна .poll()
Неблокирующие проверки на основе и, возможно, некоторые быстрые политики предварительного опустошения очереди могут помочь вам перейти на приемлемо быстрое и мягкое поведение RT, чтобы сделать монитор 10 [Hz]
достаточно надежным.
Итак, действительно классные дни с ZeroMQ перед вами - удачи, сэр.Если вы еще не опоздали с Планом Проекта или крайним сроком, наступающим в понедельник, лучше всего прочитайте сказочную книгу Питера ХИНТЖЕНСА " Code Connected, Volume 1 ", где большинство жемчужин Zen-of-Ноль хорошо обсуждается и проверяется для распределенных систем конструкций.