2. 核心需求分析:功能需求与非功能需求

好,咱们进入正题。需求分析这事儿,说白了就是搞清楚系统到底要干什么。我见过不少项目,上来就画架构图、选技术栈,结果做到一半发现连采集频率都没定下来——那后面全是白干。

所以这一节,我会把需求拆成三块来讲:功能需求非功能需求、以及典型性能指标。这三块是设备监控系统的地基,地基不稳,上层建筑再漂亮也没用。

2.1 功能需求:系统要做什么

功能需求,就是用户能直接感知到的能力。我习惯把它归纳为三个核心:数据采集告警展示。你想想看,一个监控系统如果连这三点都做不好,那还监控个啥?

2.1.1 数据采集

这是最基础的一环。设备的数据怎么上来?用什么协议?采集频率多高?这些都是要提前定死的。

我在项目中遇到过最典型的问题:客户说“支持Modbus TCP就行”,结果现场设备一半是Modbus RTU串口,另一半是OPC UA。嗯,这就很尴尬了。

所以,数据采集层必须支持多种协议。我一般会列一个清单:

  • 工业协议:Modbus TCP/RTU、OPC UA、PROFINET、EtherNet/IP
  • 物联网协议:MQTT、CoAP、HTTP/HTTPS
  • 私有协议:预留自定义解析接口

另外,采集频率要区分场景。温度传感器可能5秒一次就够了,振动信号可能需要毫秒级采集。千万别一刀切。

我的经验:采集层最好设计成“插件式”架构。每接入一种新协议,写一个插件就行,不用改主程序。我曾经用这种方式帮客户在两周内接入了7种不同的设备,效率极高。

2.1.2 告警

告警是监控系统的“嗓子”。数据采集上来,如果没人看,那等于没采。告警要解决三个问题:什么时候告怎么告告给谁

先说“什么时候告”。我建议设置多级阈值:

  • 警告级:温度超过80°C,发通知,不处理也行
  • 严重级:温度超过90°C,必须立即处理
  • 紧急级:温度超过100°C,自动触发停机保护

再说“怎么告”。别只发短信或邮件,现在都2025年了,企业微信、钉钉、飞书都得支持。我有个项目,客户要求告警必须同时推送到3个渠道,还要能自定义升级策略——比如5分钟没人确认,自动升级给上级。

避坑指南:我曾经遇到过一个告警风暴的问题。一台设备故障,导致关联的100台设备都触发告警,运维人员的手机直接被打爆。后来我加了“告警聚合”和“告警抑制”机制,才解决这个问题。

2.1.3 展示

展示层是用户直接打交道的界面。我个人的原则是:让数据自己说话。别搞花里胡哨的动效,用户要的是快速定位问题。

展示层一般包含:

  • 实时仪表盘:关键指标的实时曲线、数字
  • 历史趋势图:支持按时间范围、设备、指标筛选
  • 告警列表:按时间、级别、状态排序,支持确认和备注
  • 拓扑图:设备之间的连接关系,故障时高亮显示

这里我多说一句:展示层的延迟一定要低。用户点一下查询,3秒才出结果,那体验就很差了。后面我会讲怎么优化。

2.2 非功能需求:系统要跑得稳

功能需求决定系统“能不能用”,非功能需求决定系统“好不好用”。我把它归纳为三个关键词:高可用低延迟可扩展

2.2.1 高可用

设备监控系统通常是7×24小时运行的。如果系统挂了,产线可能停摆,损失巨大。所以高可用是硬指标。

我一般要求做到:

  • 服务冗余:关键服务至少部署2个实例,用负载均衡分发
  • 数据持久化:采集的数据实时写入数据库,支持主从切换
  • 故障自动恢复:服务挂了能自动重启,或者切换到备用节点

举个例子,我曾经给一个化工厂做监控系统,要求全年可用性99.99%。算下来,一年只能宕机52分钟。那怎么办?只能上多活架构,每个机房都部署一套,流量自动切换。

2.2.2 低延迟

低延迟分两个维度:数据采集延迟展示延迟

数据采集延迟,指的是从设备产生数据到系统收到数据的时间。对于实时性要求高的场景(比如电机振动监测),延迟必须控制在毫秒级。我常用的方案是边缘计算——在设备端先做初步处理,只把关键数据上传。

展示延迟,指的是用户操作到界面刷新的时间。这个我一般要求控制在500毫秒以内。如果超过1秒,用户就会觉得“卡”。

我的做法:展示层用WebSocket代替HTTP轮询。数据一有变化,服务端主动推给前端,延迟能降到100毫秒以内。

2.2.3 可扩展

系统不是一成不变的。今天接100台设备,明天可能接1000台。所以架构必须支持水平扩展。

我建议从这几个方面考虑:

  • 采集层:支持动态增加采集节点,每个节点负责一部分设备
  • 消息队列:用Kafka或RabbitMQ解耦采集和存储,吞吐量不够就加分区
  • 存储层:时序数据库(如InfluxDB、TimescaleDB)天然支持分片和扩展

说白了,就是每个组件都能独立扩容,互不依赖。

2.3 典型性能指标:用数字说话

需求不能光说“要快”、“要稳”,得用数字量化。我列出三个最关键的指标:

指标 典型值 说明
采集频率 1秒 ~ 5分钟 根据设备类型动态调整,高频场景可到100ms
告警延迟 < 5秒 从数据异常到告警推送,含采集+判断+推送
并发量 1000 ~ 100000 台设备 取决于系统规模,单节点建议不超过5000台

这里我特别说一下并发量。很多人以为并发量就是“同时在线设备数”,其实不对。并发量指的是同时上报数据的设备数。10000台设备如果每5秒上报一次,那每秒的并发就是2000。这个数字直接决定了消息队列和数据库的选型。

核心观点:性能指标必须在设计阶段就定下来,而不是等系统上线后再去测。我见过太多项目,上线后发现采集频率跟不上,只能临时改架构——那代价就大了。

2.4 知识体系总览

为了让你更直观地理解这一章的内容,我画了一张图。它把功能需求、非功能需求和性能指标串在了一起,方便你对照着看。

核心需求分析 功能需求 数据采集(多协议支持) 告警(多级阈值+多渠道) 展示(仪表盘+趋势图) 非功能需求 高可用(99.99%可用性) 低延迟(毫秒级采集) 可扩展(水平扩容) 性能指标 采集频率(1s~5min) 告警延迟(<5秒) 并发量(1000~100000) 三者关系:功能需求定义“做什么” 非功能需求定义“做到什么程度”,性能指标定义“怎么量化”

这张图把这一章的核心内容都串起来了。你可以看到,功能需求、非功能需求和性能指标是相互关联的。比如,采集频率这个指标,既影响数据采集的功能设计,也影响低延迟这个非功能需求。

好了,核心需求分析就讲到这里。下一节我们会进入架构设计,看看怎么把这些需求落地成具体的系统方案。


专注资料整理