分布式系統(tǒng)設(shè)計(jì)開(kāi)發(fā)過(guò)程中有幾個(gè)比較有意思的現(xiàn)象:
1. CAP原理。CAP分別表示Consistency(一致性), Availability(可訪問(wèn)性), Partition-tolerance(網(wǎng)絡(luò)分區(qū)容忍性)。Consistency指強(qiáng)一致性,符合ACID;Availability指每一個(gè)請(qǐng)求都能在確定的時(shí)間內(nèi)返回結(jié)果;Partition-tolerance指系統(tǒng)能在網(wǎng)絡(luò)被分成多個(gè)部分,即允許任意消息丟失的情況下正常工作。CAP原理指出,CAP三者最多取其二,沒(méi)有完美的結(jié)果。因此,我們?cè)O(shè)計(jì)replication策略、一致性模型、分布式事務(wù)時(shí)都應(yīng)該有所折衷。
2. 一致性的不可能性原理。該原理指出在允許失敗的異步系統(tǒng)下,進(jìn)程間是不可能達(dá)成一致的。典型的問(wèn)題就是分布式選舉問(wèn)題,實(shí)際系統(tǒng)如Bigtable的tablet加載問(wèn)題。所以,Google Chubby/Hadoop Zookeeper實(shí)現(xiàn)時(shí)都需要對(duì)服務(wù)器時(shí)鐘誤差做一個(gè)假設(shè)。當(dāng)時(shí)鐘出現(xiàn)不一致時(shí),工作機(jī)只能下線以防止出現(xiàn)不正確的結(jié)果。
3. 錯(cuò)誤必然出現(xiàn)原理。只要是理論上有問(wèn)題的設(shè)計(jì)/實(shí)現(xiàn),運(yùn)行時(shí)一定會(huì)出現(xiàn),不管概率有多低。如果沒(méi)有出現(xiàn)問(wèn)題,要么是穩(wěn)定運(yùn)行時(shí)間不夠長(zhǎng),要么是壓力不夠大。
4. 錯(cuò)誤的必然復(fù)現(xiàn)原則。實(shí)踐表明,分布式系統(tǒng)測(cè)試中發(fā)現(xiàn)的錯(cuò)誤等到數(shù)據(jù)規(guī)模增大以后必然會(huì)復(fù)現(xiàn)。分布式系統(tǒng)中出現(xiàn)的多機(jī)多線程問(wèn)題有的非常難于排查,但是,沒(méi)關(guān)系,根據(jù)現(xiàn)象推測(cè)原因并補(bǔ)調(diào)試日志吧,加大數(shù)據(jù)規(guī)模,錯(cuò)誤肯定會(huì)復(fù)現(xiàn)的。
5. 兩倍數(shù)據(jù)規(guī)模原則。實(shí)踐表明,分布式系統(tǒng)最大數(shù)據(jù)規(guī)模翻番時(shí),都會(huì)發(fā)現(xiàn)以前從來(lái)沒(méi)有出現(xiàn)過(guò)的問(wèn)題。這個(gè)原則當(dāng)然不是準(zhǔn)確的,不過(guò)可以指導(dǎo)我們做開(kāi)發(fā)計(jì)劃。不管我們的系統(tǒng)多么穩(wěn)定,不要高興太早,數(shù)據(jù)量翻番一定會(huì)出現(xiàn)很多意想不到的情況。不信就試試吧!
閱讀全文
類別:默認(rèn)分類 查看評(píng)論
文章來(lái)源:http://hi.baidu.com/knuthocean/blog/item/d291ab64301ddbfaf73654bc.html