Spring Boot + TDengine:工业视觉检测数据实时同步方案实战

分享一个工业软件定制项目中的数据同步实战经验。

场景

某3C代工厂,视觉检测设备每秒钟产生数十条检测结果。之前的方式是:设备输出日志文件,质检员每小时人工导入一次Excel,再手工录入MES系统。

问题很明显------实时性差、人力成本高、容易出错。需求是让检测数据实时同步到MES,同时支持历史数据查询和趋势分析。

技术选型

  • 后端:Spring Boot 2.7 + MyBatis-Plus

  • 时序数据库:TDengine(存储原始检测数据)

  • 关系数据库:PostgreSQL(存储业务摘要和配置)

  • 前端:Vue 3 + ECharts(数据看板)

  • 数据采集:基于Modbus TCP协议从视觉设备读取

为什么选择TDengine?

视觉检测设备每秒钟产生30-50条检测结果,一天下来数据量可达数百万条。如果用传统关系型数据库存储,查询良率趋势时响应时间会从秒级退化到分钟级。

TDengine的时序存储引擎对这类高频率、带时间戳的数据做了专门优化,查询同样是7天数据,PostgreSQL需要15秒,TDengine只需要200ms。

核心模块实现

  1. 数据采集层

通过Modbus TCP协议从视觉设备读取检测结果,使用Java的Modbus库(jamod)实现通信。数据解析后先写入TDengine原始数据表,再同步生成业务摘要写入PostgreSQL。

2.数据同步层

// 数据同步核心逻辑(伪代码示意)

public class DataSyncService {

// 每10秒批量同步一次

@Scheduled(fixedDelay = 10000)

public void syncDetectionData() {

// 1. 从设备缓存读取未同步数据

List<DetectionResult> results = readFromDeviceBuffer();

// 2. 解析并写入TDengine(原始数据)

tdEngineDao.batchInsert(results);

// 3. 聚合统计并更新PostgreSQL(业务摘要)

DetectionSummary summary = aggregate(results);

pgDao.updateSummary(summary);

// 4. 通过REST API推送给MES

mesClient.pushResults(summary);

}

}

3.异常处理机制

MES接口偶发超时(约5%的请求),配置了重试机制(最多3次,指数退避)和熔断降级(超时5秒后降级为异步队列)。

上线效果

  • 数据同步延迟从"小时级"降至"秒级"

  • 数据录入人力归零

  • 良率趋势看板实时更新,管理层可随时查看

📌 如需完整代码片段或详细架构图,欢迎通过CSDN私信交流。

相关推荐
MZ_ZXD0015 分钟前
【关注可白嫖源码】--课程设计--毕业设计-- 29210 Vue.js 3+Springboot中药材基本信息与图片查询系统
javascript·spring boot·课程设计·毕设·大作业·程序开发·毕设代做
wang_shu_mo_ran19 分钟前
Spring IoC和DI概念篇
java·后端·spring
Cheney Pan24 分钟前
第4篇 Spring Boot 应用监控:Micrometer 与 JVM 指标
jvm·spring boot·后端·prometheus
阿钱真强道37 分钟前
30 嵌入式操作系统 | 上位机界面:Flask 网页显示 + 控制闭环
后端·python·flask
念何架构之路1 小时前
go-grpc服务端调用
开发语言·后端·golang
我的div丢了肿么办1 小时前
go语言中如何安装第3方的包
后端·go
小蒜学长1 小时前
基于Spring Boot+Vue的“禾源”农产品销售系统设计与实现(代码+数据库+LW)
java·spring boot·后端·农产品销售系统·产品溯源
用户EasyAdminBlazor1 小时前
EasyAdminBlazor 审批事务:为什么审批失败必须全部回滚?
后端
墨鱼老师2 小时前
SpringBoot+Vue 毕设项目开发踩坑记录(前后端分离)
vue.js·spring boot·毕业设计·课程设计·前后端分离·java 毕设
计算机魔术师2 小时前
我让AI教学生写前端,三天后课堂变了——Web教育者的集体反思
后端