前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >消息队列优缺点以及各个产品对比

消息队列优缺点以及各个产品对比

作者头像
名字是乱打的
发布2022-05-13 10:04:57
1K0
发布2022-05-13 10:04:57
举报
文章被收录于专栏:软件工程
一简介

消息队列分布式系统中重要的组件,主要解决应用耦合,异步消息,流量 削锋等问题实现高性能,高可用,可伸缩和最终一致性

二 各种消息中间件的对比

使用较多的消息队列有: ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 处理速度:kafka>rabbbitmq>activemq 安全性: activemq>rabbitmq>kafka

三 使用消息队列之后有什么缺点?

系统可用性降低:系统引入的外部依赖越多,越容易挂掉,本来你就是A系统调用BCD三个系统的接口就好了,人ABCD四个系统好好的,没啥问题,你偏加个MQ进来,万一MQ挂了整套系统崩溃了。

系统复杂性提高:硬生生加个MQ进来,你怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性?

一致性问题:若ACBD系统均处理完返回系统成功,用消息队列后,A系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是BCD三个系统那里,BD两个系统写库成功了,结果C系统写库失败了,咋整?你这数据就不一致了。

所以消息队列实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对它带来的坏处做各种额外的技术方案和架构来规避掉.你会发现可能最后系统复杂度提升了一个数量级,也许是复杂了10倍。但是关键时刻,用,还是得用的。。。

image

详细的还可以看: 开源软件成熟度评测报告-分布式消息中间件

RabbitMQ 选型和对比

1.从社区活跃度

按照目前网络上的资料,RabbitMQactiveMZeroMQ 三者中,综合来看,RabbitMQ 是首选。

2.持久化消息比较

ZeroMq 不支持,ActiveMqRabbitMq 都支持。持久化消息主要是指我们机器在不可抗力因素等情况下挂掉了,消息不会丢失的机制。

3.综合技术实现

可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统等等。

RabbitMq / Kafka 最好,ActiveMq 次之,ZeroMq 最差。当然ZeroMq 也可以做到,不过自己必须手动写代码实现,代码量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用性。

4.高并发

毋庸置疑,RabbitMQ 最高,原因是它的实现语言是天生具备高并发高可用的erlang 语言。

5.比较关注的比较, RabbitMQ 和 Kafka

RabbitMqKafka 成熟,在可用性上,稳定性上,可靠性上, RabbitMq 胜于 Kafka (理论上)。

另外,Kafka 的定位主要在日志等方面, 因为Kafka 设计的初衷就是处理日志的,可以看做是一个日志(消息)系统一个重要组件,针对性很强,所以 如果业务方面还是建议选择 RabbitMq

还有就是,Kafka 的性能(吞吐量、TPS )比RabbitMq 要高出来很多。

6.我这边用的是rabbitmq,所以这里说一下我用RabbitMQ的原因
  • 1.语言无关,什么语言都可以,对我们这边很多使用不同语言开发的项目比较友好,大家都可以用
  • 2.低时延,并发能力高,他是基于erlang语言开发,erlang内部对多线程做了很多优化,然后他对操作系统的调度优化基本相当于实现了自己的进程管理一样. 进程非常轻量,短时间能快速创建和销毁,并且切换代价小;Erlang 进程间通讯使用消息,而不是多线程编程中常用的锁机制,没有等待锁的时间消耗。
  • 3.管理界面比较好看,功能强大
  • 4.最主要的是文档比较完善,我们之前团队一直用的都是这个RabbitMQ
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一简介
  • RabbitMQ 选型和对比
    • 1.从社区活跃度
      • 2.持久化消息比较
        • 3.综合技术实现
          • 4.高并发
            • 5.比较关注的比较, RabbitMQ 和 Kafka
              • 6.我这边用的是rabbitmq,所以这里说一下我用RabbitMQ的原因
              相关产品与服务
              消息队列 CMQ 版
              消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档