제로엠큐

ZeroMQ
제로엠큐
개발자아이매틱스
안정적 해제
4.3.4[1] / 2021년 1월 17일; 14개월 전(2021년 1월 17일)
리포지토리
기록 위치C++
플랫폼크로스 플랫폼
유형메시지 대기열, 동시성 프레임워크
면허증정적 링크 예외가 있는 LGPLv3+
웹사이트zeromq.org

ZeroMQ(OWMQ, 0MQ 또는 ZMQ라고도 함)는 분산형 또는 동시형 애플리케이션에서 사용하는 것을 목적으로 하는 비동기식 메시징 라이브러리다.메시지 큐를 제공하지만 메시지 지향 미들웨어와 달리 ZeroMQ 시스템은 전용 메시지 브로커 없이 실행될 수 있으며, 이름의 0은 제로 브로커를 위한 것이다.[2]이 도서관의 API는 버클리 소켓과 비슷하게 설계되었다.

ZeroMQ는 도메인 이름과 상표를 보유한 iMatix가 설립한 대규모 기부자 커뮤니티에서 개발한다.많은 인기 있는 프로그래밍 언어에는 제3자 바인딩이 있다.

기술

ZeroMQ API는 소켓(기존 IPUnix 도메인 소켓에 대한 일반화의 일종)을 제공하며, 각 소켓은 엔드포인트 간의 다대다수 연결을 나타낼 수 있다.메시지로 세분화하여 작동하려면 메시징 패턴을 사용해야 하며, 특히 이러한 패턴에 최적화되어 있다.

기본 ZeroMQ 패턴은 다음과 같다.

요청-응답
클라이언트 집합을 서비스 집합에 연결원격 프로시저 호출 및 작업 배포 패턴 입니다.
게시-구독
게시자 집합을 구독자 집합에 연결.이것은 데이터 분포 패턴이다.
푸시-풀(파이프라인)
여러 스텝과 루프를 가질 수 있는 팬아웃/팬인 패턴으로 노드를 연결한다.이것은 병렬 작업 분배 및 수집 패턴이다.
배타적 쌍
두 개의 소켓은 배타적 쌍으로 연결한다.(특정 사용 사례에 대한 고급 로우 레벨 패턴)

각 패턴은 특정 네트워크 토폴로지를 정의한다.요청-응답은 이른바 '서비스 버스'를 정의하고, 게시-구독은 '데이터 배포 트리'를 정의하며, 푸시풀은 '병렬화된 파이프라인'을 정의한다.모든 패턴은 무한 확장 가능하고 따라서 인터넷 규모에서 사용할 수 있는 방식으로 의도적으로 설계된다.[3]

소켓을 통한 모든 메시지는 불투명한 데이터 덩어리로 취급된다.구독자에 대한 배달은 blob 리딩 문자열로 자동 필터링할 수 있다.사용 가능한 메시지 전송에는 TCP, PGM(신뢰할 수 있는 멀티캐스트), 프로세스 간 통신(IPC), 스레드 간 통신(ITC)이 포함된다.

ZeroMQ 코어 라이브러리는 내부 스레딩 모델 때문에 성능이 매우 뛰어나며, 자동 메시지 일괄 처리 기법을 활용하여 처리량 면에서 기존 TCP 애플리케이션을 능가할 수 있다.[4][5]

ZeroMQ는 ZeroMQ 메시지 전송 프로토콜인 ZMTP를 구현한다.[6]ZMTP는 후방 상호운용성, 확장 가능한 보안 메커니즘, 명령과 메시지 프레임, 연결 메타데이터 및 기타 전송 수준 기능에 대한 규칙을 정의한다.ZeroMQ 전체 구현의 대안으로 ZMTP를 직접 구현하는 프로젝트가 늘고 있다.[7]

역사

아이매틱스 CEO 피터 힌트젠스는 2007년 5월 zeromq.org 도메인을 등록하고 2011년 12월까지 건축가 겸 리드 개발자였던 마틴 서스트릭과 함께 제로MQ 프로젝트를 시작했다.

2010년 3월 30일, 힌트젠스는 iMatix(고급 메시지 프로토콜의 원래 설계자)가 AMQP 작업 그룹을 떠날 것이라고 발표했으며, 훨씬 단순하고 빠른 ZeroMQ를 위해 AMQP/1.0을 지원할 계획은 없었다.[8][9]

2011년 CERN은 CERN 가속기 작동에 사용되는 미들웨어 솔루션을 통합하는 방법을 연구하고 있었다.CERN 연구는 CORBA, Ice, Saleft, ZeroMQ, YAMI4,[10] RTI, Qfid(AMQP)의 두 가지 오픈 소스 구현을 비교했으며, LynxOS에 대한 손쉬운 적응성을 포함한 다용도 면에서 ZeroMQ가 가장 높은 점수를 받았다.[5]

2012년 초, 원래의 개발자 중 두 명이 ZeroMQ를 Crossroad I/O로 선택했다.[11][12]마틴 서스트릭은 ZeroMQ 핵심 도서관을 다시 쓴 나노섬즈를 시작했다.[13][14]

2012년 8월, 유동민은 제로MQ의 순수 자바 변환인 제로MQ를 발표했다.[15]이는 C#[16]용 NetMQ와 Rust용 zmq.rs과 같은 ZeroMQ의 완전한 기능을 갖춘 항구에 영감을 주었다.[17]

2013년 3월, 피터 힌트젠스는 ZMTP 유선 수준 프로토콜의 새로운 초안을 발표하여 ZeroMQ에 확장 가능한 보안 메커니즘을 도입하였다. 마틴 허튼은 그 직후 CurveZMQ 인증 및 암호화 메커니즘을[19] 핵심 라이브러리에 구현하였다.[18]

개발공정

ZeroMQ 커뮤니티는 주로 개발계약으로 C4([20]Collective Code Construction Contract)를 사용한다.C4는 위키백과 과정과 GitHub의 포크 + 풀 요청 모델에서 영감을 얻었다.신규 기고자의 참가를 간소화하고, 고령 기고자에 대한 의존도를 줄이는 데 초점을 맞춘다.

참고 항목

참조

  1. ^ "Release 4.3.4". 17 January 2021. Retrieved 2 February 2021.
  2. ^ https://zeromq.org/get-started/
  3. ^ 인터넷 스택을 강타한 확장성 계층
  4. ^ "How come ØMQ has higher throughput than TCP although it's built on top of TCP?". ZeroMQ FAQ. Retrieved 8 June 2013.
  5. ^ a b "Middleware Trends And Market Leaders 2011". Retrieved 8 June 2013.
  6. ^ "ZeroMQ Message Transfer Protocol". Retrieved 8 June 2013.
  7. ^ "GitHub Search: ZMTP". Retrieved 8 June 2013.
  8. ^ "iMatix will end OpenAMQ support by 2011". openamq-dev maillist. Archived from the original on 2016-03-05. Retrieved 5 September 2018.
  9. ^ "What is wrong with AMQP (and how to fix it)". iMatix Corporation. Retrieved 14 July 2012.
  10. ^ "Inspirel YAMI4". Retrieved 14 July 2012.
  11. ^ "ZeroMQ and Crossroads I/O: Forking over trademarks". LWN.net. Retrieved 14 July 2012.
  12. ^ "Crossroads I/O". Retrieved 14 July 2012.
  13. ^ "nanomsg". Retrieved 8 June 2013.
  14. ^ "Why should I [sic] have written ZeroMQ in C, not C++".
  15. ^ "jeromq - java pojo zeromq". zeromq-dev mailing list. Retrieved 23 May 2013.
  16. ^ "NetMQ". GitHub. Retrieved 23 May 2013.
  17. ^ "zmq.rs". GitHub. Retrieved 24 Oct 2020.
  18. ^ "Securing ZeroMQ: draft ZMTP v3.0 Protocol". Hintjens.com. Retrieved 23 May 2013.
  19. ^ curvezmq.org
  20. ^ "Collective Code Construction Contract (C4.1)". ZeroMQ RFCs. Retrieved 23 May 2013.

외부 링크