iT邦幫忙

鐵人檔案

第 11 屆 iThome 鐵人賽
回列表
Software Development

分散式系統 - 在分散的世界中保持一致 系列

現今的軟體已經不再是單一執行檔、單一電腦走天下。
幾乎所有眼前的服務皆是由許多的小元件組成,他們是怎麼彼此跨越網路交換資訊的呢?
又怎麼在彼此身處異地的情況下完成任務?
再更近一步,我們知道網路是不可靠的,隨時可能有斷線、掉封包或是被瞬間高流量塞爆的危機,
面對這樣的環境如何讓系統繼續運作而不致崩潰?
或著我們有多少把握,運作一段時間後,這些分散在各地的元件手中的資訊是一致的?
元件或是儲存的資料失效後如何回復?備份成三份、五份有沒有效?
分散式系統藏著這麼多的問題,此系列希望能夠提供一些基礎理論與經典實作的分享,
讓大家面對上面問題時,心中有著前人走過的路做參考。

鐵人鍊成 | 共 30 篇文章 | 235 人訂閱 訂閱系列文 RSS系列文
DAY 1

達標好文 Day 1 - 分散式系統筆記

這個系列的目的? 現今的軟體已經不再是單一執行檔、單一電腦走天下。幾乎所有眼前的服務皆是由許多的小元件組成,他們怎麼彼此跨越網路交換資訊呢?又怎麼在彼此身處異地...

2019-09-16 ‧ 由 Jack Lin 分享
DAY 2

達標好文 Day 2 - 我的C是你的C嗎,介紹CAP Theorem與ACID/BASE

第一天,我們輕鬆一點。在走入一堆系統與理論的迷宮前,我們來認識一下分散式系統最知名的理論 - CAP Theorem 先看一個例子 先舉一個簡單的服務讓大家有一...

2019-09-17 ‧ 由 Jack Lin 分享
DAY 3

達標好文 Day 3 - 從Replica Server讀到的資料一定正確嗎? Data Replication and Consistency

前言 昨天舉了一個很基本的例子,講了分散式系統怎麼開始的(傳送門)。最重要的原因,就是因為我們希望將儲存的資料做replication儲存到多個servers上...

2019-09-18 ‧ 由 Jack Lin 分享
DAY 4

Day 4 - DynamoDB設計裡Consistency與Availability的爭奪 - Quorum System(上)

先看一個例子 昨天的分散式儲存系統,要求寫入只能寫入primary server,讀取則可以從replica servers讀取。因此問題: 在於要多久的時間...

2019-09-19 ‧ 由 Jack Lin 分享
DAY 5

Day 5 - DynamoDB設計裡Consistency與Availability的爭奪 - Quorum System(下)

前言 昨天(傳送門提到如果今天有5個replicas,搭配 W+W > N 與 W+R > N 我們再搭配timestamp可以讀到最新的結果。...

2019-09-20 ‧ 由 Jack Lin 分享
DAY 6

Day 6 - 分散式系統裡的時間並不可靠(上) - Lamport Logical Clock

前言 前面Quorum System (上)、(下),討論了針對replica server的讀寫,我們可以參數化各種W/R數量,來改變系統的Consisten...

2019-09-21 ‧ 由 Jack Lin 分享
DAY 7

Day 7 - 分散式系統裡的時間並不可靠(下) - Vector Clock

前言 昨天我們介紹了Lamport Logical Clock可以幫助我們找出分散式系統裡的Causality關係,但是有其缺點,那就是雖然兩個event是平行...

2019-09-22 ‧ 由 Jack Lin 分享
DAY 8

Day 8 - 共識演算法(前言)

前言 前面我們講了各種Consistency; 講了Quorum System可以調整W/R參數決定系統如何在一堆replica servers中做讀寫; 講了...

2019-09-23 ‧ 由 Jack Lin 分享
DAY 9

Day 9 - 共識演算法之虛構的希臘城邦 - Paxos(上)

前言 前面我們提到了共識演算法是達成Strong Consistency的一種做法。而共識演算法必須滿足以下三個條件: Termination: 保證所有參...

2019-09-24 ‧ 由 Jack Lin 分享
DAY 10

Day 10 - 共識演算法之虛構的希臘城邦 - Paxos(下)

設計出一套演算法,當然必須能夠證明他的正確性,且要滿足Consensus Problem的三個要求Termination、Agreement與Validity...

2019-09-25 ‧ 由 Jack Lin 分享