續 Day 12
今天的特別理論和抽象,所以懶得看就跳過吧!
很多演算法是被設計來解決分散式系統問題的,演算法要被設計成可用,就不能太依賴硬體或特定軟體來執行,反而要求我們以某種方式形式化我們期望在系統中發生的故障類型,我們通過定義系統模型來做到這一點,今天就是要用比較抽象的角度來看看這些算法能假設的事物為何。
首先是時序假設 (timing assumptions),我們有 3 個常用的模型:
再來是節點失敗假設,一樣有 3 類:
現實生活中的系統模型大多數都是 部份同步模型+ 崩潰恢復故障,那麼... 究竟分散式演算法怎麼應對這些模型呢?我們會從明天開始探討算法細節。
Day 8 ~ Day 13 講了分散式系統會遇到的鬼故事,網路會延遲、時鐘不準、程序會暫停等等,都是概念性的東西居多,多一點認識總是能幫助你未來 debug 時能有更多的想像力,從明天開始,終於就要進入比較實戰的部份啦!當 Day 8 ~ Day 13 的鬼故事都發生時,我們該怎麼辦。