翻譯前言:我在理解複雜事件處理(CEP)方面一直有這樣的困惑--為什麼這種計算模式是有效的,能夠分析得到有用的結果?為什麼它會快?我始終還沒有找到我期望的答案。不像map-reduce模型,google的論文非常清楚的描述了它的場景;或者disruptor框架,原作者清晰地解釋了它為什麼會快。在試圖... ...
翻譯前言:我在理解複雜事件處理(CEP)方面一直有這樣的困惑--為什麼這種計算模式是有效的,能夠分析得到有用的結果?為什麼它會快?我始終還沒有找到我期望的答案。不像map-reduce模型,google的論文非常清楚的描述了它的場景;或者disruptor框架,原作者清晰地解釋了它為什麼會快。在試圖理解CEP的過程中,我準備翻譯一些我認為有啟發性的文章,希望也對大家有用。這篇文章的原文《An Overview of Complex Event Processing》非常長,我將把它分成幾篇來翻譯。
劉斌華原創翻譯,轉載請註明出處 http://www.cnblogs.com/Binhua-Liu/p/5325346.html
什麼是事件處理(Event Processing)?
在我們周圍的世界,每小時每分鐘每一秒,人的大腦會受到或順序發生的,或同時發生的,無窮無盡的事情的轟炸,這些事件立即看來是也許是完全沒有意義的,甚至有些古怪的,但隨著越來越多的事情發生,我們可以開始瞭解他們的之間相關性和重要性。
例如,我們聽到遠處的歡呼聲,我們看到氣球在空中飛舞,音樂開始播放,警車和盛裝著的拖著木偶的卡車的出現,坐在車上揮舞著人們,緊隨其後的救護車,和今天的日期是7月4日。單獨來看,這些事件可能意味著任何事情,但是在一起呢?這很可能是一次獨立日狂歡巡游!
我們的大腦可以很容易地在一眨眼的功夫確定這一事實 --- 雖然不是過於簡單。用計算方式來定義,我們可以描述一個“巡游事件模式”,如下所示:
一輛(或多輛)警車+後面的/後面的/毗鄰的+一輛(或多輛)狂歡卡車+後面的/後面的/毗鄰的+一個(或多個)揮動的人++後面的/後面的/毗鄰的+一輛(或多輛)應急車輛+在哪裡可以聽到音樂+今天的日期是7月4日
你的大腦並不局限這樣的工作模式:發送信息,等待,直到有一個回應,然後進行一系列固定步驟的操作,以完成某項工作。正如這個例子中,它能夠把正在發生的一系列事件,和相關的外部因素比如今天的日期,都關聯起來,並理解當前發生的是“巡游事件模式”。
所以,當你瞭解更多關於複雜事件處理(Complex Event Processing)-- 我們專註於的這種技術 -- 你將知道它如何利用從不同地方獲取的,連續的,流動的,永無止境的信息,來立即地理解正在發生的事情,以及在很不久的將來要發生的事情。這又經常被稱為實時態勢感知 (Real-Time Situation Awareness)。
這與商業計算的關聯
如今在電腦世界的問題是數據的增殖。信息從許多不同的系統,以巨大的數量,在不同的時間,以不同的速度抵達,其中一些信息對某些系統,人或進程現在就很重要,而另外一些可以先存儲供以後再恢復和決策。為什麼我們現在會面臨數據增殖的問題呢?
這裡涉及許多問題,但這裡僅列出少數幾個主要的:
-
計算能力的成本和複雜環境感測器設備的成本已經變得不那麼昂貴
-
聯網能力的增加,並且變得更加智能
-
很多不同的功能計算模塊(財務系統,生產系統,銷售系統,等等)被分解,重寫,從而滿足來越多的業務需求。
-
新的電腦解決方案要求超越企業本身而擴散到合作伙伴和客戶,這樣就把越來越多的數據來源和其他輸入帶入到系統中。
-
像面向服務的架構(SOA)這樣的計算技術架構變得越來越成功,帶來了更加複雜的可重用的生態系統。
-
大數據(Big Data)爆炸,這個詞現在廣泛用於描述那些大批量的,高速的,各種各樣的非結構化的,來源於社交網站、手機和許多其他源頭的信息。
-
企業經營上對IT團隊不斷增長的期望 -- 要求他們對市場的情況進行更有效地、實時地響應
我們進步和這些複雜的系統導致往電腦應用系統中“傾倒”的信息越來越龐大,我們已經達到一個“臨界點”-- 傳統的點至點式的,或者請求- 應答式的解決方案變得失效,難以維護和不可擴展。
一個公司的經營可能被瞬間發生的事件所影響,這些事件不僅來之於內部的,可以理解的,“舒適”的小世界里,而可能是來自於外部的事件,如“物聯網”-- 實時感測器裝置可以測量和報告很多的情況,包括“溫度突然升高導致的食物儲存設施的突發的危險”或“由全球定位系統位置跟蹤的海運集裝箱從被感測器檢測到被未經授權地開箱”。
對一家公司經營的直接影響也可能來自於日益強大的社交媒體對全球商業環境帶來的改變,例如Twitter,即時通訊應用等。數以百萬計的人在同一時間可以同時對某個新產品給予差評,強調某個迫切需要修改的產品設計。這勢必會影響利潤,甚至顯著影響企業的價值。因此,現在的公司不可避免地受到正面或負面事件的影響而疲於奔命。
在過去,可能追溯到15年前,商業應用不得屈就於那些當時可用的計算技術所採用的那些固定的方法,結構和介面(比如關係資料庫),信息必須先被靜態的插入和保存,只有在此之後用戶才可以再分析和響應。傳統的JEE(Java Enterprise Edition)應用伺服器中普遍的實現 -- 期待客戶端應用程式發送的一個初始的請求,然後大多數情況下大量的代碼邏輯只是用於從頭到尾地處理這個請求,然後才能返回給客戶端響應。這些技術正在並將繼續提供那些更多是基於批處理的,實時性較差的解決方案。而新的,更低時延的,更快的,基於記憶體的中間件產品現已上市。
基於事件驅動架構(Event-Driven)的系統本質上是更敏捷的,更好地被“武裝”起來來處理這些類型的情況 -- 處理那些橫跨整個業務基礎設施和眾多業務部門“孤島”(如財務,生產和銷售等部門),需要被立即解釋和處理的事件。這些類型的系統,一旦當它們探測到外部和商業環境的改變,就能聯繫上下文並執行策略。而不是預定義一些每天晚上執行的任務,甚至是那些每次都要有人手動運行的任務來處理。
作為與大數據相關的,在未來數年將顯著增長的問題 -- 即在信息的採集、管理並能夠在可接受的時間範圍進行處理方面,事件驅動技術(特別是複雜事件處理),可以為更高級的“智能”和決策提供快速的,更接近“事件發生時間點”的,原始的數據流。
因此,事件驅動技術的好處是在應對數據增殖方面,把傳統的數據處理方法,改為把信息描述為實時的事件(可以是在任何地方發生的事情),提供了聰明地分解事件、路由事件、過濾事件、關聯事件的能力,因此在大多數情況下,分散的事件可以進化為全面的,穩固的,容易理解的商業事件,使企業能相對更好地觀察,控制和適應瞬息萬變的情況。
待續。。。