Master-Slave 的模式限制在於只有一個 Master 處理寫入請求,那如果每個節點都可以寫入是不是就能克服這個限制?Peer-to-peer 模式裡每個節點一視同仁,沒有主從之分,每個節點都可以處理寫入請求,並將異動同步給其他所有結點。
這種模式的好處是對於寫入請求的處理能力上升而且可擴展,但多節點間的同步成本提升,可能導致另一種效能上的問題。此外,如果同時有兩個端點收到對同一筆資料的異動,可能導致資料衝突,例如:DB 1 號收到請求將我的聯絡信箱改為 keiliao@email1.com,同時 DB 2 號收到請求將我的聯絡信箱改為 keiliao@email2.com,同步時究竟該把原本的信箱改為 keiliao@email1.com 還是 keiliao@email2.com 呢?資料衝突的處理是一件頗具複雜度的事情,所以使用 Peer-to-peer 模式時最好把如何避免資料衝突的部分考慮到系統設計中,當然,如果資料不一致的狀況是可接受的,乾脆不處理資料衝突也是一個選項,只是這樣就會造成資料不一致,並不是每個系統都可以接受這種情境。