tencent cloud

Cloud Message Queue
안전하고 신뢰성이 강합니다. 확장성, 가용성이 뛰어난 고성능 분산형 메시지 큐 서비스를 제공합니다.
소개

Tencent Cloud CMQ(Cloud Message Queue)는 분산형 메시지 큐 서비스로, 신뢰성이 강한 메시지를 기반으로한 비동기 통신 메커니즘 제공 및 분산식으로 배포하는 여러 애플리케이션(동일 애플리케이션 혹은 여러 모듈)간의 메시지를 수신/발송합니다. 데이터 신뢰성이 강하고 효율적인 CMQ 큐에 저장하여 메시지 유실을 방지합니다. CMQ는 멀티 스레드 동시 읽기/쓰기를 지원하며 수신과 발송은 단일로 진행합니다. 애플리케이션이나 컴포넌트 없이도 늘 실행 상태를 유지합니다.

특징
고성능

CMQ는 억 단위의 메시지 수신/발송과 푸시 서비스를 지원하며 대량의 메시지 보존과 메시지 보존 용량에 제한이 없습니다. CMQ 처리량이 대량인 관계로 단일 클러스터의 QPS는 10만이상에 달해 업무간 메시지 수신/발송 요구사항을 만족합니다.

고가용성

CMQ는 메시지당 사용자에게 리턴 시, 메시지 데이터를 3개 백업하여 서로 다른 물리 머신에 백업합니다. 임의 물리 머신에 장애가 발생하면 백그라운드 데이터 복사 메커니즘은 데이터를 빠르게 마이그레이션하여 사용자 데이터 3개의 백업의 가용성을 보장합니다. 신뢰성 99.999999%에 달하며 서비스 연속 가용성은 99.95%를 보장합니다. Raft 알고리즘을 적용하여 데이터의 강한 일치성을 확보합니다.

스케일 아웃

서비스 규모에 따라 메시지 큐의 큐 수량과 큐 저장 용량을 자동 확장합니다. 상위 계층의 서비스에 영향을 주지 않으며, 베이징, 상하이, 광저우 등 여러 리전에 서비스를 제공합니다. 유연하게 수평으로 확장하며 단일 클러스터는 QPS 10만을 초과하고, 로직의 단일 큐 서비스는 여러 클러스터를 통합한 서비스를 제공합니다.

안전성 및 신뢰성

CMQ는 HTTPS 보안 액세스 연결을 지원합니다. Tencent Cloud 플랫폼의 다양한 보안 메커니즘을 바탕으로 네트워크 공격을 방어하며 비즈니스 프라이버시를 지켜줍니다. 또한 메인 계정과 서브 계정, 파트너 계정 등 계정 관리가 가능하며, 세분화된 리소스 액세스 권한 제어를 지원하여 디테일하게 관리합니다.

간편한 무료 유지 보수

API 호출 인터페이스와 java, C++ 등 다양한 SDK를 제공하여, 개발 비용을 절감하고 클라우드에 간편하게 업로드합니다. 여러 각도에서 모니터링 알림 기능이 적용되며, 하위계층 리소스 유지 보수에 신경 쓸 필요 없이 비즈니스 개발에만 전념하면 됩니다.

기능
비동기화 통신 프로토콜

메시지 발송자는 메시지를 메시지 큐에 발송한 후 수신자의 응답을 대기하지 않고 바로 리턴합니다. 메시지는 수신자가 수신하기 전까지 메시지 큐에 저장합니다. 메시지 발송과 처리는 비동기로 진행합니다.

신뢰성 향상

기존에는 메시지는 장시간 대기로 종종 요청이 실패하기도 합니다. 메시지 큐에서 메시지를 발송 시 수신자는 사용 불가한 상황이라면 메시지 큐는 수신이 이루어지기 전까지 메시지를 저장합니다.

스레드 탈동조화

메시지 큐는 두 개 스레드 간의 동조화 상태를 감소시킵니다. 메시지의 포멧이 그대로 유지되면 수신자의 인터페이스, 위치 또는 사양이 변경되더라도 발송자 상황은 변경되지 않습니다. 또한 메시지 발송자는 메시지 수신자가 누구인지 알 필요가 없으므로 시스템이 보다 간소화됩니다. 스레드간 원격 프로시저 호출(remote procedure call, RPC) 혹은 소켓(socket)을 사용하여 연결 시 한쪽 인터페이스, IP 혹은 포트가 변경되면 다른 한쪽은 반드시 요청 사양을 변경해야 합니다.

메시지 라우팅

발송자는 수신자와 직접적인 연결을 구축하지 않으며 양측은 메시지 큐를 통해 발신자에서 수신자로 라우팅하도록 확보해야 합니다. 특히 서로 네트워크가 연결되지 않은 2개의 서비스에 메시지 라우팅을 제공할 수 있습니다.

멀티 터미널

사용자의 멀티 업무 터미널간 동시에 메시지를 발송하거나 수신할 수 있으며 Tencent Cloud CMQ는 메시지 상태에서 메시지 가용성을 제어합니다.

다양성

메시지 큐 별로 별도로 설정 가능하며, 모든 메시지 큐가 똑같지 않아도 무방합니다. 서비스 애플리케이션 시나리오별로 메시지 큐는 맞춤형 설정 가능합니다. 예를 들면 한 메시지 큐의 메시지 처리 시간이 길어지면 메시지 큐 옵션별로 최적화 가능합니다.

응용 시나리오

위챗 홍빠우 시스템의 분산식 이슈에 CMQ가 원활히 적용되었습니다. 위챗 구조 컴포넌트는 홍빠우 시스템에 CMQ를 적용해 분산식 이슈로 시스템의 비용이 추가하는 경우를 미연에 방지 가능합니다. CMQ 홍빠우 메시지 큐는 홍빠우 메시지의 전송, 저장에 대한 신뢰를 상향시켰습니다. 자금 입금 실패 시, 계정 시스템은 꾸준히 CMQ로부터 읽어온 후 해당 조작 업데이트를 재시도하여 입금 메시지가 절대 로스하는 경우가 없도록 확보해주며, 입금 실패 롤백과 잦은 DB 폴링 등 경우를 미연에 방지합니다. 상세히 알아보기

유저는 CMQ 백그라운드 클라스터를 감지하지 못합니다. CMQ 컨트롤 서버는 클러스터의 부하 상황에 다라 메시지 큐를 조율하고 마그레이션합니다. 혹 한 메시시지 큐 서버의 요청량이 기존 클러스스터에서 감당 가능한 범주를 초과할 경우 컨트롤러 서버(controller server)는 메시시지 큐를 멀티 클러스터에 분산 라우팅하여 동시 발생량을 확대합니다. 이론상 메시지 힙은 무제한에 달하며 QPS도 엄청나 업무측 니즈를 원활히 지원합니다.

CMQ를 사용 시, 하기 2종 핵심 요청을 만족합니다:

• 클라이언트의 할인 이벤트 시스템. 소비자의 입금은 비동기로 진행됩니다. 입금 메시지는 메시지 큐에 기록되며 소비자가 읽어와 소비 내역 확인 및 실제로 소비를 완료하면 콜백 인터페이스는 메시지 큐의 메시지를 삭제합니다.

• 각 시스템에 오프레이션, 알림, 오프레이션 시스템의 로그 기록 등이 포함됩니다. 해당 사항은 우선 CMQ에 취합하여 백엔드의 빅데이터는 클러스터의 처리 능력을 분석하며 꾸준히 각 CMQ로부터 메시지를 읽어와 분석합니다. CMQ는 이론상 무제한에 달하는 메시지 힙을 지원하므로 원하는대로 사용 가능합니다.

CMQ는 금융 데이터 센터(가용존 2 개 )에서 각 CMQ 클러스터(예를 들면 심천 평산, 관란)2종을 배포 가능합니다. 이때 업무측은 실제 니즈에 따라 메시지를 임의 데이터센터에 입력 가능합니다.

메시지 내용(body) 저장은 업무 맞춤형으로 동기화 맵트(강한 일치성), 비동기화 맵트(최종 일관성) 등 다른 프로토콜을 적용합니다.

메인 노드 메시지 큐 데이터를 잃어버리면 메인 설비 노드의 PRO는 5분 이하입니다. 텐센트 클라우드는 failover, failback 스위칭 API를 제공하여 복구한 재난과 변경된 통제권을 고객에게 넘깁니다. 스위칭 완료 후 데이터가 일치하지 않으면 다른 DB에 연결하여 체크 및 데이터를 복구 가능합니다.

금융 수준급의 재해 복구 방안은 Webank, 텐페이 등 핵심적인 업무를 통해 확보합니다.

가격

Tencent CMQ(Cloud Message Queue)에 하기 요금이 포함됩니다. 요청 횟수 비용, 메시지 보존 비용과 아웃바운드 비용, 그 중 요청 횟수 비용과 메시지 보존 비용은 현재 무료로 사용 가능합니다. 향후 과금되면 정식으로 요금을 결제하기 전에 Tencent Cloud에서 메일, 전화, 메시지 등 공식 경로를 통해 안내드릴 예정입니다. 아운바웃드 비용은 지역별 맞춤형으로 종량제 과금 방식으로 시간당 1회 결제합니다.