架构实战营 - 模块八作业
作业:设计消息队列存储消息数据的 MySQL 表格
要求
1. 包括表名、字段、索引;
2. 用文字描述设计思路和理由,例如:为什么设计某个索引?
3. 一页 PPT 即可。
提示
1. 需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”
设计
採用"每个消息队列一张表" => 需要一张队列表与消息数据表
- 队列表:
id: 队列自增 id
queue: 队列名称
queue_table: 队列表的名称
visibility_timeout: consumer 拉取消息后,消息变为不可见状态的时间(无法被其他 consumer 消费)
retention_time: 消息在消息队列内的留存时间
其他支援的 queue attribute
created_at : 创建消息队列的时间
metadata: json
在更动消息队列设定与重启时会将设定读到内存中
- 消息表:
id(主鍵,自增 id): 消息自增 id
body: 消息数据的内容, 需要限制大小(常见限制 256KB)
visibility_at(索引): consumer 拉取消息时, 会根据这个栏位时间排序取得目前可见的第一个消息, 同时会将原本的 visibility_at 加上 visibility_timeout 更新, 需要加上索引
created_at: 接受到这个消息数据的时间, 会根据 retention_time 计算是否过期
其他支援的 message attribute
metadata: json
评论