(以下圖片來源出自讀書會成員講義)
在談分散式以前,首先來談談單機運作的概念。當我們的服務是單機運作時,伺服器的架構設計通常會是以下其中一種:
這種狀況下若是要擴展系統容量,只能升級電腦資源獲提升程式效率,這種方式也被稱為「垂直擴展(Vertical Scaling)」。
不過這樣的架構又衍生出兩個問題:
為了解決以上的問題,有個解法誕生了:
嘗試開很多個機器跑同一個服務,也就是採用分散式架構
在開了很多台機器後,我們似乎得到以下的好處:
這種增加節點的擴容方式,被稱作水平擴展(Horizontal Scaling
然而,事情不像外表看起來那麼單純又美好,進入分散式世界後所需要考慮的事情變得更多更複雜了。
在上一篇文章中我們提及 transaction 可以解決資料一致性的問題,然而在分散式架構下我們無法僅靠 transaction 就確保一致性,必須額外搭配共識(Consensus)的機制。
接下來介紹幾個名詞:
問題來了,有辦法同時達到 C (一致性),、A (可用性)、P (分區容忍) 嗎?
答案是沒辦法。明天我們來看看 CAP 理論是什麼。