至關長的一段時間裏我試圖努力學習分佈式系統, 而偏偏是一旦開始深挖學習, 彷佛就沒有盡頭, 關於分佈式系統的文獻和資料很是普遍, 對初學者來講很難決定讀什麼樣的Paper, 買什麼樣的書.html
因此把相關的資料整理下, 方便你們學習.git
分佈式系統是什麼github
分佈式系統的事務處理shell
兩階段提交ide
三階段提交性能
Lamport's Paxos Made Livegoogle
Amazon’s Highly Available Key-value Store
What we talk about when we talk about Distribute System
Time, Clocks, and the Ordering of Events in a Distributed System
The Chubby lock service for loosely-coupled distributed systems
分佈式系統是什麼?
分佈式多節點環境中, 如何應對單節點故障狀況, 而整個集羣能夠提供完整無損的服務.
在生產環境中一般使用兩種手段來擴展數據服務能力:
以上方案都須要考慮三種狀況:
要想讓數據有高可用性, 就須要冗餘數據寫多份, 寫多份的問題會帶來一致性的問題, 而一致性的問題又會帶來性能問題.
是一個解決分佈式系統中, 多個節點之間就某個值(提案)達成一致(決議)的通訊協議.
解決最大問題: 把不肯定性的事情變得肯定.
"你願意和我滾牀單嗎?" "滾!"
NWR模型把CAP的選擇權交給了用戶, 讓用戶本身的選擇你的CAP中的哪兩個.
N表明N個備份, W表明要寫入至少W份才認爲成功, R表示至少讀取R個備份.
配置的時候要求W+R > N. 由於W+R > N, 因此R > N-W 這個是什麼意思呢? 就是讀取的份數必定要比總備份數減去確保寫成功的倍數的差值要大.
也就是說, 每次讀取, 都至少讀取到一個最新的版本, 從而不會讀到一份舊數據.
Dynamo引入了Vector Clock將可能的版本衝突交給用戶本身處理.