架构实战营 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 加入
还未添加个人简介
评论