CAP Theorem 的 CAP 分別是指:
分散式系統中,這三個特性至多只有兩個能同時存在。
假設有兩台節點在不同機器上,如果存入資料的方式是Two-phase commit,亦即所有節點同意後才能存入資料,那麼只要partition發生、或任何一個節點故障,就不能運作,因此就只有C和A。但這樣的系統實在是太脆弱了(記得day 4 把查詢灑到所有機器執行的風險嗎?),所以一般的分散式系統都會要求要有P。
假設有兩台節點在不同機器上,且必須要能容忍Partition,那麼在partition發生時能怎麼做呢?
網路上CAP的圖很多,比方說這一張:

Source: http://www.w3resource.com/mongodb/nosql.php
沒有意外的話,明天應該會講一下Zookeeper,Zookeeper是偏向CP的設計,至於為什麼呢?等明天再說好了。
iThome鐵人賽