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
Посмотрите другие проекты, чтобы оценить разные форматы задач и решений.
Платформа AI-агентов для автоматизации бизнес-процессов
AI-платформа для автоматизации заявок, документов, онбординга, отчётности и интеграций через автономных агентов и мультиагентные сценарии.
Открыть кейс
Telegram-бот для замены лица на фото и видео с помощью ИИ
Telegram-бот, который принимает фото или видео, запускает AI-обработку, показывает статус очереди и возвращает пользователю готовый результат прямо в чат.
Открыть кейс
Платформа для отслеживания транспорта и управления доставкой
Платформа real-time трекинга транспорта с мобильным приложением, диспетчерской панелью, GPS-потоком, маршрутами, ETA и интеграциями.
Открыть кейс