Разница между ZeroMQ асинхронных HTTP-запросов и сообщений? - PullRequest
0 голосов
/ 21 января 2020

Чем использование асинхронных HTTP-запросов отличается от использования сообщений при отправке данных в ZeroMQ?

1 Ответ

0 голосов
/ 06 февраля 2020

HTTP-запрос - это просто использование гипертекстового транспортного протокола, используемого по IP между двумя компьютерами, клиентом и сервером. Его можно использовать для перемещения данных в любом направлении. Нет особых ограничений относительно того, какими могут быть эти данные. Асинхронный запрос - это просто тот, в котором запрашивающая сторона не утруждает себя ожиданием ответа, сделавшего запрос; он будет использовать некоторый механизм для последующего сближения с запросом, когда бы это ни происходило.

Отправка сообщения через ZeroMQ может быть несколько похожа, особенно шаблон REQ / REP (запрос, ответ). Подобно http-запросу, запрашивающая сторона отправит какое-то сообщение, а ответчик ответит некоторым образом и строго в соответствии с этим шаблоном.

ZeroMQ использует собственный протокол zmtp для перемещения сообщений. Опять же, ничто не ограничивает данные в сообщении. ZeroMQ по своей сути асинхронен - ​​он реализует модель программирования Actor (хотя я заметил, что способ, которым некоторые реализации в некоторых языках ослабили простоту ZeroMQ, заключался в том, что он соответствовал собственному способу языка быть асинхронным, а не использовать функцию опроса, предоставляемую ZeroMQ).

Однако ZeroMQ создает намного больше шаблонов распределения данных, чем req / rep, поверх zmtp, например pub / sub, дилер / маршрутизатор, которому http просто не имеет эквивалента. Дальнейшие различия заключаются в том, что ZeroMQ может использовать IP, обмен данными между процессами или транспорт в памяти; это делает его очень подходящим как для использования в приложениях, так и для распределенных приложений между машинами. Я полагаю, что с ip c можно связаться и с веб-сервером, но я никогда не слышал, чтобы кто-нибудь мешал этому. Ожидается, что Http будет использоваться через определенные c порты (например, порт 80), тогда как ZMQ используется на любых портах, которые хочет разработчик (подчиняясь нормальным правилам распределения портов, если они хотят тихой жизни).

...