架构实战营模块 8 作业
设计消息队列存储消息数据的 MySQL 表格
【作业要求】
1. 包括表名、字段、索引;
2. 用文字描述设计思路和理由,例如:为什么设计某个索引?
3. 一页 PPT 即可。
【提示】
1. 需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”的字段。
一、设计方案
考虑到 MySQL 单表性能,所以采用每个消息队列单独保存一张数据表。
优点:
队列之间解耦,并且数据隔离。
实现简单、性能高。
缺点:
需要的资源多于单表。
维护成本略高于单表方案。
1.1 表设计
1.1.1 表名规则
表名:{topic}_message
说明:每个队列一张表,数据表在创建 topic 时生成。
1.1.2 字段设计
1.2 处理逻辑
1.2.1 生产消息
消息队列服务获取 TOPIC 名称 和 消息体 后进行处理。
根据表名规则由 TOPIC 名称 找到对应的消息表进行数据写入,如未找到表则创建新表。
1.2.2 消费消息
消费者节点轮询拉取消费状态为 未消费 的数据进行消费。
消费成功后更新 消费时间 并且修改消费状态为 已消费。
版权声明: 本文为 InfoQ 作者【星夜】的原创文章。
原文链接:【http://xie.infoq.cn/article/d441c1ba47e13ae485906f885】。文章转载请联系作者。
评论