MQ 核心概念
Message Queue
队列
偏移量(Offset)
队列指针位置
消费偏移量
生产偏移量
队列语义
Queue 语义
一个队列只支持一个消费者。
Topic 语义(扇出 Fanout)
一个队列支持多个消费者,且消费都各自独立消费互不相关。
Broker
Topic
Partition
Producer
同步模式
性能差,保证数据的准确性
异步模式
Producer 内部内存队列缓冲消息,Broker 定时或定量批量发送。
性能高,有一定延迟, 重启服务可能丢失消息
Consumer
Consumer Group
不同消费者组可以消费同一个 Topic, 各自维护消费指针,相互之间没有影响。
同一 Consumer 组下的消费者可以同时消费多个 Partition,但两个 Consumer 不能同时消费一个 Partition。
消息存储
Data Node
数据分片保存
存储方式
磁盘文件
数据库
Data Node - DataBase
Partition - Table
mysql
一个物理数据库 10 个 mysql 实例,每个实例 99 个表。
fielddescid自增主键biz_id业务查询主键body消息体------
Metadata Model
Broker 消费模式
Push
Broker 端推,消费者端简单。Broker 需要维护状态。
Broker 可能会被堵塞,消息丢失
pull
最佳实践
负载均衡
Producer 和 Partition 之间
轮询
同一组 Consumer 和 Partition 之间
动态重平衡
消费者组中消费者变化,动态分配 Partition。
消费语义
At Least Once 至少一次交付
少部分消息可能会被消费多次,消费者端需要做幂等处理。
消息顺序性
Lag(Burrow)堆积
头指针和尾指针间的距离
扩展性
动态添加分区
分区热迁移
隔离性
通讯
开源项目
kafka
服务发现
Zookeeper
PMQ 2.0
架构
Metadata 管理
服务发现
Nginx + DNS
负载均衡
版权声明: 本文为 InfoQ 作者【陈皮】的原创文章。
原文链接:【http://xie.infoq.cn/article/6f218d1b0d50001d1887ea915】。文章转载请联系作者。
评论