架构训练营-设计消息队列存储消息数据的表格

1. 队列属性表

记录已经创建的所有消息队列的属性。此表适用于点对点消息,即一条消息由生产者创建后,只能被一个消费者所消费。如果是订阅模式,应该在该表中增加队列类型(点对点队列、订阅队列)

1.表结构说明
在这里插入图片描述

每个消息队列对应一张表,创建消息队列的时候,同时为该消息队列创建一张表,原因如下:

降低不同消息队列之间的相互影响,降低对单表的性能要求;

降低单表中的总消息数量,提高查询效率;

在点对点模式中,一个生产者和一个消费者只能访问一个队列,分表设计可以降低设计复杂度

易于扩展和维护,防止出现一张表损坏,影响全局的情况出现

2.主键

queue_id 作为主键

3.索引

在 queue_name 列上创建唯一索引

2. 消息表

记录一个消息队列中存储的所有消息。此表适用于点对点消息,即一条消息由生产者创建后,只能被一个消费者所消费。

如果是订阅模式,需要将下表拆成两张表,一张记录消息内容,另外一张记录消息的消费者信息。一条消息内容会对应多个消费者。

1.表结构说明
在这里插入图片描述

注①:超过最大长度的消息会被存放在文件系统中,每个超长的消息会被保存成一个文件,此时该列中只保存消息文件的绝对路径。对于超长的消息,创建和读取的效率会稍微低一些。

2.主键

msg_seq,使用自增列作为主键

3.索引

idx1(msg_id),唯一索引,便于消费者确认消息被消费后,修改消息状态使用。

idx2(status,msg_seq),便于消费者查询未消费的消息,查询未消费的 msg_seq 最小的消息,保证一个分片中的消息为先进先出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值