新聞中心
Storm是一個(gè)開(kāi)源的分布式實(shí)時(shí)計(jì)算系統(tǒng),它能夠處理大量的數(shù)據(jù)流,在Storm中,ACK(Acknowledgement)框架是一個(gè)重要的組件,用于確保消息被正確地處理,本文將介紹Storm ACK框架的知識(shí)點(diǎn)。

成都創(chuàng)新互聯(lián),專注為中小企業(yè)提供官網(wǎng)建設(shè)、營(yíng)銷型網(wǎng)站制作、成都響應(yīng)式網(wǎng)站建設(shè)、展示型網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站等服務(wù),幫助中小企業(yè)通過(guò)網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷推廣問(wèn)題。
1. ACK框架的作用
ACK框架的主要作用是確保消息被正確地處理,在Storm中,一個(gè)消息在被完全處理之前,會(huì)被不斷地發(fā)送給下游的bolt進(jìn)行處理,如果在這個(gè)過(guò)程中,某個(gè)bolt處理失敗,那么這個(gè)消息就需要被重新發(fā)送給這個(gè)bolt進(jìn)行處理,ACK框架就是用來(lái)跟蹤這些需要重新處理的消息的。
2. ACK策略
Storm提供了兩種ACK策略:隨機(jī)和全局,隨機(jī)策略是指每個(gè)tuple都會(huì)被分配一個(gè)隨機(jī)的acker進(jìn)程來(lái)處理;全局策略是指所有的tuple都會(huì)被分配給同一個(gè)acker進(jìn)程來(lái)處理,不同的應(yīng)用場(chǎng)景下,可以選擇不同的ACK策略,對(duì)于需要快速處理的場(chǎng)景,可以選擇隨機(jī)策略;對(duì)于需要保證一致性的場(chǎng)景,可以選擇全局策略。
3. ACKer進(jìn)程
ACKer進(jìn)程是Storm中的一個(gè)特殊進(jìn)程,負(fù)責(zé)跟蹤需要重新處理的消息,當(dāng)一個(gè)bolt處理失敗時(shí),它會(huì)發(fā)送一個(gè)fail消息給ACKer進(jìn)程,ACKer進(jìn)程會(huì)記錄這個(gè)fail消息,并在適當(dāng)?shù)臅r(shí)候?qū)⑵浒l(fā)送給上游的bolt進(jìn)行重試,ACKer進(jìn)程還會(huì)定期地向上游的bolt發(fā)送ack消息,表示已經(jīng)成功處理了哪些消息。
4. ACK超時(shí)機(jī)制
為了提高系統(tǒng)的吞吐量,Storm引入了ACK超時(shí)機(jī)制,當(dāng)一個(gè)消息被發(fā)送給ACKer進(jìn)程后,如果在指定的超時(shí)時(shí)間內(nèi)沒(méi)有收到ack消息,那么這個(gè)消息就會(huì)被認(rèn)為已經(jīng)處理失敗,需要重新發(fā)送給上游的bolt進(jìn)行處理,通過(guò)調(diào)整超時(shí)時(shí)間,可以在一定程度上平衡系統(tǒng)的吞吐量和準(zhǔn)確性。
5. ACK與事務(wù)的關(guān)系
在Storm中,可以通過(guò)配置事務(wù)來(lái)確保消息的順序性,當(dāng)一個(gè)事務(wù)中的所有消息都被成功處理時(shí),這個(gè)事務(wù)才會(huì)被認(rèn)為是成功的,在這個(gè)過(guò)程中,ACK框架起到了關(guān)鍵的作用,當(dāng)一個(gè)事務(wù)中的消息被發(fā)送給下游的bolt進(jìn)行處理時(shí),ACKer進(jìn)程會(huì)跟蹤這個(gè)事務(wù)的狀態(tài),如果發(fā)現(xiàn)某個(gè)消息處理失敗,ACKer進(jìn)程會(huì)立即通知上游的bolt進(jìn)行重試,從而確保整個(gè)事務(wù)的正確性。
6. ACK與并發(fā)的關(guān)系
在Storm中,可以通過(guò)配置并發(fā)來(lái)提高系統(tǒng)的吞吐量,當(dāng)并發(fā)數(shù)增加時(shí),系統(tǒng)中的acker進(jìn)程數(shù)量也會(huì)相應(yīng)地增加,這會(huì)導(dǎo)致ACKer進(jìn)程之間的負(fù)載不均衡,從而影響系統(tǒng)的性能,為了解決這個(gè)問(wèn)題,Storm引入了一種名為“動(dòng)態(tài)分配”的策略,在這種策略下,當(dāng)一個(gè)acker進(jìn)程處理失敗的消息數(shù)量超過(guò)一定閾值時(shí),它會(huì)被暫停處理新的fail消息,直到其處理失敗的消息數(shù)量降低到閾值以下,這樣可以避免acker進(jìn)程之間的負(fù)載不均衡,從而提高系統(tǒng)的性能。
7. ACK與容錯(cuò)的關(guān)系
在Storm中,可以通過(guò)配置容錯(cuò)來(lái)提高系統(tǒng)的可靠性,當(dāng)一個(gè)bolt發(fā)生故障時(shí),Storm會(huì)自動(dòng)將其替換為一個(gè)新的bolt實(shí)例,在這個(gè)過(guò)程中,ACK框架起到了關(guān)鍵的作用,當(dāng)一個(gè)消息被發(fā)送給故障的bolt時(shí),ACKer進(jìn)程會(huì)記錄這個(gè)fail消息,并在故障的bolt被替換為新的bolt實(shí)例后,將其發(fā)送給新的bolt進(jìn)行處理,這樣可以避免因?yàn)閎olt故障而導(dǎo)致的消息丟失。
8. ACK與性能的關(guān)系
在Storm中,可以通過(guò)調(diào)整ACK策略、超時(shí)時(shí)間和并發(fā)數(shù)等參數(shù)來(lái)優(yōu)化系統(tǒng)的性能,增加并發(fā)數(shù)可以提高系統(tǒng)的吞吐量,但同時(shí)也會(huì)增加acker進(jìn)程之間的負(fù)載不均衡和消息處理的延遲,在實(shí)際應(yīng)用中,需要根據(jù)具體的業(yè)務(wù)場(chǎng)景來(lái)調(diào)整這些參數(shù),以達(dá)到最佳的性能表現(xiàn)。
問(wèn)題與解答:
1. Storm中的ACK框架有什么作用?
答:ACK框架的主要作用是確保消息被正確地處理,它跟蹤需要重新處理的消息,并在適當(dāng)?shù)臅r(shí)候?qū)⑵浒l(fā)送給上游的bolt進(jìn)行重試。
2. Storm提供了哪些ACK策略?
答:Storm提供了隨機(jī)和全局兩種ACK策略,隨機(jī)策略是指每個(gè)tuple都會(huì)被分配一個(gè)隨機(jī)的acker進(jìn)程來(lái)處理;全局策略是指所有的tuple都會(huì)被分配給同一個(gè)acker進(jìn)程來(lái)處理。
3. Storm中的ACKer進(jìn)程有什么作用?
答:ACKer進(jìn)程是Storm中的一個(gè)特殊進(jìn)程,負(fù)責(zé)跟蹤需要重新處理的消息,當(dāng)一個(gè)bolt處理失敗時(shí),它會(huì)發(fā)送一個(gè)fail消息給ACKer進(jìn)程,ACKer進(jìn)程會(huì)記錄這個(gè)fail消息,并在適當(dāng)?shù)臅r(shí)候?qū)⑵浒l(fā)送給上游的bolt進(jìn)行重試,ACKer進(jìn)程還會(huì)定期地向上游的bolt發(fā)送ack消息,表示已經(jīng)成功處理了哪些消息。
4. Storm中的ACK超時(shí)機(jī)制有什么作用?
答:ACK超時(shí)機(jī)制是為了提高系統(tǒng)的吞吐量而引入的,當(dāng)一個(gè)消息被發(fā)送給ACKer進(jìn)程后,如果在指定的超時(shí)時(shí)間內(nèi)沒(méi)有收到ack消息,那么這個(gè)消息就會(huì)被認(rèn)為已經(jīng)處理失敗,需要重新發(fā)送給上游的bolt進(jìn)行處理,通過(guò)調(diào)整超時(shí)時(shí)間,可以在一定程度上平衡系統(tǒng)的吞吐量和準(zhǔn)確性。
網(wǎng)站題目:StormACK框架知識(shí)點(diǎn)有哪些「storm框架的主要特點(diǎn)」
路徑分享:http://www.5511xx.com/article/dheidcj.html


咨詢
建站咨詢
