简体   繁体   English

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

[英]Need help architecting a POC for a Business Activity Monitoring (BAM) application

I have been researching tools and frameworks to implement a BAM application. 我一直在研究用于实施BAM应用程序的工具和框架。 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. 最初的提要是JMS提供程序,Webservices,FTP和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). 每天将需要处理20+百万条消息,且突发速度为2000 / sec(通过ActiveMQ或WebsphereMQ之类的JMS提供程序以XML形式发送的消息)。
  4. Generate alerts when KPIs are breached (warning and critical levels) 违反KPI时生成警报(警告级别和严重级别)

Other things to consider is our small company has a Mulesoft EE license, a company application stack (osgi bundles with Tomcat, ActiveMQ, Drools, etc..) 需要考虑的其他事项是我们的小型公司拥有Mulesoft EE许可证,公司应用程序堆栈(与Tomcat,ActiveMQ,Drools等捆绑的OSgi)。

So, the initial draft approach I was thinking of from research alone before I try a POC is something like: 因此,在尝试POC之前,我一直只是从研究中想到的初始草案方法是:

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. 使用Mule作为ESB与各种应用程序集成,然后使用其SEDA服务处理事件并将事件上演到Drools引擎以处理与这些事件相关的规则。

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. 如何将事件和状态(警告,KPI违规等)的汇总显示给用户。 GWT integration? GWT整合? 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? 至于物理体系结构,我正在考虑在两台服务器上的集群tomcat实例中运行the子,而在同一台服务器上使用Drools引擎? 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 我不仅限于上述工具,我还在寻找Esper,Apache Camel
  • Is this approach overkill? 这种方法会导致过度杀伤力吗? Can a more simple straight-forward webapp be used with RDBMS managing state? 是否可以将更简单的简单Web应用程序与RDBMS管理状态一起使用? 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! 谢谢!

You might want to consider using NoSQL database for storing event data because of 由于以下原因,您可能要考虑使用NoSQL数据库存储事件数据:

  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. 您需要灵活的模型来捕获特定于KPI定义的事件数据中的不同属性,因为KPI基于您的应用程序数据模型。

If you chose to go on this route then I would suggest using document oriented data store like Mongo DB because of 如果您选择沿这条路线走,那么我建议您使用像Mongo DB这样的面向文档的数据存储,因为

  1. Requires efficient reads to calculates value for defined KPI. 需要高效读取才能为定义的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. 您可以使用诸如Lucene之类的辅助索引机制来提高DB提供的开箱即用的读取性能。 These indexes can be specific to defined KPI based on App's data model. 这些索引可以特定于基于App数据模型的已定义KPI。

Yes you need asynchronous event processing mechanism like MQ. 是的,您需要异步事件处理机制,例如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. 我已经看到IBM Websphere BAM服务器使用其事件数据的XML表示并将它们存储在关系数据库(如DB2)中。 But I think NoSQL would be better choice. 但是我认为NoSQL是更好的选择。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM