我有rest api和微服务架构。我应用了Database per Service模式。
所以让我们假设用户想创建一个订单(电子商务系统)。但是用户可能有信用额度。因此,流程如下:
1. OrderService创建待定订单。然后推送一个关于它的事件。 2. UserService处理该事件并发布超过信用限额的事件或信用已保留的事件。 3. OrderService接收事件并将订单状态更改为已批准或已取消。
看起来都很好。但问题是在这个简单的流程中用户会做什么? 我的意思是:用户发出POST请求/orders然后...
1. Web-service等待直到订单被批准或取消(包括超时)? 2. Web-service返回200 ok,然后用户需要使用一些间隔检查订单状态? 3. 使用web sockets吗? 4. 其他东西?
不幸的是,以上任何选项都有其优点和缺点。
挑战在于我描述的是最简单的情况。实际上,可能涉及数十个服务(甚至第三方服务)。当然,我期望高负载。因此队列可能会填满。请提出解决方案以供讨论。非常感谢您的回答,也希望提供生产就绪系统文档的链接。