3. 平台总体架构设计
实验设备实时数据平台面对的是“多品牌仪器、多协议接口、多采样频率、多消费场景”的复杂环境。若把所有逻辑堆在一个服务里,任何一次设备接入变更都可能牵动存储与服务,最终导致系统难以演进。分层架构的核心价值,是把“变化频率不同、技术栈不同、可靠性要求不同”的职责切开,让每一层只解决一类问题,并通过稳定接口向上提供服务。
本节采用七层划分:边缘层、接入层、消息层、存储层、服务层、应用层,以及贯穿全局的运维与安全能力。下面先给出整体数据流与职责边界,再逐层说明职责、关键选型参数与选型原则。
边缘层:把“最后一米”的不确定性收住
边缘层直接面对仪器,职责是稳定采集、就地处理、断网续传。它需要处理三类现实问题:一是协议差异,例如某台温控箱走 Modbus RTU,某台示波器走 SCPI over TCP,某台采集卡走厂商私有 DLL;二是时钟差异,设备本地时间可能漂移,必须统一到平台时间基准;三是网络不可靠,实验室网络可能被大文件传输占满。
选型上,边缘节点优先选择支持容器化部署的轻量运行时,单节点资源建议预留 2 核 CPU、2 GB 内存以上,用于本地缓存与预处理。采集周期按设备能力设定:温度类 1 s、电压电流类 100 ms、振动类 1 ms 或更高。边缘预处理应至少包含“无效值剔除、量程判断、时间戳打标”三步,避免脏数据直接进入消息层。断网缓存建议按“本地磁盘队列 + 最大保留时长”设计,例如保留 24 小时或 500 MB,先到者触发覆盖。
接入层:协议归一化与设备身份
接入层是平台与设备之间的“翻译官”。它把不同协议、不同报文格式统一为内部数据模型,典型字段包括:设备ID、测点ID、时间戳、数值、质量码、单位。质量码用于标记数据可信度,例如 0 表示正常、1 表示超量程、2 表示通信超时、3 表示人工置数。
接入层还需完成设备认证与会话管理。建议每台设备或每个边缘网关分配唯一凭证,接入时校验设备证书或令牌,避免非法设备写入。对于高频数据,接入层应支持批量打包,例如每 200 ms 或每 500 条打包一次,降低消息层压力。若某设备连续 3 个周期无响应,接入层应产生通信中断事件,而不是静默丢弃。
消息层:削峰、解耦与可回放
消息层是平台的“缓冲带”。实验设备数据具有明显的突发性:某次实验启动瞬间,几十台设备同时上传,若直接写库会造成存储抖动。消息层通过主题分区把不同设备或不同实验分组,消费组按需订阅。关键参数包括:分区数、副本数、消息保留时长、消费位点提交方式。
选型原则是:分区数按“峰值吞吐 ÷ 单分区吞吐”估算,并预留 2 倍余量;副本数至少 2,保证单节点故障不丢数据;保留时长按业务回放需求设定,例如 7 天用于排障,30 天用于实验复盘。消费端必须实现幂等写入,避免重复消费导致数据重复。对于无法处理的消息,应进入死信队列并记录原因,而不是无限重试阻塞主链路。
存储层:按数据特征分级
存储层不能只用一种数据库。原始高频时序数据写入量大、查询以时间范围为主,适合时序数据库;设备台账、实验配置、用户权限等结构化数据适合关系库;波形文件、图片、日志附件适合对象存储;最新值查询和热点数据适合缓存。
以某实验台为例:20 个测点、采样周期 100 ms,则每秒产生 200 条记录,一天约 1728 万条。若保留 90 天原始数据,约 15.5 亿条。此时必须设计降采样与冷热分层:原始数据保留 7 天,1 分钟聚合数据保留 90 天,1 小时聚合数据保留 3 年。聚合任务由服务层调度,写入独立的聚合表,避免查询时实时计算。
服务层:统一接口与业务逻辑
服务层向上提供稳定 API,向下屏蔽存储差异。核心服务包括:实时查询服务、历史查询服务、订阅推送服务、设备元数据服务、权限与审计服务。实时查询建议走缓存,历史查询走时序库,订阅推送走消息层或 WebSocket。
服务层的关键设计是“接口契约稳定”。例如历史查询接口统一为:设备ID、测点ID、起始时间、结束时间、聚合粒度、返回条数上限。无论底层是时序库还是关系库,调用方不需要感知。对于跨设备计算,例如“温度超过 80 ℃ 且持续 10 s 触发报警”,应由服务层的规则引擎完成,而不是让应用层各自实现。
应用层:面向场景,不碰底层细节
应用层只消费服务层接口,不直接访问数据库或消息队列。典型应用包括:实时监控大屏、实验过程回放、报警推送、数据导出与报表、第三方系统对接。应用层的选型原则是“快速迭代、按需组合”,同一份数据可以同时支撑大屏、移动端和报表,而不需要重复采集。
选型原则汇总
| 层级 | 核心职责 | 关键选型参数 | 选型原则 |
|---|---|---|---|
| 边缘层 | 采集、预处理、断网缓存 | 采集周期、缓存容量、时钟同步精度 | 贴近设备,优先保证不丢数 |
| 接入层 | 协议适配、身份认证、数据校验 | 协议类型、批量大小、质量码规则 | 归一化输出,异常可观测 |
| 消息层 | 削峰、解耦、回放 | 分区数、副本数、保留时长 | 按峰值吞吐估算,预留余量 |
| 存储层 | 分级持久化 | 写入速率、保留周期、聚合粒度 | 按数据特征选库,冷热分层 |
| 服务层 | 统一API、业务规则 | 接口契约、并发量、缓存策略 | 接口稳定,屏蔽底层差异 |
| 应用层 | 场景化展示与交互 | 刷新频率、用户规模、导出格式 | 只依赖服务层,快速迭代 |
实际落地时,建议先用一张“数据流与职责边界图”对齐团队认知,再逐层确定技术选型。每层之间只通过明确接口通信,禁止跨层直连。这样,当设备数量从 20 台扩展到 200 台、采样频率从 100 ms 提升到 10 ms 时,平台只需在对应层扩容或替换组件,而不必推倒重来。