架构实战 - 模块八
作业:设计消息队列存储消息数据的 MySQL 表格
【作业要求】
1. 包括表名、字段、索引;
2. 用文字描述设计思路和理由,例如:为什么设计某个索引?
3. 一页 PPT 即可。
【提示】
1. 需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”的字段。
消息队列系统架构
设计思路
根据消息队列架构拆分几大核心模块:生产者(Producer)、消息主题(Topic)、消费组(Consumer Group)、消费者(Consumer)
那么设计消息的时候,就需要贯穿这 5 个模块,从生产者发布消息,到指定主题队列,消费者订阅主题,消费者组内成员从指定的主题中某个队列获取消息,为了能够让消息走完这样的流程,消息的存储模型两种:消息表和主题表,具体数据库表设计如下:
其中,t_message 表种 message_id、topic_id 和 queue_id 三者创建符合索引,以 message_id 为做左侧前导列,主要在于消息创建之后,发送和消费的时候要对消息做状态更新,需要从海量消息找到所需要更新消息。
评论