双活Redis应用
在为Active-Active数据库开发应用程序时需要记住的一般信息。
开发全球分布式应用程序可能具有挑战性,因为开发人员必须考虑在地区故障转移和跨区域写入冲突下的竞态条件和复杂事件组合。在Redis Enterprise Software (RS)中,Active-Active数据库通过直接使用内置智能来简化此类应用程序的开发,这些智能根据使用的数据类型处理冲突写入。与仅依赖简单的“最后写入者获胜”类型的冲突解决不同,地理分布的Active-Active数据库(以前称为CRDBs)结合了CRDT(无冲突复制数据类型)研究中定义的技术与Redis类型,以根据数据类型的意图提供智能和自动的冲突解决。
一个Active-Active数据库是一个全球分布的数据库,跨越多个Redis企业软件集群。每个Active-Active数据库可以有许多Active-Active数据库实例,这些实例配备了额外的智能,用于使用经过验证的CRDT方法处理全球分布的写入。CRDT研究描述了一系列技术,用于创建能够处理冲突写入的系统。CRDB由多主复制(MMR)驱动,提供了一种直接有效的方法来在区域之间复制数据,并简化复杂应用程序的开发,这些应用程序可以在地理故障转移和对同一数据的并发跨区域写入时保持正确性。

Active-Active 数据库在多个 Redis Enterprise Software 集群之间复制数据。Active-Active 数据库的常见用途包括灾难恢复、地理冗余应用程序以及将数据保持在更接近用户位置的地方。在 Active-Active 数据库中配置的集群之间,MMR 始终是多向的。对于单向复制,请参阅 Redis Enterprise Software 中的 Replica Of 功能。
同步示例
在下面的示例中,数据库写入在时间点 t1 和 t2 是并发的,并且在同步可以传达更改之前发生。然而,在时间 t4 和 t6 的写入不是并发的,因为在这之间发生了同步。
时间 | CRDB 实例1 | CRDB 实例2 |
---|---|---|
t1 | SET key1 “a” | |
t2 | 设置 key1 为 "b" | |
t3 | — 同步 — | — 同步 — |
t4 | SET key1 “c” | |
t5 | — 同步 — | — 同步 — |
t6 | SET key1 “d” |
了解更多关于同步的信息,了解每种支持的数据类型以及如何在Redis企业版软件上进行开发。