[Whatsapp] Receipent Message Queue 选型

课上老师说receipent是会对应一个queue的,messaging service可以用user id结合hash算法找到对应的queue投递消息。
而且这个queue选择的是用rabbitMQ是因为rabbitmq更realtime。这个地方没太明白为什么RabbitMQ的latency会更低。在这个场景中虽然单个用户的queue的消息量可能不是很大,但是整个rabbitMQ server需要承受的throughput还是很大的。 感觉这还是一个需要有良好的scaliability和可靠性的queue的实现更好一些。
请问为什么老师是如何trade-off并选择rabbitmq的?

这里的取舍是这样的,一边是 Kafka 这种主要做 event streaming 的 Queue,另一边是 realtime msg queue (rabbitmq 属于这一类)。 Messaging Service 的 end-to-end latency 是最主要的要求,在这个指标上 realtime queue 是优于 Kafka,主要原因是 rabbitmq 是 memory-based 而 Kafka 是 disk-based. Kafka 的优势在于 throughput,我们这个情景下的throughput rabbitmq 也可以handle. RabbitMQ 也是 scalable 的,同样也提供 persistence 的选项。

参考文章

1 个赞