Является ли CEP тем, что мне нужно (состояние системы и воспроизведение событий) - PullRequest
4 голосов
/ 14 февраля 2011

Я ищу двигатель CEP, но я не знаю, соответствует ли какой-либо двигатель моим требованиям. Моя система должна обрабатывать несколько потоков данных о событиях и генерировать сложные события, и это именно то, что идеально подходит для любого механизма CEP (ESPER, Drools).

Я храню все необработанные события в базе данных (это не часть CEP, но я делаю это) и использую правила (или непрерывные запросы или что-то в этом роде) для генерации пользовательских действий над сложными событиями. Но некоторые из моих правил зависят от событий в прошлом. Например: у меня может быть событие отправки датчика каждый раз, когда мой супруг приходит или уходит из дома, и если моя машина и машина моей модной женщины находятся рядом с домом, я получаю SMS «Опасно».

Проблема в том, что при перезапуске службы обработки событий я теряю всю информацию о состоянии системы (моя жена дома?), И для ее восстановления мне нужно воспроизвести события в течение неизвестного периода времени. Состояние системы может зависеть не только от необработанных событий, но и от сложных событий.

Та же проблема возникает, когда мне нужен отчет о сложных событиях в прошлом. У меня есть необработанные данные о событиях, хранящиеся в базе данных, и я могу сгенерировать эти сложные события, воспроизводя необработанные события, но я не знаю, для какого именно периода мне нужно их воспроизвести.

В то же время ясно, что для большинства правил можно автоматически найти количество событий, которые должны быть обработаны из прошлого (или период времени для загрузки событий, которые должны быть обработаны), чтобы восстановить состояние системы. Если данное действие зависит от присутствия моей жены дома, система CEP должна запросить последнее изменение статуса. Если запрашивается отчет о сложных событиях, а комплексное событие зависит от средней цены за предыдущий период, все события изменения цены за этот период должны быть воспроизведены. И так далее ...

Если я что-то упустил?

Ответы [ 3 ]

3 голосов
/ 01 апреля 2011

Сервер RuleCore CEP может решить ваши проблемы, если я правильно помню. Он не теряет состояние, если вы перезапустите его, и он содержит виртуальные логические часы, так что вы можете воспроизводить события, используя любое понятие времени.

0 голосов
/ 12 июня 2012

Как уже упоминали предыдущие люди, я не думаю, что ваша проблема на самом деле связана с двигателем, а скорее с вариантом использования.Все знакомые мне движки, включая Drools Fusion и Esper, могут объединять входящие события с историческими данными и / или данными состояния, запрашиваемыми по запросу из внешнего источника (например, базы данных).Мне кажется, что вам нужно сделать это постоянное состояние (или «контрольные точки временной метки»), когда происходит соответствующее изменение, и перезагружать состояние при перезапусках вместо воспроизведения событий для неизвестного периода времени.

В качестве альтернативы, если вы используете Drools, вы можете проверить существующие правила (своего рода отражение ваших правил / запросов), чтобы выяснить, какие типы событий нужны вашим правилам, и отследить свой журнал событий до момента, когда все требованиявстречаются и загружают / воспроизводят ваши события оттуда, используя часы сеанса.

Наконец, вы можете использовать кластер для уменьшения перезапусков, но это не решит проблему, которую вы описываете.

Надеюсьэто помогает.

0 голосов
/ 23 февраля 2011

Я не уверен, что ваш вопрос заключается в том, предлагают ли текущие продукты CEP объединение исторических данных с живыми событиями, но если это то, что вам нужно, Esper позволяет извлекать данные из источников JDBC (которые связывают ваши исторические данные с вашими живыми событиями). ) и отразите их в своих заявлениях EPL. Я полагаю, вы уже проверили веб-сайт Esper, если нет, вы увидите, что у Esper есть отличная документация с множеством примеров поваренных книг

Но даже если вы смоделируете свои исторические события после ваших живых событий, это не решит вашу проблему с выбором правильного периода, и, как вы писали, этот период зависит от варианта использования.

...