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
이 이에 해당한다.