阿里巴巴开源 RocketMQ 消息队列介绍
Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件
官网
https://rocketmq.apache.org/zh/
特点
- 支持 Broker 和 Consumer 端消息过滤
- 支持发布订阅模型,和点对点
- 支持拉 pull 和推 push 两种消息模式
- 单一队列百万消息、亿级消息堆积
- 支持单 master 节点,多 master 节点,多 master 多 slave 节点
- 任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式
- 消息失败重试机制、支持特定 level 的定时消息
- 新版本底层采用 Netty
- 4.3.x 支持分布式事务
- 适合金融类业务,高可用性跟踪和审计功能
概念
- Producer:消息生产者
- Producer Group:消息生产者组,发送同类消息的一个消息生产组
- Consumer:消费者
- Consumer Group:消费同类消息的多个实例
- Tag:标签,子主题(二级分类)对 topic 的进一步细化,用于区分同一个主题下的不同业务的消息
- Topic:主题,如订单类消息,queue 是消息的物理管理单位,而 topic 是逻辑管理单位。一个 topic 下可以有多个 queue,默认自动创建是 4 个,手动创建是 8 个
- Message:消息,每个 message 必须指定一个 topic
- Broker:MQ程序,接收生产的消息,提供给消费者消费的程序
- Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比zookeeper更轻量)
- Offset: 偏移量,可以理解为消息进度
- commit log:消息存储会写在 Commit log 文件里面
剑鸣秋朔