鉴于微服务架构,当对服务的调用超时时,调用者只是放弃。但是,最终请求已经完成并插入了新记录 问题是调用者系统由于超时而确定请求失败。什么是维持此交易的最佳方式?
答案 0 :(得分:0)
不可能保证服务使用者和服务提供者之间的一致性,因为它们被网络分开。请求传输和响应传输都可能导致错误,并且在某些边缘情况下,响应消息甚至可能在线路上丢失,而服务提供商不会注意到哪里出错。
我认为它可以帮助您查看术语" nullipotent"和#34;幂等"。第一个是指对服务提供者没有影响的操作(例如,读取数据等存储数据没有变化),而第二个是关于可以在不改变结果的情况下调用任何次数的操作(例如,调用delete one或者十次仍然意味着数据消失了,即使alter calls返回异常声明"数据已经消失":数据在通话后消失了。
最后,有两个操作都不是,例如"在列表中添加一个新元素"。我忘记了它的用语,但基本上这些操作将错误处理变成了噩梦,如果在请求期间有一个,很多或没有错误,那么在错误之后恢复操作几乎没有改变以保证相同结果的方式序列