Transactions 微服务超时和事务

Transactions 微服务超时和事务,transactions,timeout,microservices,Transactions,Timeout,Microservices,鉴于微服务体系结构,当对服务的调用超时时,调用方只需放弃即可。但是,请求最终得到满足,并插入了新记录。 问题是调用方系统确定请求因超时而失败。维持此交易的最佳方式是什么 由于服务消费者和服务提供者被网络隔开,因此无法保证它们之间的一致性。请求传输和响应传输都可能导致错误,在某些边缘情况下,响应消息甚至可能在服务提供商没有注意到错误的情况下丢失 我想这可能有助于你研究“无效”和“幂等”这两个术语。第一种是指对服务提供商没有影响的操作(例如,存储数据没有变化,如读取数据),而第二种是指可以调用任意次

鉴于微服务体系结构,当对服务的调用超时时,调用方只需放弃即可。但是,请求最终得到满足,并插入了新记录。

问题是调用方系统确定请求因超时而失败。维持此交易的最佳方式是什么

由于服务消费者和服务提供者被网络隔开,因此无法保证它们之间的一致性。请求传输和响应传输都可能导致错误,在某些边缘情况下,响应消息甚至可能在服务提供商没有注意到错误的情况下丢失

我想这可能有助于你研究“无效”和“幂等”这两个术语。第一种是指对服务提供商没有影响的操作(例如,存储数据没有变化,如读取数据),而第二种是指可以调用任意次数而不改变结果的操作(例如,调用delete一次或十次仍然意味着数据已经消失,即使alter调用返回异常声明“数据已经消失”:数据在调用后消失)


最后还有两种操作,例如“向列表中添加新元素”。我忘记了它的术语,但基本上这些操作会将错误处理变成噩梦。如果在请求序列中出现一个、多个或没有错误,您在错误后以保证相同结果的方式恢复操作几乎没有变化。

了解CAP问题您应该提供有关int的更多信息由微服务提供的eFace。有面向请求/响应的微服务、基于消息(队列)的微服务,也有基于事件的微服务。所有这些都公开了对检测和(如果可能的话)能力有很大影响的不同类型的通信随后处理错误。这是HTTP RESTful服务和所有同步服务。我认为问题只是边缘情况,实现分布式事务的成本很高。因此,我只想看看是否有成熟的模式可以遵循,而不是自定义自己的模式。不幸的是,调用方超出了我的控制范围,因此我想知道是否有当调用方在超时期间放弃时,可以轻松回滚的方法。我想没有太多的选项。