我的雲端生活網 - Life+

Thursday, July 9, 2009

分散式系統的複雜事件處理

David C. Luckham 和 Brian Frasca 在 1998 年 Complex Event Processing in Distributed Systems 文章中提出在分散式系統處理複雜事件的方法。分散式系統意味了在許多機器之間有大量的訊息交換。而複雜事件意味了在許多基礎事件之上,要藉由許多額外的知識才能取得的高層次事件,或是抽象事件。

基本層次的訊息、事件系統存在著一些問題。第一是要由網路上許多線路來偵測事件的發生;第二是代表事件發生的訊息量非常大;第三是為了製作事件的產生與偵測,通常在建立系統時將事件模型固定在系統中,使事件的偵測與使用變得比較不彈性。而系統中許多事件的發生可能造成系統的卡死或「當機」;無法準確判斷系統事件的類型,是大問題。為了處理這些問題,他們使用多層次事件觀點來處理事件的抽象化。基本上是將系統的活動分解再分解。

系統事件的層次分解,以生產線為例,可分為下層是通訊層、以及上層是工作流層。通訊層處理基本的通訊工作,包括廣播訊息、分派訊息、接收訊息、控制訊息等等。而生產線工作流層次,則需要若干事件有:產生大量訊息、載入大量訊息、消化大量訊息等等。「載入大量訊息」是一項虛擬事件,是由廣播訊息、分派訊息、接收訊息、和接受訊息等基礎事件組合成的。

在以訊息為本的分散式系統中,對於大量訊息,需要有過濾和映射的功能。過濾是指從儲存的事件中找到符合某個複雜事件組合樣式的一組事件。映射是指把一組事件當做輸入而產生另一些事件當做結果。於是,系統的抽象事件階層由下往上有下列構成:
  1. 分散式系統軟硬體裝置。
  2. 基本事件層。
  3. 過濾事件層:從基本事件層或過濾事件層,取出符合複雜事件樣式的抽象事件。
  4. 映射事件層:從過濾事件層取出符合複雜事件樣式的抽象事件。
實作上需要處理一些項目:
  1. 因果事件。
  2. 事件過濾和映射的演算法。
  3. 由抽象層反推,解決基本層發生的錯誤。
他們的實作,用有向圖表達事件的因果網路,以各種事件為節點、而因果關係為箭頭線。我個人感覺,本文談當事件的過濾和映射處理方面,相當有 partial evaluation 的概念,或許相當適合以函數式語言實作。

No comments:

Blog Archive