嘿,我的问题很难解释,所以我提前道歉。
我试图为我们的电子商务实现微服务,当实际的逻辑和数据需要由其他( 2-3 )服务来确定时,我遇到了如何响应请求的问题。
为了使它更容易理解,我将举一个例子。
假设用户A正在尝试购买一种产品。单击“签出”按钮后,这些步骤应该会发生。
Request进来了:
order:createdorder:created并检查用户是否有欺诈行为。check:succeedcheck:succeed并为网关创建一个url。payment:created事件。((这是我的问题所在)由于所有这些步骤都是异步的,我如何响应Request?
当用户请求结帐后,电子商务服务创建一个订单,并立即使用新创建的订单的orderId进行响应,在客户端,用户必须定期请求并检查订单状态是否为PENDING PAYMENT,为此,支付服务需要在系统批准订单后发布payment:created,然后电子商务服务才能更新订单。
我的解决方案很有效,但我对微服务非常陌生,我想知道是否有更好的方法来实现这一点。
如果你能读到这么多,我真的很感激,谢谢你抽出时间。
发布于 2020-11-14 07:20:21
你的解决方案绝对够好的。它和书微服务模式推荐的一样。在订单被拒绝的情况下,您还需要实施一个saga来回退每个服务。
另一件事是,如果流量可以并行进行的话,就应该考虑一下。除非服务之间存在数据依赖关系,否则如果请求服务同时查询这3个服务,然后按照它们输入的顺序对结果进行聚合,就会使事情变得更快。
https://softwareengineering.stackexchange.com/questions/418966
复制相似问题