概述
物联网平台除时序数据(传感器数值)外,还需存储设备上报的图片、视频、固件包、日志文件等非结构化数据。这些数据具有体量大、增长快、访问模式不同(热数据频繁访问、冷数据归档)等特点,传统文件系统或关系数据库难以胜任。分布式存储系统如MinIO、Ceph、HDFS提供高可用、可扩展的对象存储能力,满足PB级文件存储需求。对象存储采用S3兼容API,支持大文件分片上传、断点续传、版本管理,与物联网平台的设备文件上传、OTA固件分发、日志归档等场景天然契合。
物联网场景下,摄像头抓拍、工业视觉质检图片、车载视频、设备诊断日志等数据量巨大。分布式存储需支持按租户、按产品、按时间分区,便于隔离与生命周期管理。与CDN结合可加速固件下载、图片访问,降低源站压力。
核心特性
对象存储与S3兼容
S3兼容API,支持Put/Get/Delete等操作。大文件分片上传(Multipart Upload)、断点续传。支持元数据、标签、生命周期规则。与AWS S3、阿里云OSS、腾讯云COS等API兼容,便于迁移与多云部署。
高可用与弹性扩展
多副本或纠删码(EC)保障数据不丢失。节点故障时自动恢复。支持动态扩容,新增节点即可增加容量与吞吐。PB级容量、高并发访问。
CDN与分层存储
结合CDN加速固件下载、图片访问,减轻源站压力。支持热数据SSD、冷数据HDD的分层存储,降低成本。生命周期策略:自动将过期数据迁移至低成本存储或删除。
物联网典型应用
摄像头抓拍、工业质检图片、车载视频存储。固件包存储与OTA分发。设备日志、诊断文件归档。数据备份与容灾。与物联网平台集成,设备通过HTTP/MQTT上传文件,平台存储后供查询、下载、分析使用。
对象键空间与持久化策略
对象存储承接文件、镜像和日志包
这里的分布式存储指的是对象和文件:一次写入、按键多次读取、很少在中间改一个字节。图片、短视频、固件镜像、诊断包和导出文件都符合这种形态。对象由桶、键和字节组成,存储系统不解释字节的业务含义。测点需要按时间范围扫描、按窗口聚合,应交给时序引擎。若把每个采样点存成一个小对象,元数据会远大于数据本身,列举也会慢到不可用。
键就是索引。把租户、产品、设备标识、日期和用途编进键,列举和过期才能按前缀进行。键里若使用会改变的显示名称,设备一改名,旧对象全部失联。稳定的是设备标识和内容摘要,显示名称放在对象元数据里。打开版本控制后,覆盖不会立刻丢掉旧字节,删除往往只是写入删除标记。空间要等生命周期把非当前版本清掉才会释放。
纠删码与分片上传的适用条件
多副本适合对象较小、节点数不多、希望读取路径简单的集群。纠删码把对象拆成数据块和校验块,额外占用的空间更少,但可用节点数必须达到恢复所需的下限,很小的文件还会被块管理开销抵消收益。固件和视频这类较大对象更适合纠删码。海量只有几十字节的状态,应先合并再写入,或改放到别的存储。
分片上传适合不稳定网络上的大镜像:每片单独确认,失败只重传该片,全部完成后由服务端组装成一个对象。客户端要能记住上传标识和已成功的片号,并且有人清理从未完成的上传。升级任务从这里取镜像时,地址应限时签发,范围只包含该次任务需要的键。任务状态和镜像键怎样对应,见OTA升级系统。
生命周期规则、桶策略和未完成分片
生命周期规则写错前缀,会把仍在发布通道里的固件划进过期删除,现场升级会拿到不存在的键。规则应先在副本桶演练,确认匹配到的是日志和过期抓拍,而不是当前要下发的镜像。桶策略若把整个租户的列举权授出去,一个账号就能扫出其他客户的键名。策略要限制到该客户的前缀,写入、读取和删除分开授权。
未完成的分片不出现在普通列举里,却持续占着容量,表现为桶看起来不大、磁盘却满了。需要定期列出未完成上传,中止超过约定期限的会话。覆盖同一键时,读取若落在缓存尚未失效的节点,客户端可能短暂拿到上一版。关键镜像应使用新键,并在任务里显式指向新键。把时序明细导出成对象做归档是合理的,导出要能按时间范围重放,并和时序数据库的保留期限对齐,避免库内已过期、对象里却缺了同一段。
合并小对象之前先看读取方式。抓拍若要按单张图片签发下载地址,合并成一个大包会让签名范围过大,这种图片保持一图一键,用前缀和日期把列举范围收住。诊断日志则相反,一台设备一天一个包,比成千上万个碎片更容易套用生命周期。形态选定后不要中途更换键规则,否则同一天的文件会落进两套前缀,过期任务只清掉其中一套,另一套继续占着磁盘。