大數(shù)據(jù)怎么徹底解決分布式系統(tǒng)一致性問(wèn)題,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供潼關(guān)網(wǎng)站建設(shè)、潼關(guān)做網(wǎng)站、潼關(guān)網(wǎng)站設(shè)計(jì)、潼關(guān)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、潼關(guān)企業(yè)網(wǎng)站模板建站服務(wù),十余年潼關(guān)做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
其實(shí)個(gè)人理解的時(shí)候,更希望能夠得到代碼層面的實(shí)現(xiàn),單純的理論知識(shí)還是不夠落地,總結(jié)容易,真正實(shí)現(xiàn)起來(lái)還是需要項(xiàng)目的積累。
保證最終一致性的模式
1.查詢模式
任何服務(wù)操作都需要提供一個(gè)查詢接口,用來(lái)向外輸出操作執(zhí)行的狀態(tài)。即:?jiǎn)喂P查詢,為了使查詢操作有一個(gè)唯一標(biāo)識(shí),需要一個(gè)分布式環(huán)境下的ID,可用分布式鎖,redis 遞增,機(jī)器的唯一碼 拿出幾位存為機(jī)器id,這樣一來(lái)每次查詢操作相對(duì)更快。可解決同步調(diào)用超時(shí)問(wèn)題異步回調(diào)超時(shí)問(wèn)題。
2.補(bǔ)償模式
再操作失敗,我們需要修正有問(wèn)題的操作,是分布式系統(tǒng)達(dá)到一致,為了讓系統(tǒng)達(dá)到一致而做出的努力都叫做補(bǔ)償操作。這個(gè)場(chǎng)景就和出水問(wèn)題一樣?。。。⊙a(bǔ)償操作分為:自動(dòng)回復(fù),通知運(yùn)營(yíng),和技巧運(yùn)營(yíng)。
3.異步確保模式
再對(duì)響應(yīng)時(shí)間要求不高的場(chǎng)景,通過(guò)異步的方式處理,再把結(jié)果告知使用方,這個(gè)方案最大的好處就是能對(duì)高并發(fā)流量進(jìn)行消峰,例如電商中的物流,配送,支付系統(tǒng)的計(jì)費(fèi),入賬。
4.定期校對(duì)模式
再操作主流系統(tǒng)間執(zhí)行校對(duì)操作,再時(shí)候異步批量校對(duì)操作的狀態(tài),如果不一直進(jìn)行補(bǔ)償,這句話有點(diǎn)不太理解,定期校對(duì)系統(tǒng)如圖
定期校對(duì)系統(tǒng)多用于金融系統(tǒng),針對(duì)于數(shù)據(jù)的準(zhǔn)確性。
5.可靠消息模式
利用消息隊(duì)列實(shí)現(xiàn)異步化
①消息的可靠發(fā)送
發(fā)送消息之前先將消息持久化到數(shù)據(jù)庫(kù),將狀態(tài)標(biāo)記為未發(fā)送,然后發(fā)送消息,如果發(fā)送成功,則標(biāo)記,定時(shí)從數(shù)據(jù)庫(kù)撈取一定時(shí)間內(nèi)未發(fā)送的消息并發(fā)送。
②消息處理器的冪等性
冪等性,冪等性,面試和刷題你總會(huì)遇到,要想解決,就得先知道啥叫冪等性。
在網(wǎng)絡(luò)延遲傳輸中,會(huì)造成消息隊(duì)列重試,在充實(shí)過(guò)程中,消息會(huì)存在重復(fù)
解決方案:
1.如果是數(shù)據(jù)庫(kù)的插入操作,給消息做一個(gè)主鍵,避免出現(xiàn)臟數(shù)據(jù)。
2.使用第三方做消費(fèi)記錄,例如Redis,全局id為K,消息為V,寫入到Redis,消費(fèi)之前先去查Redis是否存在
3.使用數(shù)據(jù)庫(kù)的行級(jí)鎖
6.緩存一致性模式
如果面對(duì)億級(jí)讀需求,需要非關(guān)系型數(shù)據(jù)庫(kù)抗住流量,這里有個(gè)問(wèn)題?啥叫關(guān)系型數(shù)據(jù)庫(kù)?(能夠互相連接的列表式數(shù)據(jù)庫(kù))
讀的順序是先讀緩存,讀不到再讀數(shù)據(jù)庫(kù),寫的順序是先寫數(shù)據(jù)庫(kù),后寫緩存。
超時(shí)處理模式
1微服務(wù)的交互模式
①同步調(diào)用模式
服務(wù)1調(diào)用服務(wù)2,服務(wù)1等待服務(wù)2返回結(jié)果
②異步調(diào)用模式
服務(wù)1調(diào)用服務(wù)2,服務(wù)2處理后,反向通知服務(wù)2
③消息隊(duì)列異步處理模式
服務(wù)1傳遞給服務(wù)2,不需要關(guān)心返回結(jié)果
①同步調(diào)用模式解決方案
兩狀態(tài)
三狀態(tài)
②異步調(diào)用模式解決方案
③消息隊(duì)列異步處理模式解決方案
文章對(duì)服務(wù)化系統(tǒng)中同步調(diào)用,異步調(diào)用,消息隊(duì)列等應(yīng)用場(chǎng)景進(jìn)行了分析,個(gè)人理解還是不到位,還有一些疑問(wèn),例如什么時(shí)候會(huì)導(dǎo)致消息重發(fā)?消息重發(fā)仍然失敗怎么辦?失敗次數(shù)超過(guò)預(yù)期怎么辦?還有就是怎么樣從代碼層面實(shí)現(xiàn),這些在面試中都太籠統(tǒng)了,根本解決不了實(shí)際問(wèn)題,還是要從實(shí)際場(chǎng)景解決問(wèn)題。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。