ZeroMQ - ZeroMQ
Deweloper (y) | iMatix |
---|---|
Wersja stabilna | 4.3.3 / 7 września 2020 r .
|
Magazyn | |
Napisane w | C ++ |
Platforma | Wieloplatformowy |
Rodzaj | Kolejka komunikatów , struktura współbieżności |
Licencja | LGPLv3 + z wyjątkiem łączenia statycznego |
Stronie internetowej | zeromq |
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
- Oficjalna strona internetowa
- Społeczność ØMQ w serwisie GitHub
- Martin Sustrik, Martin Lucina (20 stycznia 2010). 0MQ: nowe podejście do przesyłania wiadomości - LWN.net
- ZeroMQ is the Answer (wykład na konferencji PHP UK 2012)
- ZeroMQ wprowadzenie
- Dlaczego ZeroMQ? (wideo wprowadzające)
- ZeroMQ: Modern & Fast Networking Stack (przegląd z przykładami Rubiego)
- ØMQ: Podstawa teoretyczna