[ubereats] saga回复channel是不是需要一个kafka 设计图里没画出来

老师,视频里说这个如果restaurant experience拒绝了order,是不是会publish 一个message到另外一个kafka ?我想问下这个图里没有的kafka的consumer都有谁,我的理解是如下

1 notification service consume 这个没画出来的kafka,(推给client)
2 restaurant order consume 这个没画出来的kafka, (更新order status)
3 order orchestrator consume 这个没画出来的kafka,(因为这里order orchestrator要取消carrier)
4 carrier由于某些原因都不愿意接单是不是也要publish到这个kafka?
5 我的理解是这个kafka是用于saga的回滚design
6 carrier delivery order以后,是直接call restaurant order 更新status吗

老师 这几个理解对吗?

这一组问题问的很好,谢谢分享。

1,2,3 我觉得应该是这样,看看老师怎么回答。

  1. 觉得carrier不愿意接单会另外找一个carrier吧,如果实在找不到,可能会回滚。但是这个时候restruant很可能已经做好了。我觉得也许更好的解决方案是先确定有足够的carrier,再给resturant order下单,不然一旦饭好了,没人pickup这个就不好了。

  2. 我觉得update status是order orchestrator做的,因为它可以查到carrier是否有把饭菜deliever

1 课上没有特别讨论怎么给用户更新状态,需要一个 websocket server 连 app。
2. 对
3. restaurant order update order orchestrator 更直接一点。不要多个服务分别 consume Kafka,先后顺序不好确定。
4. 重新找 Carrier
5. 这个 Kafka 不是用来做回滚,主要是用来在不同 domain (e.g. restaurant, courier, eater) 传递信息。
6. Carrier 发消息给 order orchestrator 再由 order orchestrator 更新 restaurant order.