架构实战模块作业八
模块 8 作业
作业: 设计消息队列存储消息数据的 MySQL 表格
作业要求
1. 包括表名 字段 索引
2. 用文字描述设计思路和理由, 例如: 为什么设计某个索引
3. 一页 PPT 即可
提示
1. 需要考虑每个消息队列一张表, 还是所有消息放一张表, 里面加一个 "队列名称" 的字段
消息存在一张分区表, 按照队列名称/消息主题分区, 分区表支持不同分区挂在不同磁盘, 增加列删除列都很方便, 能够实现分区扩容
有两张表存储消息, 支持单用户订阅和多用户订阅, 一张表存储发送消息, 另一张表存储确认消息。
message_send 消息发送表
message_id varchar(64) 消息标识 主键
message_subject varchar(64) 消息主题/队列名称
message_type varchar(32) 消息类型 (queue-单用户订阅 topic-多用户订阅)
create_time varchar(32) 创建时间 (yyyyMMddHHmmssSSS)
message_body clob
索引 create_time 查询某个时间范围内的消息 用于排查指定时间的错误
分区 message_type
message_confirm 消息确认表
message_id varchar(64) 消息标识
message_subject varchar(32) 消息主题/队列名称
message_type varchar(32) 消息类型
message_subcriber varchar(64) (queue-单用户订阅仅需要一个订阅者 topic-多用户订阅支持多个订阅者)
confirm_time varchar(32) 确认时间
主键 message_id + message_subscriber 每个订阅着 只能确认一次
索引 confirm_time 查询某个确认时间内的消息标识, 用于排查时间范围内的错误
分区 message_subject
评论