架构实战营 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='消息消费记录';复制代码
设计思路
每个消息队列一张表;不同队列的访问量不一定一致,拆分成多个表有利于高性能;以队列为维度拆表也有利于后续进行分片等扩展。
划线
评论
复制
发布于: 刚刚阅读数: 2
jialuooooo
关注
还未添加个人签名 2021.10.20 加入
还未添加个人简介











评论