iT邦幫忙

鐵人檔案

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

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

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

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

Day 11 - 共識演算法 - 2 Phase Commitment (2PC)

前言 前面提到的Paxos: Leaderless,每一個replica server都可以當Proposer去說服系統達成共識,決定最終的v值 保證「只要過...

2019-09-26 ‧ 由 Jack Lin 分享
DAY 12

Day 12 - 共識演算法 - 3 Phase Commitment (3PC)

前言 昨天提到在資料庫領域有2PC來解決Distributed Transaction ACID的問題。但是最大的缺點便是單一Coordinator,如果失效那...

2019-09-27 ‧ 由 Jack Lin 分享
DAY 13

Day 13 - 共識演算法 - Paxos太難了所以我發明了Raft(上)

前言 今天要來說一個覺得人家論文太難,所以就寫一個博士論文重新發明共識演算法的故事。 其實,Paxos太難這件事不只一個人說過,也許前面幾篇講解Paxos流程不...

2019-09-28 ‧ 由 Jack Lin 分享
DAY 14

Day 14 - 共識演算法 - Paxos太難了所以我發明了Raft(下)

前言 昨天提到了基本的選Leader的方式,與log被commit的方法,感覺已經非常完整了,到底哪裡還有問題呢? 我們今天繼續往後探討當選出一個新的Leade...

2019-09-29 ‧ 由 Jack Lin 分享
DAY 15

Day 15 - 共識演算法 - 先喘口氣做一個複習

前言 今天鐵人30天已經走了一半了!沒想到我們還在討論Consistency與Availability的問題。就知道其實分散式系統最大的問題,便是在保持系統可用...

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

Day 16 - 分散式系統溝通的方法 - RPC

前言 雖然我們還有Zookeeper的ZAB共識演算法還沒看,但是RPC算是很基礎的分散式系統溝通方法,在Raft裡面也是直接使用並將Spec寫在論文中,因此我...

2019-10-01 ‧ 由 Jack Lin 分享
DAY 17

Day 17 - 共識演算法之最後一個了 - Zookeeper的ZAB

前言 這是我們最後一個要介紹的共識演算法了,也就是Zookeeper使用的ZAB共識演算法。接下來我們會從Zookeeper開始,往上以系統或是實例角度介紹。...

2019-10-02 ‧ 由 Jack Lin 分享
DAY 18

Day 18 - Google Distributed Lock Service - Chubby(上)

前言 我們前面剛講完Zookeeper的共識演算法,還沒介紹它的功能,怎麼就跳到什麼鎖服務了呢? 這是因為Apache系列底下的分散式系統例如: Hadoop、...

2019-10-03 ‧ 由 Jack Lin 分享
DAY 19

Day 19 - Google Distributed Lock Service - Chubby(中)

Chubby 架構 下圖是一個Chubby的架構 分成Client與Chubby Cells 五個replica servers組成一個高可用的Chubby...

2019-10-04 ‧ 由 Jack Lin 分享
DAY 20

Day 20 - Google Distributed Lock Service - Chubby(下)

Chubby Caching 首先Chubby應用在Google內部,必須支撐上千個Client,每一個Client都是另外一個分散式系統與服務。因此Chubb...

2019-10-05 ‧ 由 Jack Lin 分享