Microservices 如何处理API网关中的故障

Microservices 如何处理API网关中的故障,microservices,Microservices,假设我为支付系统设计了一个微服务体系结构,用户只需单击其UI屏幕中的pay按钮,即可发送API网关请求,并向少数微服务发送API调用的网关启动链。当MICRORACE中的一个在链调用的中间响应或不响应时,如何处理? 我想让用户认为他的支付已经成功,不想返回“请稍后再试”我可以将链的状态保存到某个地方吗?对于这种情况,使用异步通信比同步通信更可取 在这种情况下 当客户端向系统发送请求时,API网关接收该请求并委托给相应的微服务。之后,该微服务向其他相关的微服务发送事件。通常使用消息代理进行此操作,

假设我为支付系统设计了一个微服务体系结构,用户只需单击其UI屏幕中的pay按钮,即可发送API网关请求,并向少数微服务发送API调用的网关启动链。当MICRORACE中的一个在链调用的中间响应或不响应时,如何处理?
我想让用户认为他的支付已经成功,不想返回“请稍后再试”我可以将链的状态保存到某个地方吗?

对于这种情况,使用异步通信比同步通信更可取

在这种情况下

当客户端向系统发送请求时,API网关接收该请求并委托给相应的微服务。之后,该微服务向其他相关的微服务发送事件。通常使用消息代理进行此操作,消息存储在代理中,即使消费者(子服务器)微服务关闭,消息也不会丢失

您还可以将事件直接从api网关发送到message broker。(见:)

为了实现原子性和一致性(当然是最终的一致性),可以应用SAGA模式。有关更多信息,请访问此链接


但是,如果您的需求是调用一个微服务来立即获取一些数据,并且如果这个所需的微服务关闭,那么这个解决方案将不起作用。您应该通过设计避免微服务之间的这种耦合。在我看来,这是微服务体系结构中最具挑战性的部分之一。域驱动的设计技术可用于确定有界上下文。

如果您希望始终启动微服务,则需要制作微服务的副本,并将负载平衡器置于其上。如果一个实例关闭,负载平衡器将自动将请求路由到活动的实例。