꾸준히 안타치기
Message Queue 본문
Message Queue ?
프로세스, 프로그램 간에 데이터를 교환할때 사용하는 통신 방법중의 하나.
Message Queue(줄을서다, 대기줄)
메시지를 임시로 저장하는 간단한 버퍼 ( 정보를 일시적으로 기억하는 중간 장치 )
Message Queue의 이점
어플리케이션 시스템간의 통신
서버간의 데이터를 주고 받거나 작업을 요청할때는 항상 시스템 장애를 염두에 두어야 한다.
서버가 죽거나 점검중에는 요청을 보낼수 없다. 이때 메시지큐를 사용하면 간편하게 처리할수 있다.
서버 부하가 많은 작업
이미지처리, 비디오, 인코딩 대용량 데이터 처리와 같은 작업은 메모리와 CPU를 많이 사용 -> 동시 처리가 한정적
이때 메시지큐에 넣어두고, 서버는 자신이 동시에 처리할수 있는 양에 따라 큐에서 가져다가 처리를 한다.
데이터 손실방지
메시지큐를 사용하지 않는다면 외부에서 받은 요청을 메모리에 저장했다가 순서대로 처리하게 할수도 있지만,
서버가 다운되어버렸을때는 메모리에 쌓아둔 요청이 사라진다.
메시지큐를 사용하면 이를 방지 할수있다. 일정시간이 지나도록 처리되지 않은 메시지큐는 이 태스크를 다시
큐에 담아서 처리한다.
Message Queue의 특성
동기화 처리하지 않고, 비동기적으로 큐에 넣어두고 나중에 처리가 가능, 동기방식은 병목현상이 발생할수 있음
어느시점에 가져가서 처리되는지 알수 없음( 비동기적 특성 )
생산자와 소비가 가 독립적으로 처리가능
소비자가 메시지를 검색하고 작업을 수행할때 까지 메시지 큐에 저장됨
각 메시지는 하나의 소비자에 의해 한 번만 처리될 수 있다. (일대일 통신)
서비스가 다운되더라도 메시지는 큐에 남아있다.
메시지큐에 담긴 메시지는 결국 전달됨
Message Queue는 이럴때 쓴다.
요청결과를 즉시 응답해야 될때는 어울리지 않음. 주로 요청과는 별개로 처리할수 있는 비동기 처리에 적합. 부가적인 기능에 사용
Message Queue예시
이메일 전송 - 언제 도착하지 모름, 지연시간이 있음
- 비밀번호 재설정을 위해 이메일을 발급하는 서비스,
- 회원가입을 위해 이메일을 발급하는 서비스 등은 메시지(이메일)를 큐에 넣을 수 있다.
블로그 포스팅 - 대용량이미지, 비디오 등은 큐에 넣어놓고, 동시에 처리할수 있는 양에 따라 가져다가 처리
- 블로그 서비스의 응답 시간을 저해하지 않으면서 사용자들에게 유연성을 제공하는 방법으로, 사용자가 업로드한 모든 이미지를 게시 과정에서 즉각 처리하는 것이 아닌, 사후처리하며 최적화하는 방법이 있다.
참고
https://tecoble.techcourse.co.kr/post/2021-09-19-message-queue/
https://aws.amazon.com/message-queue/
https://aws.amazon.com/ko/message-queue/features/
'CS' 카테고리의 다른 글
Restful API (0) | 2022.12.15 |
---|---|
프로세스와 스레드 (0) | 2022.06.08 |
CS 지식 링크 (0) | 2022.03.25 |
API와 라이브러리, SDK (0) | 2022.01.19 |
동시성 프로그래밍과 비동기 프로그래밍 (0) | 2021.12.24 |