高并发架构实战 Day36

消息队列的存储分为元数据存储和消息数据存储两方面。

元数据的存储主要依赖第三方组件实现,比如 ZooKeeper、etcd 或者自研的简单元数据存储服务等等。在成熟的消息队列架构中,基于简化架构和提升稳定性的考虑,都会考虑在集群内部完成元数据的存储和管理。

消息数据的存储在功能层面包含数据存储结构设计、数据分段存储、数据存储格式、数据清理机制四个方面。

消息数据的存储主要包含 Topic 和分区两个维度。Topic 起逻辑组织作用,实际的数据存储是在分区维度完成的。所以在数据存储目录结构上,我们都以分区为最小粒度去设计,至于选择每个分区单独一个存储文件,还是将每个节点上所有分区的数据都存储在同一个文件,方案各有优劣,你可以根据实际情况去选择。

因为大文件存在性能和资源占用、数据清理成本等问题,一般情况下,我们都需要对数据文件进行分段处理,分段的策略一般都是按照文件大小进行的。 数据存储格式可以分为基础信息和业务信息两个维度,数据格式需要遵循极简原则,以达到性能和成本的最优。

数据的过期策略一般有三种,ACK 删除、根据时间和保留大小删除数据、两者结合。目前业界的实现比较多样,从选择上来看,两者结合的方案更合理

相关推荐
..过云雨1 小时前
17-2.【Linux系统编程】线程同步详解 - 条件变量的理解及应用
linux·c++·人工智能·后端
南山乐只2 小时前
【Spring AI 开发指南】ChatClient 基础、原理与实战案例
人工智能·后端·spring ai
努力的小雨3 小时前
从“Agent 元年”到 AI IDE 元年——2025 我与 Vibe Coding 的那些事儿
后端·程序员
源码获取_wx:Fegn08953 小时前
基于springboot + vue小区人脸识别门禁系统
java·开发语言·vue.js·spring boot·后端·spring
wuxuanok4 小时前
Go——Swagger API文档访问500
开发语言·后端·golang
用户21411832636024 小时前
白嫖Google Antigravity!Claude Opus 4.5免费用,告别token焦虑
后端
爬山算法5 小时前
Hibernate(15)Hibernate中如何定义一个实体的主键?
java·后端·hibernate
用户26851612107566 小时前
常见的 Git 分支命名策略和实践
后端
程序员小假6 小时前
我们来说一下 MySQL 的慢查询日志
java·后端