架构实战营 模块八作业
一、作业要求
设计消息队列存储消息数据的 Mysql 表格。
说明:
1、包括表名、字段、索引;
2、用文字描述设计思路和理由,例如:为什么设计某个索引。
3、一页 PPT 即可
提示:需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”字段。
二、设计
消息队列存储数据列表:
表名:topic_xx
xx 为真正的业务名称,每一个消息队列一张表;
针对不同的消息的消息清理策略(基于 mysql 的 ttl 机制)处理方便;
消息队列的数据较大,按每个消息队列划分,便于分表;
每个表的消息顺序由 mysql 自增 id 标识,连续,便于记录 offset;
字段:
id,消息编号,递增,唯一标识,产生索引键;
message,消息内容
createTime,消息产生时间,便于清理消息
topic 元数据表
表名:raw_topic
字段:
topicId,topic 编号
topicName,topic 名称(与上面具体的 topic 消息表对应)
ttlTime,topic 消息保留时间
生产者元数据表
表名:raw_producer
字段:
producerId,生产者编号
producerName,生产者名称(用 ip 或者业务 appId 等信息来标识)
topicId,产生的 topicId
isEnable,是否产生消息
主键为:producerId+topicId
消费者元数据表
表名:raw_consumer
字段:
consumerId,消费者编号
consumerName,消费者名称(用 ip 或者业务 appId 等信息来标识)
topicId,消费者 id
offset,消费偏移量(与消息 id 对应)
评论