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