写点什么

架构实战营 - 模块 8- 作业

发布于: 4 小时前

背景概述

设计自研消息队列数据库表结构。

注:

  • 架构设计文档参考模块 3 作业:https://shimo.im/docs/h9qYpGrCRJJRJqRD

数据库表设计

消息存储分为两类:日志表(MQ_LOG)及消息表(MQ_MSG_<队列名>)。


消息处理流程要点如下:

  1. 在生产者发布消息时,首先写入日志表,日志表写入成功即代表消息写入成功。

  2. 服务端后台线程从日志表读取消息写入记录,将消息内容写入消息表中。

  3. 在消息成功写入消息表后,日志表需要及时清除已写入消息表的日志记录。

  4. 消费者读取消息时,从消息表中读取。消息表最多保存 30 天的消息数据。


设计思路:

  1. 使用日志表实现消息的快速持久化写入,提升消息队列整体数据可靠性

  2. 消息表层面进行数据分片,可一定程度上防止单队列数据异常影响其他正常队列消费

日志表

日志表结构如下:

考虑到日志分发后台线程需要根据创建时间轮询日志表,因此在创建时间字段上创建索引提升查询性能。

消息表

消息表结构如下:

消费者客户端从消息表顺序消费数据,因此消息 ID 为自增主键。

用户头像

还未添加个人签名 2017.12.17 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 - 模块 8- 作业