写点什么

实时流计算和时空数据库助力用户打开 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:002073

评论

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

SpringMVC源码分析-HandlerAdapter(4)-ModelAndViewContain组件分析

Brave

源码 springmvc 10月月更

Minerva -- Airbnb的大规模数据指标系统 Part 3

俞凡

架构 Airbnb 大厂实践 指标 10月月更

自动驾驶混战,剑气二宗谁能笑傲江湖?

白洞计划

【LeetCode】 旅行终点站Java题解

Albert

算法 LeetCode 10月月更

软件架构之原则、风格和实践

俞凡

架构

容器 & 服务:Helm Charts(一)

程序员架构进阶

架构 Kubernetes 容器 Helm Charts 10月月更

管理者如何带团队?

石云升

团队管理 管理 引航计划 内容合集 10月月更

1. 滚雪球学Python第四季开启,一需三吃,Python 函数式编程初识,面向过程,面向对象,函数式

梦想橡皮擦

10月月更

2. Python函数式编程中的字符串,元组,函数的分类,高阶函数,一篇文章都介绍一遍

梦想橡皮擦

10月月更

springboot vue失物招领网站源码

清风

源码 Vue springboot java 计算机毕业设计

在线心语日历批量生成工具

入门小站

工具

聊一聊差分放大器

不脱发的程序猿

嵌入式 电路设计 硬件开发 运算放大器

【LeetCode】删除无效的括号Java题解

Albert

算法 LeetCode 10月月更

【Flutter 专题】三步搞定会转的饼状图

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 引航计划 10月月更

9月,一些感慨

程序员架构进阶

自我提升 管理者 软技能 总结思考 10月月更

第 9 章 -《Linux 一学就会》-文件的归档和压缩 tar---zip

学神来啦

Linux 运维 linux学习

细说包管理器yarn和npm

devpoint

npm YARN Node 10月月更

老式月饼是一块坚硬的乡愁

石君

自我成长 乡愁

linux手误rm可能不需要跑路

入门小站

Linux

🏆【Spring技术专题】「动态代理技术」Spring框架中Aspectj和LoadTimeWeaving的动态代理技术实现指南

码界西柚

spring aop 动态代理 LTW 10月月更

003云原生之架构原则

穿过生命散发芬芳

云原生 10月月更

【云原生】:一文读懂Docker核心技术

息之

Docker 云原生

学生管理系统 - 考试试卷存储方案

紫云

独一无二的「MySQL调优金字塔」相信也许你拥有了它,你就很可能拥有了全世界。

码界西柚

性能优化 后端 MySQL 数据库 引航计划 10月月更

《写给互联网工程师的5G书》全文pdf开放下载

俞凡

架构 5G 网络 通信 10月月更

微博系统中”微博评论“的高性能高可用计算架构

michael

#架构实战营

Object.defineProperty的缺点及Vue3为什么用Proxy

wudaxue

上次写作还是在上次之——WebRTC(一)

Zoomdaa

WebRTC

如何应对员工犯错?

石云升

项目管理 管理 引航计划 内容合集 10月月更

javaweb springboot汽车租赁系统源码

清风

源码 springboot 计算机毕业设计

数据结构与算法 - 复杂度

小马哥

数据结构与算法 日更

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