ØMQ

ØMQ
Тип Черга повідомлень, фреймворк багатопоточності
Розробник iMatix
Стабільний випуск 4.1.3 (17 серпня, 2015; 8 років тому (2015-08-17))
Платформа Кросплатформна
Мова програмування C++
Ліцензія LGPL із винятком[1]
Репозиторій github.com/zeromq/libzmq
Вебсайт www.zeromq.org

ØMQ (також ZeroMQ, ZMQ, 0MQ) — високопродуктивна асинхронна бібліотека обміну повідомленнями, спрямована на використання у розподілених та паралельних застосунках. Бібліотека реалізує чергу повідомлень, яка, на відміну від MOM, може функціонувати без виокремленого брокера повідомлень. Програмний інтерфейс бібліотеки подібний до сокетів Берклі.

ØMQ створений великою спільнотою розробників, заснованої iMatix, якій належить доменне ім'я та торгові марки. ØMQ написаний на мові програмування C++ та може використовуватися із багатьох інших мов програмування через сторонні прив'язки.

Історія[ред. | ред. код]

Виконавчий директор iMatix Пітер Хінт'єнс (Pieter Hintjens) зареєстрував домен zeromq.org у травні 2007 року та розпочав проект ØMQ разом із Мартіном Сустріком (Martin Sustrik), який був архітектором та головним розробником проекту до грудня 2011 року.

У березні 2010 року Хінт'єнс оголосив, що iMatix (початковий розробник протоколу AMQP) полишить робочу групу AMQP і не підтримуватиме AMQP/1.0, а сконцентрується натомість на значно простішій та швидшій технології ØMQ.[2][3]

У 2011 році CERN розглядав шляхи стандартизації підпрограмного забезпечення, яке використовувалося для управління прискорювачами частинок. Дослідження CERN порівняло дві відкриті реалізації стандарту CORBA, Ice, Apache Thrift, ØMQ, YAMI4,[4] RTI та Apache Qpid, і дало найвищу оцінку ØMQ, зокрема через її гнучкість та легку адаптованість для LynxOS.[5]

На початку 2012 року два з початкових розробників ØMQ — Мартін Сустрік та Мартін Люціна (Martin Lucina) — створили власний форк проекту під назвою Crossroads I/O.[6][7] Того ж року Мартін Сустрік розпочав роботу над власною бібліотекою nanomsg,[8] що являє собою повністю переписаний код ядра ØMQ на мові програмування C.[9]

У серпні 2012 року Донмін Ю (Dongmin Yu) оголосив про створення ним JeroMQ — перекладу коду ØMQ на мову програмування Java.[10] Продуктивність JeroMQ, станом на 2016 рік, тримається на рівні з ØMQ (в межах ±20%).[11]

Згодом були створені інші переклади оригінального коду на інші мови програмування, зокрема NetMQ для C#.[12]

У березні 2013 року Пітер Хінт'єнс оголосив новий проект протоколу «дротового рівня» ZMTP, що додав розширювані механізми безпеки до ØMQ.[13] Незабаром по тому Мартін Гуртон реалізував механізм аутентифікації та шифрування CurveZMQ[14] у ядрі ØMQ.

Процес розробки[ред. | ред. код]

Спільнота розробників ØMQ переважно використовує так званий «Контракт конструювання колективного коду» (К4; англ. Collective Code Construction Contract, C4)[15] як відкритий контракт розробки. «К4» натхнений процесами Вікіпедії та моделлю розробки GitHub (fork + pull). Ця схема спрямована на спрощення долучення нових дописувачів коду та зменшення залежності від старіших розробників.

Приклади застосування[ред. | ред. код]

Інтерфейс та сокети ZeroMQ отримали поширення в біткойн-транзакціях для реалізації технології блокчейну[16].

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. ØMQ Licensing. Архів оригіналу за 2 лютого 2016. Процитовано 29 січня 2016.
  2. iMatix will end OpenAMQ support by 2011. openamq-dev maillist. Архів оригіналу за 10.10.2012. Процитовано 14.07.2012.
  3. What is wrong with AMQP (and how to fix it). iMatix Corporation. Архів оригіналу за 17.07.2012. Процитовано 14.07.2012.
  4. Inspirel YAMI4. Архів оригіналу за 8 серпня 2020. Процитовано 14.07.2012.
  5. Middleware Trends And Market Leaders 2011. Архів оригіналу за 3 листопада 2020. Процитовано 8.06.2013.
  6. ZeroMQ and Crossroads I/O: Forking over trademarks. LWN.net. Архів оригіналу за 5 березня 2022. Процитовано 14.07.2012.
  7. Crossroads I/O. Архів оригіналу за 13.07.2012. Процитовано 14.07.2012.
  8. nanomsg. Архів оригіналу за 18 липня 2020. Процитовано 8.06.2013.
  9. Why should I [sic] have written ZeroMQ in C, not C++. Архів оригіналу за 4 лютого 2016. Процитовано 29 січня 2016.
  10. jeromq - java pojo zeromq. zeromq-dev mailing list. Архів оригіналу за 31.07.2013. Процитовано 23.05.2013.
  11. Performance – zeromq/jeromq – GitHub [Архівовано 14 вересня 2020 у Wayback Machine.] (англ.)
  12. NetMQ. GitHub. Архів оригіналу за 18 вересня 2021. Процитовано 28 січня 2016.
  13. Securing ZeroMQ: draft ZMTP v3.0 Protocol. Hintjens.com. Архів оригіналу за 23 лютого 2022. Процитовано 23.05.2013.
  14. curvezmq.org. Архів оригіналу за 20 серпня 2013. Процитовано 16 травня 2022.
  15. Collective Code Construction Contract (C4.1). ZeroMQ RFCs. Архів оригіналу за 22 листопада 2019. Процитовано 23.05.2013.
  16. Как следить за транзакциями биткойнов через блокчейн через nodejs?. https://answacode.com/ (рос.). Архів оригіналу за 4 грудня 2021. Процитовано 24.09.2021.

[1]

Посилання[ред. | ред. код]

  1. а б Помилка цитування: Неправильний виклик тегу <ref>: для виносок під назвою :0 не вказано текст