Базові даніФонова робота

Потокова обробка подій із групами споживачів

Потоки подій лише для додавання з групами споживачів, підтвердженнями та автоматичним відновленням повідомлень, які залишив споживач, що впав.

журнал лише для додавання
Надійний
груп споживачів на потік
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 або опцією MAXLEN чи MINID команди XADD.

Чи може XADD уникати дублювання подій?

XADD підтримує ідемпотентні id виробників (IDMP), тож повторна публікація не створює другого запису. Дивіться довідник XADD.

Пов'язані сценарії використання

Спробуйте на власному навантаженні

HotKV розмовляє протоколом Redis, тож ви можете направити на нього наявний клієнт і виконувати ті самі команди.