模块八 - 设计消息队列存储消息数据的 MySQL 表格
思路说明
表处理,每个队列一个表:
MySQL 大表(千万级)的查询效率比较低
MySQL 一个表一个文件,如果文件储存出错了,应该尽量控制影响范围
索引处理,从数据特性:
同一个消息每个组最多消费一次
详细设计
每个消息队列对应一个 MySQL 表
消息队列名就是表名 ${message}
表结构设计为
复制代码
表相关说明
message id 通过雪花算法生成,保证每个分片上的 ID 唯一
innodb charset 使用 utf8mb4,防止有表情符
每个客户端都有唯一标识,通过消息队列管理器分配
message_id 和 subscribe_group_name 组成唯一索引,防止组内重复消费
版权声明: 本文为 InfoQ 作者【彬】的原创文章。
原文链接:【http://xie.infoq.cn/article/8d845aca47a4a972f0964a161】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论