Apache Storm是一個分布式、可靠、容錯的實時流式數(shù)據(jù)處理的系統(tǒng)。在Storm中,先要設計一個用于實時計算的圖狀結(jié)構(gòu),我們稱之為拓撲(topology)。這個拓撲將會被提交給集群,由集群中的主控節(jié)點(master node)分發(fā)代碼,將任務分配給工作節(jié)點(worker node)執(zhí)行。一個拓撲中包括spout和bolt兩種角色,其中spout發(fā)送消息,負責將數(shù)據(jù)流以tuple元組的形式發(fā)送出去;而bolt則負責轉(zhuǎn)換這些數(shù)據(jù)流,在bolt中可以完成計算、過濾等操作,bolt自身也可以隨機將數(shù)據(jù)發(fā)送給其他bolt。由spout發(fā)射出的tuple是不可變數(shù)組,對應著固定的鍵值對。
圖1 Storm系統(tǒng)架構(gòu)
業(yè)務處理邏輯被封裝進Storm中的Topology中。一個Topology是由一組Spout組件(數(shù)據(jù)源)和Bolt組件(邏輯處理)通過Stream Groupings進行連接的有向無環(huán)圖(DAG)。Topology里面的每一個Component(Spout/Bolt)節(jié)點都是并行運行的。在Topology里面,可以指定每個節(jié)點的并行度,Storm則會在集群里面分配相應的Task來同時計算,以增強系統(tǒng)的處理能力。
圖2 Topology
Storm有眾多適用場景:實時分析、持續(xù)計算、分布式ETL等。Storm有如下幾個特點:
適用場景廣泛
易擴展,可伸縮性高
保證無數(shù)據(jù)丟失
容錯性好
易于構(gòu)建和操控
多語言
Storm作為計算平臺,在業(yè)務層為用戶提供了更為易用的業(yè)務實現(xiàn)方式:CQL(Continuous Query Language—持續(xù)查詢語言)。CQL具有以下幾個特點:
使用簡單:CQL語法和標準SQL語法類似,只要具備SQL基礎,通過簡單地學習,即可快速地進行業(yè)務開發(fā)。
功能豐富:CQL除了包含標準SQL的各類基本表達式等功能之外,還特別針對流處理場景增加了窗口、過濾、并發(fā)度設置等功能。
易于擴展:CQL提供了拓展接口,以支持日益復雜的業(yè)務場景,用戶可以自定義輸入、輸出、序列化、反序列化等功能來滿足特定的業(yè)務場景
易于調(diào)試:CQL提供了詳細的異常碼說明,降低了用戶對各種錯誤的處理難度。