模块 8- 设计消息队列存储消息数据的 MySQL 表格
【作业要求】
包括表名、字段、索引;
用文字描述设计思路和理由,例如:为什么设计某个索引?
一页 PPT 即可。
一、设计思路
1.因架构图中,数据分组之间没有数据交换,如果每个队列一张表,会引起各分组数据库表的数量不一致性,增加运维的复杂度,因此所有的消息放到一张表中,同时也降低了开发复杂度。
2.通过定时清理表中已消费的数据,使表的数据量保持在 2 千万以下,保证数据库的检索效率。
二、MySQL 表设计
表名:queue_msg
表结构:
1.主键:msg_id,生产者通过算法生成,保证全局唯一。消费者通过回传 msg_id,修改消息的 ack_time 和 msg_status。
2.索引:index1(queue_id,msg_status,create_time),查询指定队列中没有消费的消息,数据按 create_time 排序,保证队列中的数据先进先出。
3.索引:index2(queue_id,msg_status,consume_time),查询指定队列中消息被消费后,超过一定时间没有返回消费确认的数据。需要重新消费或进入死信队列。
版权声明: 本文为 InfoQ 作者【卡西毛豆静爸】的原创文章。
原文链接:【http://xie.infoq.cn/article/40192ce2f84b9a9cc8954f656】。文章转载请联系作者。
评论