分散式系統小筆記
容錯性是一個非常重要的概念,比如說disk裡的東西丟了有沒有什麼辦法恢復呢?有幾種辦法。 比如說同樣的資料存在好幾個disk裡,雖然有點浪費,但是起碼保證可以恢復。
只靠RAID 並不一定就能保護所有的突發情況。比如說如果有人write a bad write, 這樣直接就備份了不好的東西。
這邊又回到了database裡的概念。 比如說用Lock,來保證誰先誰後。用2PL 來保證可以Roll Back...用Log, undo, redo來處理crash.
分散式系統有好多機器一起處理東西。
用分散式系統的好處是: 蠻簡單造一大堆simple computers。
Flow Control: 為了處理髮資訊的人頻率太快,收資訊的收不了那麼快。加一個Buffer在receiver, 還沒來得及收的資訊先存buffer裡。
General's Paradox, 紅色的為將軍們, 中間藍色的為敵人。 兩個將軍可以傳信,但是有可能被中間的敵人攔截。 如果兩個將軍沒能同時攻擊敵人,倆都死。 如果能夠默契的同時進攻,將軍獲勝。
問題: 在一個不可信賴的網路中,傳輸的資訊能夠保證兩方同時做一件什麼事情嗎?答案:不行。即便資訊成功的傳送。
Two Phase Commit [不是2PL哦]
有一個log 來跟蹤commit 發生沒有。如果一個機器炸了,當他重新啟動的時候,他會先check log to recover state of world at time of crash.
Prepare Phase:
全域性coordinator 要求所有的參與者保證要麼commit,要麼rollback。當一個人投票說abort, 全域性coordinator 寫'abort'進log, 然後告訴大家都abort吧。每個人的log裡這時候都會寫一個"Abort".
Commit Phase:
當所有人都說準備好啦,coordinator 將"Commit"寫入log。 然後告訴大家可以commit了。 所有人恢復一個ACK。 當coordinator 收到ACKs,代表所有人表示收到了叫他們可以commit的資訊了,這時候coordinator 寫"got commit" to Log.
Coordinator在等待回覆的時候,等固定的多少時間,到時間沒收到全員的資訊,send "Global-Abort".
每一個distributed nodes 使用stable Storage 來儲存current state。A working在等待Global decision的時候,可以問問身邊的同學他們處在什麼state。如果旁邊的人爆炸了, 或者commit了。那麼久表示coordinator肯定發了一個Global message,只是自己沒收到。這個時候跟著旁邊哥們爆炸或者commit就好了。
Blocking問題:如果其他所有worker都處於ready 狀態,但是這個人自己是處於waiting for global decision的狀態。那麼會Block, 因為不知道其他人的ready是等著爆炸還是等著commit。
Paxos 不會有Blocking的問題。
RPC:
Paxos: 摘自知乎大神 GRAYLAMB
reference: http://blog.brucefeng.info/post/what-is-rpc
ZooKeeper 參考文章:http://cailin.iteye.com/blog/2014486/
Paxors: http://blog.csdn.net/chdhust/article/details/50539545 這篇最好!
https://www.quora.com/Distributed-Systems-What-is-a-simple-explanation-of-the-Paxos-algorithm Quora上這篇也不錯
資料庫到底是要非同步還是強行同步
我粗淺的理解是,為了解決資料備份的瞬時性,採用分散式Paxos。 當大部分節點同意這個node的值應該是這樣,代表少數node可能miss存了updated 的值。所以最後還是全體update成新的value。
2PC解決此類問題的不足。node只能同意或者否決另一個node propose的東西,如果他自己想要建議一個別的solution,得重新發起一個2PC。
3PC的不足:
Paxos:
跟2PC最大的不同在於,Paxos不需要所有node都同意才ok。只要多數派同意,proposal 就通過。
當然,Leader Node自己也可能會fail。所以Paxos 不是Single Leader制度。 每秒鐘都可能有node搶著當Leader。
相關文章
- 分散式系統學習筆記分散式筆記
- 分散式系統架構筆記分散式架構筆記
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記
- 文字上的演算法讀書筆記四--分散式系統演算法筆記分散式
- 分散式系統分散式
- 分散式系統2:分散式系統中的時鐘分散式
- 分散式系統:系統模型分散式模型
- 分散式系統之CAP理論雜記分散式
- 分散式 - 分散式系統的特點分散式
- 分散式系統(三)——分散式事務分散式
- 分散式任務排程系統設計小結分散式
- [分散式]分散式計算系統淺析分散式
- 分散式監控系統Zabbix3.4-針對MongoDB效能監控操作筆記分散式MongoDB筆記
- 分散式系統的跟蹤系統分散式
- 分散式系統基礎分散式
- 分散式檔案系統分散式
- 分散式圖片系統分散式
- 分散式系統(二)——GFS分散式
- 大型分散式系統現場,阿里大牛帶你實戰分散式系統分散式阿里
- 分散式:分散式系統下的唯一序列分散式
- hadoop 偽分散式模式學習筆記Hadoop分散式模式筆記
- 《分散式快取》讀書筆記二分散式快取筆記
- 分散式服務框架開發筆記分散式框架筆記
- GlusterFS分散式儲存學習筆記分散式筆記
- 什麼是分散式系統!以及分散式系統架構的優缺點!分散式架構
- 分散式檔案系統-HDFS分散式
- 分散式系統的問題分散式
- Kafka 分散式訊息系統Kafka分散式
- 分散式系統程式設計分散式程式設計
- 分散式系統CAP定理教程分散式
- 分散式系統:遠端呼叫分散式
- ReactNative分散式熱更新系統React分散式
- HDFS分散式檔案系統分散式
- 典型分散式系統分析:Dynamo分散式
- 分散式系統:向量時鐘分散式
- 我理解的分散式系統分散式
- 深入理解分散式系統分散式
- 分散式系統設計策略分散式
- 什麼是分散式系統分散式