ZeroMQ - ZeroMQ

ZeroMQ
Deweloper (y) iMatix
Wersja stabilna
4.3.3 / 7 września 2020 r . ; 4 miesiące temu  ( 7 września 2020 )
Magazyn Edytuj to w Wikidata
Napisane w C ++
Platforma Wieloplatformowy
Rodzaj Kolejka komunikatów , struktura współbieżności
Licencja LGPLv3 + z wyjątkiem łączenia statycznego
Stronie internetowej zeromq .org

ZeroMQ (pisane także ØMQ , 0MQ lub ZMQ ) to asynchroniczna biblioteka wiadomości , przeznaczona do użytku w aplikacjach rozproszonych lub współbieżnych. Zapewnia kolejkę komunikatów , ale w przeciwieństwie do oprogramowania pośredniego zorientowanego na komunikaty, system ZeroMQ może działać bez dedykowanego brokera komunikatów . API biblioteki jest zaprojektowane tak, aby przypominało gniazda Berkeley .

ZeroMQ zostało stworzone przez dużą społeczność współpracowników, założoną przez iMatix, która posiada nazwę domeny i znaki towarowe. Istnieją powiązania innych firm dla wielu popularnych języków programowania.

Technologia

Interfejs API ZeroMQ zapewnia gniazda (rodzaj uogólnienia w stosunku do tradycyjnych gniazd IP i domen uniksowych ), z których każde może reprezentować połączenie wiele do wielu między punktami końcowymi . Działając z ziarnistością pod względem komunikatów, wymagają użycia wzorca komunikatów i są szczególnie zoptymalizowane dla tego rodzaju wzorca.

Podstawowe wzorce ZeroMQ to:

Żądanie – odpowiedź
Łączy zestaw klientów z zestawem usług. To jest zdalne wywołanie procedury i wzorzec dystrybucji zadań.
Publikuj - subskrybuj
Łączy zbiór wydawców z grupą subskrybentów. To jest wzorzec dystrybucji danych.
Push-pull (rurociąg)
Łączy węzły w układzie rozchodzenia się / wchodzenia, który może mieć wiele kroków i pętli. Jest to równoległa dystrybucja zadań i wzorzec zbierania.
Ekskluzywna para
Łączy dwa gniazda w ekskluzywnej parze. (Jest to zaawansowany wzorzec niskiego poziomu dla określonych przypadków użycia).

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

Każda wiadomość poprzez gniazdo jest traktowany jako nieprzezroczysta blob danych. Dostarczanie do subskrybenta może być automatycznie filtrowane według wiodącego ciągu znaków BLOB. Dostępne transporty komunikatów obejmują TCP , PGM (niezawodna multiemisja), komunikację między procesami ( IPC ) i komunikację między wątkami (ITC).

Biblioteka podstawowa ZeroMQ działa bardzo dobrze ze względu na swój wewnętrzny model wątków i może przewyższać konwencjonalne aplikacje TCP pod względem przepustowości, wykorzystując technikę automatycznego grupowania wiadomości.

ZeroMQ implementuje ZMTP, protokół przesyłania wiadomości ZeroMQ. ZMTP definiuje reguły wstecznej interoperacyjności, rozszerzalnych mechanizmów bezpieczeństwa, ramkowania poleceń i wiadomości, 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 deweloperem do grudnia 2011 roku.

30 marca 2010 r. Firma Hintjens ogłosiła, że ​​iMatix (oryginalny projektant zaawansowanego protokołu kolejkowania wiadomości ) opuści grupę roboczą AMQP i nie planuje obsługi AMQP / 1.0 na rzecz znacznie prostszego i szybszego ZeroMQ.

W 2011 roku CERN badał sposoby ujednolicenia rozwiązań oprogramowania pośredniego 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), uzyskując najwyższą ocenę ZeroMQ, częściowo ze względu na jej wszechstronność, w tym łatwą adaptację do LynxOS .

Na początku 2012 roku dwóch pierwotnych programistów rozwidliło ZeroMQ jako Crossroads I / O. Martin Sustrik uruchomił nanomsg, przepisaną wersję podstawowej biblioteki ZeroMQ.

W sierpniu 2012 roku Dongmin Yu ogłosił konwersję ZeroMQ, JeroMQ w czystej Javie. To zainspirowało dalsze w pełni natywne porty ZeroMQ, takie jak NetMQ dla C # i zmq.rs dla Rust.

W marcu 2013 roku Pieter Hintjens ogłosił nowy projekt protokołu przewodowego ZMTP, wprowadzający rozszerzalne mechanizmy bezpieczeństwa do ZeroMQ. Martin Hurton wkrótce potem wdrożył mechanizm uwierzytelniania i szyfrowania CurveZMQ w podstawowej bibliotece.

Proces rozwoju

Społeczność ZeroMQ korzysta głównie z umowy o konstrukcję zbiorowego kodu (C4) jako umowy deweloperskiej. C4 jest inspirowane procesami Wikipedii i modelem fork + pull request na GitHub . Koncentruje się na ułatwieniu udziału nowych współpracowników i zmniejszeniu zależności od starszych współpracowników.

Zobacz też

Bibliografia

Linki zewnętrzne