Storm系列 十八 事務介紹

2021-07-25 04:00:36 字數 1712 閱讀 7715

功能:將多個tuple組合成為乙個批次,並保障每個批次的tuple被且僅被處理一次。

storm事務處理中,把乙個批次的tuple的處理分為兩個階段processing和commit階段。

事務topologies

在transactional topologies內部主要管理以下事情:

管理狀態: 把所有實現transactional topologies所必須的狀態儲存在zookeeper裡面,包括當前transaction id及定義每個batch的一些元資料。

協調事務: 決定在任何乙個時間點是該proccessing還是該committing。

錯誤檢測: 利用acking框架來高效地檢測什麼時候乙個batch被成功處理了,被成功提交了,或者失敗了。storm然後會相應地replay對應的batch。不需要手動做任何acking或者anchoring (emit時發生的動作)。

中間資料清理:決定什麼時候乙個bolt接收到乙個特定transaction的所有tuple。storm同時也會自動清理每個transaction所產生的中間資料。

事務topologies的實現

spout

事務性的spout需要實現itransactionalspout,這個介面包含兩個內部介面類coordinator和emitter。在topology執行的時候,事務性的spout內部包含乙個子topology.這裡面有兩種型別的tuple,一種是事務性的tuple,一種是batch中的tuple.

coordinator用於開啟乙個事務,並在準備進入乙個事務的processing階段時,發射乙個事務性 tuple(transactionattempt & metadata)到」batch emit」流

,coordinator只有乙個,emitter根據並行度可以有多個例項.

emitter以all grouping(廣播)的方式訂閱coordinator的」batch emit」流,負責為每個batch實際發射tuple。傳送的tuple都必須以transactionattempt作為第乙個field,storm根據這個field來判斷tuple屬於哪乙個batch。

coordinator與emitter關係結構圖

transactionattempt中包含兩個值:乙個transaction id,乙個attempt id。transaction id的作用就是我們上面介紹的對於每個batch中的tuple是唯一的,而且不管這個batch replay多少次都是一樣的。

attempt id是對於每個batch唯一的乙個id, 但是對於同乙個batch,它replay之後的attempt id跟replay之前就不一樣了,storm利用這個id來區別乙個batch發射的tuple的不同版本。

事務性bolt

basetransactionalbolt

coordinatebolt具體原理如下:

事務內部處理流程圖

流式計算storm介紹

流式計算是什麼 流式計算 資料實時產生 資料實時傳輸 資料實時計算 實時展示 代表技術 flume實時獲取資料 kafka metaq實時資料儲存 storm jstorm實時資料計算 redis實時結果快取 持久化儲存 mysql 一句話總結 將源源不斷產生的資料實時收集並實時計算,盡可能快的得到...

Storm核心元件介紹

nimbus 主控節點 用於接收,提交任務,來分配集群任務,集群的監控 zookeeper 儲存storm集群的資料儲存 心跳 集群狀態 nimbus任務分配到supervisor 分組策略 1 fields grouping 按照字段分組,相同字段傳送到同乙個task中 2 shuffle gro...

Storm概念學習系列之storm的功能和三大應用

不多說,直接上乾貨!storm的功能 下面介紹storm 的三大主要應用 1 流處理 stream processing storm 可用來實時處理新資料和更新資料庫,兼具容錯性和可擴充套件性,即 storm 可以用來處理源源不斷流進來的訊息,處理之後將結果寫入某個儲存中。2 持續計算 contin...