简介:云计算的呈现促使物联网实现爆炸式增长。在设施规模和业务复杂度一直攀升的趋势之下,边缘计算因其可能将计算能力更凑近网络边缘和设施,从而带来云性能老本的升高,也在这波浪潮之下失去疾速倒退。
作者 | OpenYurt 社区
云计算的呈现促使物联网实现爆炸式增长。在设施规模和业务复杂度一直攀升的趋势之下,边缘计算因其可能将计算能力更凑近网络边缘和设施,从而带来云性能老本的升高,也在这波浪潮之下失去疾速倒退。
诚然,物联网边缘计算尚处倒退初期,有许多挑战须要被解决。比方在大量软件及通信协议极为简单的设施异构环境下,须要具备疾速解决业务数据,并对异常情况作出疾速响应的能力;另外,在大多数状况下,出于平安或其余思考,边缘节点在物理上无奈从云节点间接拜访,使部署变得艰难,也无奈实现云到边缘的治理。这些问题都使业务的连续性、稳定性和可用性蒙受威逼。
当初,企业和开发者通过开源社区就可能找到应答以上问题的解决方案。近日,OpenYurt 与开源我的项目 eKuiper 正式达成单干,实现了集成对接:从 v0.4.0 版本开始,OpenYurt 将正式反对部署和治理 eKuiper,单方将独特帮忙开发者轻松、高效地解决物联网边缘计算场景下流式数据处理和运维挑战。
eKuiper: 轻量级 IoT 数据分析和流解决开源软件
物联网边缘计算很多场景下须要流式数据处理能力。所谓流数据是指一组程序、大量、疾速、间断达到的数据序列。个别状况下,流数据可被视为一个随工夫连续而有限增长的动态数据汇合,它能够帮忙用户实时理解零碎设施的状态,并对异常情况做出疾速响应。
在边缘端,计算资源(CPU,内存等)不像在云端个别丰盛,因而传统的流式数据处理框架相似于 Apache Spark 或者 Apache Flink 等,因为其安装包过大,或者部署构造与过程过于简单、运行时的高耗费等起因,并不适宜于在这些资源受限的边缘设施(工控机、网关,或者配置不高的 X86 或者 ARM 服务器等设施)上运行。而 eKuiper 就是为了解决在物联网边缘设施上的这些问题而设计开发。
eKuiper 的前身是由开源物联网数据基础设施软件供应商 EMQ 于 2019 年正式开源的 Kuiper 我的项目。2021 年 6 月,Kuiper 我的项目退出 LF Edge 基金会并更名为 eKuiper,开始作为独立的我的项目经营。eKuiper 的实质是一个轻量级物联网数据分析和流处理软件,能够运行在各类资源受限的边缘设施上,心愿使边缘端的流式数据处理领有如 Spark 与 Flink 的能力。
如下图所示,eKuiper 整体架构大抵分为三局部:
- 左侧为 Sources,代表数据起源的地位,数据起源可能是 OpenYurt 里部署边缘端的 MQTT Broker,也可能是音讯队列、文件和数据库等;
- 右侧为 Sinks,代表数据处理实现后所要存储的地位,也就是指标零碎,指标能够是 MQTT,能够将其存到文件、数据库外面,也能够调用 HTTP 服务;
- 两头局部为 eKuiper 的运行时,最上层为数据业务逻辑解决,这个层面提供了 SQL 与规定解析器,SQL 处理器进行解决后并将其转化成 SQL 执行打算;上面层为流运行时和 SQL 运行时, 运行最终执行进去的执行打算;最底层为存储,存储在运行过程中须要长久化的一些信息。
在 eKuiper 中,用户可通过治理仪表板来治理一个或多个 eKuiper 实例。通常,这些仪表板部署在云节点中,用于治理跨多个边缘节点的 eKuiper 实例。正如前文所述,因为大多数状况下边缘节点在物理上无奈从云节点拜访,使得部署变得艰难,无奈进行高效的 eKuiper 云边治理。
OpenYurt 则扭转了这种状况。
OpenYurt:非侵入式的边缘云原生智能平台
云原生技术曾经无处不在,并被利用于“新的利用负载”,“新的计算状态”和“新的物理边界”。作为云原生的技术基石,容器和 Kubernetes 正在通过越来越多的计算状态承载,丰盛的状态也开始从传统的核心云走向边缘计算、走向终端。
通常来说,边缘场景下计算规模宏大、业务简单,采取原生 Kubernetes 的 workload 治理模型远不能满足事实中云原生边缘计算的落地需要;并且云边网络通过公网相连,网络连接有很大不可控因素,可能带来边缘业务运行的不稳固因素,而且因为边缘节点个别位于用户网络的防火墙外部,会造成云边网络只能单向连通的客观条件,给原生的 Kubernetes 运维监控带来很大挑战;最初,无可避免地要面对边缘资源品种的多样、异构,使边缘标准化反对面临艰难。
OpenYurt 基于原生 Kubernetes 构建,是业界首个对 Kubernetes 无侵入的边缘计算云原生开源平台。OpenYurt 是阿里云容器服务产品 ACK@Edge 的外围框架,由阿里云于 2020 年 5 月以开源的形式反哺业界,并通过捐献给 CNCF,实现更加中立、凋谢的社区环境,成为生态兼容场景下边缘云原生平台首选我的项目。
如下图所示,OpenYurt 的架构设计十分简洁,是一个典型的“核心 - 边缘”模式。在云端 (K8s Master) 上通过减少 Yurt Controller Manager, Yurt App Manager 以及 Tunnel Server 组件。而在边缘端 (K8s 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- tunnel 云边隧道,通过 eKuiper 的 Web 治理控制台实现对 eKuiper 实例进行配置管理,实现高效、轻量的 IoT 边缘流解决能力。
eKuiper 和 eKuiper Dashboard 组件采纳原生 Helm Chart 间接部署,其中 eKuiper 组件整个运行在边缘端,而 ekuiper Dashboard 运行在云端(管控端)。同时 OpenYurt 的 Yurt-Tunnel 组件通过 dns 和 iptables dnat 等机制,会主动拦挡云边网络通信。因而 eKuiper 组件能够在对云边隧道无感知状态下实现云端对边缘端的指令下发。
基于以上形式,用户能够间接在 OpenYurt 平台上通过仪表板,在边缘场景下轻松治理 eKuiper,并且在浏览器中通过仪表板来及时查看服务是否衰弱:
社区单干布局
将来,单方还将面向 IoT 行业持续摸索高效的云原生边缘中间件解决方案,并吸引更多轻量级 IoT 相干中间件退出 OpenYurt 生态,使边缘中间件真正以云原生的形式取得部署反对。此外,作为 eKuiper 的贡献者,EMQ 也将继阿里云、VMWare、Intel 后,正式成为由 OpenYurt 发动的云原生 IoT SIG 企业成员。
心愿更多开发者反对并退出 OpenYurt 和 eKuiper 社区,共建面向云原生 IoT 开源生态。
扩大浏览
如果您想理解 LF Edge eKuiper 与 CNCF OpenYurt 的更多个性,请浏览上面的参考资料:
- eKuiper Github 代码库
- eKuiper 参考指南
- OpenYurt Github 代码库
- OpenYurt 官网
- OpenYurt 教程
- eKuiper 治理控制台教程
版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。