首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >休息TCC手柄可以放吗?

休息TCC手柄可以放吗?
EN

Stack Overflow用户
提问于 2018-04-24 15:13:10
回答 2查看 180关注 0票数 1

我们正在开发一个REST API,其中客户端(应用程序)将调用我们的REST API。

客户端(应用程序)将处理具有回滚功能的业务逻辑(例如,如果更新"Shipment“服务通过而更新"Stock”服务失败,则客户端可以回滚。

有许多关于TCC尝试/确认/取消的在线文章,这些文章描述了通过POST/DELETE方法保留/取消资源,但没有一篇文章描述如何处理PUT请求。将“库存”计数更新1,并在失败时回滚。

有谁知道处理PUT回滚的解决方案(既然PUT请求覆盖了原始数据,我们如何回滚到原始数据)?

EN

回答 2

Stack Overflow用户

发布于 2018-12-10 23:48:15

TCC只是一个使用HTTP/REST实现事务性行为的概念。它涵盖了如何对事务建模的标准,包括超时和取消。在此模型中,事务被绑定到具有id的任何类型的资源,因此您可以在任何时候确认或取消它。由于事务有超时,您可能会以无效或不再存在的事务结束。

但是您需要一些东西来标识事务。由于使用PUT覆盖资源本身并不会创建资源对象,因此您需要一种虚拟资源来完成此操作。

您可以创建资源的新版本(可能使用locking) ( entities在这里只是一个占位符):

除了版本之外,您还可以考虑一种事务id,如果您有这样的id的话。

票数 0
EN

Stack Overflow用户

发布于 2019-04-04 10:32:03

对于TCC模式,confirm操作使用PUT作为幂等特征。当实现这样的行为时,如果部分预订被确认,而其他预订已经过期,我们可以使用cancel操作来模拟回滚行为,以便每个确认的参与者链接将与另一个DELETE请求一起发送。我在一个预订系统中用Java写了一个关于最小TCC实现的tutorial article。你可以参考那里的实现。

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

https://stackoverflow.com/questions/49995486

复制
相关文章

相似问题

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