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