写点什么

模块 8- 设计消息队列存储消息数据的 MySQL 表格

  • 2022 年 4 月 17 日
  • 本文字数:391 字

    阅读完需:约 1 分钟

【作业要求】


  1. 包括表名、字段、索引;

  2. 用文字描述设计思路和理由,例如:为什么设计某个索引?

  3. 一页 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),查询指定队列中消息被消费后,超过一定时间没有返回消费确认的数据。需要重新消费或进入死信队列。



发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2018.08.31 加入

还未添加个人简介

评论

发布
暂无评论
模块8-设计消息队列存储消息数据的 MySQL 表格_#架构实战营_卡西毛豆静爸_InfoQ写作平台