728x90

ZeroMQ란

ZeroMQ는 Zero Message Queue의 약자로, 고성능 경량 메시징 라이브러리

주로 메시지 큐, 분산 컴퓨팅, 백그라운드 작업 등의 작업을 수행하는 데 사용됨

ZeroMQ는 소켓을 사용하여 메시지를 전송하고, 여러 패턴 (pub-sub, req-rep 등)을 지원하여 유연성을 제공

파이썬에서는 pyzmq라이브러리를 통해 ZeroMQ를 사용할 수 있어 파이썬 애플리케이션에서 효율적이고 확장 가능한 분산 시스템을 구축할 수 있음

ZeroMQ의 장점

  • 가벼움
    ZeroMQ는 경량 메시지 패싱 라이브러리이므로, 추가적인 오버헤드 없이 빠르고 효율적인 통신 제공
  • 다양한 패턴 지원
    ZeroMQ는 다양한 통신 패턴을 지원하여 다양한 분산 시스템 아키텍처 구축 가능
    PUB-SUB, REQ-REP, PUSH-PULL 등의 패턴을 사용하여 쉽게 메시지 큐, 분산 작업 구현 가능
  • 다양한 언어 지원
    ZeroMQ는 C, C++, Python, Java, Go, Ruby 등 다양한 프로그래밍 언어에서 사용할 수 있어 다양한 환경에서의 통합 및 상호 운용성을 향상함
  • 유연성
    ZeroMQ는 유연한 구성 및 사용법을 제공하여 다양한 설정 옵션을 통해 사용자가 필요에 맞게 구성할 수 있음
  • 분산 시스템 구축 용이성
    ZeroMQ를 사용하면 복잡한 분산 시스템을 비교적 쉽게 구축할 수 있음
    다양한 컴포넌트 간의 통신을 표준화된 패턴을 사용하여 관리하기 용이함
  • 확장성
    ZeroMQ는 고성능 및 확장 가능한 아키텍처를 지원하므로, 대규모 시스템에서도 잘 동작함
  • 안정성
    ZeroMQ는 오랜 기간 동안 널리 사용되어 왔으며, 안정성이 검증됨
    또한 풍부한 커뮤니티 및 문서 지원을 통해 문제 발생 시 해결할 수 있음

ZeroMQ 사용 예시

Publisher와 Subscriber 두 개의 코드를 작성해야 함

ZeroMQ의 Publisher-Subscriber 모델에 대한 내용은 여기를 참고

 

1. 설치

pip install pyzmq

 

2. Publisher 코드 작성

import zmq
import time

context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:5555")

while True:
    message = "Update: " + str(time.time())
    socket.send_string(message)
    time.sleep(1)

 

3. Subscriber 코드 작성

import zmq

context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://localhost:5555")
socket.subscribe(b"")

while True:
    message = socket.recv_string()
    print("Received message:", message)

 

4. 실행

Publisher를 먼저 실행하고, Subscriber를 실행

발행자가 주기적으로 메시지를 발행하고, 구독자가 이를 구독하여 수신하는 것을 확인할 수 있음

참고

pyzmq 공식 문서 : https://learning-0mq-with-pyzmq.readthedocs.io/en/latest/pyzmq/pyzmq.html

728x90

'Python' 카테고리의 다른 글

[작성중] Python 문서화 (feat. sphinx)  (0) 2024.04.12
Python 문서화 (feat. PEP 257)  (0) 2024.04.11
asyncio를 이용한 Python 비동기 프로그래밍  (0) 2024.04.10
Python websocket  (0) 2024.04.08
Python 루틴, 서브루틴, 코루틴  (1) 2024.04.04

+ Recent posts