2011-05-08 51 views
2

我一直在研究实现BAM应用程序的工具和框架。基本要求是:需要帮助为业务活动监视(BAM)应用程序设计POC

  1. 接口不同 应用程序以获取业务 状态/活动。初始提要 将是JMS提供者,Webservices,FTP, 和JMX。
  2. 尽可能接近实时。
  3. 需要每天处理2000多万条消息,并以2000 /秒的突发速率(通过JMS提供程序(如activeMQ或WebsphereMQ)以XML格式传递消息)。
  4. 生成警报时,关键绩效指标被突破(警告和严重级别)

其他需要考虑的事情是我们的小公司有Mulesoft EE许可证,公司应用程序堆栈(OSGi包和Tomcat,ActiveMQ的,呓等..)

所以,我从研究独自思考之前,我尝试POC初步做法草案是一样的东西:

使用骡子作为ESB与各种应用程序集成,然后利用其SEDA服务来处理和将事件分配给Drools引擎以处理规则assoc与这些事件有关。

我不太确定这个过程是否是这些工具被设计使用的方式,或者是否有更好的更有说服力的方式来处理这个问题。还有一些其他未解决的问题:

  • 如何向用户显示事件和状态(警告,kpi违规等)的聚合。 GWT整合?应该将这些事件放入内存数据库中进行查询和显示?
  • 就物理架构而言,我正考虑在两台服务器上使用drools引擎在同一台服务器上运行群集tomcat实例中的mule?数据库(用于历史存储)在其自己的服务器上。
  • 我不仅限于上述工具,我还在寻找Esper,Apache Camel
  • 这种方法是否过分矫枉过正? RDBMS管理状态可以使用更简单的直接webapp吗?我认为实时和事件需求的数量会阻止这种情况发生。

任何帮助将不胜感激,以帮助我通过这里的初始策略,或者是任何人已经实现了一个类似的需求,并希望分享的解决方案。谢谢!

+0

由于数据量大,我会考虑实时聚合以避免存储所有输入事件。为您的需求提供持久存储将非常昂贵,并且内存存储空间有限。 – 2011-05-10 12:01:35

回答

0

你可能要考虑使用的NoSQL数据库,用于存储,因为

  1. 大量数据的事件数据
  2. 每秒
  3. 写事件的
  4. 需要的速度,需要捕捉事件不同的属性灵活的模式特定于KPI定义的数据,因为KPI基于您的应用程序数据模型。

如果你选择走这条路的话,我会建议使用面向文档的数据存储像蒙戈DB因为

  1. 需要有效的读取来计算定义KPI值。
  2. 需要非常丰富的数据表示,主要是分层捕获事件数据。
  3. 您可以使用像lucene这样的辅助索引机制来提高数据库提供的开箱即用性。这些索引可以针对基于应用程序数据模型定义的KPI。

是的,你需要像MQ这样的异步事件处理机制。

我已经看到IBM Websphere BAM服务器使用其事件数据的XML表示形式,并将它们存储在像DB2这样的关系数据库中。但我认为NoSQL会是更好的选择。