at last once:至少消費(fèi)一次(對(duì)一條消息有可能多次消費(fèi),有可能會(huì)造成重復(fù)消費(fèi)數(shù)據(jù))
原因:Proudcer產(chǎn)生數(shù)據(jù)的時(shí)候,已經(jīng)寫入在broker中,但是由于broker的網(wǎng)絡(luò)異常,沒(méi)有返回ACK,這時(shí)Producer,認(rèn)為數(shù)據(jù)沒(méi)有寫入成功,此時(shí)producer會(huì)再次寫入,相當(dāng)于一條數(shù)據(jù),被寫入了多次。
at most once:最多消費(fèi)一次,對(duì)于消息,有可能消費(fèi)一次,有可能一次也消費(fèi)不了
原因:producer在產(chǎn)生數(shù)據(jù)的時(shí)候,有可能寫數(shù)據(jù)的時(shí)候不成功,此時(shí)broker就跳過(guò)這個(gè)消息,那么這條數(shù)據(jù)就會(huì)丟失,導(dǎo)致consumer無(wú)法消費(fèi)。
exactly once:有且僅有一次。這種情況是我們所需要的,也就是精準(zhǔn)消費(fèi)一次。
at last once:可以先讀取數(shù)據(jù),處理數(shù)據(jù),最后記錄offset,當(dāng)然如果在記錄offset之前就crash,新的consumer會(huì)重復(fù)的來(lái)消費(fèi)這條數(shù)據(jù),導(dǎo)致了”最少一次“
at most once:可以先讀取數(shù)據(jù),然后記錄offset,最后在處理數(shù)據(jù),這個(gè)方式,就有可能在offset后,還沒(méi)有及時(shí)的處理數(shù)據(jù),就crash了,導(dǎo)致了新的consumer繼續(xù)從這個(gè)offset處理,那么剛剛還沒(méi)來(lái)得及處理的數(shù)據(jù),就永遠(yuǎn)不會(huì)被處理,導(dǎo)致了”最多消費(fèi)一次“
exactly once:可以通過(guò)將提交分成兩個(gè)階段來(lái)解決:保存了offset后提交一次,消息處理成功后,再提交一次。
A:Producer 端寫入數(shù)據(jù)的時(shí)候保證冪等性操作:
冪等性:對(duì)于同一個(gè)數(shù)據(jù)無(wú)論操作多少次都只寫入一條數(shù)據(jù),如果重復(fù)寫入,則執(zhí)行不成功
B:broker寫入數(shù)據(jù)的時(shí)候,保證原子性操作, 要么寫入成功,要么寫入失敗。(不成功不斷進(jìn)行重試)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。