2011-05-08 53 views
2

我一直在研究實現BAM應用程序的工具和框架。基本要求是:需要幫助爲業務活動監視(BAM)應用程序設計POC

  1. 接口不同 應用程序以獲取業務 狀態/活動。初始提要 將是JMS提供者,Webservices,FTP, 和JMX。
  2. 儘可能接近實時。
  3. 需要每天處理2000多萬條消息,並以2000 /秒的突發速率(通過JMS提供程序(如activeMQ或WebsphereMQ)以XML格式傳遞消息)。
  4. 生成警報時,關鍵績效指標被突破(警告和嚴重級別)

其他需要考慮的事情是我們的小公司有Mulesoft EE許可證,公司應用程序堆棧(OSGi包和Tomcat,ActiveMQ的,囈等..)

所以,我從研究獨自思考之前,我嘗試POC初步做法草案是一樣的東西:

使用騾子作爲ESB與各種應用程序集成,然後利用其SEDA服務來處理和將事件分配給Drools引擎以處理規則assoc與這些事件有關。

我不太確定這個過程是否是這些工具被設計使用的方式,或者是否有更好的更有說服力的方式來處理這個問題。還有一些其他未解決的問題:

  • 如何向用戶顯示事件和狀態(警告,kpi違規等)的聚合。 GWT整合?應該將這些事件放入內存數據庫中進行查詢和顯示?
  • 就物理架構而言,我正考慮在兩臺服務器上使用drools引擎在同一臺服務器上運行羣集tomcat實例中的mule?數據庫(用於歷史存儲)在其自己的服務器上。
  • 我不僅限於上述工具,我還在尋找Esper,Apache Camel
  • 這種方法是否過分矯枉過正? RDBMS管理狀態可以使用更簡單的直接webapp嗎?我認爲實時和事件需求的數量會阻止這種情況發生。

任何幫助將不勝感激,以幫助我通過這裏的初始策略,或者是任何人已經實現了一個類似的需求,並希望分享的解決方案。謝謝!

+0

由於數據量大,我會考慮實時聚合以避免存儲所有輸入事件。爲您的需求提供持久存儲將非常昂貴,並且內存存儲空間有限。 – 2011-05-10 12:01:35

回答

0

你可能要考慮使用的NoSQL數據庫,用於存儲,因爲

  1. 大量數據的事件數據
  2. 每秒
  3. 寫事件的
  4. 需要的速度,需要捕捉事件不同的屬性靈活的模式特定於KPI定義的數據,因爲KPI基於您的應用程序數據模型。

如果你選擇走這條路的話,我會建議使用面向文檔的數據存儲像蒙戈DB因爲

  1. 需要有效的讀取來計算定義KPI值。
  2. 需要非常豐富的數據表示,主要是分層捕獲事件數據。
  3. 您可以使用像lucene這樣的輔助索引機制來提高數據庫提供的開箱即用性。這些索引可以針對基於應用程序數據模型定義的KPI。

是的,你需要像MQ這樣的異步事件處理機制。

我已經看到IBM Websphere BAM服務器使用其事件數據的XML表示形式,並將它們存儲在像DB2這樣的關係數據庫中。但我認爲NoSQL會是更好的選擇。