架构实战营 10 期 - 作业 8
设计思路:
一个 topic 一张表
避免队列之间相互影响,避免队列较多而且消息量大的情况下会影响查询消息和写入消息的性能,所以一个 topic 一张表。
消息表设计:
用于记录消息主体
创建 topic 时创建一张 topic 的表,例如 topic_msg_xxx 表,
字段包括:
id:mysql 自增 id,主键唯一索引
msgId:消息 id,唯一索引,id 由 id 生成器生成
body:text 类型,
status:消息状态:1.未被消费,2.已消费完成
sendTime:消息投递时间
createTime:创建时间
updateTime:最后一次被消费的时间
索引:
id 为主键唯一索引
msgId 为唯一索引,消息的唯一标识
消费记录表设计:
用于记录消费者消费的情况,每个 topic 一张表,例如 topic_consum_xxx 表,
字段包括:
id:自增 id,主键唯一索引
consumId:消费者 id
msgId:消息 id
status:消息状态,1.已被消费拉取;2.消费者已确认消费完成
createTime:创建时间,消费者消费消息的时间
索引:
id 为主键唯一索引
联合唯一索引:(consum_id,msg_id) 防止同一个消费者重复消费消息
版权声明: 本文为 InfoQ 作者【炮仗】的原创文章。
原文链接:【http://xie.infoq.cn/article/0877ca5484438a090b2162caf】。未经作者许可,禁止转载。
评论