。
@xiaokui 也太厉害惹!
@Jacinle 对就是下单前
@Jacinle 选了个review多的,然后会先见面介绍一下小动物们,就相当于面试了
请教象友们一个swe design面试题
@Luciferre 我感觉就还是得丢到某种temp storage里然后monitor这个storage的backlog size来trigger alert最后进行人工干预。你原来的答案在我看来也没啥问题,我感觉这个面试官有点full of shit。我们组天天在消息队列里处理几十个TB的telemetry,也就是这样操作的。让producer知道consumer healthy不healthy根本没有意义,因为telemetry不能丢失,手机发送到server (producer)的数据如果discard掉那就是永远lost了,就算用手机上的temp storage,那用户下次开app也不知道是什么时候给你flush这个telemetry了。那producer就是得往queue里塞。如果不是telemetry类型的message,像async task这种producer block在consumer ack类型的message,那也是一样的。如果task没法被async处理了,难道指望producer自己local处理吗,那就该producer炸了。这种workload也一样得monitor backlog然后trigger alert,最后人工干预。你之前接触过的message queue怕不是pubsub哈哈,那pubsub是自带这种backlog queue/temp storage的,kakfa也是自带的,有一些message queue的impl是没有这种东西或者说不默认setup这种东西,比如rabbitmq。如果说你的答案有什么可以改进的话,那就是explicitly提到需要有这种临时的储存来处理大量无法被处理的消息。
其实就是一个养猫养狗的。