大量设备同时上报数据,该怎么存储?
指标数据的特点
- 数据量巨大:每天产生几百亿条数据记录
- 写入频繁:每台设备每10秒上报一次数据
- 查询较少:主要用于监控设备状态
- 时效性强:最近的数据最重要,价值随时间递减
系统架构设计
消息队列:通过MQ进行异步处理
- 比如:用Kafka的实现如下作用
- 数据安全:即使数据库暂时不可用,数据也不会丢失
- 削峰填谷:缓冲突发流量,避免数据库压力过大
- 系统解耦:实现数据的解耦,方便后续做扩展
- Kafka要合理设置的分区数,分区数大于消费者的数量;设置合理的消息包保留时间、配合合适的副本数,确保数据安全
- 比如:用Kafka的实现如下作用
数据存储:根据数据特性选择合适的存储方案
存储方案对比
存储方案 优点 缺点 适用场景 关系型数据库 事务支持好,查询灵活 写入性能差,扩展性有限 小规模数据 时序数据库 写入性能极佳,压缩比高 成本相对较高 实时监控数据 分布式存储 水平扩展能力强,成本低 运维复杂度高 海量历史数据 推荐数据分层存储策略
- 时序数据库:最近7天的实时数据
- 分布式存储:7-30天的数据
- 归档存储:30天以上的历史数据