ZeroMQ

홍준섭·2023년 1월 14일
0

네트워크

목록 보기
9/20

프로토콜의 위치 Kernel VS Application

과거 => 전통적인 인터넷 프로토콜은 운영체제 내부 커널에 위치
현대 => 운영체제 상위의 어플리케이션 계층으로 주로 제공

위치에 따른 장단점?

  • 성능 측면
    운영체제 내부 커널에 위치한 프로토콜의 경우 믿을 수 있고 오랜기간 개발되어 왔기 때문에 성능이 더 좋은 경우가 많다.
  • 개발 및 발전 용이성 측면
    커널 내부에 위치한 프로토콜의 경우 수정을 위해서 커널을 이해해야 하기 때문에 개발 난이도가 올라가고 운영체제의 오너십을 가지고 있는 집단의 승인이 필요하다. 그렇기에 개발 및 발정 용이성의 측면에서 보았을 때 어플리케이션 계층에서 통신 프로토콜을 제공하는 방법이 더 좋다.

ZeroMQ 이해

  • ZERO means
    zero brocker + zero latency + zero cost + zero administration
  • 고성능 비동기 메시지 라이브러리이다.
  • 분산및 동시 애플리케이션 사용을 목표로 한다.
  • 브로커가 없다.
  • Berkeley socket api를 일부 가져다 사용한다.
  • request/reply, publish/subscriber, and others 패턴을 제공한다.

ZeroMQ 패턴

  • Request-reply
    전형적인 클라이언트와 서버 구조이다. (REQ,REP,DEALER,ROUTER)
  • Pub-sub
    누군가 정보를 만들어 다른 사람들에게 뿌려 버리는 공지하는 방식의 구조이다.
  • Pipeline
    여러명의 일꾼들이 순차적으로 작업을 받고 전달하는 형식 앞쪽에서 하나가 일을 워커 세개에게 뿌리고 그것을 다시 싱크 하나에게 주는 구조이다. (PULL, PUSH)

ZeroMQ Sockets

  • 일반 소켓 vs zeroMQ socket
    일반 소켓의 경우 1:1, n:1, 1:n 방식 제공 zeroMQ의 경우 n:n 방식까지 제공한다.
  • Asynchronous ZeromMQ sockets
    물리적 연결 설정 및 해체, 재연결 및 효과적인 전달의 타이밍에 영향을 받지 않는다. 또한 피어가 메시지를 수신할 수 없는 경우 메시지가 대기열에 있을 수 있다.
  • ZeroMQ socket bind & conenct
    처음부터 끝까지 유지되는 것에서 bind하고 살았다 죽었다 하는 것들에서 connect를 한다.

Request-Reply pattern

Publish-Subscribe pattern

  • 단방향 데이터 분배 패턴
  • 서버가 클라이언트 집합에 업데이트 적용

Publish-Subscribe with Pipeline pattern

Dealer-Router pattern

  • REQ-REP pattarn의 비동기 버전
  • n:1, 1:n이 섞여있을 때 사용하면 좋다.
  • 클라이언트는 응답을 기다리지 않고 여러 요청을 보낼 수 있다. 서버는 새 요청을 기다리지 않고 여러 응답을 보낼 수 있다.
  • 위에서 아래로 요청이 전달이 돼서 작업을 마치면 다시 아래에서 위로 올라가서 뿌려지는 작업을 하는 경우 사용한다.
profile
개발 공부중입니다

0개의 댓글