핵심 데이터백그라운드 작업

이벤트 스트리밍

컨슈머 그룹, 확인 응답, 충돌한 컨슈머가 남긴 메시지의 자동 복구를 지원하는 추가 전용 이벤트 스트림입니다.

추가 전용 로그
내구성
스트림당 컨슈머 그룹
N
충돌 시 잃는 메시지
0
단계 1 / 5
이벤트 게시

주문 서비스가 이벤트를 추가하고 그 ID를 돌려받습니다.

예시 세션playing
# 이벤트 게시
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

실제 HotKV 명령과 예시 응답으로 구성된 애니메이션 안내입니다. 원하는 단계를 클릭하면 해당 단계로 이동합니다. 명령과 응답은 HotKV에서 입력하고 보는 그대로 영어로 표시됩니다.

문제

이벤트에 반응하는 서비스에는 큐 이상의 것이 필요합니다. 독립적인 여러 컨슈머가 같은 이벤트를 원하고, 각 컨슈머 그룹은 인스턴스 간에 작업을 나눠야 하며, 인스턴스가 메시지를 쥔 채 죽으면 누군가 이를 알아차리고 넘겨받아야 합니다.

HotKV의 해결 방식

스트림은 추가 전용 로그입니다. 각 컨슈머 그룹은 스트림을 독립적으로 읽고, 각 메시지를 그룹의 한 멤버에게 전달하며, 멤버가 확인 응답할 때까지 대기 상태로 유지합니다. XAUTOCLAIM은 너무 오래 대기한 메시지를 정상 컨슈머에게 넘깁니다.

단계별 설명

명령 하나하나, 무슨 일이 일어나는가

  1. 01

    이벤트 게시

    주문 서비스가 이벤트를 추가하고 그 ID를 돌려받습니다.

    XADD orders * type created order 1182 total 49.00
  2. 02

    두 그룹, 하나의 스트림

    청구와 배송은 각자 그룹이 있으며, 둘 다 이벤트를 받습니다.

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    소비

    청구 인스턴스는 무언가 도착할 때까지 대기하며 그룹의 새 메시지를 읽습니다.

    XREADGROUP GROUP billing billing-1 COUNT 10 BLOCK 5000 STREAMS orders >
  4. 04

    확인 응답

    청구서가 생성되면 청구 서비스가 확인 응답하고, 메시지는 대기 목록에서 빠집니다.

    XACK orders billing 1790985600123-0
  5. 05

    충돌에서 복구

    배송 인스턴스가 메시지를 쥔 채 죽었습니다. 60초 동안 유휴 상태가 지나면 정상 인스턴스가 가져갑니다.

    XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25
적용 분야

실제 시나리오

주문 파이프라인

주문이 청구, 배송, 분석으로 흘러가며, 각각 같은 스트림을 자기 속도로 읽습니다.

감사 및 활동 피드

사용자 행동이 스트림에 추가되고, 기록이 필요한 어떤 서비스든 이를 재생합니다.

IoT 수집

기기 메시지가 스트림에 버퍼링되고, 부하에 따라 확장되는 워커 그룹이 처리합니다.

내장 기능

제공되는 기능

추가 전용 로그

항목은 시간순 ID를 받으며, 길이나 기간 기준으로 잘라낼 수 있습니다.

XADDXTRIM

컨슈머 그룹

각 그룹이 모든 메시지를 받고, 멤버 간에 작업을 나눕니다.

XGROUPXREADGROUP

확인 응답

메시지는 확인 응답할 때까지 대기 상태로 남습니다.

XACKXPENDING

자동 복구

너무 오래 유휴 상태인 메시지는 다른 컨슈머가 가져갑니다.

XAUTOCLAIMXCLAIM

자주 묻는 질문

이전 이벤트를 재생할 수 있습니까?

예. XRANGE는 ID로 스트림의 어느 부분이든 읽으며, 새 컨슈머 그룹은 처음부터 시작할 수 있습니다.

스트림이 끝없이 커지는 것을 어떻게 막습니까?

XTRIM을 사용하거나 XADD의 MAXLEN 또는 MINID 옵션으로 잘라냅니다.

XADD로 중복 이벤트를 피할 수 있습니까?

XADD는 멱등 생산자 ID(IDMP)를 지원하므로 재시도한 게시가 두 번째 항목을 만들지 않습니다. XADD 레퍼런스를 참고하십시오.

관련 사용 사례

직접 워크로드로 사용해 보십시오

HotKV는 Redis 프로토콜을 사용하므로 기존 클라이언트를 연결해 같은 명령을 그대로 실행할 수 있습니다.