storm淺談

storm本地模式,處理模擬集羣環境,快速進行開發。

1:storm體系結構

(1):Nimbus主節點:

① 主節點通常運行一個後臺程序-Nimbus,用於響應分佈在集羣中的節點,分配任務和監控故障

(2):Supervisor工作節點:

① 工作節點同樣會運行一個後臺程序--Supervisor,用於收聽工作指派基於要求運行工作進程,每一個工作節點是topology中一個子集的實現,主節點和從節點的協調通過zk來進行

(3):zk

① zk是完成主節點和從節點之間協調的服務,而應用程序實時的邏輯被封裝到storm中的topology,topology是一組由Spouts和spot通過stream grouping進行連接的圖

(4):Topology拓撲(就是程序,流程)

① storm中運行的一個實時應用程序,因爲各組件之間的消息流動形成邏輯上的一個拓撲結構,一個topology是spouts(數據源)和bolts(處理數據的)組成的圖,通過stream groupings將圖中的spouts和bolts連接起來

 

2:topology

topology是一個有向的流程圖,

3:stream grouping:爲每一個bolt指定哪一個流作爲輸入,流分組定義瞭如何在bolt的任務直接進行分發。

流分組的方式:

(1):Shuffle Grouping,隨機分組;保證每一個bolt接收到的tuple數目相同

(2):Fields Grouping,按字段分組;比如按照userId進行分組,具有同樣userId的tuple會被分到相同的Bolts中,具有不同樣userId的tuple會分到不同的Bolts中

(3):ALL Grouping,廣播分組,對於每一個tuple,會分到每一個Bolts中

(4):Global Grouping 全局分組:這個tuple會被分發到storm的一個bolt中的task。再具體點就是分配到id值最低的那個task上。

4:cleanUp方法會在服務器停止之前調用(屬於bolt的一個方法)

5:消息可靠性【節點描記工作】,如果消息不能被處理而丟失是很嚴重的情況。storm也是支持消息可靠性支持的。只有bolt節點進行描記成功或者失敗纔會調用spot節點的成功或者失敗方法。ack或者fail方法。沒法做到細緻的事物操作,可以使用冪等性去判斷。storm保證性的話使用ack保證機制。storm消息可靠性通過樹來完成的【一個消息被拆分成爲兩個,這兩個又被拆分成4個。。。。】

6:storm的RPC【distributed RPC】分佈式RPC【賊牛逼功能】

storm裏面引入DRPC主要利用storm的實時計算能力來並行化CPU密集型的計算任務。DRPC的storm topology以函數的參數流作爲輸入,而把這些函數調用的返回值作爲topology的輸出流。DRPC其實並不能算爲storm本身的一個特性。

DRPC通俗講就是利用Java形成一個client端,然後程序調用這個client,通過這個client執行storm中的某一個topology,然後快速返回結果。開啓DRPC之後就不用使用spout數據源輸入數據

DRPC的整體工作流程:

(1):接受一個RPC請求

(2):請求發送到storm topology

(3):從storm topology接受結果

(4):把結果發送給等待的客戶端。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章