Нужна помощь в разработке POC для приложения Business Activity Monitoring (BAM) - PullRequest
2 голосов
/ 09 мая 2011

Я изучал инструменты и структуры для реализации приложения BAM. Основные требования будут:

  1. Интерфейс с различными приложения, чтобы получить бизнес статус / мероприятия. Начальные каналы будет JMS-провайдер, веб-сервисы, FTP, и JMX.
  2. Будет как можно ближе к реальному времени.
  3. Потребуется обрабатывать более 20 миллионов сообщений в день со скоростью 2000 / сек (сообщения, как в XML, через JMS-провайдера, такого как activeMQ или WebsphereMQ).
  4. Генерация оповещений при нарушении KPI (уровень предупреждения и критический уровень)

Другие вещи, которые следует учитывать: наша маленькая компания имеет лицензию Mulesoft EE, стек приложений компании (пакеты osgi с Tomcat, ActiveMQ, Drools и т. Д.)

Итак, первоначальный черновой подход, о котором я думал из одного исследования перед тем, как попробовать POC, выглядит примерно так:

Использование Mule в качестве ESB для интеграции с различными приложениями, а затем использование его службы SEDA для обработки и передачи событий в механизм Drools для обработки правил, связанных с этими событиями.

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

  • Как пользователю может отображаться агрегация событий и состояния (предупреждения, нарушения kpi и т. Д.). Интеграция GWT? Должны ли события быть помещены в базу данных в памяти для запроса и отображения?
  • Что касается физической архитектуры, я думал о запуске мула в кластеризованных экземплярах tomcat на двух серверах с механизмами drools на тех же серверах? База данных (для хранения истории) на собственных серверах.
  • Я не ограничен вышеперечисленными инструментами, я также смотрел на Esper, Apache Camel
  • Этот подход излишний? Можно ли использовать более простое прямое веб-приложение с управляющим состоянием СУБД? Я полагал, что требования в реальном времени и количестве событий предотвратят это.

ЛЮБАЯ помощь была бы признательна, чтобы помочь мне с первоначальной стратегией, или кто-то внедрил решение с аналогичными требованиями и хотел бы поделиться. Спасибо!

1 Ответ

0 голосов
/ 23 марта 2012

Возможно, вы захотите использовать базу данных NoSQL для хранения данных о событиях из-за

  1. большого количества данных
  2. Требуемая скорость записи события в секунду
  3. Вам нужногибкая модель для сбора различных атрибутов в данных событий, относящихся к определениям KPI, поскольку KPI основаны на модели данных вашего приложения.

Если вы выбрали этот путь, я бы предложил использовать хранилище данных, ориентированное на документы, напримерMongo DB из-за

  1. Требуются эффективные операции чтения для вычисления значения для определенного KPI.
  2. Требуется очень богатое представление данных, в основном иерархическое представление для сбора данных о событиях.
  3. Вы можетеиспользовать вторичный механизм индексации, такой как lucene, для повышения производительности чтения из коробки, предоставляемой БД.Эти индексы могут быть специфичными для определенного KPI на основе модели данных приложения.

Да, вам необходим механизм асинхронной обработки событий, такой как MQ.

Я видел, что сервер IBM Websphere BAM использует представление XMLего данных о событиях, и они хранят их в реляционных БД, таких как DB2.Но я думаю, что NoSQL будет лучшим выбором.

...