简单题。面试官的意思是在秒杀架构里面,你都已经用了 Kafka 等消息队列了,消费者的消费过程都是异步的,用户怎么知道消费者最终有没有创建订单成功呢?
其实说白了两个字:轮询。不过你要想刷亮点,就还要进一步回答轮询也不会引发什么性能问题。
参考:如何设计一个秒杀系统? - 面试ICU (mianshi.icu)
要注意看上图,秒杀服务在第 2 步发消息成功之后,就会返回,它控制不了秒杀消费者。因此要想让用户知道最终的秒杀结果,就需要一些额外的机制。
完整内容需要VIP会员权限
在用户参与秒杀之后,如果预扣库存成功了,那么就会跳转到另外一个页面,在这个页面会不断轮询秒杀服务最终的创建订单和锁定库存的结果。
轮询大法好
websocket;
不过在使用轮询的时候,一般要考虑性能问题。因为轮询本身频繁查询后端,会给后端服务带来比较大的压力。
轮询压力大
轮询引发性能问题及其优化思路