doyoubi/undermoon:Rust語言編寫的Redis叢集方案

banq發表於2022-02-22

Undermoon是一個基於Redis 叢集協議的自管理 Redis 叢集系統,支援:
  • 水平可擴充套件性和高可用性
  • 透過 HTTP API 進行叢集管理
  • 主副本和副本的自動故障轉移
  • 快速縮放

任何實現 redis 協議的儲存系統也可以以某種方式與 undermoon 一起工作,例如KeyDB
關於 Redis 叢集協議的更深入解釋以及 Undermoon 是如何實現的,請參考Redis 叢集協議
 
叢集原理:
  • 後設資料儲存

後設資料儲存儲存整個undermoon叢集的所有後設資料,包括現有的 Redis 例項、代理和暴露的 Redis 叢集。現在它是一個名為Memory Broker. 當使用undermoon-operator時,這Memory Broker將更改為用於ConfigMap儲存資料。
  • 協調員

Coordinator 將在代理和伺服器代理之間同步後設資料。它還主動檢查伺服器代理的活躍度並啟動故障轉移。
  • 儲存叢集

儲存叢集由伺服器代理和 Redis 例項組成。它就像官方的 Redis 叢集一樣為應用程式服務。可以在它和應用程式之間新增一個 Redis Cluster Proxy,這樣應用程式就不需要將其 Redis 客戶端升級為智慧客戶端。
  • 塊chunk

塊是每個暴露的 Redis 叢集的最小構建塊。每個塊由 4 個 Redis 例項和 2 個伺服器代理組成,均勻分佈在兩臺不同的物理機上。所以每個 Redis 叢集的節點數將是 4 的倍數,半主半副本。
chunk 的設計使得構建具有良好拓撲結構的叢集非常容易,以實現工作負載平衡。
 
安裝:如果你有 Kubernetes,使用undermoon-operator 是建立 Redis 叢集的最簡單方法。
 

相關文章