맨위로가기

ZeroMQ

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

ZeroMQ는 인터넷 소켓 및 유닉스 도메인 소켓을 일반화한 소켓을 제공하는 메시지 라이브러리이다. 메시지 단위로 작동하며 요청-응답, 게시-구독, 푸시-풀, 전용 쌍의 네 가지 기본 메시징 패턴을 지원한다. ZeroMQ는 내부 스레딩 모델과 메시지 일괄 처리 기술을 통해 높은 성능을 제공하며, ZMTP(ZeroMQ 메시지 전송 프로토콜)를 구현한다. 2007년 시작되어 여러 포크 및 파생 프로젝트가 존재하며, 집단 코드 구성 계약(C4)을 개발 계약으로 사용한다.

더 읽어볼만한 페이지

  • 메시지 지향 미들웨어 - 마이크로소프트 비즈토크 서버
    마이크로소프트 비즈토크 서버는 다양한 시스템 통합 및 비즈니스 프로세스 자동화를 지원하는 서버 소프트웨어로, 여러 버전이 출시되었으며 어댑터, 가속기 등의 기능을 제공하고 대한민국 여러 산업 분야에서 활용되었으나 클라우드 기반 솔루션의 등장으로 입지가 변화하고 있다.
  • 메시지 지향 미들웨어 - 아파치 카프카
    아파치 카프카는 제이 크렙스 등이 개발하고 링크드인에서 오픈 소스로 공개한 분산 스트리밍 플랫폼으로, 대량의 실시간 데이터 피드를 안정적으로 처리하도록 설계되었으며, 다양한 API를 통해 데이터 스트림을 게시, 구독, 처리, 관리할 수 있어 여러 기업에서 활용된다.
  • 프로세스 간 통신 - Ajax
    Ajax는 웹 페이지 전체를 새로고침하지 않고 비동기적으로 서버와 통신하여 웹 애플리케이션의 일부를 업데이트하는 웹 개발 기술로, XMLHttpRequest 객체의 등장으로 가능해졌으며 HTML, CSS, DOM, JavaScript, JSON 등의 기술을 통합하여 동적인 사용자 인터페이스를 구현한다.
  • 프로세스 간 통신 - D-Bus
    D-Bus는 2002년에 시작된 프로세스 간 통신 시스템으로, 시스템 버스와 세션 버스를 통해 정보 공유, 모듈성, 권한 격리를 제공하며, 일대일 요청-응답 및 발행/구독 통신 방식을 지원한다.
  • 자유 시스템 소프트웨어 - 리눅스 커널
    리눅스 커널은 1991년 리누스 토르발스가 개발을 시작한 UNIX에서 영감을 받은 운영 체제 커널로, GPLv2 라이선스를 채택하여 자유로운 사용과 배포를 허용하며 다양한 하드웨어 아키텍처를 지원하고 모듈형 구조를 통해 장치 드라이버 추가가 가능하다.
  • 자유 시스템 소프트웨어 - 클론질라
    클론질라는 디스크 복제 및 배포를 위한 오픈 소스 소프트웨어로, 파티션 및 디스크 복제, 이미지 생성, 복원 기능을 제공하며 다양한 파일 시스템을 지원한다.
ZeroMQ - [IT 관련 정보]에 관한 문서
개요
개발자iMatix
라이선스MPL-2.0
웹사이트ZeroMQ 공식 웹사이트
상세 정보
장르메시지 큐, 동시성 프레임워크
프로그래밍 언어C++
플랫폼크로스 플랫폼

2. 기술

ZeroMQ API는 전통적인 인터넷 소켓 및 유닉스 도메인 소켓의 일반화된 형태인 '소켓'을 제공하며, 각 소켓은 통신 종단점 간의 다대다 연결을 나타낼 수 있다. 메시지 단위로 작동하며, 메시징 패턴을 사용해야 한다.

2. 1. 메시징 패턴

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

  • '''요청-응답'''
  • : 클라이언트 집합을 서비스 집합에 연결한다. 이는 원격 프로시저 호출 및 작업 분배 패턴이다.
  • '''게시-구독 패턴'''
  • : 게시자 집합을 구독자 집합에 연결한다. 이는 데이터 분배 패턴이다.
  • '''푸시-풀 (파이프라인)'''
  • : 여러 단계와 루프를 가질 수 있는 팬아웃/팬인 패턴으로 노드를 연결한다. 이는 병렬 컴퓨팅 작업 분배 및 수집 패턴이다.
  • '''전용 쌍'''
  • : 두 개의 소켓을 전용 쌍으로 연결한다. (특정 사용 사례를 위한 고급 저수준 패턴이다.)


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

2. 2. 메시지 전송

ZeroMQ에서 소켓을 통한 모든 메시지는 불투명한 블롭 스토리지 데이터로 처리된다. 구독자에 대한 전송은 블롭 선두 문자열에 의해 자동으로 필터링될 수 있다. 사용 가능한 메시지 전송 수단에는 TCP, PGM (신뢰성 있는 멀티캐스트), IPC, 스레드 간 통신(ITC)이 포함된다.[3]

2. 3. 성능

ZeroMQ 코어 라이브러리는 내부 스레딩 모델과 자동 메시지 일괄 처리 기술을 활용하여 성능이 매우 뛰어나다. 이러한 기술 덕분에 처리량 측면에서 기존 TCP 애플리케이션보다 더 나은 성능을 낼 수 있다.[4][5]

2. 4. ZMTP

ZeroMQ는 ZMTP (ZeroMQ 메시지 전송 프로토콜)를 구현한다.[6] ZMTP는 하위 호환성, 확장 가능한 보안 메커니즘, 명령 및 메시지 프레이밍, 연결 메타데이터 및 기타 전송 수준 기능에 대한 규칙을 정의한다. 점점 더 많은 프로젝트가 전체 ZeroMQ 구현을 사용하는 대신 ZMTP를 직접 구현하고 있다.[7]

3. 역사

피터 힌트옌스 iMatix CEO는 2007년 5월에 zeromq.org 도메인을 등록했으며, 마틴 수스트릭과 함께 ZeroMQ 프로젝트를 시작했다. 마틴 수스트릭은 2011년 12월까지 설계자이자 수석 개발자였다.

2010년 3월 30일, 힌트옌스는 AMQP의 원 설계자인 iMatix가 AMQP 워킹 그룹에서 탈퇴할 것이며, 훨씬 더 단순하고 빠른 ZeroMQ를 선호하여 AMQP/1.0을 지원할 계획이 없다고 발표했다.[8][9]

2011년, CERN은 CERN 가속기 운영에 사용되는 미들웨어 솔루션을 통합하는 방법을 연구했다. CERN 연구에서는 CORBA, Ice, Thrift, ZeroMQ, YAMI4,[10] RTI, Qpid (AMQP)의 두 가지 오픈 소스 구현을 비교했으며, ZeroMQ가 다재다능함(특히 LynxOS에 쉽게 적응할 수 있다는 점 포함)으로 인해 최고 점수를 받았다.[5]

2012년 초, 두 명의 원래 개발자가 ZeroMQ를 Crossroads I/O로 포크했다.[11][12] 마틴 수스트릭은 ZeroMQ 코어 라이브러리를 다시 작성한 nanomsg를 시작했다.[13][14]

2012년 8월, 동민 유는 ZeroMQ의 순수 Java 변환인 JeroMQ를 발표했다.[15] 이는 C#용 NetMQ[16] 및 Rust용 zmq.rs와 같은 ZeroMQ의 추가적인 완전 네이티브 포트로 이어졌다.[17]

2013년 3월, 피터 힌트옌스는 ZeroMQ에 확장 가능한 보안 메커니즘을 도입하는 ZMTP 와이어 레벨 프로토콜의 새로운 초안을 발표했다.[18] 마틴 허튼은 곧이어 코어 라이브러리에 CurveZMQ 인증 및 암호화 메커니즘을 구현했다.[19]

2016년, 오랫동안 ZeroMQ 개발자였던 개럿 D'Amore는 Nanomsg를 포크하여 프로젝트 NNG (Nanomsg Next Generation)를 만들었다.[20]

4. 개발 과정

ZeroMQ 커뮤니티는 주로 집단 코드 구성 계약(C4)[21]을 개발 계약으로 사용한다. C4는 위키백과 프로세스와 깃허브의 포크 + 풀 리퀘스트 모델에서 영감을 얻었다. 새로운 기여자가 참여하기 쉽도록 하고, 기존 기여자에 대한 의존성을 줄이는 데 중점을 둔다.

참조

[1] 웹사이트 ØMQ Licensing http://wiki.zeromq.o[...] 2023-06-08
[2] 웹사이트 Get started https://zeromq.org/g[...]
[3] 웹사이트 Scalability Layer Hits the Internet Stack http://www.250bpm.co[...] 2013-09-04
[4] 웹사이트 How come ØMQ has higher throughput than TCP although it's built on top of TCP? http://www.zeromq.or[...] 2013-06-08
[5] 웹사이트 Middleware Trends And Market Leaders 2011 https://cds.cern.ch/[...] 2013-06-08
[6] 웹사이트 ZeroMQ Message Transfer Protocol http://rfc.zeromq.or[...] 2013-06-08
[7] 웹사이트 GitHub Search: ZMTP https://github.com/s[...] 2013-06-08
[8] 웹사이트 iMatix will end OpenAMQ support by 2011 http://lists.openamq[...] openamq-dev maillist 2018-09-05
[9] 웹사이트 What is wrong with AMQP (and how to fix it) http://www.imatix.co[...] iMatix Corporation 2012-07-14
[10] 웹사이트 Inspirel YAMI4 http://www.inspirel.[...] 2012-07-14
[11] 웹사이트 ZeroMQ and Crossroads I/O: Forking over trademarks https://lwn.net/Arti[...] LWN.net 2012-07-14
[12] 웹사이트 Crossroads I/O http://www.crossroad[...] 2012-07-14
[13] 웹사이트 nanomsg http://nanomsg.org/ 2013-06-08
[14] 웹사이트 Why should I [sic] have written ZeroMQ in C, not C++ http://250bpm.com/bl[...]
[15] 웹사이트 jeromq - java pojo zeromq http://lists.zeromq.[...] zeromq-dev mailing list 2013-05-23
[16] 웹사이트 NetMQ https://github.com/z[...] GitHub 2013-05-23
[17] 웹사이트 zmq.rs https://github.com/z[...] GitHub 2020-10-24
[18] 웹사이트 Securing ZeroMQ: draft ZMTP v3.0 Protocol http://hintjens.com/[...] Hintjens.com 2013-05-23
[19] 문서 curvezmq.org http://curvezmq.org
[20] 웹사이트 NNG: Nanomsg-NG https://nng.nanomsg.[...] nanomsg.org 2023-08-04
[21] 웹사이트 Collective Code Construction Contract (C4.1) http://rfc.zeromq.or[...] 2013-05-23



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com