写点什么

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

作者:木几丶
  • 2022 年 2 月 27 日
  • 本文字数:518 字

    阅读完需:约 2 分钟

作业内容

设计消息队列存储消息数据的 MySQL 表格


【作业要求】

1. 包括表名、字段、索引;

2. 用文字描述设计思路和理由,例如:为什么设计某个索引?

3. 一页 PPT 即可。


【提示】

1. 需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”的字段。

一、设计思路

表结构设计思路

  1. 采用每个消息队列一张表;

  2. 如果有新的队列或队列表不存在,则自动创建表,表名包含队列名称;

  3. 采用雪花算法生成唯一主键;

  4. 记录每条消息的时间,并设置索引;

  5. 需要维护一个偏移量字段,并设置索引

设计理由

  1. 一个消息队列一张表方便维护

  2. 使用业务无关的字段作为主键是比较好的设计

  3. 自增主键、UUID 等不适合分布式和高性能数据库

  4. 记录消息的时间方便做消息的时间区间操作,如从某个时间点开始消费,情况历史消息等

  5. 设置时间字段为索引能加快查找速度

  6. 维护偏移量字段,这样能够支持多消费者消费,设置索引能加快查找速度

二、表结构设计

表名

queue_{队列名称}

字段

id 雪花 id long

topic_name 队列名称 varhcar(64)

message_id 消息 id varchar(64)

message_content 消息内容 text

status 消费状态 tinyint(1)

create_time 创建时间 datetime

offset 偏移量 long

deleted 删除状态 tinyint(1)

索引

主键索引:id

普通索引:create_time

普通索引:offset

用户头像

木几丶

关注

还未添加个人签名 2021.01.20 加入

还未添加个人简介

评论

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