在分布式系統里的多台服務器要對數據狀態達成一致,其實是一件很有難度和挑戰的事情,因為服務器集群環境的軟硬件故障隨時會發生,多台服務器對一個數據的記錄保持一致,需要一些技巧和設計。
Paxos 算法就是用來解決這類問題的,多台服務器通過內部的投票表決機制決定一個數據的更新與寫入。
應用程序連接到任意一台服務器后提起狀態修改請求,該服務器會將這個請求發送給集群中其他服務器進行表決。如果某個服務器同時收到了另一個應用程序同樣的修改請求,它可能會拒絕該服務器的表決,並且自己也發起一個同樣的表決請求,那么其他服務器就會根據時間戳和服務器排序規則進行表決。表決結果會發送給其他所有服務器,最終發起表決的服務器,會根據收到的表決結果決定該修改請求是否可以執行,從而在收到請求的時候就保證了數據的一致性。