RabbitMQ-02-为什么RabbitMQ性能高
为什么RabbitMQ性能高
底层语言是Erlang(Ericsson Language), 是一门为交换机软件开发的编程语言。
Erlang优势:
- 高并发的编程语言,适合分布式系统。
- 跨平台,虚拟机解释运行。
- 进程间上下文切换性能高。(cpu在并行时候,是假并行,其实是串行的,进程间要切换的运行,所以进程间切换的效率,就决定了这个语言多线程并行的能力)
- 和Socket一样的速度。(也就是应用靠的是TCP这一层连接,TCP就决定了消息中间件的性能)
MQ = Message Queue
ActiveMQ
上世纪90年代的产品,比较老,Apache出品,Java开发。对Java用户友好,并且方便java二开。
优点:
- 跨平台(java)。
- 用jdbc连接多种数据库。
- 完善监控和安全机制。(有界面)
- 自动重连和错误重试
缺点:
- 目前不活跃
- 不适合队列规模较大的应用场景(比如上千个队列)
RabbitMQ
这个是2007年左右开始做的,而且应用也很广泛,
高可靠,高可用,支持发送确认,支持投递确认,
支持镜像队列(一份数据存储在多个节点,保证数据可靠性)
优点:
- 支持高并发。
- 支持多种客户端,多平台。
- 文档齐全。
- 社区活跃,应用广泛。
缺点:
- erlang语言小众。
- amqp协议,有学习成本。(我们会用最短的时间,让大家上手RabbitMQ)
RocketMQ
这个是阿里研发的,后来给了apache,复杂度高,
有nameserver,有服务发现,服务注册,集群架构,是一个大规模业务设计,经受了双11的考验。
(如果没人特别熟悉这一大套东西,运维啊,系统使用啊,公司生产环境不会用的,就怕出问题,没人搞得定,rabbitmq性价比还是很不错的。)
Kafka
大数据和日志收集。LinkedIn开发。性能高,扩展性好,复制,容错。
优点:
- 分布式系统
- 零拷贝技术(减少IO操作步骤,提高系统性能)
- 快速持久化(O(1)的复杂度)
- 支持批量发送和拉取。
缺点:
- 单机不建议超过64个分区。(性能明显下降)
- 短轮训模式。(轮询时间决定了实时性)
- 不支持重试(消费失败的时候)
- 可靠性不高(发1w条日志,少几条日志,没关系。适合大数据。)
RabbitMQ该如何学习
计算机学科是一个要求动手能力很强的学科,通过实战,用实际项目,把知识牢牢掌握住。


添加微信 | 公众号更多内容 |
---|---|
![]() |
![]() |
本博客所发布的内容,部分内容来源于网络,版权归原作者所有,如有侵权,请联系删除。转载请注明来自 面向加薪学习!