时序数据库 TDengine 流式计算在吉科软冷链系统中的应用实践

news2024/11/26 10:45:36

当下,随着物流供应链的不断发展,冷链物流正变得越来越重要。通过数字化、平台化和生态化的智慧冷链监管平台,企业可以更好地掌握运输车辆的位置,及时发现并处理异常事件,有效提升客户满意度和信任度,同时也有助于降低冷链运输成本,提高企业市场竞争力。在这一背景下,某冷链项目利用追溯技术和监控预警功能,可以实现对冷链运输各个环节的高效监管,提高运输安全性和产品质量,为冷链运输行业带来极大的赋能作用。

异常事件预警

在具体业务中,轨迹数据的传输形式主要有两种,正常情况下设备会实时向服务端推送数据,但当设备无信号时就会出现离线数据,车辆联网后会将离线数据再次进行推送。利用这些推送数据,我们需要计算运输车辆超时停车预警。

这一需求实现的难点在于实时数据计算停车停留时间后,离线数据上传,离线数据可能存在实时数据的中间,所以停留时间需要重新计算,数据量大,计算量大,复杂度也高,准确性低。

我们的解决方案是:

  • 对于实时数据,可以直接计算每个轨迹点的停留时间,并根据预设的超时阈值进行判断,是否需要发出超时停车预警。同时使用 Redis 内存数据库或者是使用分布式缓存系统进行缓存优化,将计算结果进行缓存,避免重复计算;

  • 对于离线数据,可以在车辆重新联网后,将离线数据与实时数据进行合并,并根据时间戳进行排序,从而保证数据顺序的正确性。然后根据新的轨迹点数据重新计算超时停车预警,避免离线数据对预警结果造成影响。

在原有方案中,我们通过对已接收的数据进行实时计算,以此确定每个轨迹点是离线还是在线状态。但这一方案存在两点缺陷:

  • 由于计算数据量较大,导致接收数据存在延时问题

  • 因有离线数据,需要考虑离线数据与实时数据结合,可能有超时停车的情况出现,导致计算量复杂程度倍增

后面经过数据库选型,我们选择了时序数据库(Time Series Database) TDengine 存储车辆轨迹数据,它能够很好地实时分析并记录车辆的位置、速度和行驶方向等信息,为 B 端客户提供实时车辆运输位置跟踪。

 插入实时数据,观察流式计算结果select * from overtime_parking_output_stb;,如下:

通过应用 TDengine 流式计算功能,我们可以将行驶和超时停车的数据分别存储,并记录对应轨迹和时长,方便查找和分析正常行驶和超时停车的情况。

 在车辆行驶过程中,TDengine 流式计算引擎能够实时判断车辆的运行状态,区分出行驶和停车的状态,并将这些数据实时处理并存储到不同的数据库表或者数据流中。在数据存储的过程中,也会记录对应轨迹和时长等信息,为后续的数据分析提供依据。

对于超时停车的情况,通过 TDengine 流式计算可以实时监控车辆的运行状态和位置信息,如果发现车辆停留时间过长,就可以将其标记为超时停车,并及时进行预警和管控。同时,利用这一功能,我们也可以通过对行驶和停车数据进行分析,进一步优化路线规划和运营管理,提升运输效率和安全性。

离线数据分析

插入离线数据(实时数据的中间部分,观察流式计算结果):

 插入离线数据,观察流式计算结果select * from overtime_parking_output_stb;,如下:

在离线数据上传后,TDengine 流式计算引擎会将这些数据在对应的时间点上进行数据计算处理,按照数据的时间顺序进行处理,并且完全满足轨迹按时间排序计算的正常顺序,确保不会出现漏洞或者混乱的情况。这样一来,离线数据与实时数据就不会再出现错误计算的问题,我们也能够为 B 端客户提供更准确、实时、有效的运营数据和报表。 

总之,TDengine 流式计算功能不仅帮助我们实现了车辆行驶数据的实时处理和分类,也很好地实现了运输车辆超时停车预警,减轻了服务端的计算压力,满足业务需求的同时帮助我们极大节省了数据处理成本,提高了车辆的运输效率和安全性。

写在最后

在运行 TDengine 过程中,涛思数据团队始终以客户需求为导向,为我们提供高效、可靠的数据处理和分析服务,满足了不断升级的业务需求,我们也非常感谢他们。未来我们还有计划将 TDengine 引入到其他业务中进行时序数据的处理,在实践中推进时序数据库技术的发展,实现共赢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轻松构建业务应用程序,提高效率和准确性

在数字化时代,企业和组织面临着不断增长的业务需求和快速变化的市场环境。为了适应这一挑战,越来越多的企业开始寻找一种能够快速开发应用程序、提高效率并降低成本的解决方案。在众多的选项中,我们聊一聊中小企业可选择的低代码平台。 一、简…

idea创建spark教程

1、环境准备 java -version scala -version mvn -version spark -version 2、创建spark项目 创建spark项目,有两种方式;一种是本地搭建hadoop和spark环境,另一种是下载maven依赖;最后在idea中进行配置,下面分别记录两…

2024考研408-操作系统 第四章-文件管理 学习笔记

文章目录 一、文件系统基础1.1、初识文件管理1.1.文件的属性1.1.2、文件内部的数据应该怎样组织起来(无结构与有结构)1.1.3、文件之间应该怎样组织起来?1.1.4、操作系统应该向上提供哪些功能?1.1.5、从上往下看,文件应…

【监控系统】Promethus监控SpringBoot微服务应用配置实战

我们本节要实现的是Java服务级监控用于对每个应用占用的内存、线程池的线程数量、restful调用数量和响应时间、JVM状态、GC信息等进行监控,并可将指标信息同步至Prometheus中集中展示和报警。 首先我们先了解下什么是actuator? Spring Boot Actuator 模…

从头开始:自定义类型入门指南(结构体、位段、枚举、联合)

目录 文章目录 前言 结构体 结构体类型的声明 结构体的自引用 结构体变量的定义和初始化 结构体变量定义 初始化 结构体大小 结构体传参 位段 什么是位段 枚举 枚举的定义 枚举的优点 枚举的使用 联合(共用体) 联合类型的定义 联合大小的计算 总结 前…

基于Nginx的web集群项目

目录 nginx介绍代理集群 安装配置文件http 使用master和worker升级问题 基于域名的虚拟主机隐藏nginx的版本信息供别人下载的网站统计的信息的页面pv介绍 ngixn续nginx认证nginx的allow和denynginx限制并发数nginx限速限速的算法 nginx 限制请求数nginx 的 locationnginx 的 lo…

代码随想录算法训练营day4 | 24. 两两交换链表中的节点,19. 删除链表的倒数第 N 个结点,面试题 02.07. 链表相交,142. 环形链表 II

目录 24. 两两交换链表中的节点 19. 删除链表的倒数第 N 个结点 面试题 02.07. 链表相交 142. 环形链表 II 24. 两两交换链表中的节点 24. 两两交换链表中的节点 难度:medium 类型:链表 思路: 代码: class Solution {pub…

【目标检测】ROI Polling和ROI Align

ROI Pooling和ROI Align都是为了解决目标检测RPN任务后得到的一系列proposals大小不一致的问题。 ✨ 1 基本思想 🌊 1.1 ROI Pooling 假设有一张特征图大小为8x8(原图大小sxs),一个bbox坐标(0, 3, 7, 8),我们目标是获得大小为2x2的特征图作…

PostgreSQL 考试认证指南:考前准备和考试概述

下面是关于考前准备和考试概述的指南: 考前准备: 1.确定考试内容:详细了解考试的内容范围和考试要求。可以查阅PostgreSQL官方网站或认证考试指南,以获取相关信息。 2.学习和实践:系统地学习和掌握与PostgreSQL相关…

Animboat Application Framework

SpringBoot的服务将部署在云端 管理云端数据和处理分布式的业务请求 本地基础服务将作为云端和终端中间媒介, 与局域网内其它dcc 插件或者app运行实例进行通信, 同时本地基础服务将负责本地数据的管理。 每个AppInstance都会有自己的FlaskSvr用于与Loc…

前端学习记录~2023.7.16~CSS杂记 Day8

前言一、正常布局流二、弹性盒子1、为什么是弹性盒子2、指定元素的布局为flexible3、flex 模型说明4、列还是行?5、换行6、flex-flow 缩写7、flex 项的动态尺寸8、flex:缩写与全写9、水平和垂直对齐(1)align-items 属性&#xff0…

[极客大挑战 2019]PHP(反序列化)

介绍说明&#xff0c;有备份的习惯&#xff0c;找常见的备份文件后缀名 使用dirsearch进行扫描 dirsearch -u http://f64378a5-a3e0-4dbb-83a3-990bb9e19901.node4.buuoj.cn:81/ -e php-e 指定网站语言 扫描出现&#xff0c;www.zip文件 查看index.php <?php include c…

C\C++ 使用socket判断ip是否能连通

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan 简介&#xff1a; 使用socket判断ip是否能联通 效果&#xff1a; 代码&#xff1a; #include <iostream> #include <cstdlib> #include <cstdio> #include &…

Openlayers实战:加载GPX文件

在OPenlayers的交互中,经常性的我们要加载一些数据,在这个实战中,演示的是加载GPX文件。 GPX(GPS eXchange Format,GPS交换格式)是一个XML格式,为应用软件设计的通用GPS数据格式。它可以用来描述路点、轨迹、路程。这个格式是免费的,可以在不需要付任何许可费用的前提…

字体反爬破解

1、通过 f12 查看网页相关信息① 搜索“python”相关岗位&#xff0c;想爬取下来作为分析&#xff0c;但是看到html源码为特殊字符&#xff0c;而不是页面上直观能看到的文字信息②点击对应的css样式查看css源码&#xff0c;通过源码解析字体加密过程 2、通过 DomainURI 获取到…

npm如何发包、测试以及删除发布包?

发包&#xff1a; 先在 npm 官网创个号 https://www.npmjs.com/ 2.创好了之后就先创建自己的文件夹&#xff0c;我用的vscode&#xff0c;也可以自己在命令行里面敲&#xff0c;比如我在F:// 前端学习-VUE项目 创建 my_firs_npm npm init -y创建之后&#xff0c;你能得到一个…

使用nginx部署前后端分离项目,处理跨域问题(共享cookie)

1.唠嗑 踩坑了&#xff0c;花费一天时间&#xff0c;开始对nginx配置不懂&#xff0c;老是弄错了配置文件&#xff0c;之前装的nginx ,cofnig有两个&#xff0c;nginx.config和nginx.config.def &#xff0c;开始配置我在nginx.config中配置的&#xff0c;后面一直在改def&…

scala学习手册

1. case class学习 样例类模式匹配 1.1 样例类&#xff08;case class&#xff09;适合用于不可变的数据。它是一种特殊的类&#xff0c;能够被优化以用于模式匹配。 case class MetaData(userId: String)case class Book(name: String) {def printBookName(): Unit {printl…

修改conda默认的环境安装位置

修改conda默认的环境安装位置

go语言终端交叉编译的事项windows编译其它平台软件包

交叉编译的终极版本[以此为准]&#xff1a; windows编译窗口目前分为cmd窗口&#xff0c;powershell窗口&#xff0c;这两个里面运行的命令不一样。 1.cmd窗口编译&#xff1b; 在windows10之前的系统版本上使用cmd命令行可以使用命令 CMD命令行中 在CMD命令行中编译&#…