流式計(jì)算系統(tǒng)-StreamBase
StreamBase是IBM開發(fā)的一款商業(yè)流式計(jì)算系統(tǒng),在金融行業(yè)和政府部門使用,其本身是商業(yè)應(yīng)用軟件,但提供了Develop Edition。相對(duì)于付費(fèi)使用的Enterprise Edition,前者的功能更少,但這并不妨礙我們從外部使用和API接口來對(duì)StreamBase本身進(jìn)行分析。
StreamBase使用Java開發(fā),IDE是基于Eclipse進(jìn)行二次開發(fā),功能非常強(qiáng)大。StreamBase也提供了相當(dāng)多的 Operator、Functor以及其他組件來幫助構(gòu)建應(yīng)用程序。用戶只需要通過IDE拖拉控件,然后關(guān)聯(lián)一下,設(shè)置好傳輸?shù)腟chema并且設(shè)置一下控件計(jì)算過程,就可以編譯出一個(gè)高效處理的流式應(yīng)用程序了。同時(shí),StreamBase還提供了類SQL語言來描述計(jì)算過程。
StreamBase的組件交互情況如圖3所示。
圖3 StreamBase組件交互圖
StreamBase Server是節(jié)點(diǎn)上啟動(dòng)的管理進(jìn)程,它負(fù)責(zé)管理節(jié)點(diǎn)上Container的實(shí)例,每個(gè)Container通過Adapter獲得輸入,交給應(yīng)用邏輯進(jìn)行計(jì)算,然后通過Adapter進(jìn)行輸出。各個(gè)Container相互連接,形成一個(gè)計(jì)算流圖。
Adapter負(fù)責(zé)與異構(gòu)輸入或輸出交互,源或目的地可能包括CSV文件、JDBC、JMS、Simulation(StreamBase提供的流產(chǎn)生模擬器)或用戶定制。
每個(gè)StreamBase Server上面都會(huì)存在一個(gè)Sytsem Container,主要是產(chǎn)生系統(tǒng)監(jiān)控信息的流式數(shù)據(jù)。
HA Container用于容錯(cuò)恢復(fù),可以看出它實(shí)際包含兩個(gè)部分:Heartbeat和HA Events,其中HeartBeat也是Tuple在Container之間傳輸。在HA方案下,HA Container監(jiān)控Primary Server的活動(dòng)情況,然后將這些信息轉(zhuǎn)換成為HA Events交給StreamBase Monitor來處理。
Monitor就是從System Container和HA Container中獲取數(shù)據(jù)并且進(jìn)行處理。StreamBase認(rèn)為HA 問題應(yīng)該通過CEP方式處理,也就是說如果哪個(gè)部件出現(xiàn)問題,就肯定會(huì)反映在System Container和HA Container的輸出流上面,然后 Monitor通過復(fù)雜事件處理這些Tuples的話就能夠檢測到機(jī)器故障等問題,并作出相應(yīng)處理。
StreamBase提出了以下4種模板策略來解決容錯(cuò)問題。
- Hot-Hot Server Pair Template
Primary Server和Secondary Server都在同時(shí)計(jì)算,并且將計(jì)算結(jié)果交給下游。優(yōu)點(diǎn)是Primary Server如果故障的話那么Secondary Server依然工作,幾乎沒有任何切換時(shí)間;并且下游只需要選取先到來的Tuple就可以處理了,保證處理速度最快;缺點(diǎn)是浪費(fèi)計(jì)算和網(wǎng)絡(luò)資源。
- Hot-Warm Server Pair Template
Primary Server和Secondary Server都在同時(shí)計(jì)算,但只有Primary Server將計(jì)算結(jié)果交給下游。優(yōu)點(diǎn)是如果Primary Server故障,Secondary Server可以很快切換,而不需要任何恢復(fù)狀態(tài)的工作。相對(duì)于Hot-Hot方式時(shí)間稍微長一些,但沒有Hot-Hot那么耗費(fèi)網(wǎng)絡(luò)資源,同時(shí)也浪費(fèi)了計(jì)算資源。
- Shared Disk Template
Primary Server在計(jì)算之后,將計(jì)算的一些中間關(guān)鍵狀態(tài)存儲(chǔ)到磁盤、SAN(Storage Area Network)或是可靠的存儲(chǔ)介質(zhì)。如果Srimary Server故障,Secondary Server會(huì)從介質(zhì)中讀取出關(guān)鍵狀態(tài),然后接著繼續(xù)計(jì)算。優(yōu)點(diǎn)是沒有浪費(fèi)任何計(jì)算和網(wǎng)路資源,但恢復(fù)時(shí)間依賴狀態(tài)的量級(jí)而定,相對(duì)于前兩種,恢復(fù)時(shí)間可能會(huì)稍長。
- Fast Restart Template
這種方案限定了應(yīng)用場景,只針對(duì)無狀態(tài)的應(yīng)用。對(duì)于無狀態(tài)的情況,方案可以非常簡單,只要發(fā)現(xiàn)Primary Server故障,Secondary Server立即啟動(dòng),并接著上游的數(shù)據(jù)流繼續(xù)計(jì)算即可。
【編輯推薦】