游戏世界
游戏攻略
网盘资源
有趣网站
游戏资讯
PS2游戏
PS3游戏
PS4游戏
PS5游戏
switch游戏
PC游戏
软件分享
编程指南
开发小册
Java开发
iOS开发
前端开发
JavaScript开发
Android开发
PHP开发
数据库
开发工具
Python开发
Kotlin开发
Ruby开发
.NET开发
服务器运维
开放平台
架构师
大数据
云计算
人工智能
开发语言
其它开发
spring6中文文档
springboot3中文文档
主机游戏
PS订阅游戏-美服
PS订阅游戏-港服
XGP PGP游戏
SteamDeck游戏
VR PSVR2游戏
3A游戏基地
ps4游戏下载
PS3游戏
spring中文文档
spring6中文文档
springboot3中文文档
vlambda博客
学习文章列表
首页
其它开发
vlambda
2022-04-29
主流消息队列有哪些?
架构摆渡人
架构摆渡人,助你通往架构师方向的领路人。本号会定期分享架构相关的文章,专注于架构方向,关注我们,下一个架构师就是你。
31篇原创内容
Official Account
大家好,我是【架构摆渡人】,一只十年的程序猿。这是消息队列的第一篇文章,这个系列会给大家分享很多在实际工作中有用的经验,如果有收获,还请分享给更多的朋友。
ActiveMQ
ActiveMQ是一个很老的消息队列了,我也只是在很老的一些系统里面见过它。无论是性能还是功能方面,确实没有跟上时代的节奏,社区也不活跃。大家可以去看看,在Github上的关注也就2K的数量。
对Java开发者来说,它最大的有点就是用Java开发的,阅读源码比较方便,其他就没啥优点了,所以也不建议大家现在用ActiveMQ来实现业务。
主页:
https://github.com/apache/activemq
RabbitMQ
RabbitMQ使用的还是比较多的,至少在目前很多公司里也都在使用它。也有一定的社区活跃度,而且目前也一直在不断地更新优化。在Github上的关注已经达到了9.4K的数量,比ActiveMQ高了几倍。
对Java开发者来说,它最大的缺点就是开发语言不是Java,而是采用Erlang语言编写,阅读源码不是很方便。
主页:
https://github.com/rabbitmq
Kafka
Kafka我相信大家就算没用过,也应该听说过。比如ELK中的K就是Kafka,在日志收集场景基本上都是用Kafka,因为有Kafka的强大吞吐量和完整的生态圈。Kafka的社区活跃度非常高,在Github上的关注已经达到了21.7K的数量,可见使用的范围多广。
对Java开发者来说,Kafka的源码阅读起来也是比较方便的,Kafka是Scala语言开发。
主页:https://github.com/apache/kafka
RocketMQ
RocketMQ是阿里开源的一款消息队列,目前已入驻Apache。RocketMQ的性能和稳定性肯定没得说,毕竟经历过阿里整个双十一大促的洗礼。我一直也都是在用RocketMQ,但是用的是云服务,省去了部署维护等一系列问题,非常方便,就是费用多点。
RocketMQ的社区也是相当的活跃,关注度也很高,在Github上的关注已经达到了17K的数量。对Java开发者来说,RocketMQ是最方便我们学习的一款消息队列,因为它是Java开发的,所以源码阅读起来会比较方便。
主页:https://github.com/apache/rocketmq
选型建议
前面只是给大家列了一下目前一些在用的消息队列,每款消息队列都有自己独特的设计和更适合的使用场景。如果是Java开发者,要在项目中使用消息队列,我会建议大家用RocketMQ和Kafka。
如果是要收集日志或者是业务数据的埋点上报,可以用Kafka。用Kafka的原因在于Kafka性能好,吞吐量高,单机吞吐量能够在10万级以上。
同时Kafka的生态也比较全,当你收集的日志想要写入ES中,Kafka Connector就能够快速支持。跟各种其他框架都能够快速对接。
其次,日志收集类的对时延的要求没有那么高,为了提高性能,Kafka发送消息的时候并不是每有一条就直接发送的,而是会采用批处理的方式一起发送,这样能够提高性能,所以时延相对来说会有点高,但是对应并发量足够大的系统,其实还好,基本上毫秒级别就可以产生万级以上的消息了。
如果是业务类的场景,比如电商场景,那么建议使用RocketMQ。RocketMQ的性能也很好,单机吞吐量也能够达到10万级。而且RocketMQ还有丰富的消息类型来支撑多变的业务场景,比如顺序消息,延迟消息,事务消息等。在线业务对于时延也会比较敏感,所以RocketMQ适合在线业务场景。
日志类的,大数据类的都会有专门的岗位去负责,对于我们业务开发的同学来说,只需要关注业务层面要用的中间件即可,所以RocketMQ我们是必须要去学习和使用的,而且面试中也经常会问。
标签:
推荐阅读
数码宝贝物语 时空异客 学习版
拼图拼出个安卓APP①部——Eclipse VS APP Inventor
相关文章
如何设计一个消息队列(进阶)
2022-04-11
基于消息队列的变电站智能联动技术研究
2022-03-23
消息队列系列(一)关于RocketMQ双主架构的设计思考
2022-03-02
消息队列上云挑战与方案:腾讯云的 Apache Pulsar 实践
2021-09-18
消息队列中:消息可靠性、重复消息、消息积压、利用消息实现分布式事务
2021-07-05