因此,假设我们有一个Web前端和API网关/ Lambda / DynamoDB后端。
用户导航到“添加项目”页面,在其中键入新项目的名称并单击“保存”,然后导航到项目列表(其中应包括他们刚刚添加的项目)。
由于默认情况下最终会在DynamoDB中进行读取,因此用户可能会单击“保存”,然后看不到下一页列出的新项目-这可能会引起混乱,如果他们输入了很多信息,恐慌。
让后端接受额外的参数以在“ getProjects”调用中说“高度一致的读取”是一种好模式吗?还是有其他方法可以解决这个问题?
答案 0 :(得分:1)
插入或更新项目后,进行一致读取实际上是一个很好的模式。在描述CRUD operations
时,可以在DynamoDB文档中看到一个示例。我过去在使用Web应用程序时所做的一个常见模式是通过重定向到GET来结束任何POST / PUT请求,在其中我实现了高度的一致性。插入后立即使列表具有很强的一致性。在大多数情况下,用户在插入后将什么都不做,将导航到应用程序的不同部分,或者单击以查看项目的详细信息。
让我们假设用户单击列表中的项目以查看详细信息。从理论上讲,它可能尚未传播(尽管可能会传播,因为DynamoDB复制趋向于非常快)。我过去使用的另一种模式是针对详细页面,我发出了最终请求,但是如果没有结果,而不是直接返回给最终用户,我将重试一次一致性读取的操作。如果没有返回结果,则返回未找到,但是如果只是传播问题,那么您就可以了。