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