多个服务如何远程交互保证流量正常

How can multiple services interact remotely to ensure normal flow

各位。我有个问题。你能帮助我吗?谢谢

背景:

服务器A通过RESTTemplate与服务器B通信,服务器B通过socket与客户端C通信 整个过程基本上是这样的:C发起请求,去A,returns结果给C: C-->B-->A-->B-->C 还有以下业务 A-->B-->C-->B-->A

问题:

ABC是远程调用,中间总有一些意外(比如C发出请求,C挂了或者网络超时,C收不到消息,即C-->B-- >A-->B-->C),如何保证意外情况的发生,又能让业务闭环 有成熟的方案吗?

我的尝试:

我试过在B中保存状态,然后让C再次请求,根据情况决定继续哪一步,但是感觉这样做太麻烦了,不知道行不行还有其他计划

您可以将微服务与 Spring 结合使用以获得松散耦合的流程。 它可以执行大型复杂应用程序的持续交付。

可以参考Microservices with Spring

您的用例是跨多个服务的业务交易中的常见问题,并且由于分布式性质,可能存在许多不受服务控制的故障场景,例如网络问题、延迟、意外故障。有几种技术,最常用的是 Compensating transaction by using Eventual consistency or Saga 模式