반응형
- 비동기처리
- 메세지 큐를 기반(MQ, RABBIT MQ, KAFKA, SQS etc)
- 응답을 기다리지 않고 바로 리턴
- 큐 뒤에 다수의 워커가 메세지를 읽어서 처리(워커수를 조정하여 대용량 처리가 용이)
- 비동기 처리 메세지 패턴
- Fire&Forget
- pattern : Producer가 메세지를 그냥 큐에 던져놓고 응답 안 기다림
- 소비여부는 신경 안씀
- 일반적인 MQ 모델에 가까움
- Producer -> Queue -> Consumer
- ex) ActiveMQ, SQS, RabbitMQ의 기본 Queue
- Publish&Subscrbe
- pattern : Producer가 메시지를 발행(Publish)하면, 여러 Consumer들이 각각 구독(Subscribe)해서 받아감
- 같은 메세지를 여러 Consumer가 동시에 받을 수 있음.
- ex) Kafka, RabbitMQ(Fanout/ Topic Exchange), Google Pub/Sub 등
- Routing
- 메시지를 특정 조건(라우팅 키, 토픽, 헤더)에 따라 필요한 Consumer에게만 전달
- Exchange란?
- AMQP(Advanced Message Queuing Protocol)표준에서 정의 된 개념
- Producer로부터 수신한 메세지를 적절한 큐 또는 또 다른 Exchange로 분배하는 라우터의 기능을 함.
- Producer는 메시지를 직접 큐에 넣지 않고 Exchange에 보냄
- Exchange가 라우팅 규칙에 따라 적절한 큐로 전달
- tip.
- Routing key : 발행된 메시지와 큐가 라우팅 테이블을 통해 매칭되는 key
Publisher/Producer로 칭하는 송신부에서 송신한 메시지 헤더에 포함되는 것으로 가상의 주소라고 보면 됨.
- Routing key : 발행된 메시지와 큐가 라우팅 테이블을 통해 매칭되는 key
- Direct Exchange
- Routing key가 정확히 일치하는 큐로 메세지 전달
- ex) RoutingKey=error 면 error큐, info면 info큐로 전달
- Routing key가 정확히 일치하는 큐로 메세지 전달
- Fanout Exchange
- Routing Key 무시
- 연결된 모든 큐에 브로드캐스트
- ex) 전체 알림 전송, 공지사항 발송
- Topic Exchange
- Routing Key 패턴 매칭(와일드 카드 *, # 지원)
- ex) order.* -> order.create, order.update
- Routing Key 패턴 매칭(와일드 카드 *, # 지원)
- Headers Exchange
- Routing Key 대신 메세지 헤더를 기반으로 전달
- ex) 메세지 헤더 {format=pdf, type=report} -> 이 조건을 구독한 큐로만 전송.
- Routing Key 대신 메세지 헤더를 기반으로 전달
-
비동기 에러처리 패턴
- Error Hospital(병원, Hospital에서 컨셉 빌려옴.)
- 환자(=문제가 생긴 메세지)가 발생하면 그냥 버리지 않고 특별한 공간(병원 큐)으로 옮김.
- Worker에서 메세지 처리 시 오류가 날 경우 -> 에러큐로 보냄
- 환자(=문제가 생긴 메세지)가 발생하면 그냥 버리지 않고 특별한 공간(병원 큐)으로 옮김.
- 에러큐에서 보통 재시도 후 안되면 사람에게 리포팅해서 차후 재처리
- 메시지 유실이 되면 안되는 엔터프라이즈 시스템에서 많이 사용 함.
반응형
'역량 UP! > Architecture' 카테고리의 다른 글
용어정리) OLTP, OLAP란? (0) | 2025.08.21 |
---|---|
왜 Cache가 필요한가? 실무에서 꼭 알아야 할 캐시 패턴 10가지! (3) | 2025.08.18 |
C10K 문제(C10k Problem)란 무엇인가? (5) | 2025.08.16 |
대용량 아키텍처 설계(feat. 조대협의 대용량 아키텍처 설계 로드맵) (8) | 2025.08.15 |
마이크로서비스 아키텍처(Microservice Architecture) (0) | 2021.02.03 |