写点什么

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

评论

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

详解中断系统

timerring

8月月更

Go-Excelize API源码阅读(三)——OpenReader()

Regan Yue

Go 开源 源码分析 8月日更 8月月更

leetcode 232. Implement Queue using Stacks 用栈实现队列(简单)

okokabcd

LeetCode 数据结构与算法 栈和队列

低成本、大容量、高交互…Polkadot 引领 GameFi 实现新突破

One Block Community

区块链

rocketmq整合SpringCloudStream

急需上岸的小谢

8月月更

MPLS网络向SRv6网络演进

穿过生命散发芬芳

8月月更 SRv6

企业文化如何治好“企业内耗”?

涛哥 数字产品和业务架构

企业文化 企业架构

开源一夏 | 对于jQuery选择器和动画效果停止动画的实战心得【前端jQuery框架】

恒山其若陋兮

开源 8月月更

关于架构的认知

yuexin_tech

架构

SpringBoot实战:国际化组件MessageSource的执行逻辑与源码

看山

源码 spring源码 MessageSource Spring原理 SpringBoot实战

深入浅出边缘云 | 6. 监控与遥测

俞凡

架构 边缘计算 网络 深入浅出边缘云

《编程的原则》读书笔记(一):编程的前提和准则

Chares

软件工程 软件开发 程序开发 编程原理

Ingress Nginx 接连披露高危安全漏洞,是否有更好的选择?

阿里巴巴云原生

阿里云 Kubernetes 云原生 ingress

云原生时代下,微服务体系与 Serverless 架构的发展、治理与融合

阿里巴巴云原生

阿里云 Serverless 微服务 云原生

2022-Java后端工程师面试指南-(消息队列)

自然

Rocket Rabbit MQ 8月月更

即将开幕!阿里云飞天技术峰会邀您一同探秘云原生最佳实践

阿里巴巴云原生

阿里云 云原生 阿里云飞天技术峰会

【LeetCode】算术三元组的数目Java题解

Albert

LeetCode 8月月更

Java+EasyExcel实现文件导入导出

Bug终结者

Java 8月月更

Sass.vs.Less | 简介

Jason199

SaaS 8月月更

C++对象模型和this指针实例分析(二)

CtrlX

c++ 后端 面向对象思想 热门活动 8月月更

Python 教程之输入输出(7)—— 如何在 Python 中不使用换行符进行打印?

海拥(haiyong.site)

Python 8月月更

模块九(电商秒杀系统)

Geek_701557

Spring(四、配置数据源)

开源 MySQ Druid 8月月更

OpenHarmony像素单位

坚果

开源 OpenHarmony 8月月更

深入了解 Spring篇之BeanDefinition结构

邱学喆

对象初始化 BeanDefinition 对象创建 属性注入 对象检索

测试也应该具备的项目管理能力

老张

项目管理 质量保障

2022-Java后端工程师面试指南-(计算机网络)

自然

网络 8月月更

MySQL 指令

武师叔

8月月更

一文带你搞懂OAuth2.0

闫同学

Go 后端 OAuth 2.0

毕业总结

Geek_701557

Python爬虫eval混淆,爬虫进阶实战系列

梦想橡皮擦

Python 爬虫 8月月更

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