关于MQ选型

选型标准 1.1 开源(白嫖)
方便可以修改源代码,而非一味地等待软件提供商猴年马月发布的下个版本解决 。在知识产权下,使用开源的才可商用 。
1.2 生态(大家都玩)
主要你的使用场景不冷门,你遇到bug的概率非常低,因为大部分你可能遇到的,其他人早就遇到并且修复 。使用过程中遇到的一些问题,也容易在网上搜索到类似的,然后找到解决方案 。和其他框架也能无缝对接 。
1.3 确保消息可靠传递 1.4
高可用性
1.5 性能
具备足够好的性能,能满足绝大多数场景的性能要求 。
优点
语言编写,最早是为电信行业系统可靠通信设计,是支持AMQP协议的消息队列之一 。相当轻量级的消息队列,非常容易部署和使用 。号称世上使用最广泛的开源消息队列 。
支持非常灵活的路由配置
和其他消息队列不同,它在生产者()和队列(Queue)之间增加了一个模块 。
作用和交换机相似,根据配置的路由规则将生产者发出的消息分发到不同队列 。
路由规则也非常灵活,甚至你可以自己来实现路由规则 。如果你正好需要该功能,是个不错选择 。
支持的客户端语言
所有消息队列中最多的
缺点
消息堆积的支持不好
设计理念:消息队列是一个管道,大量的消息积压是一种不正常的情况,应当尽量避免 。
当大量消息积压的时候,的性能急剧下降 。
性能
介绍的这几个消息队列中最差的,根据官方给出的测试数据综合我们日常使用的经验,依据硬件配置的不同,它大概可以处理几w~十几w条/s 。也足够支撑绝大多数应用场景了,不过,如果你的应用对消息队列的性能要求非常高,那不要选 。
小众语言,学习曲线非常陡峭 。如果想做扩展和二次开发,慎重考虑维护问题 。

关于MQ选型

文章插图
阿里巴巴在2012年开源的消息队列产品,后来捐赠给软件基金会,2017正式毕业,成为的顶级项目 。阿里内部也是使用作为支撑其业务的消息队列,经历过多次“双十一”考验,它的性能、稳定性和可靠性都是值得信赖的 。作为优秀的国产消息队列,近年来越来越多的被国内众多大厂使用 。
有着不错的性能,稳定性和可靠性,具备一个现代的消息队列应该有的几乎全部功能和特性,且还在持续成长 。
优点
非常活跃的中文社区
大多数问题你都可以找到中文的答案,也许会成为你选择它的一个原因 。
使用Java语言开发
贡献者大多数都是中国人,源代码相对也比较容易读懂,很容易对进行扩展或者二次开发 。
对在线业务的响应时延做了很多的优化
大多数情况下可以做到ms级响应,如果你的应用场景很在意响应时延,那应该选择使用 。
是怎么做到低延时的?
主要是设计上的选择问题,Kafka中到处都是“批量和异步”设计,它更关注的是整体的吞吐量,而的设计选择更多的是尽量及时处理请求 。
比如发消息,同样是用户调用了send()方法,它会直接把这个消息发出去,而Kafka会把这个消息放到本地缓存里面,然后择机异步批量发送 。
所以,它的时延更小一些,而Kafka的吞吐量更高 。
的性能比要高一个数量级
大概处理几十w条/s 。
缺点
作为国产的消息队列,相比国外的比较流行的同类产品,在国际上还没有那么流行,与周边生态系统的集成和兼容程度要略逊一筹 。
Kafka
最早由开发,目前也是顶级项目 。最初的设计目的是用于处理海量的日志 。