最终一致性和消息传递

发布于 2024-11-30 20:30:26 字数 459 浏览 5 评论 0原文

我遇到了这个问题,到目前为止,似乎唯一的解决方案是更强的一致性模型。该服务是 Amazon S3,它提供最终一致性。我们使用它作为 blob 存储后端。

问题是,我们向应用程序引入了消息传递模式,并且我们喜欢它。它的好处是毫无疑问的。不过,似乎需要更强的一致性。场景:

  1. 子系统从用户获取数据,
  2. 数据保存到S3
  3. ,消息发送
  4. ,消息被另一个子系统接收,
  5. 数据从S3读取
  6. ……蟋蟀。这是旧数据吗?有时是这样。

所以。我们尝试了显而易见的方式,发送消息中的数据以避免从 S3 读取不一致。但这是一件非常令人讨厌的事情,消息变得不必要的大,并且当接收器太忙或出现故障时,并且在已经有新数据可用的情况下接收消息较晚时,它就会失败。

有没有解决方案,或者我们真的需要转储 S3 以使用 RDBMS 或 MongoDB 等更一致的后端吗?

I came across this problem, and so far it seems that the only solution is stronger consistency model. The service is Amazon S3, which provides eventual consistency. We use it as blob storage backend.

The problem is, we introduced messaging pattern to our application, and we love it. There's no doubt about it's benefits. However, it seems that it demands stronger consistency. Scenario:

  1. subsystem acquires data from user
  2. data is saved to S3
  3. message is sent
  4. message is received by another subsystem
  5. data is read from S3
  6. ...crickets. Is this the old data? Sometimes it is.

So. We tried to the obvious, send the data in the message to avoid inconsistent reading from S3. But that's pretty nasty thing to do, the message get unnecessarily big, and when the receiver is too busy or goes down, and receives the message late while there's already new data available, it fails.

Is there a solution to this or do we really need to dump S3 for some more consistent backend like RDBMS or MongoDB?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

红ご颜醉 2024-12-07 20:30:26

如果您的场景允许您的数据始终使用新密钥写入 S3(通过始终创建新对象),那么您可以依赖 Amazon 的写入后读取一致性。

以下是亚马逊对这种一致性模型的描述:

美国西部(加利福尼亚北部)、欧洲(爱尔兰)、
亚太地区(新加坡)和亚太地区(东京)地区提供
新对象和最终对象的 PUTS 的写后读一致性
覆盖 PUTS 和 DELETES 的一致性。 Amazon S3 存储桶位于
美国标准区域提供最终一致性。

If your scenario allows for your data to always be written on S3 under a new key (by always creating new objects) then you can rely on Amazon's read-after-write consistency.

Here is Amazon's description that describes this consistency model:

Amazon S3 buckets in the US West (Northern California), EU (Ireland),
Asia Pacific (Singapore), and Asia Pacific (Tokyo) Regions provide
read-after-write consistency for PUTS of new objects and eventual
consistency for overwrite PUTS and DELETES. Amazon S3 buckets in the
US Standard Region provide eventual consistency.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文