智慧水务系统如何进行有效的数据架构整改?三个企业的改造实践分享

news/2024/10/30 15:26:30/

在智慧水务系统中,往往需要对设备中产生的液位、电流、水量等实时指标数据进行存储、分析及监控操作,而这些都是典型的时序数据。面对这些数据的处理时,很多企业在前期选择的大都是传统的实时数据库甚至关系型数据库,随着设备数量的增加,数据量也达到了百万、千万量级,传统的数据库解决方案已经无法满足业务需求。为了帮助有以上问题的企业更好地进行数据架构整改,本篇文章汇总了三个典型智慧水务场景下的数据架构升级实践,给到大家参考。

禹为科技 x TDengine

“TDengine 的消息订阅、缓存、流式计算等诸多特性,可以代替 Kafka、OpenTSDB 和 Flink,减少业务代码中定时计算(如用水量)等功能,简化了整体架构。在架构简化以后,排查和定位问题也能得到快速响应,开发和运维成本大大节约。同时,TDengine 替代了 OpenTSDB+Redis+MySQL,提高了数据实时性和一致性,其表结构设计合理,可以节省存储空间,进而节省存储费用。”

业务背景

相较于水利信息化系统,禹为科技灌区信息化平台具有设备厂家多、数据多且存储周期长、数据类型较为集中、需要实时展示的指标较多等特点。为了解耦系统中的数据接入和数据分析,禹为科技将数据的接入和计算分析拆分为独立的通用物联网平台及大数据平台,在现代灌区信息化平台的建设过程中,经历了数据库&定时任务的架构、以流式计算为核心的架构和以 TDengine 为核心的架构三个阶段,最终选用 TDengine帮助其对水位、流量、水量等实时指标数据分析。

架构图

点击案例查看更多技术细节

鼎蓝水务 x TDengine

“使用感受就是 TDengine 的数据处理性能非常高。现在的接入网关的设备数是 23 个液位、9 个频率计、9 个电流计、10个拦蓄盾、3个泵站、3个截留井、1个泵闸,总共有 40 张表,每张表每天新增 6 万条数据,现在每张表的大约三百万条数据。使用 TDengine 带来的最大好处是不用再考虑 SQLServer 中的分库分表操作,数据不断写入一个月后,查询时延也没有增加。而且我们发现 TDengine 在处理 13 个设备、百万量级的数据量写入任务时,内存开销只有 1.5GB,查询时内存增长也觉察不出来,整体内存开销比 SQLServer 降低了 50%。”

业务背景

鼎蓝水务智慧排水系统需要处理来自拦蓄盾检测设备上报的数据。在这些监测数据的处理流程上,数据从网关推送过来后会有一个判断是否实时数据。此前所有数据都是使用 SQL Server 存储,数据量达到 2000 万后 SQL Server 的查询时延就变得非常慢,不得不做分库分表操作来提高查询速度,但这个解决方法遇到跨库跨表的查询非常不便。架构改造后,对于非实时数据,则会流经 Redis 去重,做报警判断然后写入 SQL Server;对于实时数据则直接写入TDengine,不需要再经过 Redis,之后前端需要的一些类似液位电流数据等就可以直接从 TDengine 访问。

数据处理流程图

 点击案例查看更多技术细节

万朗智水 x TDengine

“设置参数为十万张点表,每个点表 1s 需要存储 1 条记录。在实际测试过程中,使用 HTTP 接口,采用单机 4C16GB 的配置,8 线程每次写 500 条记录,10 万条记录写入只需要 300ms(如果使用 java 客户端更快);单变量采样查询基本在 2ms 内完成。整个测试持续了 48 小时,测试期间 CPU 在 20%-30% 之间,内存维持在 6GB 左右,写入相当稳定,没有出现超时。查询方面,我们使用 MySQL 查询 3 个点一年的数据直接请求超时,使用 TDengine 基本 2s 左右就能返回给页面进行渲染。写入和查询速度比 OpenTSDB 都还高一个级别。”

业务背景

万朗智水水环境综合治理运维系统需要对截流井设备中的液位、电流、硫化氢等进行监测,并通过 PLC 程序进行自动化管理设备的启停与报警短信推送。系统前期版本使用了 MySQL 来存储设备上报数据。但接入系统的设备量日益增长、用户对数据实时性反馈的要求也越来越高,MySQL已经无法满足业务需求——随着业务在不断扩张,站点在不断增加的情况下,频繁的跨表操作 MySQL 查询出现了延时甚至超时死锁的情况。随后在数据库调研中,万朗智水发现将设备数据转移到时序数据库(Time Series Database) TDengine 中存储是个更好的解决方案。

数据传输路径

传感器采集的信息通过 MQTT 协议传到网关,网关收集到信息后会定时推送到业务后台服务,由服务层来做数据存储和实时分析。设备运行业务数据放在 MySQL 中,液位、电流频率、硫化氢、雨量物联网数据则存储在 TDengine 中。

点击案例查看更多技术细节

结语

从以上案例不难看出,在智慧水务场景下,面对不断增长的设备数量、庞大的时序数据处理需求,专业的时序数据库显然比传统数据库解决方案效果更加明显,不管是在写入还是查询抑或是存储上都有很大改善,资源开销成本也变得更低。如果你有同样的困扰,欢迎添加小T vx:tdengine1,我们会邀请你进入TDengine用户交流群,和志同道合的研发小伙伴共同解决数据难题。


http://www.ppmy.cn/news/84186.html

相关文章

Linux 网络基础(2)应用层(http/https协议、请求格式、响应格式、session、cookie、加密传输)

说明:网络基础2讲解的是应用层的典型协议, 通过对于典型协议的理解,来体会数据的网络传输的软件层面的流程与原理。 面试中网络通信相关问题占了很大的比重,而网络通信相关的问题大多都集中在网络基础2这个单元中 下面是应用层的位…

安卓项目如何做单元测试

前言 先说一下创建篇文章的目的,近期负责搭建公司的单元测试框架,于是查阅了网上的很多文章,以及参考了github上很多的项目例子,并且也进行了相当多的尝试。这其中花费了很多的精力,大约有两三周的时间,远…

xml报文转Java实体

公众号推广: 目前CSDN进行VIP可见,文章可在微信公众号进行免费的阅读。 文章内容经过认证实践,比较的清晰易懂,适合初次接触的人员。 请关注微信公众号:菜鸟编程踩坑之路,进入公众号搜索关键词 xml转实体 需求场景: 因为需要对接一些比较老的系统接口,他们的请求方…

每日一练 | 网络工程师软考真题 Day11

1、以下关于网络存储描述正确的选项是 。 A.SAN系统是将存储设备连接到现有的网络上,其扩展能力有限 B.SAN系统是将存储设备连接到现有的网络上,其扩展能力很强 C.SAN系统使用专用网络,其扩展能力有限 …

MyBatis中使用第三方分页插件PageHelper完成分页功能

文章目录 一、前言二、基于插件拦截方式1、自定义插件2、使用第三方插件完成分页1、分页插件的配置2、分页插件的使用 一、前言 分页是web应用程序非常重要的一个技术。数据库中的数据可能是成千上万的,不可能把这么多的数据一次显示在浏览器上面。一般根据每行数据…

springboot 上传文件常见问题汇总

springboot 上传文件常见问题汇总 AccessDeniedException步骤配置怎么确保应用程序有这个路径及其子路径的访问权限步骤 AccessDeniedException 使用 SpringBoot 上传文件报错 java.nio.file.AccessDeniedException: /xx/xx/xx,这个异常意味着程序在试图访问该目录…

SDN — Google B4 SDN WAN 网络架构

目录 文章目录 目录Google B4 SDN WAN 网络B4 网络架构物理设备层局部网络控制层全局控制层Hybrid SDN 模式Google B4 SDN WAN 网络 Google 的 WAN 有 2 张网络(Two Backbones): B2(I-Scale Network):数据中心互联 Internet(POP)的网络,用于面向 Internet 用户访问,…

MQTT(1):MQTT协议介绍

随着 5G 时代的来临,万物物联的伟大构想正在成为现实。联网的物联网设备在 2018 年已经达到了 70 亿,在未来两年,仅智能水电气表就将超过10亿 海量的设备接入和设备管理对网络带宽、通信协议以及平台服务架构都带来了很大挑战。对于物联网协议…