НольMQ
Разработчик(и) | iMatix |
---|---|
Стабильная версия | 4.3.5 [1] / 9 октября 2023 г |
Репозиторий | |
Написано в | С++ |
Платформа | Кросс-платформенный |
Тип | Очередь сообщений , платформа параллелизма |
Лицензия | МПЛ-2.0 [2] |
Веб-сайт | нулевой mq |
ZeroMQ (также пишется ØMQ , 0MQ или ZMQ ) — это библиотека асинхронного обмена сообщениями , предназначенная для использования в распределенных или параллельных приложениях. Он обеспечивает очередь сообщений , но в отличие от промежуточного программного обеспечения, ориентированного на сообщения , система ZeroMQ может работать без выделенного брокера сообщений ; ноль в названии означает нулевой брокер. [3] API библиотеки спроектирован так, чтобы напоминать сокеты Беркли .
ZeroMQ разработан большим сообществом участников, основанным iMatix, которому принадлежат доменное имя и товарные знаки. Для многих популярных языков программирования существуют сторонние привязки.
Технология
[ редактировать ]API ZeroMQ предоставляет сокеты (своего рода обобщение традиционных сокетов домена IP и Unix ), каждый из которых может представлять собой соединение «многие ко многим» между конечными точками . Работая с детализацией сообщений, они требуют использования шаблона обмена сообщениями и специально оптимизированы для такого типа шаблона.
Основные шаблоны ZeroMQ:
- Запрос-ответ
- Подключает набор клиентов к набору услуг. Это шаблон удаленного вызова процедур и распределения задач.
- Опубликовать–подписаться
- Подключает набор издателей к набору подписчиков. Это шаблон распределения данных.
- Двухтактный (трубопровод)
- Соединяет узлы в виде разветвления/входа, который может состоять из нескольких шагов и циклов. Это параллельный шаблон распределения и сбора задач.
- Эксклюзивная пара
- Соединяет две розетки в эксклюзивную пару. (Это расширенный низкоуровневый шаблон для конкретных случаев использования.)
Каждый шаблон определяет определенную топологию сети. Запрос-ответ определяет так называемую «служебную шину», публикация-подписка определяет «дерево распределения данных», а двухтактная процедура определяет «параллельный конвейер». Все шаблоны намеренно разработаны таким образом, чтобы их можно было бесконечно масштабировать и, следовательно, можно было использовать в масштабах Интернета. [4]
Любое сообщение через сокет рассматривается как непрозрачный блок данных. Доставка подписчику может автоматически фильтроваться по начальной строке большого двоичного объекта. Доступные способы передачи сообщений включают TCP , PGM (надежная многоадресная рассылка), межпроцессное взаимодействие ( IPC ) и межпотоковое взаимодействие (ITC).
Основная библиотека ZeroMQ работает очень хорошо благодаря своей внутренней модели потоков и может превосходить традиционные TCP-приложения с точки зрения пропускной способности за счет использования метода автоматической пакетной обработки сообщений. [5] [6]
ZeroMQ реализует ZMTP, протокол передачи сообщений ZeroMQ. [7] ZMTP определяет правила обратной совместимости, расширяемые механизмы безопасности, кадрирование команд и сообщений, метаданные соединения и другие функции транспортного уровня. Все большее число проектов реализует ZMTP напрямую в качестве альтернативы использованию полных реализаций ZeroMQ. [8]
История
[ редактировать ]Генеральный директор iMatix Питер Хинтенс зарегистрировал домен Zeromq.org в мае 2007 года и начал проект ZeroMQ вместе с Мартином Сустриком, который был его архитектором и ведущим разработчиком до декабря 2011 года.
30 марта 2010 года Хинтдженс объявил, что iMatix (первоначальный разработчик Advanced Message Queuing Protocol ) покинет рабочую группу AMQP и не планирует поддерживать AMQP/1.0 в пользу значительно более простого и быстрого ZeroMQ. [9] [10]
В 2011 году ЦЕРН изучал способы унификации решений промежуточного программного обеспечения, используемых для работы ускорителей ЦЕРН. В исследовании CERN сравнивались две реализации CORBA с открытым исходным кодом : Ice , Thrift , ZeroMQ, YAMI4, [11] RTI и Qpid (AMQP) и получил высшую оценку ZeroMQ, отчасти за его универсальность, включая легкую адаптируемость к LynxOS . [6]
В начале 2012 года двое первоначальных разработчиков создали форк ZeroMQ как Crossroads I/O. [12] [13] Мартин Сустрик запустил nanomsg, [14] переписанная основная библиотека ZeroMQ. [15]
В августе 2012 года Донмин Ю объявил о своем преобразовании ZeroMQ на чистую Java в JeroMQ. [16] Это вдохновило на создание полноценных портов ZeroMQ, таких как NetMQ для C#. [17] и zmq.rsдля Руста. [18]
В марте 2013 года Питер Хинтдженс объявил о новом проекте протокола проводного уровня ZMTP, добавляющем в ZeroMQ расширяемые механизмы безопасности. [19] Мартин Хертон реализовал механизм аутентификации и шифрования CurveZMQ. [20] вскоре после этого в основной библиотеке.
В 2016 году давний разработчик ZeroMQ Гаррет Д'Амор отделил Nanomsg для создания проекта NNG (Nanomsg Next Generation). [21]
Процесс разработки
[ редактировать ]Сообщество ZeroMQ в основном использует коллективный контракт на создание кода (C4). [22] в качестве контракта на разработку. C4 вдохновлен процессами Википедии и моделью GitHub + pull request . Основное внимание уделяется упрощению участия новых участников и уменьшению зависимости от старых участников.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Выпуск 4.3.5» . 9 октября 2023 г. Проверено 20 октября 2023 г.
- ^ «Лицензирование ØMQ» . Проверено 8 июня 2023 г.
- ^ «Начни» .
- ^ «Уровень масштабируемости попадает в стек Интернета» . Архивировано из оригинала 28 мая 2019 г. Проверено 4 сентября 2013 г.
- ^ «Почему ØMQ имеет более высокую пропускную способность, чем TCP, хотя он построен на основе TCP?» . Часто задаваемые вопросы по ZeroMQ . Проверено 8 июня 2013 г.
- ^ Перейти обратно: а б «Тенденции промежуточного программного обеспечения и лидеры рынка 2011» . Проверено 8 июня 2013 г.
- ^ «Протокол передачи сообщений ZeroMQ» . Проверено 8 июня 2013 г.
- ^ «Поиск на GitHub: ZMTP» . Гитхаб . Проверено 8 июня 2013 г.
- ^ «iMatix прекратит поддержку OpenAMQ к 2011 году» . список рассылки openamq-dev. Архивировано из оригинала 05 марта 2016 г. Проверено 5 сентября 2018 г.
- ^ «Что не так с AMQP (и как это исправить)» . Компания iMatix . Проверено 14 июля 2012 г.
- ^ «Инспирел ЯМИ4» . Проверено 14 июля 2012 г.
- ^ «ZeroMQ и Crossroads I/O: разветвление торговых марок» . LWN.net . Проверено 14 июля 2012 г.
- ^ «Перекресток ввода-вывода» . Проверено 14 июля 2012 г.
- ^ "наномсг" . Проверено 8 июня 2013 г.
- ^ «Почему я должен был [так в оригинале] писать ZeroMQ на C, а не на C++» .
- ^ «jeromq — Java Pojo ZeromQ» . Список рассылки Zeromq-dev. Архивировано из оригинала 31 июля 2013 года . Проверено 23 мая 2013 г.
- ^ «НетМК» . Гитхаб . Проверено 23 мая 2013 г.
- ^ "zmq.rs" . Гитхаб . Проверено 24 октября 2020 г.
- ^ «Защита ZeroMQ: проект протокола ZMTP v3.0» . Hintjens.com . Проверено 23 мая 2013 г.
- ^ Curvezmq.org
- ^ «ННГ: Наномсг-НГ» . nanomsg.org . Проверено 4 августа 2023 г.
- ^ «Коллективный кодекс строительного подряда (С4.1)» . RFC ZeroMQ . Проверено 23 мая 2013 г.
Внешние ссылки
[ редактировать ] в этой статье Использование внешних ссылок может не соответствовать политике и рекомендациям Википедии . ( январь 2017 г. ) |
- Официальный сайт
- Сообщество ØMQ на GitHub
- Мартин Сустрик, Мартин Лучина (20 января 2010 г.). 0MQ: Новый подход к обмену сообщениями – LWN.net
- ZeroMQ — это ответ (выступление на конференции PHP UK 2012)
- ZeroMQ: введение. Архивировано 8 июля 2010 г. на Wayback Machine.
- Почему ZeroMQ? (вступительное видео)
- ZeroMQ: современный и быстрый сетевой стек (обзор с примерами Ruby)
- ØMQ: Теоретический фундамент. Архивировано 30 июня 2020 г. в Wayback Machine.