所有人。我有个问题。你能帮助我吗?谢谢
背景:
服务器a通过resttemplate与服务器b进行通信,服务器b通过套接字与客户端c进行通信,整个过程基本如下:c发出请求,到达a,并将结果返回给c:c-->b-->a-->b-->c还有以下业务a-->b-->c-->b-->a
问题:
是远程呼叫,中间总有一些意外(比如c发了请求,c挂断或者网络超时,c收不到消息,也就是c-->b-->a-->b-->c),如何保证意外情况的发生,还能让业务闭环有没有成熟的方案?
我的尝试:
我试着在b中保存状态,然后让c再次请求,并根据情况决定继续哪一步,但我觉得这样做太麻烦了,我不知道是否还有其他计划
2条答案
按热度按时间emeijp431#
您的用例是跨多个服务的业务事务中的一个常见问题,并且由于分布式的性质,可能存在许多超出服务控制的故障场景,如网络问题、延迟、意外故障。有几种技术,最常用的是通过使用最终一致性或saga模式来补偿事务
gr8qqesn2#
您可以使用带有spring的微服务来获得松散耦合的进程。它可以执行大型复杂应用程序的连续交付。
您可以参考带spring的microservices