02 | 该如何选择消息队列?

在软件工程中,不存在像“银弹”这样可以解决一切问题的设计、架构或软件,每一个软件系统,它都是独一无二的,你不可能用一套方法去解决所有的问题。

 

 

 我们就是那种对消息队列功能和性能都没有很高的要求,所以选择RabbitMQ。

不管选择哪种消息队列其中还有个很关键的因素,团队里面有人能hold它,最起码熟悉掌握其详细配置。

选择不熟悉的MQ会变成不定时炸弹,在生产遇到问题无法快速解决。

接下来说下 RabbitMQ 的几个问题。

2. RocketMQ

 3. Kafka

 当下的 Kafka 已经发展为一个非常成熟的消息队列产品,无论在数据可靠性、稳定性和功能特性等方面都可以满足绝大多数场景的需求。

Kafka 与周边生态系统的兼容性是最好的没有之一,尤其在大数据和流计算领域,几乎所有的相关开源软件系统都会优先支持 Kafka。

Kafka 使用 Scala 和 Java 语言开发,设计上大量使用了批量和异步的思想,这种设计使得 Kafka 能做到超高的性能。

Kafka 的性能,尤其是异步收发的性能,是三者中最好的,但与 RocketMQ 并没有量级上的差异,大约每秒钟可以处理几十万条消息。

我曾经使用配置比较好的服务器对 Kafka 进行过压测,在有足够的客户端并发进行异步批量发送,并且开启压缩的情况下,Kafka 的极限处理能力可以超过每秒 2000 万条消息。

但是 Kafka 这种异步批量的设计带来的问题是,它的同步收发消息的响应时延比较高,

因为当客户端发送一条消息的时候,Kafka 并不会立即发送出去,而是要等一会儿攒一批再发送,

在它的 Broker 中,很多地方都会使用这种“先攒一波再一起处理”的设计。

当你的业务场景中,每秒钟消息数量没有那么多的时候,Kafka 的时延反而会比较高。所以,Kafka 不太适合在线业务场景。

Pulsar 采用存储和计算分离的设计,我个人非常喜欢这种设计,它有可能会引领未来消息队列的一个发展方向,建议你持续关注这个项目。

猜你喜欢

转载自www.cnblogs.com/lakeslove/p/12292030.html
02