写点什么

架构训练营 week8 作业

作者:红莲疾风
  • 2022 年 1 月 30 日
  • 本文字数:540 字

    阅读完需:约 2 分钟

  • 因为消息队列有很多个,而消息的多少可能相差悬殊。那么如果把所有消息放到同一个表里就不合适。因为可能由于一部分队列影响到其他的队列的消息。因此基本思路是每个队列建立一个表,分开存储消息。

  • 消息消费基本采用按照 id 序列消费的原理,id 是自增的,所以 id 越大的就越晚消费。

  • 之所以要加一个 create_time 主要是考虑到这个消息表不可能无限保存下去,一段时间之后肯定要进行数据的清理,那么这时候就可以根据 create_time 来进行数据的清理。并且如果有意愿,可以根据这个字段来进行 mysql 的分片处理。可以快速按照分片进行数据的删除。

  • 消息内容很可能是一个 json 的字符串,长度的话,可能很长,因此选择 mediumtext,最大长度 16777215,相比起 text 的 65535 个字符来说,应该是够用了。


综上所述,设计的表结构如下: 表名是消息队列的名称,便于查问题的时候一一对应。在建立消息队列的时候,由消息队列的管理平台通过程序来建立这个表。

CREATE TABLE `so_sync_msg` (`id`  bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID' ,`create_time`  datetime NOT NULL DEFAULT '' ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间' ,`content`  mediumtext NOT NULL COMMENT '消息内容' ,PRIMARY KEY (`id`),INDEX `idx_create_time` (`create_time`) USING BTREE )
复制代码


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

红莲疾风

关注

还未添加个人签名 2021.07.28 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营 week8 作业