現今的軟體已經不再是單一執行檔、單一電腦走天下。
幾乎所有眼前的服務皆是由許多的小元件組成,他們是怎麼彼此跨越網路交換資訊的呢?
又怎麼在彼此身處異地的情況下完成任務?
再更近一步,我們知道網路是不可靠的,隨時可能有斷線、掉封包或是被瞬間高流量塞爆的危機,
面對這樣的環境如何讓系統繼續運作而不致崩潰?
或著我們有多少把握,運作一段時間後,這些分散在各地的元件手中的資訊是一致的?
元件或是儲存的資料失效後如何回復?備份成三份、五份有沒有效?
分散式系統藏著這麼多的問題,此系列希望能夠提供一些基礎理論與經典實作的分享,
讓大家面對上面問題時,心中有著前人走過的路做參考。
這個系列的目的? 現今的軟體已經不再是單一執行檔、單一電腦走天下。幾乎所有眼前的服務皆是由許多的小元件組成,他們怎麼彼此跨越網路交換資訊呢?又怎麼在彼此身處異地...
第一天,我們輕鬆一點。在走入一堆系統與理論的迷宮前,我們來認識一下分散式系統最知名的理論 - CAP Theorem 先看一個例子 先舉一個簡單的服務讓大家有一...
前言 昨天舉了一個很基本的例子,講了分散式系統怎麼開始的(傳送門)。最重要的原因,就是因為我們希望將儲存的資料做replication儲存到多個servers上...
先看一個例子 昨天的分散式儲存系統,要求寫入只能寫入primary server,讀取則可以從replica servers讀取。因此問題: 在於要多久的時間...
前言 昨天(傳送門提到如果今天有5個replicas,搭配 W+W > N 與 W+R > N 我們再搭配timestamp可以讀到最新的結果。...
前言 前面Quorum System (上)、(下),討論了針對replica server的讀寫,我們可以參數化各種W/R數量,來改變系統的Consisten...
前言 昨天我們介紹了Lamport Logical Clock可以幫助我們找出分散式系統裡的Causality關係,但是有其缺點,那就是雖然兩個event是平行...
前言 前面我們講了各種Consistency; 講了Quorum System可以調整W/R參數決定系統如何在一堆replica servers中做讀寫; 講了...
前言 前面我們提到了共識演算法是達成Strong Consistency的一種做法。而共識演算法必須滿足以下三個條件: Termination: 保證所有參...
設計出一套演算法,當然必須能夠證明他的正確性,且要滿足Consensus Problem的三個要求Termination、Agreement與Validity...