在边缘技术领域,那些从事制造业、自动化行业、航空、物流、以及零售等行业应用的开发人员经常会思考的一个问题是:到底应该在边缘处,还是应该在“真实”的数据中心、或是在公共云基础架构中部署Apache Kafka?
在本文中,我们将向边缘计算领域的开发者介绍Kafka在物联网(IoT)边缘处的不同用例和架构用法。文末,我们还会讨论Kafka作为事件流平台,是如何在边缘处对其他IoT框架及产品进行补充,进而实现大规模的实时数据集成与边缘处理。
常态化的多个Kafka群集
如今,Apache Kafka的多集群和跨数据中心的部署方式,已成为了业界的某种规范。虽然“边缘处Kafka(Kafka at the edge)”可以被部署为一个独立的项目;但是在大多数情况下,它处于整个Kafka架构中的一部分。许多企业会根据如下原因,来创建多个Kafka集群:
什么是“边缘”或“边缘计算”?
在考虑部署边缘处Kafka之前,让我们先来了解一下与“边缘技术”相关的定义。维基百科上说:“边缘计算是一种分布式的计算范式。它通过让计算本身和数据存储更加靠近所需的位置,从而缩短了响应的时间并节省了带宽”。同时,它的其他优势还包括:降低成本,提高系统的灵活性,以及分离关注点。
边缘的Apache Kafka
目前,业界对如何将Kafka应用于边缘计算有着不同的见解,其中包括:
可见,边缘处Kafka具有比较灵活且广泛的使用范围,其中包括:
可见,在大多数情况下,边缘处Kafka就是指:部署在系统边缘处的Kafka集群。而对应的Kafka客户端程序既可以在本地运行,也可以在附近运行。当然在某些情况下,“附近”可能在指几英里开外。
边缘处Kafka的用例
下面,我们来讨论一下边缘处Kafka在许多不同企业中的运行用例。
无论是上述哪种用例,边缘处Kafka的通用架构都会如下图所示:
边缘计算的挑战
在企业试图将各种创新的实时应用引入工厂、零售店、咖啡店等场景,并将数据分发到边缘站点时,往往会遇到如下的挑战:
用于边缘计算的Kafka架构
在开始讨论有哪些边缘处Kafka的部署方案之前,我们需要事先搞清楚的一个问题是:到底是否需要高可用性的边缘架构。
其实,边缘计算并不一定需要具有高可用性。如果您的确需要的话,就请部署传统的Kafka集群;而如果不需要的话,则只需在边缘处设置一个简单、且低成本的Kafka Broker即可。而且如果需要在上百个站点进行部署的话,那么现成的硬件设备会更加容易实现。
下图展示了三个边缘站点。每个站点上都部署了一个Kafka集群,而每个集群里都包括有不同的Kafka组件。
通过三个以上的Kafka Broker在边缘实现弹性部署
Kafka及其生态系统旨在确保即使某一单个节点发生故障,也能实现系统的高可用性和零停机时间。如下图所示,为了部署一套分布式的系统,您至少需要三个Kafka节点和三个Zookeeper节点。而其他组件则需要至少两个节点,才能确保操作的可靠性和数据的防丢失。
您可以参考《Apache Kafka与Confluent平台参考架构》一文,以了解部署的最佳实践。当然,由于流量负载和吞吐量通常在边缘处都比较低,因此如果SLA允许的话,较少的内存与磁盘空间也就足够了。
通过一个Kafka Broker在边缘实现非弹性部署
如今,在边缘处部署“轻量级的Kafka群集”,然后与更大的中央Kafka群集同步或复制数据的需求已日益增多。不过,由于硬件本身的限制、以及SLA对于高可用性的要求并不高,因此在边缘处仅部署一个Kafka Broker加上一个Zookeeper即可。如下图所示,您甚至可以将整个Kafka的环境只部署在一台服务器上。
不过,该部署方案存在着一个明显的缺陷:由于没有数据之间的复制,当该节点或网络出现故障而造成停机时,您的数据就有丢失的风险。当然,此类单节点式的Kafka部署方案仍具有如下方面的优势:
移除ZooKeeper将有助于边缘处Kafka
和诸如Hadoop、Spark等其他分布式系统类似,由于过分依赖于ZooKeeper,因此Kafka不但在操作上有一定的难度,而且扩展性也比较差。那么对于大多数物联网项目而言,由于整体部署的耗时较长,我们建议您通过移除ZooKeeper,而使得Kafka更轻量级,更易于操作。
将Kafka作为边缘设备和云服务之间的网关
在某些配置中,您可能希望边缘设备与本地的网关进行通信。此时,您就可以使用网关式的Kafka架构方案。例如,在工厂中,多台机器或生产线被视为边缘设备。它们需要与各自的Kafka群集相集成,实现将数据发送给作为网关的Kafka群集。据此,在Kafka集群网关上,您可以直接在本地进行分析,通过过滤或转换数据,最终发送并聚合到远程大型的Kafka集群中。
如上图所示:首先,两个独立的工厂分别在各处部署了非弹性的单一Kafka Broker,以实现数据的本地处理。然后,由一个弹性Kafka群集网关聚合三个Kafka Broker,并在工厂的本地处理各项数据。接着,只有那些重要、且经过预处理的数据才会被转发到远程的Kafka群集中(在图中体现为Confluent Cloud)。最终,该云中的Kafka集群聚集了来自不同工厂的数据,以便与其他业务应用或分析工具相集成。
边缘处Kafka作为OEM或硬件组件
企业在边缘处安装硬件,会比在本地数据中心、或公共云端要复杂且麻烦得多。如果我们在边缘处采用标准化的Kafka组件安装方法,则会大幅减少工作量与潜在的风险。
目前,已有数十家硬件供应商可以协助您构建OEM的硬件设备。当然,您也可以通过远程管理并使用某些DevOps工具,来安装所有必需的软件组件。
为了简化安装和操作边缘处Kafka集群,以Hivecell(https://hivecell.io/)为代表,公司推出了预装有Kubernetes、Kafka生态系统、Confluent Operator(https://www.confluent.io/confluent-operator/)工具、以及其他业务应用的产品盒子。它能够简化并自动化边缘处Kafka环境中的各项操作。用户只需将一个或多个产品盒子运到边缘站点。在将其连接到本地WiFi之后,其他所有的操作都可以在远程进行实现。该公司甚至号称:能够让客户不再需要技术人员,即可在边缘部署和维护软件。
通信、连接、集成、数据处理
正如上述各图所展示的那样,Kafka的环境中并不仅仅包括了Kafka Broker与Zookeeper。无论是在云端、本地、还是在边缘处,通信、连接、集成、以及数据处理都是Kafka基础架构中的重要组件。
具体而言,在Kafka Broker与Kafka客户端之间,从边缘处到远程的通信流程为:设备->边缘处Kafka->复制->数据中心与云端的Kafka群集->数据分析与实时处理。通常,此类通信是双向的。那么对于Kafka原生的各个组件而言,您只需要管理一个Kafak的后台,即可进行大规模的实时通信、集成和数据处理。其中涉及如下方面:
可见,由于边缘处硬件资源的受限,我们应当在开始时就规划好整体架构和数据通信,让Kafka全栈能够真正满足边缘的需求。
混合架构
物联网的实际需求往往是五花八门的。面对24小时/7天的实时部署,零数据量的丢失,以及无延迟的实时处理,我们光靠Kafka架构有时会力不从心。此时,我们就需要结合使用其他的IoT框架或方案,来实现与Kafka的端到端集成。
如上图所示,我们可以在工厂车间里使用西门子的MindSphere(这是一种功能强大,适用范围广泛,但也复杂且昂贵的物联网解决方案),来作为网关或代理。当然,我们可以将HiveMQ(译者注:一种企业级的MQTT Broker)部署为可扩展的MQTT集群,以连接到机器和设备。
在某些情况下,Kafka也可以被直接用作IoT的网关或代理,以连接PLC或分布式控制系统(Distributed Control System,DCS)。同时,Kafka也可连接诸如AWS IoT或谷歌云的MQTT Bridge等IoT解决方案,实现进一步的处理和分析。
由于数据通信往往是双向的,因此无论您选择哪一种架构,都必须能够从车间或其他IoT设备中提取数据,通过实时的处理与关联,最后将控制类事件发回给机器。例如:在预测分析中,您首先需要使用TensorFlow之类的云端工具训练分析模型,然后才能在边缘处部署分析模型,以进行实时预测。
可见,通过与其他物联网框架或解决方案的结合,Kafka生态系统不但得到了有效的补足,而且各自都能够专注于不同的功能用例之中。例如:Kafka可专注于设备管理,模型训练。主流的云提供商能够为设备管理提供IoT服务、云端代理、以及分析工具。而开源的框架Eclipse则可以用于构建数字孪生。
慎用过多的分布式系统组合
当然,如果您想为边缘计算和混合架构构建可扩展的、可靠的流式结构,并且达到不会造成任何宕机或数据丢失的效果,这实际上很难在集成了多种中间件工具的环境中实现。也就是说:参与组合的工具越多,服务中断或数据丢失的风险也就越高。例如:NiFi(译者注:Apache的NiFi项目是一种实时数据流处理系统)有着自己的分布式基础架构,那么您必须保证从producer通过NiFi和Kafka能够最终到达consumer,这整个过程都具有24小时/7天的端到端正常运行时间。同理,诸如Kafka Connect和Kafka Streams之类的原生工具,使用Kafka Topic在后台提供高可用性时,您也需要保障此类24小时/7天的无宕机或数据丢失。因此,请慎用“传感器ABC -> NiFi(捕获) -> Kafka Topic A -> NiFi(转换) -> Kafka Topic B -> NiFi(加载) -> 应用程序XYZ”之类的管道架构,来进行无数据丢失的大规模实时处理。
总结
边缘计算往往只是整个体系结构的一部分,但是作为该领域的“黑马”,边缘处Kafka可以通过混合架构的部署方式,提高数据的处理速度,降低网络的传输成本,并且能给整个系统带来更好可扩展性、可靠性和健壮性。
网页标题:如何在物联网的边缘计算中使用Kafka
网页链接:http://www.shufengxianlan.com/qtweb/news26/422626.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联