書簽制作手工搜索引擎優(yōu)化工作
文章目錄
- 介紹
- 目標(biāo)
- 正文
- CAP
- Consistency
- Availability
- Partition tolerance
- BASE
- Basically Available
- Soft State
- Eventually Consistent
- ACID
- atomicity
- consistency
- isolation
- durability
- 參考文檔
介紹
分布式系統(tǒng)面臨的場景往往是眾口難調(diào),“這也要,那也要”,最后可能啥都得不到,這就是分布式系統(tǒng)的常態(tài),沒有靈丹妙藥都是妥協(xié)和退無可退;
其實(shí)類似金融中的不可能三角(固定匯率、自由市場、獨(dú)立貨幣政策不能都得到),仔細(xì)思考會發(fā)現(xiàn)非常有趣;
目標(biāo)
溫習(xí)分布式系統(tǒng)的基礎(chǔ)理論,尤其是常見的設(shè)計(jì)思想和理論,溫故而知新。
正文
分布式系統(tǒng)的基礎(chǔ)理論有CAP、BASE;本文主要介紹它們,以及做下diff,順帶對比ACID;
CAP
強(qiáng)一致性和可用性都比較好理解,最不好理解的就是分區(qū)容錯性;
分區(qū)容錯更多說的是一種系統(tǒng)(出現(xiàn)分區(qū)時)該如何繼續(xù)下去;也就是常說的保證了P的時候,此時關(guān)注A還是C;
目前大多數(shù)互聯(lián)網(wǎng)公司,包括個人工作過的公司基本都是AP,畢竟給老板畫餅,定OKR的時候都是SLA xx個9,目前沒見過人說為了一致性系統(tǒng)全年停服一半以上時間,沒有可用性其他都沒有意義,用戶就是上帝;聽說金融系統(tǒng)CP較多,但是細(xì)琢磨也夠嗆,畢竟數(shù)據(jù)進(jìn)來了可以通過日志做清洗,停服沒用戶、流量進(jìn)來,公司都活不下去談其他似乎也不合理(參考鐵路的搶票系統(tǒng));
曾經(jīng)在國內(nèi)top級的電商公司做分布式存儲,為了保證可用性,在流量最大的那幾天默認(rèn)是忽視一致性的, “池塘先修大點(diǎn),魚進(jìn)來了就跑不了,不行我們再下水去撈唄”,通過日志的形式把所有流量都兜住,然后擴(kuò)容上大規(guī)模計(jì)算集群異步做流量回放,降噪、聚合、匯總保證最終一致性,熔斷、降低更是聞所未聞,畢竟沒人會承認(rèn)自己服務(wù)扛不住了,要在雙11掉鏈子(畢竟在誓師大會上親眼見過老板們賭咒發(fā)誓承諾100%沒問題);迫于現(xiàn)實(shí)的無奈實(shí)踐了BASE理論,想來也是”得道多助,天助我也“。
Consistency
(強(qiáng))一致性 注意國內(nèi)翻譯的原因往往忽略了強(qiáng)一致性,而是翻譯為一致性;
指的是請求分布式系統(tǒng)任意一節(jié)點(diǎn)拿到的數(shù)據(jù)都是一致且是最新版本的;也就意味著所有節(jié)點(diǎn)上的數(shù)據(jù)都是完全一致(版本也一致,且是最新的),節(jié)點(diǎn)/數(shù)據(jù)不存在中間狀態(tài);
Availability
可用性
指的是每次請求收到的響應(yīng)都是非異常;
Partition tolerance
分區(qū)容錯性
指的是當(dāng)通信故障時,系統(tǒng)發(fā)生了分區(qū),此時系統(tǒng)能否繼續(xù)運(yùn)行,按照何種方式對外提供服務(wù)(A還是C);
BASE
現(xiàn)有的,或者說大多數(shù)系統(tǒng)基本都是BASE的最佳實(shí)踐者,系統(tǒng)的第一目標(biāo)是可用,一致性可通過其他手段“慢慢”實(shí)現(xiàn),或者說當(dāng)系統(tǒng)可以承擔(dān)一定時間內(nèi)的數(shù)據(jù)不一致造成的損失那么就沒有必要花費(fèi)更多成本去實(shí)現(xiàn)強(qiáng)一致性;
比如消息隊(duì)列領(lǐng)域Kafka通過Zookeeper實(shí)現(xiàn)強(qiáng)一致性約束,導(dǎo)致服務(wù)可用性相較于RocketMQ等差了很多,反觀RocketMQ等對于強(qiáng)一致性的約束更為寬泛,甚至變成可配置項(xiàng),如果要求走強(qiáng)一致性那么就需要開啟同步刷盤且ALLACK,否則可以通過異步等方式提高可用性,降低一致性,按需索取;
最終一致性的范例就是Consul(協(xié)議Gossip),原理類似八卦,一傳十,十傳百,理論上總歸所有人都能知道;
Basically Available
基本可用
參考CAP的可用性
Soft State
軟狀態(tài)
數(shù)據(jù)的狀態(tài)不是不可修改的,允許數(shù)據(jù)/節(jié)點(diǎn)存在中間狀態(tài);
Eventually Consistent
最終一致性
數(shù)據(jù)/節(jié)點(diǎn)經(jīng)過一定時間后,從中間狀態(tài)最終變成一致,實(shí)現(xiàn)所有數(shù)據(jù)/節(jié)點(diǎn)的狀態(tài)一致;
ACID
atomicity
原子性(atomicity,或稱不可分割性)
consistency
一致性(consistency)
isolation
隔離性(isolation,又稱獨(dú)立性)
durability
持久性(durability)
參考文檔
數(shù)據(jù)密集型應(yīng)用系統(tǒng)