BASE理論
為什么需要BASE理論
強(qiáng)一致性的分布式系統(tǒng)或者事務(wù)性的分布式系統(tǒng)使用起來非常方便,不需要考慮太多趋惨,就像單機(jī)系統(tǒng)一樣员帮。但是,根據(jù)CAP理論幽歼,強(qiáng)一致性必然會影響可用性朵锣。一個可用性為 99.7% 的集群每月宕機(jī)約 129.6 分鐘,這是非常嚴(yán)重的問題甸私。所以诚些,設(shè)計(jì)系統(tǒng)時(shí)優(yōu)先選擇可用性優(yōu)先的 AP 方案。
BASE理論是什么
BASE理論是CAP理論中的AP方案的延伸皇型,追求的是可用性诬烹。它包括基本可用、軟狀態(tài)和最終一致性弃鸦。
基本可用
基本可用:當(dāng)分布式系統(tǒng)出現(xiàn)故障時(shí)绞吁,允許損失部分功能的可用性,保障核心功能的可用性寡键。實(shí)現(xiàn)基本可用的4板斧為:
- 流量削峰:將訪問請求錯開掀泳,削弱請求的峰值。
- 延遲響應(yīng):對請求進(jìn)行排隊(duì)
- 體驗(yàn)降級:例如顯示時(shí)降低圖片的清晰度和大小西轩,以提升系統(tǒng)的處理能力员舵。
- 過載保護(hù):對請求進(jìn)行排隊(duì),如果隊(duì)列已滿藕畔,則清除隊(duì)列中一定數(shù)量的請求马僻。
- 對關(guān)鍵服務(wù)做好限流:防止瞬時(shí)打進(jìn)大量流量。
- 利用MQ削峰填谷:對流量進(jìn)行整形注服,使系統(tǒng)以一種平穩(wěn)的狀態(tài)運(yùn)行韭邓。
- 熔斷降級
軟狀態(tài)
軟狀態(tài):系統(tǒng)數(shù)據(jù)的一種過渡狀態(tài),即允許不同數(shù)據(jù)副本存在短暫的不一致溶弟。
最終一致性
最終一致性:經(jīng)過一段時(shí)間的同步后女淑,系統(tǒng)中的所有數(shù)據(jù)副本最終能夠達(dá)到一致。
一致性的選擇
幾乎所有的互聯(lián)網(wǎng)后臺系統(tǒng)選擇的都是最終一致性辜御,如果不是必須的話鸭你,不推薦實(shí)現(xiàn)事務(wù)和強(qiáng)一致性,鼓勵可用性和性能優(yōu)先擒权。
- 如果業(yè)務(wù)的某個功能可以容忍數(shù)據(jù)短暫的不一致袱巨,就考慮使用最終一致性;
- 如果業(yè)務(wù)的某個功能無法容忍數(shù)據(jù)的延遲碳抄,就考慮使用強(qiáng)一致性愉老;
- 如果是金融系統(tǒng)的數(shù)據(jù),就考慮使用事務(wù)剖效。
以哪個數(shù)據(jù)為準(zhǔn)
要實(shí)現(xiàn)最終一致性嫉入,首先要知道以哪個數(shù)據(jù)為準(zhǔn),這是實(shí)現(xiàn)最終一致性的關(guān)鍵贱鄙。一般來說劝贸,有兩種方式:
- 以第一次寫入的數(shù)據(jù)為準(zhǔn)。如果你不希望存儲的數(shù)據(jù)被更改逗宁,可以以它為準(zhǔn)映九。
- 以最新寫入的數(shù)據(jù)為準(zhǔn)。例如 AP 模型的 KV 存儲采用的就是這種方式
實(shí)現(xiàn)方式
常用的有幾種:
- 讀時(shí)修復(fù):在讀取數(shù)據(jù)時(shí)瞎颗,系統(tǒng)如果檢測到不同節(jié)點(diǎn)間的數(shù)據(jù)不一致件甥,就自動進(jìn)行修復(fù)。
- 寫時(shí)修復(fù):在寫入數(shù)據(jù)時(shí)哼拔,系統(tǒng)如果檢測到不同節(jié)點(diǎn)間的數(shù)據(jù)不一致引有,就自動進(jìn)行修復(fù)。例如節(jié)點(diǎn) A 向節(jié)點(diǎn) B倦逐,如果寫失敗了譬正,節(jié)點(diǎn) A 就將數(shù)據(jù)緩存下來,然后定時(shí)重傳,修復(fù)數(shù)據(jù)的不一致曾我。
- 異步修復(fù):通過定時(shí)檢測數(shù)據(jù)的一致性并修復(fù)粉怕。這是最常用的方式。
因?yàn)?strong>寫時(shí)修復(fù)不需要做數(shù)據(jù)一致性對比抒巢,性能消耗比較低贫贝,對系統(tǒng)運(yùn)行影響也不大,所以我推薦你在實(shí)現(xiàn)最終一致性時(shí)優(yōu)先實(shí)現(xiàn)這種方式蛉谜。
在實(shí)現(xiàn)最終一致性的時(shí)候稚晚,我推薦同時(shí)實(shí)現(xiàn)自定義寫一致性級別(All、Quorum型诚、One客燕、Any), 讓用戶可以自主選擇相應(yīng)的一致性級別狰贯,比如可以通過設(shè)置一致性級別為 All幸逆,來實(shí)現(xiàn)強(qiáng)一致性。
如何使用BASE理論
待續(xù)暮现。