一文看懂百度智能云的轻量级流式计算框架creek
bigegpt 2024-10-10 04:40 14 浏览
前言
一直以来,对于边缘流式计算的需求就没有停止过,但是受限于边缘节点的计算能力,边缘流式计算一直面临内存压力、磁盘压力、作业管理压力等诸多挑战。
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等。实现”云管理、边运行、边云一体“的整体解决方案。
相关推荐
- Go语言泛型-泛型约束与实践(go1.7泛型)
-
来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...
- golang总结(golang实战教程)
-
基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...
- Go 官宣:新版 Protobuf API(go pro版本)
-
原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...
- Golang开发的一些注意事项(一)(golang入门项目)
-
1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...
- golang 托盘菜单应用及打开系统默认浏览器
-
之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...
- golang标准库每日一库之 io/ioutil
-
一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...
- 文件类型更改器——GoLang 中的 CLI 工具
-
我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...
- Go (Golang) 中的 Channels 简介(golang channel长度和容量)
-
这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...
- Golang引入泛型:Go将Interface「」替换为“Any”
-
现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...
- 一文带你看懂Golang最新特性(golang2.0特性)
-
作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...
- Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移
-
以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...
- Golang使用grpc详解(golang gcc)
-
gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...
- Etcd服务注册与发现封装实现--golang
-
服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...
- Golang:将日志以Json格式输出到Kafka
-
在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...
- 如何从 PHP 过渡到 Golang?(php转golang)
-
我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)