架构实战 - 模块八 - 作业
作业:设计消息队列存储消息数据的 MySQL 表格
作业要求
1 包括表名、字段、索引;
2 用文字描述设计思路和理由,例如:为什么设计某个索引?
3 一页 PPT 即可。
提示
1 需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个队列名字的字段。
方案如下:
不同消息队列是独立的,无需跨消息队列进行数据访问,所以采用每个消息队列一张表。
表名:topic_ + 队列名称
存储引擎:InnoDB
表结构如下
消息状态: 未处理 0,处理中 1,处理成功 2,处理失败 3。
主键:msg_id
复合索引:idx_producer_status_createddate 消费者用于拉取消息状态为 0,创建时间按顺序取得数据。
普通索引:expire_at 定时清理过期的数据。
评论