架构实战营模块八作业
【作业要求】
设计消息队列存储消息数据的 MySQL 表格
1.包括表名、字段、索引;
2.用文字描述设计思路和理由,例如:为什么设计某个索引?
3.一页 PPT 即可
【提示】
1.需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”的字段。
【设计思路】
消息队列主要是写入消息和读取消息,并保证读取过的消息及时删除。
为保证高可用,要使用并列的 2 到 3 组 mysql 进行主备配置,保证高可用。同时对数据进行分片,防止单列数据异常影响其他队列。
每个消息队列一张表,这样相比所有消息放一张表,隔离性更好,同时降低冲突概率。
消息 ID 自增,先收到的先读取。
为提升读写效率,采用两张表,日志表(数据写入)和消息表(数据消费)。在生产者发布消息时,首先写入日志表,服务端后台线程从日志表读取消息写入记录,将消息内容写入消息表中。消费者读取时,从消息表中读取。读取完成后,删除日志表和消息表的数据。
【表结构】
【日志表】
【消息表】
评论