写点什么

MQ 存储消息的 MYSQL 表格设计

作者:邹玉麒
  • 2022 年 4 月 17 日
  • 本文字数:365 字

    阅读完需:约 1 分钟

背景

MQ 一般由生产者集群,消费者组集群,broker 组成,如图:

其中 broker 通过主备复制保证高可用.


关于 MQ 消息 mysql 表格设计

目的:

  • 随着业务的发展,队列 topic 数,消息量增多, 需要保证扩展性

  • 作为中间价系统要保证高可用,高性能

  • 为了方便管理 MQ,需要订阅关系表,发送记录表(含消息体内容),消费记录表


设计方案:

  • 为了保证性能,扩展性:每一个队列的发送,消费表都是单独的

  • 为了保障容灾:broker master 与 broker slave 不在同一个机房


表格设计:

  1. 订阅关系表:mq_relation

2.发送记录表:${topic}_mq_sender_log

sendtime 是索引字段,为了发送查询 topic 内容


3.消费记录表:${topic}_mq_consumer_log

consumer_time 字段索引是为了溯源消息


演进方案:

当 mysql 集群不再能负载业务 MQ 流量时,引入 HDFS,将发送者中的 msg_data 改成存储 HDFS 的 id。

因为 HDFS 本身就是分布式存储且硬件成本低,支持容量大。


用户头像

邹玉麒

关注

还未添加个人签名 2018.06.11 加入

还未添加个人简介

评论

发布
暂无评论
MQ存储消息的MYSQL表格设计_架构训练营5期_邹玉麒_InfoQ写作平台