首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多区域ElastiCache同步

多区域ElastiCache同步
EN

Stack Overflow用户
提问于 2017-08-09 14:33:07
回答 2查看 4.5K关注 0票数 3

需要以下AWS特定用例的最佳实践信息,

  1. 我们的Java web应用程序部署在美国东部-1和美国-西-2区域。
  2. 它与Dynamo通信,基于Memcached的ElastiCache位于这两个区域的Dynamo之上。
  3. 我们在我们-东-1和我们-西-2之间启用了迪纳摩数据库复制。
  4. 路由53将API调用定向到适当的区域。

现在的问题是,当我们在Dynamo中创建或更新一个记录时,它被插入到Dynamo中,而get的记录被缓存在这个特定的区域中。记录get也复制到其他区域Dynamo,但是由于ElastiCache之间没有复制,所以缓存不能保持同步。

我们如何以最好的方式处理这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-09 15:08:58

与其他建议一样,一个选项是使用DynamoDB DAX。这是一个贯穿式缓存,这意味着您不需要同步数据库数据和您的缓存。当您使用普通的DynamoDB API编写数据时,它会发生在窗帘后面。

但是,如果您想仍然使用ElastiCache,则可以使用DynamoDB流。您可以实现Lambda函数,该函数将在表中的每个DynamoDB更新中触发,并将新数据写入ElastiCache。

的文章可能会给您一些关于如何做到这一点的想法。

票数 1
EN

Stack Overflow用户

发布于 2018-06-25 02:32:50

DAX不是这里的答案。我很惊讶没有人指出这一点。

伊凡对这件事错了。

DAX确实是读-写缓存,但它不捕获通过直接访问DynamoDB (显然)发生的数据更改,也不捕获通过“其他”DAX集群发生的数据更改。

所以在这种情况下,

你有两个DAX星系团,一个在西,一个在东,这两个簇是完全独立的。因此,如果通过DAX在west-1上进行数据更改,则该更改确实会传播到DynamoDB Table 上的east-1,而不是缓存( DAX )级--换句话说,如果您更新了从这两个区域访问的记录(这比在两个DAX集群中缓存的记录还要多),您仍然会遇到相同的问题。

从根本上讲,这就是跨不同区域同步缓存层的问题,这是相当困难的。如果你真的需要它,有一些方法可以通过创建你自己的卡夫卡或动态流来保持缓存条目的变化,并被多个区域中的缓存集群所消耗。这是不可能的,现在用它自己的弹力缓存。(但如果只为此任务设置lambda或EC2,则是可能的)签出Netflix的案例研究

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45593650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档