需要帮助为业务活动监控 (BAM) 应用程序构建 POC

发布于 2024-11-05 15:55:15 字数 911 浏览 5 评论 0原文

我一直在研究实现 BAM 应用程序的工具和框架。基本要求是:

  1. 与不同的接口 申请以获得业务 状态/活动。初始饲料 将是 JMS 提供商、Web 服务、FTP、 和 JMX。
  2. 将尽可能接近实时。
  3. 每天需要处理 20 多百万条消息,突发速度为 2000 条/秒(通过 JMS 提供程序(如 activeMQ 或 WebsphereMQ)采用 XML 格式的消息)。
  4. 当 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:

  1. Interface with different
    applications to get business
    status/activities. Initial feeds
    would be JMS provider, Webservices, FTP,
    and JMX.
  2. Would be as near real time as possible.
  3. 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).
  4. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉风有信 2024-11-12 15:55:15

您可能需要考虑使用 NoSQL 数据库来存储事件数据,因为

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

如果您选择走这条路线,那么我建议使用面向文档的数据存储(例如 Mongo DB),因为

  1. 需要高效读取来计算定义的 KPI 的值。
  2. 需要非常丰富的数据表示,主要是用于捕获事件数据的分层数据表示。
  3. 您可以使用 lucene 等二级索引机制来提高 DB 提供的开箱即用的读取性能。这些指标可以特定于基于App的数据模型定义的KPI。

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

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

You might want to consider using NoSQL database for storing event data because of

  1. lots of data
  2. Required speed of writing event per second
  3. You need flexible model for capturing different attributes in event data specific to KPI definitions as KPIs are based on your app data model.

If you chose to go on this route then I would suggest using document oriented data store like Mongo DB because of

  1. Requires efficient reads to calculates value for defined KPI.
  2. Requires very rich data representation mainly hierarchical one for capturing event data.
  3. You can employ secondary indexing mechanism like lucene to improve out of the box read performance provided by DB. These indexes can be specific to defined KPI based on App's data model.

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文