当前位置:网站首页>架构实战营 第 6 期 模块八课后作业

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

2022-06-10 13:34:00 InfoQ



设计分析

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

  • 用什么作为表的主键和索引?
既然是消息队列,消息是有顺序的,考虑用一个自增的列存储消息的offset,同时这个列作为主键。
消息查询时,可能会涉及针对时间段的查询,并且过期的消息可能需要清理。所以设计一个列存储消息插入的时间,并添加索引,提高查询效率。

  • 针对消息的操作需要什么信息?
Push消息对应表的插入,消息入队后不能修改,所以不用考虑修改记录。
Pull过的消息可以保留在表里面,不用删除。过期的消息可能需要批量删除,可通过时间列查询。
出现问题时,消息的来源和消息的格式可能是有用的信息。为了出现问题时方便检查,增加一个metadata列存储可能的附加信息。可以用key、value的格式存储,方便扩展其他的信息。

数据表设计


【表名】
对应的消息队列名

【字段】
Offset
, int, auto increment, unique index
Creation_Time
, date time, index
Message
, text
Metadata
, varchar
原网站

版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://xie.infoq.cn/article/b766acfc574179ac7a56bdfd0