官术网_书友最值得收藏!

1.2.1 事件驅動應用程序

任何類型的數據都是作為事件流產生的。信用卡交易、傳感器測量、機器日志、網站或移動應用程序上的用戶交互,所有這些數據都以流的形式生成。

事件驅動的應用程序是一個有狀態的應用程序,它從一個或多個事件流中攝取事件,并通過觸發計算、狀態更新或外部操作來響應傳入的事件。

事件驅動的應用程序是傳統應用程序(具有獨立的計算層和數據存儲層)設計的演化。在這種傳統體系結構中,應用程序從遠程事務數據庫讀取數據并將數據持久存儲。

而事件驅動的應用程序則基于有狀態流來處理應用程序。在這種設計中,數據和計算是共存的,從而產生本地(內存或磁盤)數據訪問。通過定期將檢查點寫入遠程持久存儲,可以實現容錯。傳統事務型應用程序和事件驅動應用程序體系結構之間的區別如圖1-4所示。

圖1-4 傳統事務型應用程序和事件驅動應用程序體系結構之間的區別

事件驅動的應用程序訪問本地數據,而不是查詢遠程數據庫,從而在吞吐量和時延方面獲得更好的性能。遠程持久存儲的定期檢查點可以異步和增量地完成,因此,檢查點對常規事件處理的影響非常小。事件驅動的應用程序設計提供的好處不僅是本地數據訪問。在分層體系結構中,多個應用程序共享同一個數據庫是很常見的,因此,需要協調數據庫的任何更改,例如由于應用程序更新或擴展服務而更改數據布局。由于每個事件驅動的應用程序都負責自己的數據,因此對數據表示的更改或應用程序的擴展需要較少的協調。

事件驅動應用程序的限制由流處理器處理時間和狀態的能力來定義,Flink的許多突出特性都圍繞這些概念。Flink提供了一組豐富的狀態原語,這些原語可以管理非常大的數據量(最多可達幾TB),并且具有嚴格的精確一次性的一致性保證。此外,Flink支持事件時間、高度可定制的窗口邏輯及ProcessFunction提供的對時間的細粒度控制,從而支持高級業務邏輯的實現。此外,Flink還提供了一個用于復雜事件處理(Complex Event Processing,CEP)的庫,用于檢測數據流中的模式。

對于事件驅動的應用程序,Flink的突出特性是保存點(savepoint)。保存點是一個一致的狀態鏡像,可以用作兼容應用程序的起點。給定一個保存點,應用程序可以更新或調整其規模,或者可以啟動應用程序的多個版本進行A/B測試。

典型的事件驅動程序包括:

(1)欺詐檢測。

(2)異常檢測。

(3)基于規則的提醒。

(4)業務流程監控。

(5)Web應用程序(例如,社交網絡)。

主站蜘蛛池模板: 三台县| 兰考县| 革吉县| 资兴市| 江山市| 枞阳县| 齐河县| 开封县| 井冈山市| 泸溪县| 石屏县| 开阳县| 囊谦县| 波密县| 古蔺县| 江油市| 满城县| 霍邱县| 福安市| 仪征市| 文化| 阳江市| 邹平县| 巴楚县| 无锡市| 开远市| 开封县| 密山市| 巴林左旗| 宜兰县| 治县。| 卓尼县| 长武县| 青海省| 安徽省| 吉木萨尔县| 宁阳县| 九江市| 烟台市| 通许县| 诸城市|