首页 > 解决方案 > 主动-主动跨区域Redis复制

问题描述

AWS 今年为主动 - 被动设置 ( Global DataStore ) 引入了跨区域复制。这意味着有一个用于读/写的主 Redis-Cluster 和一个用于读取的辅助集群。

就我而言,我们想在不同地区使用Active - Active Redis。最初的想法是手动将 Redis 集群与 Kinesis 流同步,并且每当有写入和更新另一个区域时触发 Lambda 函数,例如,当区域 A 发生写入时,Lambda 更新区域 B 中的 Redis,反之亦然。这允许在两个区域中写入。

是否可以让 Active Active 与 Global Datastore 一起使用?

或者当写入操作总是转到部署主 Redis 集群的同一区域时,全局数据存储区是否会像手动解决方案一样工作(在延迟方面)?

欢迎任何反馈

标签: amazon-web-servicesredisreplicationaws-elasticache

解决方案


不幸的是,目前ElastiCache中没有针对主-主的AWS 解决方案。

以下是您可以采取的一些解决方案:

  • 在您的应用程序中,使用 Redis 的写入端点和读取端点,写入端点将针对主要的写入全局数据存储,读取将针对本地读取数据存储
  • 写入本地区域资源(例如 DynamoDB),让 Lambda 触发器写入主写入全局数据存储。
  • 写入本地区域队列/流,例如 SQS 或 Kinesis Data Streams(支持 Lambda 使用者)并让 Lambda 使用和写入。

任何解决方案都会有一定程度的延迟,选项 1 执行直接写入,而其他 2 允许进程在后台发生。这里的决定将基于您的应用程序(它是否可以等待写入完成,或者是否需要在流程中发生)。

此外,如果这是用于写入缓存,您可以只使用缓存启动吗?我的意思是通过脚本生成扁平化缓存,以确保您的 redis 集群始终是最新的。


推荐阅读