티스토리 뷰
메시지 큐 ( MQ : Message Queue )
메시지 큐란?
MOM(Message Oriented Middleware)은 프로세스 혹은 인스턴스 사이에 비동기 통신 방법이다. 이를 구현한 시스템을 메시지 큐(Message Queue) 라고 한다. 이 때, 메시지는 요청, 응답, 오류 메시지등을 의미한다.
MQ의 특징
- MSA(Micro Service Architecture)에서 서비스 ↔ 서비스 간 비동기 통신
- 메시지를 큐(Queue)에 임시 저장하고, 해당 메시지가 소비자(Consumer)에 의해 처리 된 후 삭제된다.
- 큐는 메시지를 임시 저장하는 버퍼라고 할 수 있고, 메시지 큐는 메시지 생산자(Producer)와 소비자(Consumer)간의 일대일 통신 방법이다.
- 메시지가 큐에 저장된 메시지의 처리 시점을 보장하지는 않는다.
- 요청이 왔을 때 핵심적인 작업은 우선적으로 처리하고, 처리를 유예할 수 있는 작업은 메시지 큐에 저장해두고 소비자가 처리할 수 있을 때 꺼내서 처리하도록 하여 동시처리 성능을 증가시킨다.
MQ의 장점
- 비동기 ( Asynchronous )
- 동시에 너무 많은 메시지를 처리하게 되면 병목현상이 발생할 수 있다. 이 때 MQ를 사용하면 큐(Queue)에 다 수의 메시지를 저장하고 나중에 처리하는 비동기 방식을 통해 병목 현상을 해결할 수 있다.
- 예를 들어, 특정 시간에 모든 유저에게 PUSH를 보내게 되면, 그 작업 외의 작업을 처리하기는 힘들어진다. 이를 큐에 임시 저장 해두고 비동기적으로 처리하면 더 많은 요청을 동시처리 할 수 있게 한다.
- 낮은 결합도 ( Decoupling )
- 생산자 서비스와 소비자 서비스가 서로 독립적으로 작업하게 한다.
- 탄력성 ( Resilience )
- 메시지 큐에 메시지가 저장되어 있어 서비스의 문제가 있어 중단되더라도 재 시작할 수 있고, 일부가 실패 하더라도 전체에 영향을 주지 않는다.
- 보증 ( Gurarantees )
- 메시지 큐에 저장된 모든 메시지가 소비자에게 전달 될 것을 보장하여 작업이 처리될 것을 보증한다.
- 확장성 ( Scalable )
- 다 수의 프로세스가 큐에 메시지를 보낼 수 있어 확장이 가능하다.
'Infrastructure' 카테고리의 다른 글
[OS] 뮤텍스(Mutex) 와 세마포어(Semaphore) (0) | 2022.09.21 |
---|---|
[Spring Cloud]Hystrix 를 활용한 Circuit breaker & Fallback 구현 (0) | 2022.09.04 |
SPOF(Single Point of Failure) (0) | 2022.08.17 |
RPC(Remote Procedure Call)가 뭐에요? (0) | 2022.08.11 |
암호화(Encryption) 와 해싱(Hashing)의 차이 (0) | 2022.08.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 메모리 단편화
- RestAssured
- Session
- Object Pool
- 세션 불일치
- ATDD
- 객체 풀
- Memory Fragmentation
- 클린 아키텍처
- 외부 단편화
- 수직 분할
- 육각형 아키텍처
- 메모리 파편화
- OOP
- 내부 단편화
- 수평 분할
- 뾰족함
- Sticky Session
- 장애 해결기
- pass by reference
- 정적 타입 언어
- 컴포짓 패턴
- pass by value
- pool
- 동적 타입 언어
- SpringBoot 2.2
- Clean Architecture
- java
- multimap
- 동적 디스패치
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함