分布式系统如何做到海量数据边云协同?看 TDengine 油气领域解决方案

本文主要是介绍分布式系统如何做到海量数据边云协同?看 TDengine 油气领域解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在某大型油田生产管理方案中,用户需要实现生产现场的自动化采集与控制、生产视频系统、工业物联网、生产数据服务、智能化生产管控应用以及各个环节的信息化采集标准建设等内容。在 TDengine 的帮助下,该大型项目成功完成了技术优化升级。本篇文章将就本次优化工作进行进一步的分析解读,给到大家参考。

TDengine 应用历程

这个项目此前的应用系统主要采用 Oracle 来存储和处理时序数据,但随着使用时间的增加,数据存储量越来越大,实时数据存储和处理的问题日益凸显,技术优化也遇到了瓶颈:

  1. 在处理复杂查询和聚合大数据集时写入和查询效率大幅衰减,系统出现明显的性能下降;
  2. 数据占用了越来越多的磁盘空间,给运维资源带来较大压力;
  3. 分布式的企业管理模式下基于应用本身的数据协同效率低下,无法满足企业应用的数据同步需求。

为了解决这些问题,用户进行了多方技术方案验证,并最终选择使用 TDengine 替换 Oracle 来存储时序数据。通过 TDengine 的边云协同技术,实现了边缘数据向云端的实时汇聚。

接下来,我们将对 TDengine 应用的主要场景进行深入分析。通过详细探讨 TDengine 在各个应用场景下的优势和应用效果,大家可以更好地了解其在实际项目中的价值和作用。

场景一:数据质量提升

一般来说,在实际应用中,生产现场采集的大量实时数据主要存储在工控系统中,对于支撑应用的数据质量难以保障。架构优化之后,现场实时数据将批量写入 TDengine(同批次数据包含不同井或设备的数据)。这一优化措施显著提高了数据的准确性和一致性,进一步优化系统性能,确保数据的可靠性和完整性。

此外,TDengine 也实现了对非实时数据的补录,补录中如果产生数据碎片,以及日常使用中产生的数据碎片,均可以通过 compact 功能在线重整数据文件解决。

场景二:数据服务性能优化

我们依托多个参数的历史曲线查询功能,通过数据分析和可视化能力,实现了对单井生产设备的实时监控与历史数据查询。该功能主要基于多参数的数据源,涵盖了涉及 TDengine 和关系型数据库的多个数据源取值,通过 TDengine 快速高效的查询,获取历史数据并生成曲线图。

通过自定义指标配置项,用户可以根据实际需求调整指标计算公式,生成个性化的结果数据,满足不同层级管理人员对数据展示的需求。

场景三:数据同步效率和存储优化

在这个重要环节,我们利用到了 TDengine 边云协同的重要特性——即对多个不同的 TDengine 服务的全量历史数据以及后续新增的数据,实时同步至云端 TDengine。

作为 TDengine 的一部分,taosX 工具仅需要在数据接收方一侧部署,仅需一行命令便可以完成实时同步、历史数据迁移,以及二者混合的三种数据处理方案。

例如:同步某台服务器的 db1 的历史数据以及实时数据到本地的 db2 数据库仅需执行如下一条命令即可。

taosx run -f 'taos://192.168.1.101:6030/db1?mode=all' -t 'taos://localhost:6030/db2' -v

另外,taosX 也提供了基于数据订阅方式(利用 TDengine 的 wal 日志)实时数据同步,以事件到达顺序处理数据,无论是实时数据还是历史数据的写入,都会实时同步到目标集群,不会丢失补录的历史数据。

通过该方案的实施,多个 TDengine 服务通过 taosX 跨省实时同步数据至云端总部集群。目前 TDengine 总部集群存储的数据量已经达到了 36 TB,总数据量 1034 亿+条,压缩率达到了 10% 以内。

写在最后

对于该项目来说,在将 Oracle 整体切换至 TDengine 之后优化效果明显,主要体现在如下几个方面:

  1. 数据插入性能变高,硬件资源减少;
  2. 集群支持在线水平扩展,轻松应对未来扩容需求;
  3. 灵活定义数据的生命周期,方便过期数据管理;
  4. 秒级 500 万测点的同步速率,满足了用户边云协同场景需求。

随着边云协同功能在各个复杂庞大的业务场景下成功落地,TDengine 也展现出了更强大的数据处理能力和更灵活的架构,能够更好地适应工业物联网环境下复杂多变的数据处理和存储需求,为工业物联网的发展提供有力支持和保障。

这篇关于分布式系统如何做到海量数据边云协同?看 TDengine 油气领域解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069808

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas