ZeroMQ

ZeroMQ
Deweloperzy iMatix
Wersja stabilna
4.3.4 / 17 stycznia 2021 r . ; 2 lata temu ( 17 stycznia 2021 )
Magazyn
Napisane w C++
Platforma Międzyplatformowe
Typ Kolejka komunikatów , struktura współbieżności
Licencja LGPLv3+ z wyjątkiem statycznego łączenia
Strona internetowa zeromq .org

ZeroMQ (pisane również ØMQ , 0MQ lub ZMQ ) to asynchroniczna biblioteka przesyłania wiadomości , przeznaczona do użytku w aplikacjach rozproszonych lub współbieżnych. Zapewnia kolejkę komunikatów , ale w przeciwieństwie do zorientowanego na komunikaty oprogramowania pośredniczącego , system ZeroMQ może działać bez dedykowanego brokera komunikatów ; zero w nazwie oznacza zero brokera. Interfejs API biblioteki jest zaprojektowany tak, aby przypominał gniazda Berkeley .

ZeroMQ jest rozwijany przez dużą społeczność współpracowników, założoną przez iMatix, która jest właścicielem nazwy domeny i znaków towarowych. Istnieją powiązania innych firm dla wielu popularnych języków programowania.

Technologia

API ZeroMQ udostępnia gniazda (rodzaj uogólnienia w stosunku do tradycyjnych gniazd IP i domen Unix ), z których każde może reprezentować połączenie wiele-do-wielu między punktami końcowymi . Działając z szczegółowością wiadomości, wymagają wzorca przesyłania komunikatów i są szczególnie zoptymalizowane pod kątem tego rodzaju wzorca.

Podstawowe wzorce ZeroMQ to:

Żądanie – odpowiedź
Łączy zestaw klientów z zestawem usług. Jest to zdalny wzorzec wywołania procedury i dystrybucji zadań.
Publikuj-subskrybuj
Łączy zbiór wydawców ze zbiorem subskrybentów. To jest wzorzec dystrybucji danych.
Push-pull (linia potokowa)
Łączy węzły we wzorze wachlarza na zewnątrz / na wejściu, który może mieć wiele kroków i pętli. Jest to równoległy wzorzec dystrybucji i zbierania zadań.
Ekskluzywna para
Łączy dwa gniazda w ekskluzywną parę. (Jest to zaawansowany wzorzec niskiego poziomu dla określonych przypadków użycia).

Każdy wzorzec definiuje konkretną topologię sieci. Żądanie-odpowiedź definiuje tak zwaną „szynę usług”, publikowanie-subskrypcja definiuje „drzewo dystrybucji danych”, a push-pull definiuje „potok równoległy”. Wszystkie wzorce są celowo zaprojektowane w taki sposób, aby były nieskończenie skalowalne, a tym samym użyteczne w skali Internetu.

Każda wiadomość przesyłana przez gniazdo jest traktowana jako nieprzezroczysta kropla danych. Dostarczanie do subskrybenta może być automatycznie filtrowane według wiodącego ciągu obiektu blob. Dostępne transporty komunikatów obejmują TCP , PGM (niezawodny multicast), komunikację międzyprocesową ( IPC ) oraz komunikację międzywątkową (ITC).

Podstawowa biblioteka ZeroMQ działa bardzo dobrze dzięki wewnętrznemu modelowi wątków i może przewyższyć konwencjonalne aplikacje TCP pod względem przepustowości dzięki wykorzystaniu techniki automatycznego grupowania komunikatów.

ZeroMQ implementuje ZMTP, protokół przesyłania komunikatów ZeroMQ. ZMTP definiuje zasady dotyczące wstecznej interoperacyjności, rozszerzalnych mechanizmów bezpieczeństwa, ramek poleceń i komunikatów, metadanych połączeń i innych funkcji na poziomie transportu. Coraz więcej projektów wdraża ZMTP bezpośrednio jako alternatywę dla korzystania z pełnych wdrożeń ZeroMQ.

Historia

Dyrektor generalny iMatix, Pieter Hintjens, zarejestrował domenę zeromq.org w maju 2007 roku i rozpoczął projekt ZeroMQ wraz z Martinem Sustrikiem, który był jego architektem i głównym programistą do grudnia 2011 roku.

30 marca 2010 r. Hintjens ogłosił, że iMatix (oryginalny projektant Advanced Message Queuing Protocol ) opuści grupę roboczą AMQP i nie planuje wspierać AMQP / 1.0 na rzecz znacznie prostszego i szybszego ZeroMQ.

W 2011 roku CERN badał sposoby ujednolicenia rozwiązań oprogramowania pośredniczącego używanych do obsługi akceleratorów CERN. W badaniu CERN porównano dwie implementacje open source CORBA , Ice , Thrift , ZeroMQ, YAMI4, RTI i Qpid (AMQP) i oceniono ZeroMQ najwyżej, częściowo ze względu na jego wszechstronność, w tym łatwą adaptację do LynxOS .

Na początku 2012 roku dwóch pierwotnych programistów stworzyło rozwidlenie ZeroMQ jako Crossroads I/O. Martin Sustrik rozpoczął nanomsg, przepisanie podstawowej biblioteki ZeroMQ.

W sierpniu 2012 roku Dongmin Yu ogłosił swoją czystą konwersję Java ZeroMQ, JeroMQ. To zainspirowało kolejne w pełni natywne porty ZeroMQ, takie jak NetMQ dla C# i zmq.rs dla Rusta.

W marcu 2013 r. Pieter Hintjens ogłosił nową wersję roboczą protokołu przewodowego ZMTP, wprowadzającego rozszerzalne mechanizmy bezpieczeństwa do ZeroMQ. Wkrótce potem Martin Hurton zaimplementował mechanizm uwierzytelniania i szyfrowania CurveZMQ w bibliotece podstawowej.

Proces rozwoju

Społeczność ZeroMQ najczęściej używa umowy o budowie kodu zbiorowego (C4) jako umowy deweloperskiej. C4 jest inspirowany Wikipedii i modelem fork + pull request GitHuba . Skupia się na ułatwieniu udziału nowych współpracowników i zmniejszeniu zależności od starszych współpracowników.

Zobacz też

Linki zewnętrzne