Data intiPekerjaan latar belakang

Streaming Peristiwa dengan Consumer Group

Stream peristiwa append-only dengan consumer group, acknowledgement, dan pemulihan otomatis pesan yang ditinggalkan konsumen yang crash.

log append-only
Tahan lama
consumer group per stream
N
pesan hilang saat crash
0
Langkah 1 dari 5
Terbitkan peristiwa

Layanan pesanan menambahkan peristiwa dan mendapat id-nya kembali.

Sesi contohplaying
# Terbitkan peristiwa
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

Panduan beranimasi dengan perintah HotKV yang sebenarnya dan balasan contoh. Klik langkah mana pun untuk melompat ke sana. Perintah dan balasan tetap dalam bahasa Inggris, persis seperti yang Anda ketik dan lihat di HotKV.

Masalahnya

Layanan yang bereaksi terhadap peristiwa memerlukan lebih dari antrean. Beberapa konsumen independen menginginkan peristiwa yang sama, setiap consumer group perlu berbagi pekerjaan di antara instance, dan ketika sebuah instance mati sambil memegang pesan, seseorang harus menyadarinya dan mengambil alih.

Cara HotKV menanganinya

Stream adalah log append-only. Setiap consumer group membacanya secara independen, mengirim setiap pesan ke satu anggota grup, dan menyimpannya sebagai pending sampai anggota mengonfirmasinya. XAUTOCLAIM menyerahkan pesan yang pending terlalu lama kepada konsumen yang sehat.

Langkah demi langkah

Apa yang terjadi, perintah demi perintah

  1. 01

    Terbitkan peristiwa

    Layanan pesanan menambahkan peristiwa dan mendapat id-nya kembali.

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

    Dua grup, satu stream

    Penagihan dan pengiriman masing-masing memiliki grup sendiri dan masing-masing menerima peristiwa.

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    Konsumsi

    Instance penagihan membaca pesan baru untuk grupnya, memblokir sampai ada yang tiba.

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

    Konfirmasi

    Setelah faktur dibuat, penagihan mengonfirmasi dan pesan keluar dari daftar pending-nya.

    XACK orders billing 1790985600123-0
  5. 05

    Pulih dari crash

    Sebuah instance pengiriman mati sambil memegang pesan. Setelah 60 detik menganggur, pesan diklaim oleh yang sehat.

    XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25
Di mana ini cocok

Skenario dunia nyata

Pipeline pesanan

Pesanan mengalir ke penagihan, pengiriman, dan analitik, masing-masing membaca stream yang sama dengan kecepatannya sendiri.

Feed audit dan aktivitas

Tindakan pengguna ditambahkan ke stream dan diputar ulang oleh layanan mana pun yang memerlukan riwayatnya.

Penyerapan IoT

Pesan perangkat di-buffer di stream dan diproses oleh grup worker yang berskala sesuai beban.

Bawaan

Yang Anda dapatkan

Log append-only

Entri mendapat id berurutan waktu dan dapat dipangkas berdasarkan panjang atau usia.

XADDXTRIM

Consumer group

Setiap grup mendapat setiap pesan, dan membagi pekerjaan di antara anggotanya.

XGROUPXREADGROUP

Acknowledgement

Pesan tetap pending sampai dikonfirmasi.

XACKXPENDING

Pemulihan otomatis

Pesan yang menganggur terlalu lama diklaim oleh konsumen lain.

XAUTOCLAIMXCLAIM

Pertanyaan umum

Bisakah saya memutar ulang peristiwa lama?

Ya. XRANGE membaca bagian mana pun dari stream berdasarkan id, dan consumer group baru dapat mulai dari awal.

Bagaimana menghentikan stream tumbuh selamanya?

Pangkas dengan XTRIM atau dengan opsi MAXLEN atau MINID pada XADD.

Bisakah XADD menghindari peristiwa duplikat?

XADD mendukung id produsen idempoten (IDMP), sehingga penerbitan yang dicoba ulang tidak membuat entri kedua. Lihat referensi XADD.

Kasus penggunaan terkait

Coba pada beban kerja Anda sendiri

HotKV berbicara protokol Redis, jadi Anda dapat mengarahkan klien yang sudah ada ke HotKV dan menjalankan perintah yang sama.