写点什么

架构实战营 4 期第八模块作业

作者:jialuooooo
  • 2022 年 2 月 27 日
  • 本文字数:738 字

    阅读完需:约 2 分钟

表设计

CREATE TABLE `queue` (  `id` bigint(20) NOT NULL COMMENT '主键',  `name` varchar(64) COLLATE utf8mb4_unicode_520_ci NOT NULL COMMENT '队列名称',  PRIMARY KEY (`id`),  UNIQUE KEY `ix_u_name` (`name`) USING HASH COMMENT '队列名称唯一索引') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci COMMENT='队列';
CREATE TABLE `<queue_name>_message` ( `id` bigint(20) NOT NULL COMMENT '主键', `content` varchar(1024) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL COMMENT '消息体', `produced_by` varchar(64) COLLATE utf8mb4_unicode_520_ci NOT NULL COMMENT '生产者', PRIMARY KEY (`id`), KEY `ix_produced_by` (`produced_by`) USING BTREE COMMENT '消费者索引') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci COMMENT='消息';
CREATE TABLE `<queue_name>_message_consumed` ( `id` bigint(20) NOT NULL COMMENT '主键', `message_id` bigint(20) NOT NULL COMMENT '消息主键', `consumed_by` varchar(64) COLLATE utf8mb4_unicode_520_ci NOT NULL COMMENT '消费者', `state` tinyint(2) NOT NULL COMMENT '消费状态 0已发送尚未消费 1消费成功 2消费失败', PRIMARY KEY (`id`), KEY `ix_message_id` (`message_id`) USING BTREE COMMENT '消息主键索引', KEY `ix_consumed_by` (`consumed_by`) USING BTREE COMMENT '消费者索引') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci COMMENT='消息消费记录';
复制代码

设计思路

  • 每个消息队列一张表;不同队列的访问量不一定一致,拆分成多个表有利于高性能;以队列为维度拆表也有利于后续进行分片等扩展。

用户头像

jialuooooo

关注

还未添加个人签名 2021.10.20 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 4 期第八模块作业