0

我们有一个同步 REST 端点,除了将项目保存到 DynamoDB 数据库之外,它还会进行其他处理,以供以后使用。

如果由于任何类型的异常导致数据库保存失败,则要求不出错。

我们如何处理整个区域中 dynamo db 出现故障的情况(罕见但可能)。发布到 SQS 并通过 ping 它(ListTables 或 ping)有一个单独的进程消耗并保存到 DynamoDB 是正确的模式吗?

我们应该退回到另一个区域还是发布到 SQS?是否值得使用resilience4j断路器模式?

4

1 回答 1

0

让 API 简单地将对 SQS 的请求排入队列是一种常见模式。这有很多好处,例如允许更高的吞吐量、将生产者和消费者解耦以及更好的容错性。

这将是一个很好的设计,但您的 REST API 将不再是同步的,并且调用者不会完全知道操作是否已成功处理,因此您可能需要添加另一个端点来获取请求的状态。

我对 resilence4j 断路器不是非常熟悉,但这可能不是必需的,因为如果这是您寻求的主要好处,亚马逊 SDK 已经内置了重试。

于 2020-08-19T01:10:48.253 回答