写点什么

eKuiper 联手 OpenYurt,解决物联网场景下边缘流数据处理难题

发布于: 2021 年 08 月 27 日
eKuiper 联手 OpenYurt,解决物联网场景下边缘流数据处理难题

云计算的出现使得物联网实现了爆炸式增长。

随着企业的设备规模和业务复杂度不断增加,边缘计算凭借能够将计算能力更靠近设备和数据源,提升网络服务响应速度,降低云性能成本的优势,引起了越来越多企业的高度重视。

目前,物联网边缘计算还处于发展初期,在实际应用中常常会面临各种挑战。

比如在大量软件及通信协议极为复杂的设备异构环境下,需要快速处理业务数据,并对异常情况作出及时的响应;另外,出于安全或其他考虑,很多时候边缘节点在物理上无法从云节点直接访问,使部署变得困难,也难以实现云到边缘的管理……这些问题都会威胁到业务的连续性、稳定性和可用性。

为了帮助企业和开发者以开源渠道解决以上问题,近日,eKuiper  与 CNCF(云原生计算基金会)旗下开源项目 OpenYurt 正式达成合作,完成了集成对接:从 v0.4.0 版本开始,OpenYurt 将正式支持部署和管理 eKuiper ,共同帮助开发者轻松、高效地解决物联网边缘计算场景下流式数据的处理和运维挑战。

eKuiper :轻量级 IoT 数据分析和流处理开源软件

 

物联网边缘计算在很多场景下需要流式数据处理能力。

一般情况下,流数据可被视为一个随时间延续而无限增长的动态数据集合,它可以帮助用户实时了解系统设备的状态,并对异常情况做出快速响应。

在边缘端,计算资源(CPU,内存等)不如在云端丰富,因此传统的流式数据处理框架类似于 Apache Spark 或者 Apache Flink 等,由于安装包过大,或者部署结构与过程过于复杂、运行时的高消耗等原因,并不适合于在资源受限的边缘设备(工控机、网关,或者配置不高的 X86 或者 ARM 服务器等设备)上运行。

eKuiper 就是为了解决在物联网边缘设备上的这些问题而设计开发的。

eKuiper 的前身是 EMQ 于 2019 年正式开源的 Kuiper 项目。2021 年 6 月,该项目加入 LF Edge 基金会并更名为 eKuiper,开始作为独立的项目运营。eKuiper 是一个轻量级物联网数据分析和流处理软件,可以运行在各类资源受限的边缘设备上。

如下图所示,eKuiper 整体架构大致分为三部分:



  • 左侧为 Sources,代表数据来源的位置,数据来源可能是 OpenYurt 里部署边缘端的 MQTT Broker,也可能是消息队列、文件和数据库等;

  • 右侧为 Sinks,代表数据处理完成后所要存储的位置,也就是目标系统,目标可以是 MQTT,可以将其存到文件、数据库里面,也可以调用 HTTP 服务;

  • 中间部分为 eKuiper 的运行时,最上层为数据业务逻辑处理,这个层面提供了 SQL 与规则解析器,SQL 处理器进行处理后并将其转化成 SQL 执行计划;下面层为流运行时和 SQL 运行时, 运行最终执行出来的执行计划;最底层为存储,存储在运行过程中需要持久化的一些信息。


在 eKuiper 中,用户可通过管理仪表板 (https://github.com/lf-edge/ekuiper/blob/master/docs/zh_CN/manager-ui/overview.md) 来管理一个或多个 eKuiper 实例。这些仪表板通常部署在云节点中,但是,由于大多数情况下边缘节点在物理上无法从云节点访问, 使得部署变得困难,难以进行高效的 eKuiper 云边管理。


OpenYurt (https://github.com/openyurtio/openyurt) 则改变了这种情况。

OpenYurt:非侵入式的边缘云原生智能平台



作为云原生的技术基石,容器和 Kubernetes 正在通过越来越多的计算形态承载,丰富的形态也开始从传统的中心云走向边缘计算、走向终端。

OpenYurt 基于原生 Kubernetes 构建,是业界首个对 Kubernets 无侵入的边缘计算云原生开源平台。OpenYurt 是阿里云容器服务产品 ACK@Edge 的核心框架,由阿里云于 2020 年 5 月以开源的方式反哺业界,并通过捐赠给 CNCF,实现更加中立、开放的社区环境,成为生态兼容场景下边缘云原生平台首选项目。

如下图所示,OpenYurt 的架构设计非常简洁,是一个典型的「中心-边缘」模式。在云端 (Kubernetes Master)上通过增加 Yurt Controller Manager, Yurt App Manager 以及 Tunnel Server 组件。而在边缘端(Kubernetes Worker)上增加了 YurtHub 和 Tunnel Agent 组件:



这样的架构设计给边缘场景下的原生 Kubernetes 能力带来了以下助益:


  • 边缘单元化:通过 Yurt App Manager 组件,从单元化的视角,管理分散在不同地域的边缘资源,并对各地域单元内的业务提供独立的生命周期管理、升级、扩缩容、流量闭环等能力;且业务无需进行任何适配或改造

  • 边缘自治:因为每个边缘节点增加了具备缓存能力的透明代理 YurtHub,从而可以保障云边网络断开,如果节点或者业务重启时,可以利用本地缓存数据恢复业务

  • 云边协同(运维监控):通过 Tunnel Server/Tunnel Agent 的配合,为位于防火墙内部的边缘节点提供安全的云边双向认证的加密通道,即使边到云网络单向连通的边缘计算场景下,用户仍可运行原生 kubernetes 运维命令(如 kubectl proxy/logs/exec/port-forward/attach 等)。同时中心式的运维监控系统(如 prometheus, metrics-server 等)也可以通过云边通道获取到边缘的监控数据

  • 云原生生态兼容:所有功能均是通过 Add-on 或者 controller 形式来增强 Kubernetes,因此保证对 Kubernetes 以及云原生社区生态的 100% 兼容;另外,OpenYurt 还提供了一个 YurtCtl 工具,可以用于原生 Kubernetes 和 OpenYurt 集群的一键式转换

 

简而言之,OpenYurt 使用户能够管理在边缘基础设施中运行的应用程序,就像它们在云基础设施中运行一样。

使用 OpenYurt 部署和管理 eKuiper

从 v0.4.0 版本开始,OpenYurt 项目正式支持部署 eKuiper 及其仪表板,用户可以利用 yurt 云边隧道,通过 eKuiper 的 Web 管理控制台实现对 eKuiper 实例进行配置管理,实现高效、轻量的 IoT 边缘流处理能力。



eKuiper 和 eKuiper Dashboard 组件采用原生 Helm Chart 直接部署,其中 eKuiper 组件整个运行在边缘端,而 ekuiper Dashboard 运行在云端(管控端)。同时 OpenYurt 的 Yurt-Tunnel 组件通过 dns 和 iptables dnat 等机制,会自动拦截云边网络通信。因此, eKuiper 组件可以在对云边隧道无感知状态下完成云端对边缘端的指令下发。

在 eKuiper 与 OpenYurt 实现集成后,用户可以直接在 OpenYurt 平台上通过仪表板,在边缘场景下轻松管理 eKuiper,并且在浏览器中通过仪表板来及时查看服务是否健康:



社区合作规划

未来,eKuiper 与 OpenYurt 还将面向物联网行业继续探索高效的云原生边缘中间件解决方案,并吸引更多轻量级 IoT 相关中间件加入 OpenYurt 生态,使边缘中间件能够真正以云原生的方式获得部署支持。

此外,作为 eKuiper 的贡献者,EMQ 映云科技也将成为继阿里云、VMWare、Intel 后,由 OpenYurt 发起的云原生 IoT SIG 企业成员。

未来希望有更多开发者支持并加入 eKuiper 和 OpenYurt 社区,共建面向云原生的 IoT 开源生态。

 

用户头像

全球领先的开源物联网基础设施软件供应商 2021.06.09 加入

面向 5G 和物联网市场的消息与流处理开源软件公司。

评论

发布
暂无评论
eKuiper 联手 OpenYurt,解决物联网场景下边缘流数据处理难题