首先,我們從大多數人熟悉的單體式(Monolithic)架構說起。 Monolithic 就如同摩艾石像般,巨大、莊嚴,承載著文化的整體。 在單體式應用程...
冪等性 數學定義 自己給重複運算的結果==自己 f(f(x)) = f(x) 使用者對於同一操作發起多次請求,請求的結果是一致的,不會因為多次點選而產生副作用...
前言 今天是筆記的最後一天,終於暫時可以告別每天看投影片、Paper的日子,我都覺得這一次的複習比去年上課準備期末考還認真 xD 也因此這一次從頭檢視學過的知識...
前言 昨天介紹了Kubernetes的運作與設計原理,了解到最主要的運作模式就是靠etcd、APIServer、Controller的合作完成了K8s上面所有任...
前言 當初開始這一個系列想說有三十天的份量可以寫,應該可以將所有內容寫完。沒想到默默的只剩3天的Quota 既然我們已經完整的把 Data Replicati...
前言 前面介紹了兩個搭配Data Partitioning使用的DHT演算法 CHORD、Kademlia。 今天特別拉出來介紹一下這個現在已經退流行的P2P應...
前言 前兩篇介紹的Distributed Hash Table的Hashing Space是對應到一個圓,今天我們要來介紹另一種對應到Tree Structur...
前言 昨天介紹了CHORD的兩種Lookup方法,一個是不斷往下一個Successor詢問,一個是利用儲存空間也就是Finger Table換取時間,以取對數的...
前言 昨天提到說明了 DHT便是將傳統的Hash Bucket變成一個個實體的Node 而Consistent Hashing是將Key與Node都一起...
前言 前面都是在聊資料做備份放到replca servers後的各種資料一致性。 分散式系統還有另一個大主題,那就是如何分散資料到各個Node上。這個需求最早出...
前言 今天我們繼續看幾個跟Zookeeper有關的實作,主要是因為這是那時的作業,使用Golang,我覺得蠻好玩的。 Leader Election 許多分散式...
前言 Chubby作為一個在Google內部各種分散式系統很核心的服務,可惜的是並沒有開源。因此Zookeeper的出現給大家一個更具體的想像這個服務怎麼運作與...
Chubby Caching 首先Chubby應用在Google內部,必須支撐上千個Client,每一個Client都是另外一個分散式系統與服務。因此Chubb...
Chubby 架構 下圖是一個Chubby的架構 分成Client與Chubby Cells 五個replica servers組成一個高可用的Chubby...
前言 我們前面剛講完Zookeeper的共識演算法,還沒介紹它的功能,怎麼就跳到什麼鎖服務了呢? 這是因為Apache系列底下的分散式系統例如: Hadoop、...
前言 這是我們最後一個要介紹的共識演算法了,也就是Zookeeper使用的ZAB共識演算法。接下來我們會從Zookeeper開始,往上以系統或是實例角度介紹。...
前言 雖然我們還有Zookeeper的ZAB共識演算法還沒看,但是RPC算是很基礎的分散式系統溝通方法,在Raft裡面也是直接使用並將Spec寫在論文中,因此我...
前言 今天鐵人30天已經走了一半了!沒想到我們還在討論Consistency與Availability的問題。就知道其實分散式系統最大的問題,便是在保持系統可用...
前言 昨天提到了基本的選Leader的方式,與log被commit的方法,感覺已經非常完整了,到底哪裡還有問題呢? 我們今天繼續往後探討當選出一個新的Leade...
前言 今天要來說一個覺得人家論文太難,所以就寫一個博士論文重新發明共識演算法的故事。 其實,Paxos太難這件事不只一個人說過,也許前面幾篇講解Paxos流程不...
前言 昨天提到在資料庫領域有2PC來解決Distributed Transaction ACID的問題。但是最大的缺點便是單一Coordinator,如果失效那...
前言 前面提到的Paxos: Leaderless,每一個replica server都可以當Proposer去說服系統達成共識,決定最終的v值 保證「只要過...
設計出一套演算法,當然必須能夠證明他的正確性,且要滿足Consensus Problem的三個要求Termination、Agreement與Validity...
前言 前面我們提到了共識演算法是達成Strong Consistency的一種做法。而共識演算法必須滿足以下三個條件: Termination: 保證所有參...
前言 前面我們講了各種Consistency; 講了Quorum System可以調整W/R參數決定系統如何在一堆replica servers中做讀寫; 講了...
前言 昨天我們介紹了Lamport Logical Clock可以幫助我們找出分散式系統裡的Causality關係,但是有其缺點,那就是雖然兩個event是平行...
前言 前面Quorum System (上)、(下),討論了針對replica server的讀寫,我們可以參數化各種W/R數量,來改變系統的Consisten...
前言 昨天(傳送門提到如果今天有5個replicas,搭配 W+W > N 與 W+R > N 我們再搭配timestamp可以讀到最新的結果。...
先看一個例子 昨天的分散式儲存系統,要求寫入只能寫入primary server,讀取則可以從replica servers讀取。因此問題: 在於要多久的時間...
前言 昨天舉了一個很基本的例子,講了分散式系統怎麼開始的(傳送門)。最重要的原因,就是因為我們希望將儲存的資料做replication儲存到多個servers上...