08 消息队列选型调研

消息队列选型调研

如何调研:
【1】业内常用的MQ有哪些?
【2】每一种MQ各自的表现如何?
【3】这些MQ在同等机器下,能抗住多少QPS(每秒抗几千还是几万QPS)
【4】性能有多高(发送一条消息给他要2ms还是20ms)
【5】可用性能不能得到保证?(要是MQ部署的机器挂了怎么处理)
【6】会不会丢失数据
【7】如果需要的话,能否让他们进行线性的集群扩容(就是多加几台机器)
【8】消息中间件经常要使用的一些功能是否具备(延迟消息、事务消息、消息堆积、消息回溯、私信队列等等)
【9】文档会否齐全,社区是否活跃,业内是否广泛使用,什么语言编写的

ActiveMQ

		几年以前很多人使用,目前很少人使用。

Kafka

		优点:
			【1】吞吐量:行业里最优秀的,常规的机器配置下,一台机器可以达到每秒几十万的QPS
			【2】性能高:基本上发送消息都是毫秒级的功能
			【3】可用性:可用性很高,支持集群部署,部分机器宕机可以继续运行的
		缺点:
			【1】数据方面的丢失问题:Kafka收到消息之后会写入一个磁盘缓冲区,并没有直接落地到物理磁盘上去,
			如果机器本身故障了,磁盘缓冲区的数据可能会丢失。
			【2】功能非常单一:主要是支持发送消息给他,然后从里面消费消息,适用场景不是很多。
			【3】适用场景:把Kafka用在用户行为日志的采集和传输上。主要是用在大数据团队收集用户的一些日志。
			就是用kafka来收集和传输的。那种日志适当丢失数据没有关系的,而且一般量特别大,要求吞吐量要高,
			一般就是收发消息,不需要太多的高级功能	

RabbitMQ

		优点:
			【1】保证数据不丢失,也能保证高可用性,即集群部署的时候部分机器宕机可以继续运行
			【2】支持部分高级功能,比如死信队列,消息重试机制
		缺点:
			【1】RabbitMQ的吞吐量比较低,一般就是每秒几万的级别。
			【2】集群部署,加机器部署,比较麻烦。
			【3】开发语言是erlang
			【4】适用场景:中小公司不需要太高的吞吐量,不需要部署特别大的集群。也没有必要阅读和修改RabbitMQ的源码。

RocketMQ

优点:
	【1】阿里开源的消息中间件,同时解决了Kafka和RabbitMQ的缺陷。
	【2】吞吐量很高,单机可以达到10万QPS以上
	【3】保证高可用性、性能很高,支持通过配置保证数据绝对不丢失。
	【4】可以部署大规模的集群,支持各种高级的功能,比如说延迟消息、事务消息、消息回溯、死信队列、消息积压
	【5】RocketMQ基于java开发的,符合大多数的技术栈,可以阅读甚至修改他的源码
	【6】RocketMQ具有很高的吞吐量,大规模集群部署能力,各种高阶功能
缺点:
	文档相对简单

版权声明:本文为qq_35763714原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>