Create Zero-Point Failure Distributed Tasks With Python and ZeroMQ
A guide on how to build a distributed pub-sub architecture without a broker
A guide on how to build a distributed pub-sub architecture without a broker

seen from Malaysia
seen from Kazakhstan
seen from Japan

seen from United Kingdom

seen from Australia
seen from Argentina
seen from China
seen from Russia

seen from Finland
seen from Norway

seen from Finland
seen from China
seen from French Guiana
seen from Finland
seen from Pakistan
seen from China
seen from China

seen from Norway
seen from Germany
seen from Australia
Create Zero-Point Failure Distributed Tasks With Python and ZeroMQ
A guide on how to build a distributed pub-sub architecture without a broker
A guide on how to build a distributed pub-sub architecture without a broker
파이썬으로 구현하는 채팅앱
파이썬으로 터미널 상에서 돌아가는 간단한 채팅앱을 구현해보고자 한다. 채팅 앱은 서버와 클라이언트로 구성되며, 각각의 클라이언트가 보내는 메시지를 모든 클라이언트에게 되돌려주면 된다. 이 때 일반적인 에코서버 구현과 다른 점은, 대화 메시지가 오고 가는 방식은 비동기적이기 때문에 실제로는 서버와 클라이언트 모두 각각 수신용과 발신용의 2개의 소켓을 준비해야 한다는 점이다. 어쨌든 이것은 ZMQ를 사용하면 손쉽게 해결할 수 있다. 다음으로 채팅앱에서 어려운 점은 일반적인 input() 함수에 관한 것이다. 채팅앱은 키보드를 통해 메시지를 입력하는 중간에도 수신한 메시지를 출력할 수 있어야 한다. 그런데 input() 함수는 블록킹함수이기 때문에 이 부분의 처리가 쉽지 않을 수 있다. 스레드로 처리한다…
View On WordPress
Kafka vs ActiveMQ vs RabbitMQ vs ZeroMQ
Kafka vs ActiveMQ vs RabbitMQ vs ZeroMQ
Introduction Communication between Microservices is very important. We cannot afford to lose even a single message in the communications. Hence, we had two different Communication methods for microservices. We call those are Asynchronous and Synchronous Communications. Synchronous communication will wait for the response but on the other hand, Asynchronous communication will not wait for the…
View On WordPress
ZMQ 프록시 사용하기
ZMQ 디바이스를 사용하여 네트워크를 확장하는 예를 살펴본 적이 있었는데, zmq.device()는 이제 deprecated 되었고 대신에 zmq.proxy()를 사용하라는 내용을 공식문서에서 보게 되었다. 단지 device에서 proxy로 이름이 바뀐 것인가 싶었는데, 프록시는 zmq 디바이스보다 좀 더 오픈되고 유연한 형태의 네트워크 중계 장치이며, 사용도 더 간편하기 때문에 소개하고자 한다.
(more…)
View On WordPress
ZMQ + Asyncio : PUB-SUB 예제
ZMQ + Asyncio : PUB-SUB 예제
PUB-SUB 패턴의 예제를 asyncio 버전으로 바꾼 예제이다.
(more…)
View On WordPress
ZMQ + Asyncio 적용하기
ZMQ + Asyncio 적용하기
파이썬에서 ZMQ를 사용할 때, asyncio를 사용할 수 있게 되었다. asyncio에 적용한다고 해서 크게 달라지는 것은 없고 소켓의 사용방법은 대동소이하다. (실제 IO 시점에 작업 전환이 일어날 수 있게 await를 붙이는 것 정도의 차이만 있다. 대략의 사용법을 정리해보면 다음과 같다.
zmq.asyncio 모듈로부터 컨텍스트를 생성한다.
send~, recv~는 모두 비동기 코루틴으로 되어있다.
따라서 실제 노드의 동작도 비동기 코루틴으로 작성한다.
따라서 코드가 크게 바뀔 부분이 사실 없다… 실제 예로 ZMQ의 기본 메시지 패턴 구현에서 소개한 다중 포트 접속 에코 서버/클라이언트의 코드를 아래에 소개하겠다. 참고로 아래 예제는 파이썬 3.7 기준으로 작성되었다. 파이썬 3.7에서는…
View On WordPress
ZMQ 멀티파트메시지
멀티파트 메시지는 하나의 메시지 프레임 내부에 여러 개의 독립적인 메시지 프레임이 들어 있는 것을 말한다. 이는 하나의 프레임에서 처리하기 힘든 데이터 조각들을 모아서 처리할 때 유용하다. 예를 들어 바이너리 파일 데이터를 전송하려는 경우에는 보내는 쪽이나 받는 쪽이나 전송하는 데이터가 이진데이터라는 것을 알고 있다 가정하여 바이트 스트림을 전송할 수 있다. 하지만 이렇게 하면 실제 데이터 외부에 있었던 정보, 이를 테면 파일 이름이나 생성한 날짜 같은 메타 정보를 전달하기가 어려워진다. 이런 경우 여러 정보들을 멀티 파트 메시지로 묶어서 하나의 프레임으로 전송하면 필요한 모든 정보를 같이 전달해 줄 수 있다.
멀티 파트 메시지 전송은 비단 ZMQ내에서만 사용되는 개념이 아니다. HTTP 규격에서도 멀티…
View On WordPress
ZMQ의 기본 개념들
일전에 간단하게 ZMQ(Zero MQ)에 대한 내용을 간단히 정리해본 바 있는데, 이 때는 소켓에 대한 내용을 살펴보다가 흘러흘러 닿은 부분이라 제대로 설명하지 못하고 공식문서에 나오는 예제를 그대로 옮기는 수준이었다. ZMQ는 소켓 프로그래밍 API를 대체할 수 있는 정말 괜찮은 라이브러리라는 생각이 들어서 활용할 폭이 넓다고 판단됐다. 다만 용어나 개념에 대한 약간의 선행지식이 필요한 부분이 있다. 오늘은 ZMQ에서 사용되는 기본적인 개념에 대해서 알아보고, ZMQ를 통해서 간단한 에코서버와 클라이언트로 소켓통신을 구현하는 방법에 대해 살펴보도록 하겠다. 그리고 ZMQ를 사용하면 전통적인 소켓 접속을 구현하는 것보다 얼마나 편하며 또 멋지게 돌아가는지도 살펴보도록 하겠다.
ZMQ란?
코드를 모든…
View On WordPress