콘텐츠로 건너뛰기
Home » zmq » Page 2

zmq

ZMQ 멀티파트메시지

멀티파트 메시지는 하나의 메시지 프레임 내부에 여러 개의 독립적인 메시지 프레임이 들어 있는 것을 말한다. 이는 하나의 프레임에서 처리하기 힘든 데이터 조각들을 모아서 처리할 때 유용하다. 예를 들어 바이너리 파일 데이터를 전송하려는 경우에는 보내는 쪽이나 받는 쪽이나 전송하는 데이터가 이진데이터라는 것을 알고 있다 가정하여 바이트 스트림을 전송할 수 있다. 하지만 이렇게 하면 실제 데이터 외부에 있었던 정보, 이를 테면 파일 이름이나 생성한 날짜 같은 메타 정보를 전달하기가 어려워진다. 이런 경우 여러 정보들을 멀티 파트 메시지로 묶어서 하나의 프레임으로 전송하면 필요한… 더 보기 »ZMQ 멀티파트메시지

ZMQ – Poller 사용하기

PUB-SUB 패턴이나 PUSH-PULL 패턴을 사용하면 데이터를 발생시키는 1개 (혹은 여러 개의) 노드로부터 데이터를 전달받는 N개의 노드들이 돌아가는 방식의 네트워크를 구성할 수 있음을 지난 글에서 보았다. 이 때 각각의 클라이언트 노드들은 루프를 돌면서 큐에 들어온 메시지를 순서대로 처리하게 된다. 만약 개별 클라이언트가 한 번에 처리해야 할 메시지의 최대 개수가 정해져 있다면 while 무한 루프가 아닌 for 루프를 통해서 유한한 루프를 돌 수 있을 것이다. 그 외에도 메시지의 내용으로부터 동작이나 중지를 결정할 수 있는 경우에도 그 스스로 동작을 멈출 시점을 결정할 수… 더 보기 »ZMQ – Poller 사용하기

ZMQ의 기본 개념들

일전에 간단하게 ZMQ에 대한 기본적인 내용을 살짝 정리한 글이 있는데, 사실 ZMQ 자체를 알게 된 게 소켓 통신에 대한 내용을 알아보려 검색하다가 흘러흘러 닿은 것이었더 관계로 글 자체가 공식 문서에서 예제 몇 개를 따온 수준이었다. 이후에 조금 더 알아보니 ZMQ는 단순한 소켓 프로그래밍 API를 대체하는 것 외에 거의 같은 코드베이스로 분산처리라든지 네트워크 소켓외에도 프로세스간 스레드간 통신에 사용될 수 있는 정말 활용폭이 넓고 괜찮은 라이브러리라고 생각됐다. ZMQ 자체는 간단한 개념이며, 기본적으로 사용하는 방식이 소켓과 크게 다르지 않아서 학습 곡성도 매우 낮은데,… 더 보기 »ZMQ의 기본 개념들

ZMQ 디바이스 사용하기

일반적인 소켓 연결의 경우, 주로 서버는 bind()를 통해서 포트에 연결하고 클라이언트는 connect()를 사용해서 포트에 연결한다. ZMQ에서는 이 방식이 절대적인 규칙이 아니다. 간단한 소켓 통신의 예에서 양 끝단 중 상대적으로 안정적인 쪽이 서버인 경우가 많기 때문에 bind() 하는 것이며 클라이언트는 서버보다는 동적이기 때문에 connect() 하는 경우가 많을 뿐이다. 간단한 피어 통신의 예제에서는 사실 양 끝단이 모두 ‘고정’되어 있고, ZMQ에서는 연결의 순서에 구애받지 않으므로 클라이언트가 bind()를 하고 서버가 connect()를 해도 문제 없다. 유념해야하는 원칙 한가지는 안정적인 쪽이 bind()를, 그렇지 않은 쪽이 connect()를… 더 보기 »ZMQ 디바이스 사용하기