Apache Spark是一個(gè)開(kāi)源大數(shù)據(jù)處理框架,其速度快并具有很好的易用性,并且可用來(lái)應(yīng)對(duì)復(fù)雜分析。Spark可以支持流式處理,圖表數(shù)據(jù),機(jī)器學(xué)習(xí),以及Hadoop和map/reduce。它是探索建立實(shí)時(shí)事件處理的理想平臺(tái)。
EVAM是一個(gè)實(shí)時(shí)事件處理方面的領(lǐng)跑者,有超過(guò)40種解決方案可以支持全球超兩億用戶(hù)的實(shí)時(shí)事件處理。最近幾年,EVAM已經(jīng)建立了多種客戶(hù)解決方案,比較流行的幾個(gè)比如AWS Kinesis和RedShift。既然Apache Spark和EVAM都如此受歡迎,在Apache Spark上結(jié)合EVAM事件處理引擎的解決方案架構(gòu)是否會(huì)是個(gè)不錯(cuò)的探索呢?這對(duì)CP實(shí)力如何呢?
構(gòu)建之前,先來(lái)了解實(shí)時(shí)事件處理要求
實(shí)時(shí)用戶(hù)響應(yīng)系統(tǒng)有一套嚴(yán)格的要求,最重要的一條就是事件集中在50毫秒以?xún)?nèi)響應(yīng)完畢。看似苛刻,但實(shí)現(xiàn)該響應(yīng)要求其實(shí)是可能的,只要仔細(xì)挑選數(shù)據(jù)集合,結(jié)合有技巧的事件響應(yīng)方法就OK了。其他具體要求還有如下幾條:
1、所有渠道的數(shù)據(jù)都要集成在內(nèi),包括點(diǎn)擊流,日志,事務(wù)系統(tǒng),物聯(lián)網(wǎng),Twitter和其他數(shù)據(jù)。
2、通過(guò)Kafka,Kinesis和其他系統(tǒng)實(shí)時(shí)獲取數(shù)據(jù)。
3、在一個(gè)窗口時(shí)間內(nèi),結(jié)合有效與無(wú)效事件以及用戶(hù)配置文件數(shù)據(jù)的事件處理。
4、隨著數(shù)百個(gè)場(chǎng)景的出現(xiàn),用戶(hù)事件驅(qū)動(dòng)和優(yōu)先響應(yīng)是必要的。比如,與用戶(hù)相關(guān)的響應(yīng)要優(yōu)先處理。
5、滿(mǎn)足同一個(gè)場(chǎng)景的一系列事件應(yīng)該可作為其他場(chǎng)景的輸入,事件延遲應(yīng)該不超過(guò)50毫秒。
實(shí)時(shí)事件處理概念模型
對(duì)于實(shí)時(shí)事件解決方案,稍有經(jīng)驗(yàn)的人士都不會(huì)否認(rèn)實(shí)時(shí)用戶(hù)參與的業(yè)務(wù)抽象層存在的重要性。一個(gè)定義了業(yè)務(wù)事件的業(yè)務(wù)抽象層是很有意義的,并且創(chuàng)造了定義和實(shí)現(xiàn)業(yè)務(wù)場(chǎng)景的商業(yè)分析機(jī)會(huì)。
模型主要集中在生成事件的因素上,通常生成事件的是人,但也有可能是一個(gè)網(wǎng)絡(luò)設(shè)備(物聯(lián)網(wǎng)或CPE)。起初可能只有一個(gè)事件,隨著事件不斷增多,將所有事件結(jié)合起來(lái)就構(gòu)成了一個(gè)業(yè)務(wù)事件。例如,創(chuàng)建一個(gè)新客戶(hù)可能就需要在一個(gè)關(guān)系型數(shù)據(jù)庫(kù)里創(chuàng)建多個(gè)表,每個(gè)表都被認(rèn)為是一個(gè)事件,多個(gè)表結(jié)合起來(lái)就形成了用戶(hù)事件。
一個(gè)健壯的模型包含了對(duì)無(wú)效事件的篩選,并且隨著時(shí)間的推移,事件會(huì)不斷聚合。無(wú)效事件可能包含購(gòu)買(mǎi)新設(shè)備或服務(wù),或者未在特定的窗口時(shí)間內(nèi)進(jìn)行網(wǎng)絡(luò)注冊(cè)。對(duì)一個(gè)商業(yè)系統(tǒng)來(lái)說(shuō),任何一個(gè)事件缺失都是至關(guān)重要的。
由此產(chǎn)生的響應(yīng)需要聯(lián)系上下文例如名字,電子郵件和其他通過(guò)電子郵件響應(yīng)的數(shù)據(jù)。
最后,優(yōu)先級(jí)支持和場(chǎng)景約束也是十分重要的。處于技術(shù)支持場(chǎng)景的用戶(hù)可以與其他用戶(hù)差別對(duì)待。同樣重要的是,客戶(hù)不會(huì)接受被淹沒(méi)在多個(gè)操作之后,因?yàn)槎鄨?chǎng)景同時(shí)觸發(fā)是很正常的事情,如果等待時(shí)間過(guò)長(zhǎng),用戶(hù)體驗(yàn)會(huì)十分差勁。有效的管理策略是在Spark或其他開(kāi)源框架之上構(gòu)建健壯的實(shí)時(shí)解決方案所必需的。
除了優(yōu)先級(jí)和場(chǎng)景約束之外,實(shí)時(shí)儀表盤(pán)監(jiān)控也很重要。通過(guò)監(jiān)控?cái)?shù)據(jù)可以對(duì)業(yè)務(wù)進(jìn)行優(yōu)化,如果場(chǎng)景數(shù)據(jù)可以很容易地通過(guò)儀表盤(pán)獲得,就會(huì)很容易實(shí)現(xiàn)業(yè)務(wù)優(yōu)化。
另外,一個(gè)與大數(shù)據(jù)策略相關(guān)的挑戰(zhàn)是組織測(cè)試用例的范圍和技術(shù)要求。Spark提供了一個(gè)理想的框架,為數(shù)據(jù)集成、技術(shù)事件處理、批處理提供有關(guān)的編程支持。在解決方案框架Spark里,提供了一個(gè)有效的EVAM事件引擎前端,可以進(jìn)行業(yè)務(wù)事件抽象以及復(fù)雜場(chǎng)景支持。
EVAM事件處理引擎容易在云端設(shè)計(jì)集成,在該體系結(jié)構(gòu)中,EVAM主機(jī)內(nèi)存中有實(shí)時(shí)彈性緩存事件,場(chǎng)景識(shí)別和相關(guān)的業(yè)務(wù)規(guī)則。EVAM的設(shè)計(jì)包括一個(gè)Visual Scenario,以及使用Spark識(shí)別更高級(jí)別的業(yè)務(wù)事件。EVAM允許復(fù)雜場(chǎng)景設(shè)計(jì),有時(shí)間窗口的,有客戶(hù)配置文件數(shù)據(jù)(客戶(hù)姓名,電子郵件,地址,付款狀態(tài))的都可以。EVAM也很適合用于存放遺留事件處理系統(tǒng)路由,對(duì)企業(yè)事件和相關(guān)動(dòng)作提供視圖。
總結(jié)
實(shí)時(shí)事件處理是很多人關(guān)注的事情。技術(shù)上來(lái)講是很有趣的,從商業(yè)價(jià)值上看,也是一個(gè)實(shí)用的解決方案。不是盲目地收集所有信息,這些系統(tǒng)集中在支持某些特定場(chǎng)景的實(shí)時(shí)事件處理數(shù)據(jù)的收集。數(shù)據(jù)收集集中于客戶(hù)行為,與實(shí)時(shí)動(dòng)作相關(guān)的數(shù)據(jù)上。
Apache Spark未來(lái)可能會(huì)更受歡迎,因?yàn)樗峁┝艘粋€(gè)日益成熟的實(shí)時(shí)數(shù)據(jù)收集框架,支持一系列批處理包括Graph,Hadoop和其他。然而,在Spark上提供一個(gè)有效的實(shí)時(shí)事件管理系統(tǒng)將是一個(gè)不小的挑戰(zhàn)。這種系統(tǒng)需要邏輯事件識(shí)別,無(wú)效事件識(shí)別,窗口時(shí)間設(shè)置和客戶(hù)配置文件數(shù)據(jù)識(shí)別。在Spark上開(kāi)發(fā)這樣一個(gè)系統(tǒng),靈活的優(yōu)先級(jí)和場(chǎng)景約束對(duì)大多數(shù)團(tuán)隊(duì)來(lái)說(shuō)并不是一個(gè)現(xiàn)實(shí)的目標(biāo),但從技術(shù)角度來(lái)看,可以嘗試一下。