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