架构实战营模块八作业
一、表 DDL
复制代码
二、设计方案
整体思路
减少单表数据量。
优化索引。
生产消息时通过消费 id 路由到具体的分区下,增加分区需要消息重分布。
具体方案
减少单表数据量
1 个队列/topic 下的 1 个分区使用 1 张表,申请队列/topic 时(必须指定分区数量)自动创建对应的表,消费者启动后自动插入对应的队列/topic 的消费进度表。
因为需要范围查找,所以选择 range 分片,同时分片场景下不能使用主键 id,这里消息 id 可通过客户端内置雪花算法来进行生成。
定期归档数据,对应同 1 个队列/topic 下最小的 offset 之前的消息可以进行归档,如果要支持消息回溯功能,可多留一部分消息表记录。
优化索引
思路比较简单,消息表直接使用 kv 结构,消息 id 为主键索引,不需要进行回表。
消费进度表,建立联合索引,通过消息组查 offset 不需要回表。
评论