Rust / Rule Engine / API
Сервис обработки событий в реальном времени
Backend-сервис на Rust с Rule Engine, API управления правилами, hot reload без остановки системы, историей срабатываний и горизонтальным масштабированием.
Задача
Нужно было разработать сервис, который принимает события от клиентов, проверяет их по набору бизнес-правил, фиксирует историю срабатываний и продолжает работать при изменении правил. Ключевое требование — правила должны создаваться, обновляться и применяться без остановки системы.
Такой сценарий важен для антифрода, мониторинга, алертов, бизнес-автоматизации и 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
Посмотрите другие проекты, чтобы оценить разные форматы задач и решений.
Fintech Payment Platform
Backend-система для платежей и антифрода: микросервисы, очереди, ledger, статусы транзакций в реальном времени и аудит всех действий.
Открыть кейс
China Brick
Перенос и редизайн сайта China Brick: статическая HTML-сборка, сохранение URL, SEO, контента, изображений, контактов и мобильной версии.
Открыть кейс
B2B SaaS Dashboard
SaaS-дашборд для B2B-клиентов с real-time обновлениями, API, ролями, отчетами, интеграциями и управляемым клиентским кабинетом.
Открыть кейс