NATS

LeeJaeG·2023년 8월 17일
0

NATS란

NATS 란 오픈소스 메세지 큐(Message Queue) 서비스(비동기통신)의 한 종류로 MSA 아키텍처에서 서비스간의 고속의 데이터 메시징 처리를 위해 활용되어 지는 CNCF 프로젝트이다.

장점

  • 배포 및 운영이 쉽다.
  • 빠르다
  • 안죽는다
  • 극도로 가볍다

배포와 운영이 비교적 다른 message queue들 보다 쉽다.
클러스터로 운영이 가능하며 Scale in/out 을 하기 비교적 쉽다보니
혹시나 메세지의 양이 많아진다면 Scale out을 해주어 많은 메세지도 처리 할 수 있다.

latency, throughput, ... 등 퍼포먼스 측면에서도 굉장히 우수하다.

구성 요소

  • Messages : the unit of data exchange
  • Producers : Send message to the NATS
  • Consumers : receive message from the server
  • Messaging Server : distributes messages from produver to consumers
  • Subject : the name of separated data tag

메시지 처리 방식

  • Publish - Subscribe : 기본적인 전송 방식, 주제 매칭으로 구독
  • Queueing : 공유 그룹을 설정하여 공유 Queue를 설정하고 하나의 구독자를 배치 (Single Queue group - sigle Consumer, Multi-Queue groups - sigle consumer
  • Request - Reply : 1:1, 1: N 방식의 메시지 전송

전달패턴

Publish & Subscribe 패턴

time.us 라는 Topic을 구독하고 있는 구독자들은 time.us라는 topic의 메세지가
NATS server 에 등록이 되면 구독을 하고 있는 구독자들은 해당 메세지를 받는다.

아래는 pubsub 패턴의 정리이다.

  • 메시지 큐에 구독자를 등록하면 클라이언트에서 보낸 하나의 메시지가 등록된 모든 구독자에게 전달이 되어서 처리된다.
  • 1 : N 관계의 비동기 처리를 구현하고자 할 때 사용된다.
  • JMS의 Topic이 이에 해당한다.
profile
코딩으로 경제적 자유까지

0개의 댓글