3. 汇聚工程需求分析与指标定义
多产线时序数据汇聚工程的第一步不是选型,也不是写代码,而是把“汇聚要满足什么”变成一组可测量、可验收的指标。需求分析的核心任务,是把产线数量、测点规模、采样频率、数据保留周期、查询模式这些业务事实,翻译成吞吐量、延迟、一致性、可用性和可扩展性五类工程目标。指标定义不清,后续的架构选型、容量规划、压测验收都会失去判断依据。
一、从业务事实推导规模基线
指标推导的起点是数据源清单。假设某工厂有 12 条产线,每条产线部署 1 台边缘网关,单条产线平均 800 个测点,其中 60% 为 1 Hz 的模拟量、30% 为 0.2 Hz 的温度与压力、10% 为事件型开关量。按平均每秒写入点数估算:
单线稳态写入速率 ≈ 800 × 0.6 × 1 + 800 × 0.3 × 0.2 + 800 × 0.1 × 0.05
≈ 480 + 48 + 4 = 532 点/秒
12 条产线合计 ≈ 532 × 12 ≈ 6384 点/秒
峰值系数取 2.5(换型、批量采集、补传叠加)→ 峰值约 16000 点/秒
这个估算值就是吞吐量目标的原始输入。注意它只是“写入侧”的规模,查询侧还要单独估算:若每天有 200 次历史趋势查询,每次扫描 1 小时、10 个测点、1 Hz 数据,则单次查询约 36000 个数据点,日查询总量约 720 万点。写入与查询必须分开定义指标,否则容易用写入吞吐掩盖查询压力。
二、五类指标的定义与目标设定
吞吐量描述单位时间内系统能稳定接收并落盘的数据量,通常用“点/秒”或“MB/秒”表示。目标设定要区分稳态与峰值:稳态吞吐应覆盖 1.2 倍日常均值,峰值吞吐应覆盖 2~3 倍突发,并明确峰值可持续时长(如 10 分钟)。建议目标:稳态 ≥ 8000 点/秒,峰值 ≥ 16000 点/秒且持续 10 分钟不丢数。
延迟要拆成三段:采集延迟(设备产生到网关收到)、传输延迟(网关到汇聚入口)、落盘延迟(入口到可查询)。对产线监控,端到端 P95 延迟通常要求 ≤ 3 秒;对事后分析,可放宽到 30 秒。延迟指标必须写明分位数,平均值会掩盖长尾问题。
一致性在时序场景中不是“强一致”一刀切。关键质量数据(如批次追溯、报警事件)要求不丢不重,采用至少一次投递加幂等去重;一般过程量允许在断网补传时出现短暂乱序,但同一测点同一时间戳最终必须唯一。目标可定义为:关键测点丢失率 = 0,重复率 ≤ 0.01%,时间戳乱序窗口 ≤ 5 分钟。
可用性用“年停机时间”倒推更直观。99.9% 对应年停机约 8.76 小时,99.95% 对应约 4.38 小时。汇聚链路应做到单网关故障不影响其他产线,汇聚节点故障时数据在边缘缓存并在恢复后补传。目标建议:汇聚服务可用性 ≥ 99.9%,单点故障恢复时间 ≤ 5 分钟。
可扩展性要回答“加一条产线要改什么”。理想目标是新增产线只需在配置中注册网关与测点映射,无需修改汇聚核心逻辑,容量按线性扩展。可设定:单集群支持产线数从 12 扩展到 50,写入吞吐随节点数近似线性增长,扩容操作对在线业务无中断。
三、指标之间的权衡与优先级
五类指标并非彼此独立。提高一致性(如每条数据同步落盘并等待确认)会推高延迟;追求极低延迟(如内存缓冲后异步批量写)会削弱断网时的数据安全性;无限扩展的假设会掩盖单点瓶颈。因此需求分析必须给出优先级。对产线汇聚,通常的顺序是:不丢关键数据 > 可用性 > 吞吐量 > 延迟 > 成本。一般过程量可以在延迟上让步,但批次、报警、质量判定数据不能丢。
权衡要落到具体设计选择上。例如,边缘网关采用本地磁盘队列缓存 24 小时数据,网络恢复后按时间顺序补传,这样可用性和一致性得到保障,代价是补传期间汇聚入口需要额外 30% 的吞吐余量。这个余量必须提前写进吞吐量目标,而不是等故障发生后再临时扩容。
四、把指标写成可验收的测试用例
指标定义的最后一步是转成验收条件。下面给出一份可直接参考的指标验收表,字段和阈值均属于示例设定,实际项目应按现场规模调整。
| 指标 | 测试方法 | 通过条件 | 观测点 |
|---|---|---|---|
| 吞吐量 | 用回放工具按 16000 点/秒持续写入 10 分钟 | 写入成功率 ≥ 99.99%,无持续积压 | 汇聚入口队列长度、落盘速率 |
| 延迟 | 在网关打时间戳,查询端计算差值 | P95 ≤ 3 秒,P99 ≤ 8 秒 | 端到端时间差分布 |
| 一致性 | 断开网关网络 10 分钟后恢复 | 补传后无丢失,重复率 ≤ 0.01% | 测点时间戳唯一性校验 |
| 可用性 | 随机终止一个汇聚节点 | 服务不中断,5 分钟内恢复 | 健康检查、请求成功率 |
| 可扩展性 | 新增 4 条模拟产线并注册配置 | 吞吐线性增长,无需改核心代码 | 扩容前后吞吐对比、配置变更量 |
五、常见误区
- 只算写入不算查询。历史趋势查询可能瞬间拉高磁盘 IO,需单独设定查询并发与扫描量上限。
- 用平均值代替分位数。平均延迟 1 秒可能掩盖 P99 达到 20 秒的事实,长尾会直接影响报警时效。
- 把一致性等同于强一致。时序场景更适合按数据等级分级一致性,全部强一致会显著抬高延迟和成本。
- 忽略补传流量。断网恢复后的补传是峰值吞吐的重要来源,必须在目标中预留余量。
- 扩展性只谈节点数。真正的扩展性还包括测点注册、元数据管理、查询路由是否随产线增加而线性可控。
完成本节后,应产出一份经产线、自动化、IT 三方确认的指标基线文档:包含数据源清单、规模估算过程、五类指标阈值、优先级排序和验收用例。这份文档将直接决定后续汇聚架构的选型边界——是单节点还是集群、是消息队列加时序库还是边缘直写、是否需要分级存储。指标定义不是形式工作,而是整个汇聚工程的第一道设计约束。