写点什么

架构实战营 - 模块八作业

用户头像
Julian Chu
关注
发布于: 1 小时前

作业:设计消息队列存储消息数据的 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


用户头像

Julian Chu

关注

还未添加个人签名 2016.08.16 加入

还未添加个人简介

评论

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