doyoubi/undermoon:Rust语言编写的Redis集群方案


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 集群的最简单方法。