原文:
gwen shapira,大腕級的解決方案架構師(sa),如今cloudera的全職工程師,在twitter上提的乙個問題引起了我的思考。
如果是以前,我可能會回答「嗯,這裡有篇flp**,這裡有篇paxos**,這裡還有篇拜占庭將軍問題的**...」,我會羅列一籮筐重要的材料,如果你一頭扎進去,至少花費6個月的時間才能過一遍這些材料。然而我已逐漸明白推薦大量的理論性的**通常恰恰是著手學習分布式系統理論的錯誤方式(除非你在做乙個phd專案)。**通常比較深入難懂,需要認真地研習,通常還需要大量的時間投入(significant experience)來理清這些**的重要貢獻,以及在整個理論體系中的位置。要求工程師具備這樣的專業水平又有多大的意義呢?
但是,很遺憾,對分布式系統理論方面的重大研究成果和思想進行概括、歸納、背景分析的『導引』性質的優秀材料非常缺乏;特別是沒有居高臨下態度的材料。對這塊空白區域的思考讓我想到了另乙個有趣的問題:
乙個分布式系統工程師應該知道些什麼分布式系統理論?
入門第一步
失敗和時間
分布式系統工程師需要面對的許多困難最終都可以歸咎於兩個潛在的原因:
程序之間對於時間的認知能共享些什麼?哪些失敗的場景是能夠檢測到?什麼演算法和原語可能被正確地實現?這三個問題有著非常深層的聯絡。多數時候,我們會假設兩個不同節點之間對於時間概念或時間以什麼樣的速度逝去沒有任何可共享的認知。
你應該知道:
容錯的基本矛盾
乙個系統,若要不降級而容忍某些錯誤的發生,就必須能夠好像那些錯誤沒有發生一樣地運作。這通常意味著系統的這些部分必須能夠冗餘地工作,但是非絕對必要地做更多的工作通常會在效能和資源耗用方面產生一些消耗。這是為系統新增容錯帶來的基本矛盾。
你應該知道:
基本的原語
基礎結論
真實系統
google:
not google:
dryad, cassandra, ceph, ramcloud, hyperdex, pnuts
分布式 分布式系統的設計
在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...
分布式系統中的分布式事務
分布式事務中可以借助mq訊息系統來進行事務控制,這一點與可靠訊息最終一致方案一樣。看來mq中介軟體確實在乙個分布式系統架構中,扮演者重要的角色。最大努力通知方案是比較簡單的分布式事務方案,它本質上就是通過定期校對,實現資料一致性。中介軟體如何保證訊息的一致性 問題的問法多種多樣,怎麼保證兩個伺服器的...
分布式系統
分布式系統和計算機網路系統的共同點是 多數分布式系統是建立在計算機網路之上的,所以分布式系統與計算機網路在物理結構上是基本相同的。他們的區別在於 分布式作業系統的設計思想和網路作業系統是不同的,這決定了他們在結構 工作方式和功能上也不同。網路作業系統要求網路使用者在使用網路資源時首先必須了解網路資源...