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