기초 소개

핵심 문서

ØMQ - 가이드 - 분산 애플리케이션에서 ØMQ를 어떻게 지능형 전송 계층으로서 사용하는지 설명합니다. By Pieter Hintjens 2.2 버전을 위한 이전 문서

ØMQ 참조 설명서 - ØMQ API를 설명합니다. By Martin Sustrik and Martin Lucina

예제 코드

아래의 코드는 두개의 다른 원격 발행자에서 자료를 수집하여 로컬 구독자들에게 여과된 전문을 보내는 예를 구현합니다.

import zmq
import time
context = zmq.Context()

subscriber = context.socket (zmq.SUB)
subscriber.connect ("tcp://192.168.55.112:5556")
subscriber.connect ("tcp://192.168.55.201:7721")
subscriber.setsockopt (zmq.SUBSCRIBE, "NASDAQ")

publisher = context.socket (zmq.PUB)
publisher.bind ("ipc://nasdaq-feed")

while True:
    message = subscriber.recv()
    publisher.send (message)

소개

Ilya Grigorik 글:

ZeroMQ는 완전히 새로운 개념이 아니며, 쉽게 구현이 가능합니다. 그렇기 때문에 이를 시작하기에는 몇 가지 실습 예제를 따라해보는게 가장 좋은 방법입니다.

Brian Buchanan 글:

"ØMQ에서 비동기라는 것은 물리적 연결 설정, 분리, 재연결과 같은 자체 기능을 통해 효과적으로 해당 사용자에게 전달된다는 것을 의미합니다. 메시지 수신이 가능하지 않을 때는 큐잉될 수 있습니다."

Andrew Cholakian 글:

"특별한 상황을 제외하고는, ZeroMQ와 함께 시간을 보내다 보면 원시적인 TCP나 UDP 소켓을 사용해야만 된다는 생각은 없어집니다."

Martin Lucina and Martin Sustrik 글:

"ØMQ는 메시징 시스템이며, 다른 접근 방법으로 했을 경우 발생되는 이슈들을 없애 줍니다. ØMQ는 새로운 API나 복잡한 와이어 프로토콜을 사용하는 것보다 배우기 쉽고, 한두 시간 내에 네트워크 프로그램을 숙달할 수 있게 합니다. 게다가 그 성능은 원시적인 소켓과 동일하거나 앞서기도 합니다."

Nicholas Piel 글:

"ZeroMQ는 많은 노력이 없어도 복잡한 통신 시스템을 설계할 수 있도록 하는 메시징 라이브러리입니다."

Zed Shaw 글:

"ZeroMQ는 소켓과 같이 많은 API를 사용하고, 소켓과 같게 느껴집니다. 또한 사용자가 원하는 다양한 메시징 패턴을 제공합니다. 그저 zmq_socket를 사용하는 것만으로 멀티캐스트, 요청/응답 등의 많은 패턴을 제공합니다."

영상 소개

영국 PHP 컨퍼런스에서 Ian Barber씨가 "ZeroMQ가 답이다"라는 제목으로 설명한 영상입니다.

Pieter Hintjens은 어떻게 ØMQ가 대규모 분산 애플리케이션을 구축하며 발생하는 문제들을 풀어줄 것인지를 설명합니다.

배경 설명 및 백서

  • Martin Sustrik가 브로커-기반(broker-based)/브로커-부재(brokerless) 방식의 차이점을 설명하고 있습니다.
  • Pieter Hintjens는 엣지-투-엣지(edge-to-edge) 방식이 브로커-기반(broker-based) 방식보다 더 신뢰성과 확장성이 높고 강력함을 설명하고 있다.