Наша команда пытается создать систему профилактического обслуживания, задачей которой является просмотр набора событий и прогнозирование того, отражают ли эти события набор известных аномалий или нет.
Мы находимся на этапе проектирования, и текущий дизайн системы выглядит следующим образом:
- События могут происходить на нескольких источниках системы IoT (например, на облачной платформе, пограничных устройствах или любых промежуточных платформах).
- События отправляются источниками данных в систему очередей сообщений (в настоящее время мы выбрали Apache Kafka).
- У каждого источника данных есть своя очередь (тема Kafka).
- Из очередей данные потребляются несколькими механизмами логического вывода (которые на самом деле являются нейронными сетями).
- В зависимости от набора функций механизм вывода будет подписываться на несколько тем Kafka и передавать данные из этих тем для непрерывного вывода вывода.
- Общая архитектура следует принципу единой ответственности, что означает, что каждый компонент будет отделен друг от друга и будет работать внутри отдельного контейнера Docker.
Проблема:
Чтобы классифицировать набор событий как аномалию, события должны произойти в одном и том же временном окне. например скажем, есть три источника данных, которые передают соответствующие события в темы Kafka, но по какой-то причине данные не синхронизируются. Таким образом, один из механизмов вывода извлекает последние записи из каждой из тем kafka, но соответствующие события в извлеченных данных не принадлежат одному и тому же временному окну (скажем, 1 часу). Это приведет к неверным прогнозам из-за несинхронизированных данных.
Вопрос
Нам нужно выяснить, как мы можем убедиться, что данные из всех трех источников передаются по порядку, чтобы, когда механизм логического вывода запрашивает записи (скажем, последние 100 записей) из нескольких тем какфа, соответствующие записи в каждой теме принадлежали то же временное окно?