1、邊緣計算專場黃濟泳 2021年08月01日本期議題:基于 Kuiper 和 KubeEdge 的邊緣流數據分析Agenda開源 IOT 邊緣流數據分析:LF Edge eKuiper使用 eKuiper 進行邊緣流數據分析KubeEdge+eKuiper:云邊協同的流處理方案eKuiper 開源社區現狀與未來規劃流式分析流式分析對無限的數據流進行狀態分析的軟件或者框架對流數據進行管理、監控和實時分析典型運行在云端Apache Flink&Spark 不適合邊緣端流式分析時延數據安全帶寬成本邊緣流式分析的挑戰輕量級和高效:邊緣端 CPU 和內存受限敏捷與靈活:需要用更加敏捷的方式實現業務支持,避
2、免復雜的編碼和編譯等工作部署和管理:非集中,在弱網情況下的分布式部署流式分析在邊緣端LF Edge eKuiper2021 年 6 月份加入 LF Edge首個由國內初創公司貢獻的項目eKuiper 項目主要里程碑June 2021:LF Edge Stage 1 At LargeMay 2021:發布 1.2.0,支持ML/AI 函數調用Feb,2021:發布 1.1.1,支持二進制數據處理Oct,2020:發布 1.0.0,第一個穩定的主版本Jul,2020:發布 0.5.1,與 KubeEdge 集成Apr,2020:發布 0.3.2,與 EdgeX Foundry 集成Oct,2019
3、:開源并發布第一個版本開源 IoT 邊緣分析eKuiper 概述二進制可安裝包和 Docker 鏡像8MB 安裝包;10MB 初始內存使用X86 AMD*32,X86 AMD*64;ARM*32,ARM*64;PPCLinux 發行版,OpenWrt Linux,MacOS 與 Docker性能樹莓派 3B+TPS:12kCPU:sys+user 70%內存:20MeKuiper 數據 ETL數據抽取(extract):sources數據轉換(transformation):使用 SQL 進行分析+轉換數據存儲(load):sinks為邊緣流處理而生*詳情參考 https:/ 快速上手創建流創
4、建規則提交、運行規則使用 eKuiper 3步驟createstreamdemo()WITH(FORMAT=JSON,DATASOURCE=$hw/events/device/+/twin/update)sql:SELECTdata-tag1-valueAStemperature,data-tag2-valueAShumidityFROMdemo,actions:log:,mqtt:server:tcp:/broker.emqx.io:1883,topic:devices/result,qos:1,clientId:demo_001curl-XPOSThttp:/$kuiper_server:
5、9081/rules-HContent-Type:application/json-d$my_ruleSQL分析函數數學:sin,cos,abs,log,mod etc;共計 25個函數字符串:concat,substring etc;共計 19個函數匯聚:avg,count,max,min,sum,collect&deduplicate;共計 7 個函數Conversion/Encoding&decoding/Hashing/JSON processing/其它;共計 18個函數二進制處理:resize,thumbnail;共計 2 個函數GeoHash函數,共計10個函數過濾WHERE/C
6、ASE WHENJoin(LEFT|RIGHT|FULL|CROSS JOIN)Streams:動態流動數據Tables:靜態數據,經常用于關聯更多別的數據。如提供用戶 id,獲取相關的名字WindowTumbling/Hopping/Sliding/Session/CountGroup By&Order By內置支持SQL分析能力擴展自定義函數與普通內置函數相同,都可以在SQL中使用使用配置方式擴展,調度已有服務方便快速,推薦使用微服務架構,語言無關,崩潰不影響主程序配置 json 和 proto 文件支持 gRPC,REST,msgpack RPC使用插件擴展僅可使用 go 編寫,編譯有門
7、檻性能相對較好,支持狀態 API自定義函數SELECTgetFeature(base64Img)asfeatureFROMimages/Outputsfeature:features:.,box:.interfaces:tsrpc:address:tcp:/localhost:50051,protocol:grpc,schemaType:protobuf,schemaFile:hw.proto,functions:name:getFeature,serviceName:getFeatureSrv,.,.插件擴展擴展點SourceSinkFunction步驟開發&調試編譯為*.so 文件部署插件
8、Native 插件開發優點:更好的性能缺點:來自于 Golang 的諸多限制,比如必須為同一個 go 版本,嚴格的庫文件依賴和 GOPATH自定義數據匯入與流出/Calledduringinitialization.Configurethesourcewiththedatasource(e.g.topicformqtt)/andthepropertiesreadfromtheyamlConfigure(datasourcestring,propsmapstringinterface)error/Shouldbesyncfunctionfornormalcase.Thecontainerwill
9、runitingofuncOpen(ctxStreamContext,consumerchan-SourceTuple,errChchan5000)asfirstHalf,AVG(val)asavgFROMdemoGROUPBYHoppingWindow(ss,10,5),firstHalfORDERBYfirstHalffirstHalf:false,avg:3,firstMin:true,avg:4.5percentage:mulf(round(divf(index.0).avg(index.1).avg)2)100%percentage:150%數據分析實例eKuiper 為 Edge
10、X Foundry 內置規則引擎實現通過 eKuiper 實時分析攝像頭圖片,并觸發設備動作與 EdgeX 結合,進行實時 AI 分析KubeEdge&eKuiper 集成KubeEdge將原生容器化應用編排功能擴展到邊緣節點的開源軟件eKuiper 增強了邊緣分析能力好處 解決了 IoT 邊緣分析的挑戰低時延,節省帶寬用戶易于實現業務邏輯從云端管理和部署 eKuiper、應用、AI 算法云邊容器編排協同+邊緣分析客戶案例:KubeEdge+eKuiper中國移動 國家工業互聯網大數據中心eKuiper 開源社區社區相關鏈接Github:https:/ PREnhancement Request/IssuesCollaboration定期會議:Calendar下一步計劃與更多開源項目合作2021 Roadmap歡迎加入 eKuiper 社區社區與未來規劃THANKS