一、项目背景
工厂内机床、设备通过PLC采集温湿度、压力、电量、加工计数等实时物联网数据,经Modbus 等协议接入Kafka。原始数据存在大量重复、异常、乱序、跳变问题,无法直接用于MES系统与生产大屏;设备运行状态(绿/黄/红/灰)无统一规则,加工计数易重复统计,亟需一套从0到1的实时数据清洗与治理体系。
二、项目目标
1. 建立设备状态标准化规则,自动识别正常、告警、故障、停机状态并统计各状态持续时长;
2. 构建生产加工计数清洗规则,过滤重复上报数据,处理人工重置等异常场景,保证计数准确;
3. 输出标准结构化数据,支撑MES系统、生产可视化大屏分钟/小时/日报表展示。
三、项目概述
该项目为工业物联网数据治理从0到1建设,采用Flink +Doris 技术架构。从Kafka消费设备实时采集数据,通过自定义清洗规工重置场景处理。清洗后数据写入聚合表,为下游MES系统、可视化大屏提供分钟级至日报级的标准化数据,支撑生产监控、趋势分析与产能统计。
项目职责:
1. 独立负责工业物联网数据治理项目从0到1设计与落地,参与整体架构方案讨论,最终确定并实现Flink +Doris 实时数仓架构;
2. 全程负责从Kafka消费设备实时数据,完成数据清洗、去重、异常过滤、乱序处理、状态计算、指标聚合等全流程开发;
3. 设计并实现设备运行状态(正常/告警/故障/停机)规则引擎,自动统计各状态持续时长并结构化落表;
4. 开发生产加工计数精准清洗逻辑,处理重复上报、人工重置等复杂业务场景,确保计数准确;
5. 构建标准聚合层数据模型,对外提供数据接口,支撑下游MES系统、生产可视化大屏实时展示与报表统计;
6. 负责需求变更、接口迭代及历史数据重刷、补算等运维工作,保障数据一致性。
7、使用AI工具(WorkBuddy后者TRAE CN)辅助提高开发效率
技术栈:Kafka+Flink+Doris+SpringBoot+Redis+Minio+Python
1、整体架构和设计思路。
整体架构是工厂设备端通过PLC+Modbus采集设备的各种状态数据推送到边缘网关,边缘网关这边汇聚后再通过mqtt方式发送到服务端EMQX转为kafka消息。
使用大数据组件Flink消费Kafka中的数据,根据业务逻辑清洗后写入Doris,报表平台通过jdbc直连Doris进行查询或者通过RESTful接口查询聚合后的数据给到大屏进行实时展示。
2、负责模块和结果
我负责的是从Kafka+Flink+Doris+SpringBoot+报表平台的展示
3、遇到的难点、坑,和解决方案。
遇到的难点:
1)kafka端如何做到消息不丢不重,生产端通过设置acks=all,失败重试,幂等配置,broker端通过设置3个节点,每个topic中的partition设置3个副本,isr>=2,消费端设置手动提交offset+消息幂等判断等
2)flink端部分算子的数据倾斜严重,通过对key添加后缀_hash(key)%10后将打散到后面10个算子中分别进行业务计算后再去掉后缀合并计算。
flink状态数据未及时释放导致oom,通过设置ttl、配置使用增量检查点、缩短窗口范围等措施尽快释放状态内存。