写点什么

实时流计算和时空数据库助力用户打开 IoT 无限可能

  • 2020-04-05
  • 本文字数:3613 字

    阅读完需:约 12 分钟

实时流计算和时空数据库助力用户打开IoT无限可能

随着技术的发展与市场需求的深入,IoT 物联网已进入快速发展期,给 ICT 行业带来了广阔的市场空间。在刚刚过去的 2018 华为中国生态伙伴大会期间,通过展区展示不难发现,在汽车、水、电、气、工业设备等等领域,越来越多的终端联接网络,源源不断的产生海量时序和时空数据,这些数据往往具有很强的时效性,随着时间的推移,其价值也就急速衰减,因此如何应对海量时序/时空数据的高速存储和查询、如何对数据进行实时的检测和监控、如何实时的挖掘出数据背后的价值都是很大的挑战。那么,华为云 EI 企业智能又是如何帮助用户与伙伴应对这些挑战呢?



车联网正成为 IoT 行业应用的先锋

IoT 典型场景

根据笔者在 IoT 领域的一些实践经验,将 IoT 领域的在线应用场景归纳为如下:



物联网 IoT 数据源产生的数据大多是时序和时空数据,那么什么是时序数据和时空数据。我们一般认为时序数据是某个时间点发生了某件事情,但是在时序数据这个领域里定义的时序数据全都是跟数值有关的。举一个简单例子,一辆汽车在上午 9 点在某个加油站加油这条记录,相当于一条日志,本身不能构成一个时序数据,但是如果今天我们每一秒钟都记录了该汽车的油箱里具体油量的值,那么今天的 86400 条油量记录数据再加上每秒的时间点则构成了一个时序数据。那什么是时空数据呢?简单来说,如果今天我们每一秒钟都记录了该汽车的位置信息(X\Y 坐标),这些位置数据则构成了二维空间数据,那么这 86400 条的坐标记录数据加上每秒的时间点则构成了一个时空数据。


对于这些时序和时空数据的在线业务可以简单的分为三大类,实时检测、实时查询和实时分析。


实时检测是期望可以实时的对异常数据、异常行为和故障进行检测,快速返回给管理系统或者通知相关人员等。比如车队管理则要求进行电子围栏的检测,一旦发现车辆行驶或停止的范围超出了规定的地理空间范围,则可以进行告警。或者货运公司发现某货运汽车并没有按照正常的路线行驶,偏离了正常航道,也可以进行告警,从而进行实时纠偏。


实时查询,主要是对于这些时序数据或者时空数据进行查询以进行下一步的分析或进行展现,比如查询早上 7 点到 9 点早高峰期间车的轨迹、车辆本周的油量变化曲线、用户用电曲线等。由于 IoT 采集数据的频率非常高,可能还需要绘制低精度的曲线。


实时分析,主要是对于采集到的指标数据进行分析,得到基于某些行业的知识,比如对于驾驶员的行为分析,对于汽车油耗的统计分析等。

IoT 数据实时分析方案

在 IoT 领域,对于 IoT 数据的实时处理流程包括以下几个步骤:


(1) 通过 IoT Hub 进行数据采集或者通过 GPS 的接入;


(2) 对数据进行实时检测,或者预处理;


(3) 数据写入数据库/文件系统;


(4) 对数据库/文件系统中的数据进行查询、分析。


基于华为云服务来实现上述的处理流程,主要会如下图所示的几个服务:



IoT Hub 可以对接物联网终端进行数据采集;DIS(数据接入服务)采用 kafka 内核将数据接入到华为云,并和 CloudStream(实时流计算服务)无缝对接;CloudStream 从 DIS 消费数据进行实时检测或分析,返回检测结果给在线应用,或者增加一些分析数据写入到 CloudTable 时序/时空数据库中;CloudTable(表格存储服务)作为毫秒级 NoSQL 数据库可以支持海量的数据存储,并提供时序/时空数据的查询和实时分析;对于一些近实时的查询分析可以通过 spark 内核的 UQuery 服务来进行。下面详细介绍核心服务 CloudStream 实时流计算和 CloudTable 时序/时空数据库能给企业带来什么价值。

实时流计算,IoT 的核心引擎

对于 IoT 场景的海量时序/时空数据,华为云 CloudStream 作为实时流式大数据分析服务,微秒级的计算性能为企业挖掘实时数据价值提供了核心能力,具体体现有以下显著优势:

1. 双引擎

IoT 场景海量的数据实时计算必须需要有高性能的计算引擎支撑,既要满足低时延高吞吐的性能要求,又要满足数据一致性要求。另外,IoT 场景多种多样的业务也要求计算引擎能够运行批量,流式,交互式,图处理,机器学习等应用。目前业界主流的流计算引擎 Flink 和 Spark Streaming 都非常适合 IoT 场景,两者以不同的设计思想(前者是原生流式计算,后者是微批处理计算)各领风骚,都有着活跃的开源社区支撑。


CloudStream 集成了 Flink 和 Spark Streaming,双引擎方式很好的连接了开源生态,完全兼容开源版本 Flink1.4 和 Spark2.2,方便业务人员平滑迁移线下业务上云。

2.基于地理位置分析的 SQL 扩展

IoT 大量业务场景需要对时空数据进行实时的地理位置分析,如电子围栏、偏航检测等。CloudStream 扩展了 Flink SQL,提供了基于地理位置分析的一系列 Time GeoSpatial 语法,方便业务人员使用 SQL 快速开发地理位置分析业务,其中 DDL for Time GeoSpatial 可以快速定义基本元素,例如点、线、多边形、圆等;SQL Geospatial Scalar Functions 可以对基本元素进行基本操作,例如计算两点间距离、判断区域是否覆盖、判断点是否在区域内、移动位置计算、分析距离相交包含关系等;SQL Time Geospatial 可以在窗口中对基本元素进行基本操作,例如计算多种窗口的平均速度和距离。



图示为实时流计算服务的 IoT 算子


轻松实现电子围栏检测

3.CEP on SQL

IoT 大量业务场景需要实时检测无尽数据流中的复杂模式,例如车辆异常行为检测、工业设备异常运行状态检测。CloudStream 扩展了 Flink SQL,提供了非常高效的 CEP on SQL 的能力,提供了基于 Match Recognize 的模式匹配检测,可以帮助业务人员使用 SQL 实现基于复杂事件规则的异常检测业务,无需开发 Flink PATTERN API 自定义业务,只需要一行 SQL 查询语句搞定,大大降低此类业务开发难度。


CloudTable 时序/时空数据库,为 IoT 数据而生

CloudTable 是华为云上毫秒级的 NoSQL 数据库,提供了 HBase、OpenTSDB、GeoMesa 接口,其中 OpenTSDB 和 GeoMesa 作为时序和时空数据库为 IoT 行业而生,为时序和时空数据的高吞吐量的写入和查询提供了解决方案。


高性能时序数据库


基于对分布式架构系统的良好支持和完善的生态,CloudTable 选择了 OpenTSDB 作为时序数据库内核,并做了软硬件的垂直性能优化,可以支持千万级别的写入吞吐量和百万数据点 3 秒之内的读取性能,很好的解决物联网领域海量数据写入和读取性能的问题。


同时,时序数据库还提供了三种常用计算:插值、降精度和聚合。


对于每秒都上报的数据,其中某一秒的数据因为某些原因丢失了,则可以通过插值进行补齐。如下图红色框内的点(图 a),对绿色线条和红色线条的值进行求和聚合计算,如果没有插值,则会出现结果突变的情况,如果进行了插值则是比较好的效果(图 b)



图 a 无插值求和结果



图 b 插值求和结果


降精度有助于提升查询效率,同时可以提供更加清晰的曲线信息给在线应用。



图 a 原始时序数据



图 b 降精度之后数据


时序数据库中的聚合和传统数据库的聚合还有一些差异。时序数据库中聚合是将多个独立的时间线聚合成一个数据时间序列,类似于 SQL 里面的 group by,但是此处的 aggregation 是按照每个时间戳和分组进行聚合。降精度计算中也可以使用不同的聚合函数进行降精度,而每个聚合函数中不仅会包含聚合的函数,也会包含插值的函数,对于缺失的数据,可以采用插值后的数据进行聚合。

时空数据库

华为云 CloudTable 引入了地理大数据处理套件 GeoMesa,可以帮助物联网存储和分析海量时空(spatio-temporal)数据,提供轨迹查询、区域分布统计、区域查询、密度分析、聚合、OD 分析等功能。


GeoMesa 基于 Geohash 编码以及空间填充曲线的理论基础,做到了将二维经纬度转换成一维字符串,将三维时空(经纬度和时间)转换成一维字符串,为高性能查询打下了基础。


通过 CloudTable 中 GeoMesa,对于物联网中时空维度的查询简单有效,举个例子,比如


(1) 早上 7 点-9 点,有哪些人/车出现在深圳市龙岗区坂田?


(2) 早上 7 点-9 点,从深圳市南山区到深圳市龙岗区坂田的人/车的轨迹是怎么样的?


(3) 晚上 5:30-7:30,深圳市龙岗区坂田的人/车的轨迹是怎么样的?


通过以上的一些查询,可以分析出行人/车的出行规律,进而进行附近的健身房、餐馆、娱乐设施的推荐;分析出住宅区、工作区的聚集地;分析出同行的人的数量,抽象出公共巴士的路线,优化公共交通路线等等。通过时空数据的查询和分析可以进一步挖掘出时空数据背后的价值。


Cloud2.0 时代,越来越多的企业关注如何提升应用上云效率的同时,也在聚焦新技术给现行业务带来的创新与改变。华为云实时流计算和时空数据库帮助行业伙伴与客户轻松实现 IoT 场景下时空时序数据的实时计算、存储和查询,为 IoT 海量数据和业务应用之间架起一道桥梁。除此之外,IoT 场景还有很多即有趣又丰富的业务,华为云 EI 企业智能提供了丰富的大数据和 AI 服务,比如机器学习服务、图引擎服务、深度学习服务等,将携手与行业伙伴共同扩展更多能力,丰富更多算法和模型,从而打开 IoT 无限可能。


本文转载自华为云产品与解决方案公众号。


原文链接:https://mp.weixin.qq.com/s/DAdAAWCEwMw_jGETWSOGEA


2020-04-05 08:001543

评论

发布
暂无评论
发现更多内容

程序员如何应对职业天花板

石云升

职场天花板 职场经验 11月日更

译文 | Apache Pulsar 集群如何确保消息不丢

Apache Pulsar

Java 分布式 云原生 中间件 Apache Pulsar

风口上的低代码:我们看到了这些变化与趋势

脑极体

在线文本按列截取工具

入门小站

工具

Prometheus Exporter (十)Ping Exporter

耳东@Erdong

Prometheus ping exporter 11月日更

Android C++系列:Linux进程间通信(二)

轻口味

c++ android jni 11月日更

搞定大厂算法面试之leetcode精讲6.深度优先&广度优先

全栈潇晨

算法面试 Leet Code

JSRE中的多任务与多线程

编程江湖

html5 大前端

云小课|打造企业数据“高内聚,低耦合”--试试GaussDB(DWS)逻辑集群,实现数据物理隔离

华为云开发者联盟

EI企业智能 数据仓库服务GaussDB(DWS) 逻辑集群

Apache APISIX request_uri 变量控制不当,存在路径穿透风险公告(CVE-2021-43557)

API7.ai 技术团队

Apache 云原生 漏洞修复 Apache APISIX ingress-controller

博文推荐 | 基于 Pulsar 事务实现 Exactly-Once 语义

Apache Pulsar

Java 架构 云原生 中间件 Apache Pulsar

Hadoop 入门笔记—核心组件 YARN

编程江湖

大数据 hadoop

如何使用find和locate 命令在Linux 中查找文件和目录?

Ethereal

Linux find locate

Flutter:如何在没有插件的情况下制作旋转动画

坚果

flutter 11月日更

如何与 Dapr 集成打造 Apache APISIX 网关控制器

API7.ai 技术团队

云原生 网关 dapr Apache APISIX ingress-controller

贪心算法:加油站 ⛽

空城机

算法 大前端 11月日更

【高并发】浅谈AQS中的CountDownLatch、Semaphore与CyclicBarrier

冰河

Java 并发编程 多线程 高并发 异步编程

[Pulsar] 消息生命历程(四)——Broker的消息处理

Zike Yang

Apache Pulsar 11月日更

详解阿里开源分布式事务框架Seata

博文视点Broadview

vue3 学习笔记 (三)——vue3 自定义指令

码仔

Vue3 自定义指令

架构原则

卢卡多多

架构 11月日更

linux 上查找包含特定文本的所有文件

入门小站

Linux

docker vs docker-compose 解密

liuzhen007

11月日更

Java开发基础之开发环境搭建

@零度

JAVA开发

架构实战营-模块六

瓜子葫芦侠

「架构实战营」

央视新闻联合百度智能云打造首个AI手语主播

百度大脑

人工智能

复杂业务系统高扩展架构设计与实践

鲸品堂

构架

深入理解 volatile 关键字

编程江湖

volatile JAVA开发

小谈C#异常

喵叔

11月日更

《深入理解JVM虚拟机》读书笔记:第二章 Java内存区域与内存溢出异常

Joseph295

没有人比我更会使用集合!对,是dart中的集合

程序那些事

Java flutter dart 程序那些事 11月日更

实时流计算和时空数据库助力用户打开IoT无限可能_数据库_华为云产品与解决方案_InfoQ精选文章