我遇到了这个问题,到目前为止,似乎唯一的解决方案是更强的一致性模型。该服务是提供最终一致性的 Amazon S3。我们将其用作 blob 存储后端。
问题是,我们将消息传递模式引入了我们的应用程序,我们喜欢它。毫无疑问,它的好处。但是,它似乎需要更强的一致性。设想:
- 子系统从用户那里获取数据
- 数据保存到 S3
- 消息已发送
- 消息被另一个子系统接收
- 从 S3 读取数据
- ...蟋蟀。这是旧数据吗?有时是的。
所以。显而易见,我们尝试在消息中发送数据,以避免从 S3 读取不一致。但这样做很糟糕,消息变得不必要地大,当接收器太忙或出现故障时,在已经有新数据可用的情况下接收消息较晚,它就会失败。
是否有解决方案,或者我们是否真的需要为一些更一致的后端(如 RDBMS 或 MongoDB)转储 S3?