Redis Labs将推出Redis服务器集群模块RedisRaft

开源内存数据库Redis的主要维护厂商Redis Labs,正在开发一个称为RedisRaft的新模块,可集结多个Redis服务器,形成一个单一容错且一致的集群,正如同名称所暗示的,该模块采用Raft共识算法实例。

RedisRaft通过一系列严格串行化部署选项,在Redis和Redis生态系统加入强一致性,可与现有用户端、函数库和资料类型一起使用,进而支持需要高度可靠性和一致性的超高速缓存案例。Raft则是共识算法,提供了一种可在服务器集群中,分散状态机的方法,确保集群中每一个节点都同意一系列的状态转换。

RedisRaft早在Redis 5发布之前,就已经以实验性项目发布,官方表示,RedisRaft可以提供与ZooKeeper、Etcd等资料存储相同的一致性与可靠性,保证资料提交且永不丢失,读取也保证回传最新提交的写入。

不过,由于要在集群中维持资料的一致性和可靠性,性能也将有所取舍,用户端操作将依赖集群节点交换消息,因此将会受网络延迟影响,而且写入操作的完成,需要先更新到磁盘上,因此性能也会受磁盘I/O延迟限制,另外,也只有当大多数节点正常运行并能互相通信时,集群才可使用。

当RedisRaft模块加载到Redis中,RedisRaft便会接管集群节点之间的通信,还有Raft日志和快照的备份等,不过,这些操作都与Redis核心无关,Redis核心不参与相关控制,就其本身而言,还是作为没有集群、久性和备份的独立服务器运行。

Raft算法使用强领导(Strong-Leader)的概念,也就是说,所有的用户端操作,都会转送到领导节点进行初始,不过领导节点是动态的,用户端可以自行捕捉错误,并且与领导节点重新连接,或是在RedisRaft上启动追随者代理模式,让集群节点自动将请求转送给领导节点。

官方提到,虽然RedisRaft还在开发,但是大部分基本功能都已经完成,预计在几个月后,就会发布第一个预览版本,之后当RedisRaft发布正式版本时,将会以GNU AGPLv3和RSAL(Redis Source Available License)双重授权许可发布,而这也代表,用户可以免费地在应用程序中使用RedisRaft,并且销售集成RedisRaft的应用程序,还能够自由修改程序代码,唯一的限制是,不能使用RedisRaft开发数据库、缓存引擎、流媒体处理引擎和搜索引擎等。