概述
消息队列做为高并发系统的核心组件之一,可以帮助业务系统解构提高开发效率和系统稳定性。主要具备如下优点:服务器
削峰填谷: 主要解决瞬时写压力大于应用服务能力致使消息丢失、系统奔溃等问题
系统解耦: 解决不一样重要程度、不一样能力级别系统之间依赖致使一死全死
提高性能: 当存在一对多调用时,能够发一条消息给消息系统,让消息系统通知相关系统
蓄流压测: 线上有些链路很差压测,能够经过堆积必定量消息再放开来压测网络
Apache Alibaba RocketMQ 是一个消息中间件。消息中间件中有两个角色:消息生产者和消息消费者。RocketMQ 里一样有这两个概念,消息生产者负责建立消息并发送到 RocketMQ 服务器,RocketMQ 服务器会将消息持久化到磁盘,消息消费者从 RocketMQ 服务器拉取消息并提交给应用消费。并发
RocketMQ 是一款分布式、队列模型的消息中间件,具备如下特色:分布式
支持严格的消息顺序
支持 Topic 与 Queue 两种模式
亿级消息堆积能力
比较友好的分布式特性
同时支持 Push 与 Pull 方式消费消息
历经屡次天猫双十一海量消息考验高并发
目前主流的 MQ 主要是 RocketMQ、kafka、RabbitMQ,其主要优点有:性能
支持事务型消息(消息发送和 DB 操做保持两方的最终一致性,RabbitMQ 和 Kafka 不支持)
支持结合 RocketMQ 的多个系统之间数据最终一致性(多方事务,二方事务是前提)
支持 18 个级别的延迟消息(RabbitMQ 和 Kafka 不支持)
支持指定次数和时间间隔的失败消息重发(Kafka 不支持,RabbitMQ 须要手动确认)
支持 Consumer 端 Tag 过滤,减小没必要要的网络传输(RabbitMQ 和 Kafka 不支持)
支持重复消费(RabbitMQ 不支持,Kafka 支持)中间件