Dữ liệu lõiCông việc nền

Truyền sự kiện với nhóm consumer

Stream sự kiện chỉ ghi nối thêm với nhóm consumer, xác nhận và tự động khôi phục các thông điệp mà một consumer bị sập để lại.

nhật ký chỉ ghi nối thêm
Bền vững
nhóm consumer cho mỗi stream
N
thông điệp bị mất khi sập
0
Bước 1 trên 5
Phát hành một sự kiện

Dịch vụ đơn hàng thêm một sự kiện và nhận lại id của nó.

Phiên ví dụplaying
# Phát hành một sự kiện
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

Một hướng dẫn minh họa động với các lệnh HotKV thật và phản hồi ví dụ. Nhấn vào bất kỳ bước nào để nhảy tới đó. Lệnh và phản hồi giữ nguyên bằng tiếng Anh, đúng như bạn gõ và thấy trong HotKV.

Vấn đề

Các dịch vụ phản ứng với sự kiện cần nhiều hơn một hàng đợi. Nhiều consumer độc lập muốn cùng các sự kiện, mỗi nhóm consumer cần chia công việc giữa các instance, và khi một instance chết khi đang giữ thông điệp thì ai đó phải nhận ra và tiếp quản.

HotKV xử lý như thế nào

Một stream là một nhật ký chỉ ghi nối thêm. Mỗi nhóm consumer đọc nó độc lập, giao mỗi thông điệp cho một thành viên của nhóm và giữ nó ở trạng thái chờ cho đến khi thành viên xác nhận. XAUTOCLAIM giao các thông điệp đã chờ quá lâu cho một consumer khỏe mạnh.

Từng bước một

Điều gì xảy ra, từng lệnh một

  1. 01

    Phát hành một sự kiện

    Dịch vụ đơn hàng thêm một sự kiện và nhận lại id của nó.

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

    Hai nhóm, một stream

    Thanh toán và vận chuyển mỗi bên có nhóm riêng và mỗi bên đều nhận được sự kiện.

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    Tiêu thụ

    Một instance thanh toán đọc các thông điệp mới cho nhóm của nó, chặn cho đến khi có gì đó đến.

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

    Xác nhận

    Khi hóa đơn được tạo, thanh toán xác nhận và thông điệp rời danh sách chờ của nó.

    XACK orders billing 1790985600123-0
  5. 05

    Khôi phục sau sự cố

    Một instance vận chuyển chết khi đang giữ thông điệp. Sau 60 giây nhàn rỗi chúng được một instance khỏe mạnh nhận.

    XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25
Phù hợp ở đâu

Các tình huống thực tế

Pipeline đơn hàng

Đơn hàng chảy tới thanh toán, vận chuyển và phân tích, mỗi bên đọc cùng một stream theo nhịp của riêng mình.

Nguồn kiểm toán và hoạt động

Hành động của người dùng được thêm vào một stream và được phát lại bởi bất kỳ dịch vụ nào cần lịch sử.

Nạp dữ liệu IoT

Thông điệp từ thiết bị được đệm trong stream và được xử lý bởi một nhóm worker mở rộng theo tải.

Tích hợp sẵn

Bạn nhận được gì

Nhật ký chỉ ghi nối thêm

Các mục có id theo thứ tự thời gian và có thể được cắt bớt theo độ dài hoặc tuổi.

XADDXTRIM

Nhóm consumer

Mỗi nhóm nhận mọi thông điệp, và chia công việc giữa các thành viên của nó.

XGROUPXREADGROUP

Xác nhận

Thông điệp ở trạng thái chờ cho đến khi được xác nhận.

XACKXPENDING

Khôi phục tự động

Thông điệp nhàn rỗi quá lâu được một consumer khác nhận.

XAUTOCLAIMXCLAIM

Câu hỏi thường gặp

Tôi có thể phát lại sự kiện cũ không?

Có. XRANGE đọc bất kỳ phần nào của stream theo id, và một nhóm consumer mới có thể bắt đầu từ đầu.

Làm sao ngăn một stream lớn mãi?

Cắt bớt nó bằng XTRIM hoặc bằng tùy chọn MAXLEN hay MINID của XADD.

XADD có thể tránh sự kiện trùng lặp không?

XADD hỗ trợ id producer bất biến (IDMP), nên một lần phát hành được thử lại không tạo mục thứ hai. Xem tham chiếu XADD.

Trường hợp sử dụng liên quan

Thử trên khối lượng công việc của chính bạn

HotKV nói giao thức Redis, nên bạn có thể trỏ một client hiện có tới nó và chạy chính những lệnh này.