溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Storm的Acker機制是什么

發(fā)布時間:2021-12-23 14:24:03 來源:億速云 閱讀:145 作者:iii 欄目:云計算

這篇文章主要講解了“Storm的Acker機制是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Storm的Acker機制是什么”吧!

基本概念的解析

對于Storm,有一個相對比較重要的概念就是 "Guarantee no data loss" -- 可靠性

很明顯,要做到這個特性,必須要tracker 每一個data的去向和結果,Storm是如何做到的

-》 那就是我們接下來要說的 Acker 機制,先概括下Acker所參與的工作流程

1 Spout 創(chuàng)建一個新的Tuple時候,會發(fā)射一個消息通知acker去跟蹤;

2 Bolt 在處理Tuple成功或者失敗的時候,也會發(fā)送一個消息通知Acker

3 Acker會好到發(fā)射該Tuple的Spout,回掉其Ack ,fail方法

一個tuple被完全處理的意思是:

這個tuple以及由這個tuple后續(xù)所導致的所有tuple 都被成功的處理, 而一個tuple會被認為處理失敗了,如果這個

消息在timeout所指定的時間內沒有成功處理

也就是說對于任何一個Spout-tuple以及它的子孫,到底處理成功失敗與否,我們都會得到通知

由一個tuple產生一個新的tuple稱為:anchoring,你發(fā)射一個tuple的同時也就完成了一次anchoring

Storm 里面有一類特殊的task稱為:acker,請注意,Acker也是屬于一種task,如果您對Task還不夠熟悉,請參考另外的一篇文檔:有關Storm-executor-task的關系,acker負責跟蹤spout發(fā)出的每一個tuple的tuple樹,當Acker發(fā)現一個tuple樹已經處理完成了,它就會發(fā)送一個消息給產生這個tuple的task。

Acker task 組件來設置一個topology里面的acker的數量,默認值是一,如果你的topoogy里面的tuple比較多的話,那么請把acker的數量設置多一點,效率會更高一點。

理解Storm的可靠性的辦法是看看 tuple,tuple樹的生命周期,當一個tuple被創(chuàng)建,不管是Spout 和bolt 創(chuàng)建的,他被賦予一個位的ID,而acker就是利用這個ID 去跟蹤所有的tuple的。每一個tuple知他祖宗的iD,吐過Stomr檢測到一個tuple被完全處理了,那么Storm會以最開始的那個message-id 作為參數去調用消息源頭的ACk方法,反之Storm會調用Spout的fail方法,

值得注意的一點是Storm調用Ack或則fail的task始終是產生這個tuple的那個task,所以如果一個Spout,被分為很多個task來執(zhí)行,消息執(zhí)行的成功失敗與否始終會通知最開始發(fā)出tuple的那個task

Storm的可靠性產景

作為Storm的使用者,有兩件事情要做以更好的利用Storm的可靠性特征,首先你在生成一個tuple的時候要通知Storm,其次,完全處理一個tuple之后要通知Storm,這樣Storm就可以檢測到整個tuple樹有沒有完成處理,并且通知源Spout處理結果

1  由于對應的task掛掉了,一個tuple沒有被Ack:

    Storm的超時機制在超時之后會把這個tuple標記為失敗,從而可以重新處理

2 Acker掛掉了: 在這種情況下,由這個Acker所跟蹤的所有spout tuple都會出現超時,也會被重新的處理

3 Spout 掛掉了:在這種情況下給Spout發(fā)送消息的消息源負責重新發(fā)送這些消息

三個基本的機制,保證了Storm的完全分布式,可伸縮的并且高度容錯的。

感謝各位的閱讀,以上就是“Storm的Acker機制是什么”的內容了,經過本文的學習后,相信大家對Storm的Acker機制是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI