主动-主动异地分布式 Redis
Redis Enterprise Software 中的双活数据库概述
Redis 企业软件 | 适用于 Kubernetes 的 Redis Enterprise |
---|
在 Redis Enterprise 中,主动-主动异地分发基于 CRDT 技术。 CRDT 的 Redis Enterprise 实现称为主动-主动数据库(以前称为 CRDB)。 使用主动-主动数据库,应用程序可以从不同的地理位置无缝读取和写入同一数据集,延迟小于 1 毫秒 (ms), 而无需更改应用程序连接到数据库的方式。
主动-主动数据库还为地理位置分散的用户提供灾难恢复和加速数据读取访问。
高可用性
主动-主动复制提供的高可用性建立在许多 Redis Enterprise Software 功能(例如集群、复制和副本 HA)以及主动-主动特有的一些功能(多主复制、自动冲突解决和强大的最终一致性)之上。
集群和复制在主动-主动数据库中一起使用,以在多个节点和多个集群之间分配数据集的多个副本。因此,节点或集群不太可能成为单点故障。如果主节点或主分片发生故障,则副本将自动提升为主节点。为避免一个节点保留某些数据的所有副本,副本 HA 功能(默认启用)会自动将副本分片迁移到可用节点。
多主复制
在 Redis Enterprise Software 中,复制将数据从主分片复制到副本分片。主动-主动异地分布式复制还会将主分片和副本分片复制到其他集群。每个主动-主动数据库至少需要跨越两个集群;这些集群称为参与集群。
每个参与的集群都托管一个数据库实例,并且每个实例都有自己的主节点。拥有多个主节点意味着您可以连接到任何参与集群中的代理。在地理位置上连接到最近的集群可实现接近本地的延迟。多主复制(以前称为多主复制)还意味着,如果其中一个参与的集群发生故障,您的用户仍然可以访问数据库。
同步器
在多个集群之间保持数据集的多个副本一致并非易事。为了实现参与集群之间的一致性,Redis 主动-主动复制使用称为同步器的过程。
同步器保留一个复制积压,该积压存储对 syncer 发送到其他参与集群的数据集的更改。同步器使用部分同步来使副本与更改保持同步,或者在副本或主副本丢失时进行完全同步。
冲突解决
由于您可以连接到任何参与的集群来执行写入作,因此始终存在并发写入和冲突写入。冲突解决是 Active-Active 技术的重要组成部分。主动-主动数据库仅使用无冲突复制数据类型 (CRDT)。这些数据类型提供可预测的冲突解决方案,不需要应用程序或客户端执行任何其他工作。
在使用 CRDT 进行主动-主动数据库开发时,您需要考虑一些重要的差异。有关相关信息,请参阅使用 Active-Active 数据库开发应用程序。
强大的最终一致性
保持复制数据库的强一致性需要在可扩展性和可用性方面进行权衡。Redis 主动-主动数据库使用强大的最终一致性模型,这意味着本地值可能在短时间内跨副本有所不同,但它们最终都会收敛到一种一致状态。Redis 使用向量时钟和 CRDT 冲突解决来增强副本之间的一致性。您还可以启用因果一致性功能,以保留作在副本之间同步时的顺序。
Redis Enterprise Software 的其他功能也可用于增强主动-主动数据库的性能、可扩展性或持久性。其中包括数据持久性、多个活动代理、分布式同步、OSS 集群 API 和机架区域感知。