Вернуться к кейсам

Rust / Rule Engine / API

Сервис обработки событий в реальном времени

Backend-сервис на Rust с Rule Engine, API управления правилами, hot reload без остановки системы, историей срабатываний и горизонтальным масштабированием.

RustRule EngineReal-timeAPI
Real-timeобработка событий без задержек
Hot reloadправила без перезапуска
Rustпроизводительный backend
Сервис обработки событий в реальном времени

Задача

Нужно было разработать сервис, который принимает события от клиентов, проверяет их по набору бизнес-правил, фиксирует историю срабатываний и продолжает работать при изменении правил. Ключевое требование — правила должны создаваться, обновляться и применяться без остановки системы.

Такой сценарий важен для антифрода, мониторинга, алертов, бизнес-автоматизации и real-time аналитики, где задержки, ручной перезапуск и потеря истории недопустимы.

Решение

Мы спроектировали Rule Engine как backend-сервис с двумя частями: движок обработки событий и клиентский сервис для управления правилами. Движок компилирует правила в быстрые исполняемые проверки, держит актуальный набор правил в памяти и обрабатывает события с минимальной задержкой.

Клиентский сервис предоставляет API для создания, изменения, удаления и просмотра правил, а также для получения результатов обработки. При изменении правило валидируется, сохраняется, компилируется и загружается в движок без перезапуска.

Сценарий работы

  • пользователь создает правило через API;
  • сервис валидирует правило и сохраняет его в хранилище;
  • правило компилируется в исполняемую форму и загружается в движок;
  • клиент отправляет событие в сервис;
  • движок проверяет событие по активным правилам;
  • при совпадении условий сервис возвращает результат и записывает срабатывание в историю.

Архитектура

  • API слой принимает запросы от клиентов;
  • сервис управления правилами отвечает за CRUD-операции;
  • движок выполнения держит правила в памяти и применяет их к событиям;
  • хранилище сохраняет правила, версии и историю срабатываний;
  • кэш и pub/sub быстро распространяют изменения между инстансами;
  • слой масштабирования позволяет запускать несколько реплик за балансировщиком.

Ключевые возможности

  • создание, обновление и удаление правил через API;
  • поддержка сложных логических условий;
  • hot reload правил без перезапуска;
  • обработка событий в реальном времени;
  • сохранение истории срабатываний;
  • горизонтальное масштабирование;
  • batch-режим для массовой обработки событий;
  • метрики, логирование и health-check endpoints.

Техническая основа

  • Rust и Tokio для асинхронной обработки;
  • axum для HTTP API;
  • nom или pest для парсинга правил;
  • serde для сериализации;
  • PostgreSQL для правил, версий и истории;
  • Redis для кэша, pub/sub и синхронизации;
  • Arc, RwLock и DashMap для конкурентного доступа;
  • Prometheus и tracing для наблюдаемости.

Результат

Получился production-ready сервис, который быстро обрабатывает события, не требует перезапуска при изменении правил и масштабируется по нагрузке. Команда получает управляемый Rule Engine, где бизнес-логика меняется через API, а история срабатываний остается доступной для анализа.

Такой сервис подходит для антифрода, алертов, мониторинга инфраструктуры, бизнес-автоматизации, скоринга, real-time аналитики и любых сценариев, где решение нужно принимать сразу после поступления события.

Еще кейсы

Другие проекты Wcoders

Посмотрите другие проекты, чтобы оценить разные форматы задач и решений.