当前位置: 首页 > 科技观察

物联网数据流三宝:OPC-UA+MQTT+ApacheKafka

时间:2023-03-21 15:22:07 科技观察

陈军审稿人|SunShujuan已成为工业物联网(IIoT)和工业4.0用例中数据交换的开放协议和平台独立标准。ApacheKafka的数据流用于实时集成和处理任何规模的数据中心和海量数据。本文将探讨Kafka与各种物联网协议之间的关系,何时使用哪种技术,以及为什么HTTP/REST有时是更好的选择。最后,我们将探讨宝马和奥迪的两个用例。1.工业4.0数据流平台通过连接设备提高工厂的整体效率工业4.0和工业物联网(IIoT)需要通过系统近乎实时地传输、处理、分析和提供数据。这导致数据量不断增加,并给制造商带来了数据多样性的挑战。然而,使事情更加复杂的是,遗留IT环境仍然存在于各种制造设施中。这通常会限制制造商跨业务有效集成数据的能力。因此,大多数制造商需要混合实施数据复制和同步策略。他们目前还致力于提高其生产设施的整体设备效率(OEE),从产品设计和制造到运营和维护。同时,由于2021年新冠疫情的蔓延和苏伊士运河的中断,眼前的生产和供应链问题将凸显。因此,企业需要在以下几个方面通过实时过程和监控来确保生产线的适应能力:准时制(JIT)预测建设工厂产能人员配置和班次状态通常原材料和产品价格波动,设备生成的数据必须在生成后立即进行转换并在整个企业范围内提供,以反映所提取数据的最大价值,提高工厂的整体效率,从而避免关键故障。如今,宝马和特斯拉等汽车制造商已经认识到数据流平台的潜力,并正在利用ApacheKafka生态系统来传输数据。可以说,数据流对于数据驱动型制造企业的好处不仅仅体现在数字化和自动化转型上,还包括以下几个方面:使生产过程更高效、更快、更好、更少出错率2.当使用Kafka、MQTT和OPC-UA前面提到,Kafka是一个优秀的数据流平台,可以用于大规模的实时消息传递、存储、数据集成和处理。然而,Kafka也不是万能的,它未能实现:面向百万客户(如移动应用)的AgentAPI管理平台用于复杂查询和批量分析的数据库具有设备管理等功能的物联网平台一种技术硬实时应用鉴于以上原因,Kafka需要与MQTT、OPC-UA结合使用,以弥补不足。在工厂、公司和全球范围内近乎实时地处理和交换大量数据。全球ApacheKafka和事件流使用示例如上图所示,ApacheKafka通常用作去中心化数据流的数据网格节点,它可以集成各种系统,包括:边缘、IoT设备和业务软件,并且可以被独立于底层基础设施(如:边缘、本地、公共、多云和混合云等)来执行。因此,开放、可扩展且灵活的架构对于与遗留环境集成和利用现代云原生应用程序至关重要。ApacheKafka等事件驱动的数据流平台正好满足了这样的需求。他们收集来自相关传感器的遥测数据以及来自IT系统的数据,并在传输数据时对其进行处理。这就是“动态数据”的概念。它不同于“静态数据”,在后者中事件存储在数据库中以供稍后查看。在物联网用例中,我们经常想到处理静态数据的“过时架构”。3、使用领域驱动设计和真正的解耦进行分离实际上,工厂的IT环境建立在什么样的基础设施上并不重要。重要的是新旧系统能够实现数据的实时融合,并且能够以解耦的方式保持数据的持续流动和消息存储。相对于其他消息系统(比如IT领域的RabbitMQ,或者物联网领域的MQTT),ApacheKafka的领域驱动设计(DDD)实现了背压处理和数据重放性的真正解耦,同时提高了为了确保高可用性和故障安全(fail-safe),这些在生产环境中至关重要。工业物联网MQTT和OPCUA的Kafka领域驱动设计4.OPC-UA、MQTT、HTTP等目前,开放和标准化的物联网架构共有三种通用标准:OPC-UA(OpenPlatformCommunicationsUnifiedArchitecture,开放平台通信unifiedarchitecture)和MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输),这两个是物联网特有的协议,一个就是简单的REST/HTTP。当然,业界也有一些专有的特定协议。例如:Skynet专有的DataHub传输协议(DHTP,https://skkynet.com/iiot-protocol-comparison),以及一个开放的标准替代品——AMQP等。下表显示了它们的特性比较:ComparisonofIndustrial物联网协议5.评估物联网协议的决策树那么,哪个更值得我们选择呢?首先,重要的是要强调这种类型的讨论只有在你有选择的情况下才有意义。如果您在车间购买并安装新机器或PLC,并且只提供特定接口,那么您只有一份,别无选择。当然,不同领域的人可能会有不同的选择偏好。甚至有人认为,从TCO和ROI的角度来看,专有解决方案是更好的选择。而且总的来说,对于不同的物联网协议,我的建议是:尽可能使用开放标准,甚至根据需要将它们结合起来。下面,让我们看一下如何在OPC-UA、MQTT、HTTP和其他专有IIoT协议之间进行选择的简单“决策树”:用于工业物联网网络的MQTT、OPCUA、HTTPREST决策树让我们讨论上面的决策树:HTTP/REST非常适合简单的用例(尽可能简单)。HTTP简单易懂、易于使用的特点几乎适用于任何场景。它不需要额外的工具、API或中间件,它的通信是同步的“请求-响应”。如果能使用HTTP(S)80或443端口代替其他TCP端口,也能顺利得到安全团队的协助。当然,HTTP是一种单向通信。例如,联网汽车需要一个HTTP服务器来处理从云端推送的数据,并且它们使用pub/sub。MQTT非常适合连接数万或数十万台设备、使用有限带宽和间歇性网络的场景(例如,联网汽车的基础设施)。它的通信是使用MQTT代理作为中介的异步发布和订阅。MQTT不使用标准的数据格式,但开发者可以使用Sparkplug作为附加组件进行构建。MQTT非常轻量级,凭借其服务质量(QoS)、遗嘱特性和开箱即用的特性,它可以满足物联网用例的各种需求。同时,MQTT非常适合双向通信(例如,联网汽车<-->云通信)等IT用例。此外,LoRaWAN和其他低功耗广域网非常适合MQTT。OPC-UA非常适合工业自动化(例如生产线上的机器)。今天的通信通常是客户端/服务器,但也支持发布/订阅。它使用标准数据格式,并提供丰富、强大和复杂的功能、组件和行业特定数据格式集。OPC-UA非常适合OT和IT融合的场景。OPCUA的TSN(时间敏感网络)是可选组件。它是一种以太网通信标准,提供开放、确定性和硬实时通信。专有协议适用于基于标准化的实现无法解决的特定问题。这些协议通常是相互排斥的。虽然它们具有强大的性能,但它们通常价格昂贵且功能有限。前面说过,我们在OPC-UA、MQTT等协议之间进行选择时,并不是非此即彼。在很多工业案例中,我们可以在现代应用中同时使用OPC-UA和MQTT,相互补充,让每个协议都发挥其出色的作用,让旧的应用程序和专有的SCADA系统,或者其他历史遗留数据与专有的中间件集成。6.MQTT、OPC-UA与Kafka的集成在MQTT、OPC-UA与Kafka的集成过程中,我们通常会涉及到以下设备和组件:KafkaConnectconnector:可以在协议层面实现原生的Kafka集成。ConfluentHub(https://www.confluent.io/hub/)可以作为它的替代品。一些企业倾向于构建自己的自定义KafkaConnect连接器。自定义集成:通过低级MQTT/OPC-UAAPI(例如,使用Kafka的HTTP/REST代理)或Kafka客户端(例如,用于Windows环境的.NET/C++)进行集成。开放第三方物联网中间件:通用开源集成中间件(例如带物联网连接器的ApacheCamel)、物联网特定框架(例如ApachePLC4X或EclipseDitto)或基于专有标准API的第三方物联网中间件。商业物联网平台:适用于现有遗留部署,能够“粘合”代码和协议(如Modbus、西门子S7等)。传统的历史数据、专有协议、单体架构、可扩展性有限、ETL批处理平台都非常适合采用商业物联网平台搭建内部部署和云服务之间的桥梁。7.使用OPC-UA或MQTT连接机器和设备虽然OPCUA和MQTT不是为数据处理和集成而设计的,但它们的优势在于建立与设备、机器、PLC、物联网网关或车辆的双向通信。实时“最后一英里”通信。如上所述,这两个标准各有侧重,可以结合使用。目前,几乎所有现代机器、PLC和智能工厂的物联网网关都可以支持OPC-UA。MQTT主要用于网络较差、设备规模较大的场景。数据流通常通过连接器流入数据流平台。此类平台可以与“边缘”的物联网平台并行部署,也可以结合在混合云场景中。作为一个灵活的数据中心,数据流平台可以整合和处理OT和IT应用之间的数据。除了OT端的OPC-UA和MQTT,MES、ERP、CRM、数据仓库、数据湖等IT应用,无论是在边缘、本地还是在云端,都是实时连接的。ApacheKafka作为具有MQTT和OPCUA的开放式可扩展历史数据库(https://www.kai-waehner.de/blog/2020/04/21/apache-kafka-as-data-historian-an-iiot-industry-4-0-real-time-data-lake/)8.用于开发和预测模拟的数字双胞胎用于部署数字孪生。数字孪生结合物联网、人工智能、机器学习和其他技术,创建物理组件、设备和流程的虚拟仿真。通过参考历史数据,数字孪生还可以在其物理副本生成的数据发生变化时立即更新自身。通常,Kafka可以与其他技术相结合来构建数字孪生体。例如,EclipseDitto是一个将Kafka与IoT协议相结合的项目。一些团队还使用Kafka和MongoDB等数据库来定制数字孪生体。ApacheKafka促进工业4.0和工业物联网的数字孪生如上图所示,在工业4.0中,机器操作员可以使用数字孪生来详细了解其模拟或监控元素的生命周期,不断优化产品和流程,并测试单个组件或整个系统的功能和性能,以预测能耗和磨损。9.状态监测和预测性维护在现代维护中,机器操作员经常需要及时了解:所有设备是否按预期运行?在需要维护工作之前,设备通常运行多长时间?异常和错误的原因是什么?一方面,他们需要依靠可靠且可扩展的基础设施来支持数据流的处理、分析和集成,然后实时检测关键指标,例如:剧烈的温度波动或振动,以便采取措施以确保工厂的安全。生产率。另一方面,数字孪生可以通过监测和诊断将当前传感器采集的数据与历史数据关联起来,从而识别故障原因,便于采取预测性维护措施。最重要的是,通过确保仅在必要时才对设备和设施进行维修,他们可以更有效地实施预测性维护计划,从而为制造公司节省宝贵的资源并避免代价高昂的停机时间。使用ApacheKafka的ksqlDB和TensorFlow进行状态监控和预测性维护(https://www.kai-waehner.de/blog/2021/10/25/apache-kafka-condition-monitoring-predictive-maintenance-industrial-iot-digital-twin/)10.联网汽车和流式机器学习联网汽车是一种可以与车外其他系统进行双向通信的汽车。它使汽车能够与车内外的各种设备和应用程序共享互联网上的访问和数据。上面提到的MQTT和Kafka的组合可以服务于联网汽车及其基础设施的用例。下图展示了Kafka如何与数万甚至数十万个物联网设备集成并实时处理数据。在互联汽车的基础设施中,该过程可以自动化以进行预测性保护(即异常检测)以及预测发动机故障:Kappa架构、用于Kubernetes的KafkaMQTT和用于流式机器学习的Tensorflow11.宝马使用智能工厂的案例研究和面向制造4.0的云服务让我们从技术角度探讨BMW如何成功地将Kafka和OPC-UA实施为边缘设备和云应用程序之间的实时数据中心。在实施之前,BMW希望实现的是:在不影响其他服务的情况下,获取物联网数据并传输到正确的位置进行一次采集,多次处理和消费(不同的消费者在不同的时间,使用不同的通信范式,例如:实时、批处理、请求-响应)以实现可扩展的实时处理并缩短上市时间。宝马团队通过OPC-UA连接器直接与Azure中的ConfluentCloud进行通信,成功连接了其全球智能工厂的负载,并实现了在公有云中的实时复制。其中,Kafka作为消息传递平台,在不同接口之间提供了真正的解耦、透明和数字创新。而Confluent通过产品和专业知识增加了制造系统的稳定性。此外,实时优化的供应链管理解决方案还提供有关正确库存的物理信息以及ERP系统中的信息。12.奥迪案例研究使用SwarmIntelligence的联网汽车奥迪使用ApacheKafka为联网汽车构建了基础设施。他们在Kafka峰会上分享并讨论了它的用例和架构。他们构建了实时数据分析、群体智能、合作伙伴协作和预测人工智能,实现了对车联网所有传感器数据进行实时处理和存储的一整套流程,用于历史分析和实时报告。13.题外话如果网络基础设施的连通性允许你在你的物联网项目中使用“serverlessKafka”,那么你也可以像上面的宝马案例一样,使用ConfluentCloud在全球推广智能工厂,使用“serverlessKafka”Kafka”来处理和整合数据流。通过无服务器数据流,您可以更专注于物联网业务应用并提高整体设备效率(OEE)。原文链接:https://dzone.com/articles/opc-ua-mqtt-and-apache-kafka-the-trinity-of-data-s多年IT项目实施经验,擅长管控内外部资源和风险,专注传播网络和信息安全方面的知识和经验;他不断以博文、专题、翻译等形式分享前沿技术和新知识;接下来的方式是开展信息安全培训和讲座。