Undermoon - 基于 Redis Cluster Protocol 的自管理 Redis 集群系統(tǒng)
Undermoon 是一個基于 Redis 集群協(xié)議的自管理 Redis 集群系統(tǒng),支持:
- 水平可擴展性和高可用性
- 通過 HTTP API 進行集群管理
- master 和 replica 的自動故障轉(zhuǎn)移
- 快速擴展
任何實現(xiàn) redis 協(xié)議的存儲系統(tǒng)也可以以某種方式與 undermoon 一起工作,例如 KeyDB。
- https://github.com/JohnSully/KeyDB
關(guān)于 Redis Cluster Protocol 的更深入解釋以及 Undermoon 是如何實現(xiàn)的,請參考 Redis Cluster Protocol。
- https://github.com/doyoubi/undermoon/blob/master/docs/redis_cluster_protocol.md
架構(gòu)
Metadata Storage(元數(shù)據(jù)存儲)
Metadata storage 存儲了整個 undermoon 集群的所有元數(shù)據(jù),包括現(xiàn)有的 Redis 實例、代理和暴露的 Redis 集群?,F(xiàn)在它是一個名為 Memory Broker 的內(nèi)存存儲服務(wù)器。當(dāng)使用 undermoon-operator 時,這個 Memory Broker 會改為使用 ConfigMap 來存儲數(shù)據(jù)。
Coordinator(協(xié)調(diào)器)
Coordinator 將在代理和服務(wù)器代理之間同步元數(shù)據(jù)。它還主動檢查服務(wù)器代理的活躍度并啟動故障轉(zhuǎn)移。
Storage Cluster(存儲集群)
Storage Cluster 由服務(wù)器代理和 Redis 實例組成。它就像官方的 Redis Cluster 一樣為應(yīng)用程序服務(wù)??梢栽谒蛻?yīng)用程序之間添加一個 Redis Cluster Proxy,這樣應(yīng)用程序就不需要將其 Redis 客戶端升級為智能客戶端。
Chunk(塊)
Chunk 是每個暴露的 Redis 集群的最小構(gòu)建塊。每個塊由 4 個 Redis 實例和 2 個服務(wù)器代理組成,均勻分布在兩臺不同的物理機上。所以每個 Redis 集群的節(jié)點數(shù)將是 4 的倍數(shù),一半 master 一半 replica。
chunk 的設(shè)計使得構(gòu)建具有良好拓撲的集群非常容易,以實現(xiàn)工作負載均衡。