【发布时间】:2020-11-08 18:31:27
【问题描述】:
简介
嘿,我的问题有点难以解释,所以我提前道歉。
问题
我正在尝试为我们的电子商务实现微服务,但当实际逻辑和数据需要由其他 (2-3) 服务确定时,我遇到了如何响应请求的问题。
为了便于理解,我举个例子。
假设用户 A 正在尝试购买产品。点击“结帐”按钮后,这些步骤应该会发生。
流程
Request进来:
- 电子商务服务:
- 检查产品库存是否有足够的数量。
- 发布一个指示新订单已创建的事件。
order:created
- 反欺诈服务:
- 接收
order:created并检查用户是否欺诈 - 发布指示检查成功的事件。
check:succeed
- 接收
- 支付服务:
- 接收
check:succeed并创建一个指向网关的网址。 - 将网关 URL 发送给用户。 ((这就是问题所在))
- 接收
由于所有这些步骤都是异步的,我该如何响应请求?
可能的解决方案
用户请求结账后,电子商务服务创建订单并立即响应新创建订单的orderId,在客户端,用户必须定期请求并检查订单状态是否为PENDING PAYMENT,为了实现这一点,支付服务需要在订单被系统批准后发布payment:created,然后电子商务服务才能更新订单。
我的解决方案有效,但我对微服务真的很陌生,我想请教像您这样的专家如何以更好的方式实现它。
非常感谢您能读到这里,感谢您的宝贵时间。
【问题讨论】:
标签: microservices