一、Storm基本概念:
web
Nimbus:負責資源分配和任務調度數據庫
Supervisor:負責Nimbus分配的任務,啓動和中止屬於本身管理的worker進程編程
Worker:運行具體處理邏輯的組件進程ide
Spout/Bolt(Task):worker中每個(Spout/Bolt)線程稱爲一個Task,在storm0.8版本以後,task再也不與物理線程對應,同一個Spout/Bolt的Task可能共享一個物理線程,該線程稱爲executorspa
Topology:全部組件(即Spouts/Bolts)的排列與鏈接被稱之爲一個Topology線程
Spout:產生源數據流的組件component
Bolt:接收、執行數據的組件orm
Tuple:消息傳遞的基本單元(將消息放在Tuple中進行傳輸)對象
Stream:源源不斷的傳遞的Tuple組成了Stream進程
數據處理的過程:
處理工做被分派給不一樣類型的組件(components),每一個組件分別負責一個簡單、特定的處理任務。處理Storm集羣輸入流的組件叫噴口(spout),噴口再將數據傳給一個叫螺栓(bolt)的組件,並在螺栓中處理數據,處理完成以後,螺栓要麼將這些數據存儲起來(存儲在數據庫、磁盤甚至是對象中),要麼將它傳給其餘螺栓。所以,能夠將Storm集羣想象成一個螺栓鏈,每一個螺栓都會對噴口發送的數據做出一些處理。
二、Storm特性(優點/好處)
編程簡單、支持多種語言編程、容錯、可擴展、可靠、快速、事務性
與其它實時計算系統(s4, puma)的區別
記錄級容錯:告知用戶每個消息單元是否在指定的時間內被徹底處理(消息單元是否徹底通過Topology每個Bolt組件的處理)
一、Spout在發送一個新源時會爲Tuple指定一個Message Id(這個MessageId能夠是任意對象)
二、Topology中有一個系統級組件叫acker,acker追蹤每個從Spout中綁定MessageId所流出來的若干個Tuple的處理路徑
三、若是用戶設置的最大超時時間內這些tuple沒有被徹底處理,那麼acker就會告知spout該消息處理失敗了,相反則會告知spout該消息處理成功了
事務拓撲(Transactional Topology):storm0.7版本引入的新特性,在0.8版本替換爲Trident,在0.9版本棄用,目的是爲了知足對消息處理有着極其嚴格要求的場景,例如實時計算某個用戶的成交筆數,要求結果徹底精確,不能多也不能少。