메시지 큐 mq 및 여러 공통 메시지 큐의 역할, 장단점

목차

1. 정의

2. 메시지 큐의 세 가지 주요 기능은 비동기, 피크 커팅 및 디커플링입니다.

3. 메시지 큐의 단점

4. 세 가지 높은 수준의 관점에서 이 설계를 검토합니다.

4. 몇 가지 일반적인 메시지 큐


1. 정의

        Message Queue: 일반적으로 줄여서 MQ(Message Queue)라고 합니다.

         메시지 쿼리(MQ), 메시지 큐 미들웨어, 많은 초보자들은 MQ가 메시지 송수신을 통해 프로그램의 비동기 및 분리를 실현한다고 믿습니다.MQ는 주로 비동기 작업에 사용됩니다. 이것은 mq의 실제 목적이 아니라 단지 mq 응용 프로그램입니다. mq의 실제 목적은 통신입니다.

        그것은 일반적으로 사용되는 dubbo와 같은 복잡한 통신 프로토콜을 보호합니다. http 프로토콜은 모두 동기식입니다.

         이 두 프로토콜은 양방향 통신을 달성하기 어렵습니다.A는 B를 호출하고 B는 A를 적극적으로 호출할 수 있으며 긴 연결을 지원하지 않습니다. mq가 하는 일은 생산자 및 소비자 모델인 이러한 프로토콜 위에 간단한 프로토콜을 구축하는 것입니다. mq가 제공하는 것은 기본 통신 프로토콜이 아니라 상위 수준의 통신 모델입니다. 데이터를 보내는 사람을 생산자라고 하고 메시지를 받는 사람을 소비자라고 합니다. 기본 통신 프로토콜을 무시하고 생산자와 소비자를 직접 정의할 수 있습니다.

2. 메시지 큐의 세 가지 주요 기능은 비동기, 피크 커팅 및 디커플링입니다.

        메시지 대기열은 상류의 압력을 차단하는 데 사용되는 Three Gorges Dam과 같습니다.

        Asynchronous: 이전 단계에서 했던 것을 다단계로 변경

        피크 쉐이빙: (예를 들어, 트래픽이 갑자기 100배 증가하고, 그 사이에 데이터 크기에 맞게 프로그램이 설계됨) 압력이 mq에 쌓이고, 소비자는 데이터 급증에 저항할 필요가 없습니다. 메시지는 메시지 대기열에 배치되며 소비자는 천천히 소비할 수 있습니다. 다운스트림 서비스를 압도하지 않도록 mq를 통한 트래픽 급증을 차단합니다. 서버의 서비스가 다운되면 전체 시스템을 마비시키는 연쇄 반응을 일으킬 가능성이 있습니다.

        디커플링: 생산자와 소비자를 분리하여 생산자가 메시지를 mq에 넣으면 생산자의 작업이 완료되고 소비자는 서로 관련이 없습니다.

(위의 일반 형식에서 다음 mq 구현으로 변경)

Mq는 일반적으로 수정 작업에 사용됩니다(수정 작업 시 호출 체인이 너무 길어 mq를 사용해야 함). 

3. 메시지 큐의 단점

        ① 시스템의 복잡성을 증가시킨다.

                따라서 비즈니스 볼륨이 크지 않고 동시성이 높지 않은 경우 메시지 큐를 사용할 필요가 없습니다.

        ② 사업상의 문제.

                트랜잭션 문제는 사실 분산 시스템에 반드시 존재해야 하는 문제이지만 메시지 큐가 더 심각하다. 일반적인 해결 방법은 두 가지가 있는데, 첫 번째는 분산 트랜잭션을 사용하는 것으로 주문에 관련된 모든 서비스를 하나의 트랜잭션에 넣고 모두 성공하거나 모두 실패합니다. 두 번째는 소비자가 메시지 재시도, 수동 데이터 새로 고침 등과 같은 합리적인 데이터 보상 조치를 취하는 것입니다.

        ③ 가용성

        방금 말한 디커플링은 실제로 시스템의 다양한 모듈 간의 디커플링이지만 ​​이러한 모듈은 모두 메시지 큐와 연결되어 있으므로 메시지 큐가 끊기면 실제로 주문할 수 없습니다. 가용성을 보장하기 위해 나중에 소개할 메시지 대기열 클러스터, 프런트 엔드 트래픽 제한 등을 사용할 수 있습니다.

4. 세 가지 높은 수준의 관점에서 이 설계를 검토합니다.

        고가용성: 시스템의 모듈이 다운되더라도 다른 서비스에는 영향을 미치지 않습니다. (데이터 보상 또는 분산 트랜잭션을 통해 데이터의 최종 일관성을 보장할 수 있음)

        고성능: 사용자가 주문하고 주문에 필요한 모든 데이터를 메시지 대기열에 넣은 다음 직접 반환합니다.모든 시간 소모는 네트워크 전송 시간과 동일합니다.

        높은 동시성: 메시지 큐는 비즈니스 로직을 처리하지 않기 때문에 지원하는 모든 동시성은 백만 수준입니다. 100만 명의 사용자가 주문하고 메시지 큐에 100만 개의 데이터가 있으면 메시지 큐에 연결된 서비스가 느리게 소비될 수 있으며 수백만 개의 요청이 즉시 들어와 내 서비스를 압도하지 않습니다.

4. 몇 가지 일반적인 메시지 큐

그 중 kafka와 rocketmq는 높은 처리량 때문에 현재 주요 인터넷 기업에서 가장 널리 사용되고 있다.

추천

출처blog.csdn.net/qq_52240237/article/details/132030145