開源記憶體資料庫Redis的主要維護廠商Redis Labs,正在開發一個稱為RedisRaft的新模組,可集結多個Redis伺服器,形成一個單一容錯且一致的叢集,正如同名稱所暗示的,該模組採用Raft共識演算法實作。

RedisRaft透過一系列嚴格序列化部署選項,在Redis和Redis生態系加入強一致性,可與現有用戶端、函式庫和資料類型一起使用,進而支援需要高度可靠性和一致性的超高速快取案例。Raft則是共識演算法,提供了一種可在伺服器叢集中,分散狀態機的方法,確保叢集中每一個節點都同意一系列的狀態轉換。

RedisRaft早在Redis 5發布之前,就已經以實驗性專案釋出,官方表示,RedisRaft可以提供與ZooKeeper、Etcd等資料儲存相同的一致性與可靠性,保證資料提交且永不丟失,讀取也保證回傳最新提交的寫入。

不過,由於要在叢集中維持資料的一致性和可靠性,效能也將有所取捨,用戶端操作將仰賴叢集節點交換訊息,因此將會受網路延遲影響,而且寫入操作的完成,需要先更新到磁碟上,因此效能也會受磁碟I/O延遲限制,另外,也只有當大多數節點正常運作並能互相通訊時,叢集才可使用。

當RedisRaft模組載入到Redis中,RedisRaft便會接管叢集節點之間的通訊,還有Raft日誌和快照的備份等,不過,這些操作都與Redis核心無關,Redis核心不參與相關控制,就其本身而言,還是作為沒有叢集、久性和備份的獨立伺服器運作。

Raft演算法使用強領導(Strong-Leader)的概念,也就是說,所有的用戶端操作,都會轉送到領導節點進行初始,不過領導節點是動態的,用戶端可以自行捕捉錯誤,並且與領導節點重新連接,或是在RedisRaft上啟動追隨者代理模式,讓叢集節點自動將請求轉送給領導節點。

官方提到,雖然RedisRaft還在開發,但是大部分基本功能都已經完成,預計在幾個月後,就會釋出第一個預覽版本,之後當RedisRaft釋出正式版本時,將會以GNU AGPLv3和RSAL(Redis Source Available License)雙重授權許可發布,而這也代表,使用者可以免費地在應用程式中使用RedisRaft,並且販售整合RedisRaft的應用程式,還能夠自由修改程式碼,唯一的限制是,不能使用RedisRaft開發資料庫、快取引擎、串流處理引擎和搜尋引擎等。


Advertisement

更多 iThome相關內容