8월, 2016의 게시물 표시

ZeroMQ 기본적인 것 정리

이번에 하고 있는 프로젝트에서 분산시스템을 구현하는 데 zeromq를 사용하게 되었다.
그래서 zeromq의 기본적이지만 헷갈릴 수 있는 내용들을 한 번 정리해보았다.
공식 guide document는 http://zguide.zeromq.org/ 이다.
여기에 쓴 내용들은 공식 guide에 설명된 내용을 포함해서 내가 추가적으로 여러가지 실험을 통해 알아낸 것들을 포함하고 있다.
그리고 내 개인적인 생각들도 포함되어 있다.

Valid Combination PUB and SUB
REQ and REP
REQ and ROUTER (take care, REQ inserts an extra null frame)
DEALER and REP (take care, REP assumes a null frame)
DEALER and ROUTER
DEALER and DEALER
ROUTER and ROUTER
PUSH and PULL
PAIR and PAIR
출처) zquide.zeromq.org

Asynchronous Request & Response REQ, REP, PAIR같은 애들은 비동기 request-response가 불가능하다.
그냥 패킷 하나 주고 하나 받고 하나 주고 하나 받고 이렇게 동기적으로 해야한다.
그래서 비동기 req-res를 하려면 ROUTER나 DEALER를 사용해야한다.
DEALER나 ROUTER의 특징은 아래쪽에 써놧으니 읽어보면 된다.
만약 비동기적인 PAIR to PAIR 를 구현하려면 DEALER to DEALER 를 사용하면 된다.
만약 비동기적인 REQ to REP 를 구현하려면 DEALER to ROUTER 를 사용하면 된다.

근데 DEALER나 ROUTER는 이름에서 알 수 있듯이 각각 연상되는 활용처가 있는 법인데,
단순히 비동기 req/res를 하기 위해서 이걸 사용해야한다는 점이 네이밍 측면에서 좀 안좋게 느껴진다.
ASYNC_REQ 뭐 이런 네이밍의 socket type을 추가로 만들어줬어도 참 괜찮았을 거 같은데 말이다.…