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.mdMetadata storage 存储了整个 undermoon 集群的系统所有元数据,包括现有的基集群 Redis 实例、代理和暴露的服务器租用自管 Redis 集群。现在它是系统一个名为 Memory Broker 的内存存储服务器。当使用 undermoon-operator 时,基集群这个 Memory Broker 会改为使用 ConfigMap 来存储数据。自管
Coordinator 将在代理和服务器代理之间同步元数据。系统它还主动检查服务器代理的基集群活跃度并启动故障转移。
Storage Cluster 由服务器代理和 Redis 实例组成。自管它就像官方的系统 Redis Cluster 一样为应用程序服务。可以在它和应用程序之间添加一个 Redis Cluster Proxy,这样应用程序就不需要将其 Redis 客户端升级为智能客户端。
Chunk 是每个暴露的源码下载 Redis 集群的最小构建块。每个块由 4 个 Redis 实例和 2 个服务器代理组成,均匀分布在两台不同的物理机上。所以每个 Redis 集群的节点数将是 4 的倍数,一半 master 一半 replica。
chunk 的设计使得构建具有良好拓扑的集群非常容易,以实现工作负载均衡。