写点什么

架构实战营 第 6 期 模块八课后作业

作者:火钳刘明
  • 2022 年 6 月 10 日
  • 本文字数:448 字

    阅读完需:约 1 分钟


设计分析

  1. 每个消息队列一张表还是所有消息放一张表?

考虑如果有一个消息队列里面消息特别多,可能会影响其他消息队列的性能。所以每个消息队列一张表。通过表名来区分对应的消息队列。


  1. 用什么作为表的主键和索引?

既然是消息队列,消息是有顺序的,考虑用一个自增的列存储消息的 offset,同时这个列作为主键。

消息查询时,可能会涉及针对时间段的查询,并且过期的消息可能需要清理。所以设计一个列存储消息插入的时间,并添加索引,提高查询效率。


  1. 针对消息的操作需要什么信息?

Push 消息对应表的插入,消息入队后不能修改,所以不用考虑修改记录。

Pull 过的消息可以保留在表里面,不用删除。过期的消息可能需要批量删除,可通过时间列查询。

出现问题时,消息的来源和消息的格式可能是有用的信息。为了出现问题时方便检查,增加一个 metadata 列存储可能的附加信息。可以用 key、value 的格式存储,方便扩展其他的信息。


数据表设计


【表名】

对应的消息队列名


【字段】

Offset, int, auto increment, unique index

Creation_Time, date time, index

Message, text

Metadata, varchar

用户头像

火钳刘明

关注

还未添加个人签名 2021.07.02 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 第 6 期 模块八课后作业_#架构实战营_火钳刘明_InfoQ写作社区