第十一屆 佳作

software-dev
分散式系統 - 在分散的世界中保持一致
Jack Lin

系列文章

DAY 1

Day 1 - 分散式系統筆記

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

DAY 2

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

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

DAY 3

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

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

DAY 4

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

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

DAY 5

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

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

DAY 6

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

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

DAY 7

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

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

DAY 8

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

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

DAY 9

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

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

DAY 10

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

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