複雜事件處理技術概覽(一)

来源:http://www.cnblogs.com/Binhua-Liu/archive/2016/03/27/5325346.html
-Advertisement-
Play Games

翻譯前言:我在理解複雜事件處理(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日

 

你的大腦並不局限這樣的工作模式:發送信息,等待,直到有一個回應,然後進行一系列固定步驟的操作,以完成某項工作。正如這個例子中,它能夠把正在發生的一系列事件,和相關的外部因素比如今天的日期,都關聯起來,並理解當前發生的是“巡游事件模式”。

image001_thumb2

 

所以,當你瞭解更多關於複雜事件處理(Complex Event Processing)-- 我們專註於的這種技術 -- 你將知道它如何利用從不同地方獲取的,連續的,流動的,永無止境的信息,來立即地理解正在發生的事情,以及在很不久的將來要發生的事情。這又經常被稱為實時態勢感知 (Real-Time Situation Awareness

這與商業計算的關聯

如今在電腦世界的問題是數據的增殖。信息從許多不同的系統,以巨大的數量,在不同的時間,以不同的速度抵達,其中一些信息對某些系統,人或進程現在就很重要,而另外一些可以先存儲供以後再恢復和決策。為什麼我們現在會面臨數據增殖的問題呢?

 

這裡涉及許多問題,但這裡僅列出少數幾個主要的:

  • 計算能力的成本和複雜環境感測器設備的成本已經變得不那麼昂貴

  • 聯網能力的增加,並且變得更加智能

  • 很多不同的功能計算模塊(財務系統,生產系統,銷售系統,等等)被分解,重寫,從而滿足來越多的業務需求。

  • 新的電腦解決方案要求超越企業本身而擴散到合作伙伴和客戶,這樣就把越來越多的數據來源和其他輸入帶入到系統中。

  • 像面向服務的架構(SOA)這樣的計算技術架構變得越來越成功,帶來了更加複雜的可重用的生態系統。

  • 大數據(Big Data)爆炸,這個詞現在廣泛用於描述那些大批量的,高速的,各種各樣的非結構化的,來源於社交網站、手機和許多其他源頭的信息。

  • 企業經營上對IT團隊不斷增長的期望 -- 要求他們對市場的情況進行更有效地、實時地響應

 

我們進步和這些複雜的系統導致往電腦應用系統中“傾倒”的信息越來越龐大,我們已經達到一個“臨界點”-- 傳統的點至點式的,或者請求- 應答式的解決方案變得失效,難以維護和不可擴展。

 

一個公司的經營可能被瞬間發生的事件所影響,這些事件不僅來之於內部的,可以理解的,“舒適”的小世界里,而可能是來自於外部的事件,如“物聯網”-- 實時感測器裝置可以測量和報告很多的情況,包括“溫度突然升高導致的食物儲存設施的突發的危險”或“由全球定位系統位置跟蹤的海運集裝箱從被感測器檢測到被未經授權地開箱”。

 

對一家公司經營的直接影響也可能來自於日益強大的社交媒體對全球商業環境帶來的改變,例如Twitter,即時通訊應用等。數以百萬計的人在同一時間可以同時對某個新產品給予差評,強調某個迫切需要修改的產品設計。這勢必會影響利潤,甚至顯著影響企業的價值。因此,現在的公司不可避免地受到正面或負面事件的影響而疲於奔命。

 

在過去,可能追溯到15年前,商業應用不得屈就於那些當時可用的計算技術所採用的那些固定的方法,結構和介面(比如關係資料庫),信息必須先被靜態的插入和保存,只有在此之後用戶才可以再分析和響應。傳統的JEE(Java Enterprise Edition)應用伺服器中普遍的實現 -- 期待客戶端應用程式發送的一個初始的請求,然後大多數情況下大量的代碼邏輯只是用於從頭到尾地處理這個請求,然後才能返回給客戶端響應。這些技術正在並將繼續提供那些更多是基於批處理的,實時性較差的解決方案。而新的,更低時延的,更快的,基於記憶體的中間件產品現已上市。

 

基於事件驅動架構(Event-Driven)的系統本質上是更敏捷的,更好地被“武裝”起來來處理這些類型的情況 -- 處理那些橫跨整個業務基礎設施和眾多業務部門“孤島”(如財務,生產和銷售等部門),需要被立即解釋和處理的事件。這些類型的系統,一旦當它們探測到外部和商業環境的改變,就能聯繫上下文並執行策略。而不是預定義一些每天晚上執行的任務,甚至是那些每次都要有人手動運行的任務來處理。

 

作為與大數據相關的,在未來數年將顯著增長的問題 -- 即在信息的採集、管理並能夠在可接受的時間範圍進行處理方面,事件驅動技術(特別是複雜事件處理),可以為更高級的“智能”和決策提供快速的,更接近“事件發生時間點”的,原始的數據流。

image005_thumb1

 

因此,事件驅動技術的好處是在應對數據增殖方面,把傳統的數據處理方法,改為把信息描述為實時的事件(可以是在任何地方發生的事情),提供了聰明地分解事件、路由事件、過濾事件、關聯事件的能力,因此在大多數情況下,分散的事件可以進化為全面的,穩固的,容易理解的商業事件,使企業能相對更好地觀察,控制和適應瞬息萬變的情況。

 

待續。。。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • 一:取字元串中第幾個字元 print "Hello"[0] 表示輸出字元串中第一個字元print "Hello"[-1] 表示輸出字元串中最後一個字元 二:字元串分割 print "Hello"[1:3] #第一個參數表示原來字元串中的下表#第二個闡述表示分割後剩下的字元串的第一個字元 在 原來字元 ...
  • 1.Tomcat記憶體溢出的原因 生產環境中Tomcat記憶體設置不好很容易出現記憶體溢出。造成記憶體溢出是不一樣的,當然處理方式也不一樣。 這裡根據平時遇到的情況和相關資料進行一個總結。常見的一般會有下麵三種情況: OutOfMemoryError: Java heap space OutOfMemory ...
  • This is a test 1 2 3 4 1 2 3 4 Code test ...
  • python多繼承,剛開始我是表示驚訝的,畢竟學的php,哪來的多繼承?頂多也就是利用介面模擬多繼承後者使用反射機制實現。那麼還是來看看python的強大吧 1 首先,Python的類繼承了多個類,那麼其尋找方法的方式有兩種,分別是:深度優先(經典類)和廣度優先(新式類) 2 共有與私有成員(很多的 ...
  • 本文翻譯自《effective modern C++》,由於水平有限,故無法保證翻譯完全正確,歡迎指出錯誤。謝謝! 如果你需要寫一個以名字作為參數,並記錄下當前日期和時間的函數,在函數中還要把名字添加到全局的數據結構中去的話。你可能會想出看起來像這樣的一個函數: std::multiset name ...
  • java的參數傳遞機制和C、C++其實很像,前兩天在改一個網站非同步介面的時候,掉入坑裡,之前是外包寫的代碼,springMVC里起了一個多線程,但是參數傳遞的時候傳的是一個model對象,所以所有線程都共用了這個對象,結果跑出來的result一塌糊塗。 下麵進入正題,先看一段demo代碼吧 java ...
  • 創建型模式抽象了實例化過程。它們幫助一個系統獨立於如何創建、組合和表示它的那些對象。 1.抽象工廠模式(ABSTRACT FACTORY) 意圖 提供一個創建一系列相關或相互依賴對象的介面,而不需指定他們具體的類。 ( 抽象工廠模式可以向客戶端(Client指代碼模式的使用者,後文類同)提供一個介面 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...