消息中间件|初识消息队列

消息队列是什么?

  • 消息队列(Message Queue)是一种用于在软件系统之间传递消息的通信机制。其本质是一个保存数据的队列,它通常被用于解耦不同组件或模块之间的通信,以实现异步通信、提高系统的可伸缩性和可靠性。
  • 消息中间件是利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的构建。
  • 消息中间件是分布式系统中重要的组件,主要解决应用解耦、异步消息、流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性的系统架构。目前常见的消息队列系统包括Apache KafkaRabbitMQRocketMQActiveMQ等。

消息队列关键概念

  • 消息生产者(Producer):负责产生消息并将其发送到消息队列中。
  • 消息队列(Message Queue):用于存储消息的缓冲区或中介。消息队列可以是内存中的数据结构,也可以是持久化的存储系统。
  • 消息消费者(Consumer):从消息队列中获取消息,并进行相应的处理。消费者负责处理消息的逻辑,通常是异步地从队列中拉取消息。
  • 消息:要在系统中传递的数据单元。消息可以是任何形式的数据,如文本、JSONXML 等。

消息队列优点

  • 解耦性:生产者和消费者之间通过消息队列进行通信,彼此不需要直接连接,降低了耦合度。
  • 异步通信:生产者和消费者可以独立运行,不需要等待对方的响应。
  • 增强系统可靠性:即使一个组件或模块不可用,消息仍然可以被存储在队列中,待组件恢复后继续处理。
  • 缓冲能力:消息队列可以作为缓冲,处理高峰时段的突发流量,以及平滑系统的负载。

消息队列的应用场景

异步处理

将一些非核心的业务流程以异步并行的方式执行,从而减少请求响应时间,提高系统吞吐量。

应用解耦

就是接触应用系统之间的耦合依赖,通过消息队列,使每个应用系统不必受其他系统影响,可以更独立自主。

流量削峰

流量削峰一般在秒杀和团抢活动中使用广泛,在应用前端加入消息队列,秒杀业务处理系统根据消息队列中的请求信息,再做后续处理。

消息通讯

消息通讯是指应用间的数据通信。消息队列一般都内置了高效的通信机制,因此可以用在纯的消息通讯。比如实现点对点消息队列,或者聊天室等对点通讯。

常用消息队列中间件的对比

目前常见的消息队列系统包括 Apache KafkaRabbitMQRocketMQActiveMQ等,选择合适的消息队列取决于应用的需求、性能要求以及可用的基础设施。

kafkaRabbitMQRocketMQActiveMQ
资料文档中等
开发语言ScalaEriangJavaJava
支持协议自定义(基于TCP)AMQP自定义OpenWire、STOMP、RESR、XMPP、AMQP
消息存储内存、磁盘、数据库;支持大量堆积内存、磁盘;支持少量堆积磁盘;支持大量堆积内存,磁盘,数据库;支持少量堆积
消息事务支持支持支持支持
负载均衡支持支持支持可基于zk实现负载均衡
集群管理leader-slave支持简单集群master-slave支持简单集群
管理界面一般很好一般
可用性非常高非常高
吞吐TPS极大比较大比较大
顺序消息支持不支持支持不支持
消息确认支持支持支持支持
消息回调支持指定分区offset位置回调不支持支持指定时间点的回调不支持
消息重试不支持不支持支持不支持
并发度极高
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的小白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值