Web 服务和事务保证

Posted

技术标签:

【中文标题】Web 服务和事务保证【英文标题】:Web service and transactional guarantees 【发布时间】:2019-08-18 02:41:19 【问题描述】:

您如何通过 Web 服务集成应用程序并处理技术错误,例如更改状态的 Web 服务调用的连接错误?

例如当网络连接在 Web 服务调用期间中断时,客户端如何知道 Web 服务是否已处理其操作?

能否仅在业务层解决此问题(例如查询以前的调用状态),或者您是否知道一些可以帮助围绕 Web 服务包装事务保证的不错的框架/最佳实践?

【问题讨论】:

【参考方案1】:

通过在业务层中跟踪的某种事务上下文自行实现这一切始终是一种选择。您可以使用一些补偿机制来确保在需要时回滚事务,但您需要:

将交易信息保存在某处 使用事务相关ID,这样你就可以查询响应何时有 已丢失(无论如何,拥有相关 ID 是个好主意) 实现读/写/回滚等所需的操作,因此可能会使您的服务更复杂一些

我能想到的另一个选择是如果您使用SOAP,您可以进行异步通信并寻找一些实现WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity 规范的堆栈,然后自行决定在您的上下文中这是否是一个好主意.例如,我认为Axis2 supports these,但当然最终取决于您使用的技术和堆栈。

来自上面的文章:

WS-AtomicTransaction 定义了一个最有用的协调类型 用于处理系统生成的异常,例如不完整的写入 操作或进程异常终止。

以下是它实现的 2-Phase Commit 的类型。

希望这会有所帮助!

【讨论】:

以上是关于Web 服务和事务保证的主要内容,如果未能解决你的问题,请参考以下文章

深入理解分布式事务,高并发下分布式事务的解决方案

亿级分布式事务架构思维模型,微服务下如何保证最终一致性?

字节跳动面试官问:微服务下如何保证分布式事务的最终一致性?

面试官问:微服务下有几种保证分布式事务最终一致性的方案?

微服务架构下的数据一致性保证

Seata-AT 如何保证分布式事务一致性