前言
一直以来,对于边缘流式计算的需求就没有停止过,但是受限于边缘节点的计算能力,边缘流式计算一直面临内存压力、磁盘压力、作业管理压力等诸多挑战。
2019年11月29日,在Flink Forward Asia 2019大会上,百度正式对外发布了“基于Apache Flink的边缘流式计算Creek”。creek很好的解决资源受限的问题,它可以将流式作业内存消耗降低到10M左右,比传统的流式作业下降了2个数量级的资源消耗,使得边缘设备也可以轻松跑流式作业。这样,在不增加边缘节点成本的前提下,边缘节点增加流式计算的能力,使得边缘节点能够支撑更多、更复杂的业务场景。
百度智能边缘BIE也同步实现了与Creek的产品化集成,Creek通过与BIE的集成,能够实现流式计算任务”云端统一定义,统一下发“,让流式计算能力真正延伸至各个边缘节点。
边缘流式计算典型应用场景
下面罗列在BIE当中使用边缘流式计算的两个典型场景:
数据分析师的取数场景
在数据分析场景下,数据分析师经常使用「10分钟平均值」或「15分钟平均值」作为样本数据进行分析,而不会直接使用原始采集数据。如果云平台当中只有原始采集数据,数据分析师通常使用以下几种方式获取「10分钟平均值」:
导出原始数据,通过数据预处理工具获取10分钟平均值
云平台增加流式计算任务,计算10分钟平均值并实时保存在数据库
通过大数据平台对历史数据执行离线任务,计算历史数据的10分钟平均值并保存在数据库
上述的几种方案能够让数据分析师拿到10分钟平均值,但是成本都很高,也不方便。通过边缘流式计算可以很好的解决上述问题,边缘节点在边缘侧通过流式计算得到10分钟平均值,然后上报至云端iothub,经由规则引擎将10min数据转存到数据库,可以降低数据分析师的取数难度。
运维人员的实时监控场景
在物联网场景下,设备测量数据因为各种因素(网络因素、设备自身精度因素)经常会出现抖动情况,如果对设备的实时采集值配置阈值告警,经常会出现误告警,导致用户需要处理大量无用告警,逐渐用户对告警的准确性失去信心,阈值告警形同虚设。
针对这种场景,用户可以借助流式计算的能力来降低数据抖动带来的偏差,常见的方案有:
按平均值告警:通过流式计算获取10分钟平均值、10分钟最大值、10分钟最小值、10分钟计算样本数,然后设定阈值规则,比如“10分钟平均值>阈值 且 10分钟计算样本数>100”
按持续时间告警:通过流式计算找出实时采集值一直大于指定阈值且持续时间很长的设备,比如"设备温度>100℃ 且 持续时长>5分钟"
在网络不稳定的场景下,上述两种方案如果通过云端流式计算来实现,最终得到的计算值准确度不高,比如当设备出现5分钟无连接的时候,云端再去计算10分钟平均值,计算的结果并不准确。而边缘侧是内网环境,网络异常的概率大大降低。在边缘侧将统计值计算好后再上报云端,可以提升流式计算统计结果的准确性。
边缘流式计算为客户带来的价值
降低成本,包括流量成本、存储成本、云端流式计算资源成本。
在弱网络环境下,提升流式计算结果的准确性。
尝试此项功能
如果要尝试在边缘节点上部署流式计算任务,可以登录百度智能云控制台,具体操作指南参考:https://cloud.baidu.com/doc/BIE/s/Ok43i486z
BIE与Creek集成的效果
以实时监控场景为例,需要通过流式计算获得temperature的统计值,包括:10分钟平均值、10分钟最大值、10分钟最小值、10分钟计算样本数。我们可以搭建以下模拟实验场景来进行验证:
使用模拟器以每秒1条数据的频率,不间断往边缘hub发送模拟数据
模拟数据的格式为:{"humidity":6.3426914,"temperature":11.457714,"timestamp":1576207523}
云端配置边缘流式计算任务,计算temperature的统计值,包括:
10分钟平均值
10分钟最大值
10分钟最小值
10分钟计算样本数
下发边缘流式计算任务至边缘核心设备
在边缘侧验证流式计算结果
前面1~4不可以参考操作指南(点击原文查看)执行,现在我们一起来看一下边缘侧运行流式计算的效果。
启动mqtt数据订阅工具MQTTBox,订阅testtopic/update和testtopic/streamdata这两个topic:
如下图所示:
testtopic/update:左侧部分数据,为数据模拟器产生的模拟数据,1秒1条记录
testtopic/streamdata:右侧部分数据,为流式计算结果,包含最大值、最小值、平均值、计算样本数。因为是1分钟统计结果,所以计算样本数刚好是60,与实际相符。
可以在BIE云管套件查看流式计算任务的资源使用情况,发现内存占用在12M左右,相比边缘流式计算带来的价值,这点资源使用率上升,是完全值得的。
感兴趣的朋友可以在边缘计算框架baetyl上部署一个flink,然后执行相同的作业任务,查看flink与creek的资源消耗对比。
点击阅读原文,查看详细的使用教程。教程url:https://cloud.baidu.com/doc/BIE/s/Ok43i486z
==============关于BIE ===================
百度智能边缘(Baidu IntelliEdge)旨在将云计算能力拓展至用户现场,提供可以临时离线、低延时的计算服务,包括设备接入、数据处理、数据上报、流式计算、函数计算、AI 推断等功能。
BIE整体包括边缘本地运行包和云端管理套件两部分:
本地运行包:本地运行包包含百度开放边缘框架baetyl,以及基于baetyl框架开放的边缘应用,实现将云计算能力延伸至边缘,提供离线自治、低延时的计算服务。
云端管理套件:主要负责边缘设备节点的管理,包含设备节点的监控、注册管理、应用的编排与升级等功能。除此之外,云端套件还负责与百度智能云的其他服务进行集成对接,包括函数计算CFC,流式计算BSC,端侧模型生成框架EasyEdge等。实现”云管理、边运行、边云一体“的整体解决方案。