请教象友们一个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提到需要有这种临时的储存来处理大量无法被处理的消息。
请教象友们一个swe design面试题
@chiu 感谢chiuchiu好详细!对我们组之前就靠monitor pubsub自己的backlog。感觉面试官非得扯到他做的相关的东西上,whatever了希望别的地方收留我