写点什么

架构实战营 1 期 - 模块八作业

用户头像
李东旭
关注
发布于: 7 小时前

架构实战营 1 期 - 模块八作业


模块 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


发布于: 7 小时前阅读数: 4
用户头像

李东旭

关注

还未添加个人签名 2021.04.12 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 1 期 - 模块八作业