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