需要帮助为业务活动监控 (BAM) 应用程序构建 POC
我一直在研究实现 BAM 应用程序的工具和框架。基本要求是:
- 与不同的接口 申请以获得业务 状态/活动。初始饲料 将是 JMS 提供商、Web 服务、FTP、 和 JMX。
- 将尽可能接近实时。
- 每天需要处理 20 多百万条消息,突发速度为 2000 条/秒(通过 JMS 提供程序(如 activeMQ 或 WebsphereMQ)采用 XML 格式的消息)。
- 当 KPI 被违反时生成警报(警告和关键级别)。
其他需要考虑的事情是我们的小公司拥有 Mulesoft EE 许可证、公司应用程序堆栈(osgi 与 Tomcat、ActiveMQ、Drools 等捆绑在一起。)
因此,最初的草案方法在尝试 POC 之前,我仅通过研究就想到了这样的事情:
使用 Mule 作为 ESB 来与各种应用程序集成,然后使用其 SEDA 服务来处理事件并将事件暂存到 Drools 引擎来处理关联的规则随着这些事件。
我不太确定这个过程是否是这些工具的设计使用方式,或者是否有更好、更雄辩的方式来处理这个问题。还有一些其他悬而未决的问题:
- 如何向用户显示事件和状态(警告、kpi 违规等)的聚合。 GWT 集成?是否应该将事件放入内存数据库中进行查询和显示?
- 就物理架构而言,我正在考虑在两台服务器上的集群tomcat实例中运行mule,并在同一台服务器上运行drools引擎?数据库(用于历史存储)位于其自己的服务器上。
- 我不仅限于上面的工具,我还关注了 Esper、Apache Camel
- 这种方法是否矫枉过正?可以使用更简单直接的 Web 应用程序来管理状态的 RDBMS 吗?我认为实时性和事件数量的要求会阻止这种情况发生。
任何帮助我将不胜感激,以帮助我完成这里的初始策略,或者是否有人实施了具有类似要求的解决方案并愿意分享。谢谢你!
I have been researching tools and frameworks to implement a BAM application. The basic requirements will be:
- Interface with different
applications to get business
status/activities. Initial feeds
would be JMS provider, Webservices, FTP,
and JMX. - Would be as near real time as possible.
- Would need to process 20+ million messages a day with bursts of 2000/sec (messages as in XML over a JMS provider like activeMQ or WebsphereMQ).
- Generate alerts when KPIs are breached (warning and critical levels)
Other things to consider is our small company has a Mulesoft EE license, a company application stack (osgi bundles with Tomcat, ActiveMQ, Drools, etc..)
So, the initial draft approach I was thinking of from research alone before I try a POC is something like:
Using Mule as an ESB to integrate with the various applications, and then using its SEDA service to process and stage events to the Drools engine to process rules associated with these events.
I am not quite sure if this process is the way these tools were designed to be used, or if there is a better more eloquent way to handle this. Also some other outstanding questions:
- How can aggregation of events and status (warnings, kpi breaches, etc) be displayed to the user. GWT integration? Should the events be put into an in-memory db to be queried and displayed?
- As far as the physical architecture, I was thinking of running the mule in clustered tomcat instances across two servers with the drools engines on the same servers? The database (for history storage) on its own servers.
- I am not limited to the tools above, I was also looking at Esper, Apache Camel
- Is this approach overkill? Can a more simple straight-forward webapp be used with RDBMS managing state? I figured the real-time and number of events requirements would prevent this.
ANY help would be appreciated to help me through an initial strategy here, or is anyone has implemented a solution with similar requirements and would like to share. Thank you!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能需要考虑使用 NoSQL 数据库来存储事件数据,因为
如果您选择走这条路线,那么我建议使用面向文档的数据存储(例如 Mongo DB),因为
是的,您需要像 MQ 这样的异步事件处理机制。
我已经看到 IBM Websphere BAM 服务器使用其事件数据的 XML 表示,并将它们存储在关系数据库(如 DB2)中。但我认为 NoSQL 会是更好的选择。
You might want to consider using NoSQL database for storing event data because of
If you chose to go on this route then I would suggest using document oriented data store like Mongo DB because of
Yes you need asynchronous event processing mechanism like MQ.
I had seen that IBM Websphere BAM server uses XML representation of its event data and they store them in relational DB like DB2. But I think NoSQL would be better choice.