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 ty