1. Rabbit MQ
RabbitMQ는 AMQP를 따르는 오픈소스 메세지 브로커인데, 메세지를 많은 사용자에게 전달하거나, 요청에 대한 처리 시간이 길 때, 해당 요청을 다른 API에게 위임하고 빠른 응답을 할 때 많이 사용한다. 또한, MQ를 사용하여 애플리케이션 간 결합도를 낮출 수 있는 장점도 있다.
1. Producer는 이름에서 알 수 있듯이, 메세지를 생성하고 발송하는 주체이다. 이 메세지는 Queue에 저장이 되는데, 주의할 점은 Producer는 Queue에 직접 접근하지 않고, 항상 Exchange를 통해 접근한다.
2. 다음으로는, Consumer가 있으며, 메세지를 수신하는 주체이다. Consumer는 Queue에 직접 접근하여 메세지를 가져온다.
3. Queue는 Producer들이 발송한 메세지들이 보관되는 장소이다. Queue는 이름으로 구분되는데, 같은 이름과 같은 설정으로 Queue를 생성하면 에러 없이 기존 Queue에 연결되지만, 같은 이름과 다른 설정으로 Queue를 생성하려고 시도하면 에러가 발생한다.
4. Exchange는 Producer들에게서 전달받은 메세지들을 어떤 Queue들에게 발송할지를 결정하는 객체. Exchange는 일종의 라우터 개념이다.
5. Binding은 Exchange에게 메세지를 라우팅 할 규칙을 지정하는 행위. 특정 조건에 맞는 메세지를 특정 큐에 전송하도록 설정할 수 있는데, 이는 해당 Exchange 타입에 맞게 설정되어야 한다.
2. active MQ
Apache ActiveMQ 는 가장 대중적이고 강력한 오픈 소스 메세징 그리고 통합 패턴 서버이다.
ActiveMQ의 장점
(1) 분리: 대기열은 시스템 사이에 있으며, 하나의 시스템 장애는 다른 대기열에 영향을 주지 않는다. 시스템이 가동 중일 때도 계속 작동한다.
( 클라이언트와 서버간의 연결과 큐 대기열의 역할이 분리)
(2) 복구 지원: 큐의 처리가 실패하면 나중에 메시지를 복원 할 수 있다.
(3) 신뢰성: 클라이언트 요청을 처리하는 시스템을 생각하면, 정상적인 경우 시스템은 분당 100 건의 요청을 받는다. 이 시스템은 요청 수가 평균을 넘어서는 경우 신뢰할 수 없다. 이 경우 Queue는 요청을 관리 할 수 있으며 시스템 처리량을 기초로 주기적으로 메시지를 전달할 수 있다. (큐에서 들어온 메시지에 대한 처리를 관리하기 때문에 신뢰할 수 있는 시스템)
(4) 비동기 처리
'TIL(Today I Learned)' 카테고리의 다른 글
TIL_210320_멀티프로세스 (0) | 2021.03.20 |
---|---|
TIL_210211 (0) | 2021.02.11 |
TIL_210206(2) (0) | 2021.02.06 |
TIL_210206_동적타입/정적타입 (0) | 2021.02.06 |
TIL_210203_Network (0) | 2021.02.04 |