【发布时间】:2011-05-08 22:57:24
【问题描述】:
我一直在研究实现 BAM 应用程序的工具和框架。基本要求是:
- 与不同的接口 申请获得业务 状态/活动。初始提要 将是 JMS 提供程序、Web 服务、FTP、 和 JMX。
- 将尽可能接近实时。
- 每天需要以 2000 条/秒的速度处理 20+ 百万条消息(通过 ActiveMQ 或 WebsphereMQ 等 JMS 提供程序以 XML 形式发送的消息)。
- 在违反 KPI 时生成警报(警告和严重级别)
其他要考虑的事情是我们的小公司有一个 Mulesoft EE 许可证、一个公司应用程序堆栈(osgi 与 Tomcat、ActiveMQ、Drools 等捆绑。)
因此,在我尝试 POC 之前,我仅通过研究考虑的初步草案方法类似于:
使用 Mule 作为 ESB 与各种应用程序集成,然后使用其 SEDA 服务来处理事件并将其暂存到 Drools 引擎以处理与这些事件相关的规则。
我不太确定这个过程是否是这些工具的设计方式,或者是否有更好更雄辩的方式来处理这个问题。还有一些其他悬而未决的问题:
- 如何向用户显示事件和状态(警告、kpi 违规等)的聚合。 GWT 集成?是否应该将事件放入内存数据库中进行查询和显示?
- 就物理架构而言,我正在考虑在两台服务器上的集群 tomcat 实例中运行 mule,并在同一台服务器上使用 drools 引擎?数据库(用于历史存储)在自己的服务器上。
- 我不限于上面的工具,我也在看 Esper,Apache Camel
- 这种方法是否矫枉过正?可以将更简单直接的 webapp 与 RDBMS 管理状态一起使用吗?我认为实时和事件数量要求会阻止这种情况发生。
如果有任何帮助可以帮助我完成这里的初始策略,或者是否有人实施了具有类似要求的解决方案并愿意分享,我们将不胜感激。谢谢!
【问题讨论】:
-
由于数据量大,我会考虑实时聚合以避免存储所有输入事件。满足您的要求的持久存储将非常昂贵,并且内存存储的大小有限。
标签: xml architecture drools esb mule