Undermoon - 基於 Redis Cluster Protocol 的自管理 Redis 集群系統

語言: CN / TW / HK

專案地址:https://github.com/doyoubi/undermoon

Undermoon 是一個基於  Redis 叢集協議 的自管理  Redis 集群系統,支援:

  • 水平可擴充套件性和高可用性

  • 通過 HTTP API 進行叢集管理

  • master 和  replica 的自動故障轉移

  • 快速擴充套件

任何實現 redis 協議的儲存系統也可以以某種方式與  undermoon 一起工作,例如 KeyDB。

  • https://github.com/JohnSully/KeyDB

關於 Redis Cluster Protocol 的更深入解釋以及 Undermoon 是如何實現的,請參考 Redis Cluster Protocol。

  • https://github.com/doyoubi/undermoon/blob/master/docs/redis_cluster_protocol.md

架構

Metadata Storage(元資料儲存)

Metadata storage 儲存了整個  undermoon 叢集的所有元資料,包括現有的  Redis 例項、代理和暴露的  Redis 叢集。現在它是一個名為  Memory Broker 的記憶體儲存伺服器。當使用  undermoon-operator 時,這個  Memory Broker 會改為使用  ConfigMap 來儲存資料。

Coordinator(協調器)

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

Storage Cluster(儲存叢集)

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

Chunk(塊)

Chunk 是每個暴露的  Redis 叢集的最小構建塊。每個塊由  4 個  Redis 例項和  2 個伺服器代理組成,均勻分佈在兩臺不同的物理機上。所以每個  Redis 叢集的節點數將是  4 的倍數,一半  master 一半  replica

chunk 的設計使得構建具有良好拓撲的叢集非常容易,以實現工作負載均衡。

更多