Конвейеры заказов
Заказы идут в оплату, доставку и аналитику, каждая читает один и тот же поток в своём темпе.
Потоки событий только для добавления с группами потребителей, подтверждениями и автоматическим восстановлением сообщений, оставленных упавшим потребителем.
Сервис заказов добавляет событие и получает его идентификатор.
Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.
Сервисам, реагирующим на события, нужно больше, чем очередь. Несколько независимых потребителей хотят одни и те же события, каждой группе потребителей нужно делить работу между экземплярами, а когда экземпляр умирает с сообщениями в руках, кто-то должен это заметить и забрать их.
Поток - это журнал только для добавления. Каждая группа потребителей читает его независимо, доставляет каждое сообщение одному участнику группы и держит его в ожидании, пока участник не подтвердит. XAUTOCLAIM передаёт сообщения, слишком долго находившиеся в ожидании, исправному потребителю.
Сервис заказов добавляет событие и получает его идентификатор.
XADD orders * type created order 1182 total 49.00У оплаты и доставки есть своя группа, и каждая получает событие.
XGROUP CREATE orders billing 0 MKSTREAMЭкземпляр оплаты читает новые сообщения для своей группы, блокируясь до поступления.
XREADGROUP GROUP billing billing-1 COUNT 10 BLOCK 5000 STREAMS orders >Когда счёт создан, оплата подтверждает, и сообщение покидает список ожидающих.
XACK orders billing 1790985600123-0Экземпляр доставки умер, держа сообщения. После 60 секунд простоя их забирает исправный.
XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25Заказы идут в оплату, доставку и аналитику, каждая читает один и тот же поток в своём темпе.
Действия пользователей добавляются в поток и воспроизводятся любым сервисом, которому нужна история.
Сообщения устройств буферизуются в потоках и обрабатываются группой воркеров, которая масштабируется с нагрузкой.
Записи получают упорядоченные по времени идентификаторы и могут обрезаться по длине или возрасту.
XADDXTRIMКаждая группа получает каждое сообщение и делит работу между своими участниками.
XGROUPXREADGROUPСообщения остаются в ожидании до подтверждения.
XACKXPENDINGСлишком долго простаивающие сообщения забирает другой потребитель.
XAUTOCLAIMXCLAIMДа. XRANGE читает любую часть потока по идентификатору, а новая группа потребителей может начать с начала.
Обрезайте его через XTRIM или параметры MAXLEN или MINID команды XADD.
XADD поддерживает идемпотентные идентификаторы производителя (IDMP), поэтому повторная публикация не создаёт вторую запись. См. справочник XADD.
HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.