Sparkplug 规范中涉及 MQTT Broker 的 5 个关键概念

简介: Sparkplug 是为 SCADA 系统定制的工业物联网通信协议,目的是标准化 MQTT 在工业应用中的使用并增加设备和系统之间的互操作性。本文探讨了其中与 MQTT Broker 相关的五个关键概念。

引言

Sparkplug 是一种为 SCADA 系统量身定制的工业物联网通信协议。它为工业设备和应用提供了一种标准的通信格式,实现了不同厂商设备的互操作性。Sparkplug 规范由 Cirrus Link Solutions 和 Eclipse Foundation 共同制定。它是开放的,不属于某一家公司。因此,它给 Sparkplug 社区带来了以下益处:

  • 促进不同系统和技术之间的顺畅协作,提升效率、降低成本,为消费者提供更多选择。
  • 保证不同厂商产品的兼容性和协作性,增加消费者的选择,促进厂商之间的良性竞争。
  • 通过推动协作、分享想法和方案,激发创新,促进新产品、新服务和新技术的发展。
  • 提高透明度、建立信任,降低厂商锁定或依赖单一供应商的风险。
  • 让产品和服务对各种用户开放,包括残障人士。

Sparkplug 旨在提供一种标准化的方式,将 MQTT 用于工业应用,并促进不同厂商的设备和系统之间的互操作性。因此,Sparkplug 规范受到了工业物联网社区的广泛认可,并得到了众多厂商和组织的支持。

概念 1 - MQTT 消息传递架构

Sparkplug 规范基于 MQTT 协议,这是一种广泛用于物联网应用的轻量级消息协议。它专为低带宽、高延迟的网络设计,由于具备以下能力而受到物联网应用的青睐。

  • 轻量级:MQTT 是一种轻量级协议,占用极少的网络带宽,非常适合低带宽环境。
  • 可靠性:MQTT 支持不同的服务质量(QoS)等级,能够保证即使在网络故障或连接不稳定的情况下,消息也能可靠地传递。
  • 扩展性:MQTT 具有很好的扩展性,可以支持百万级的设备和客户端。
  • 灵活性:MQTT 可以用于一对一和一对多的通信,并支持发布/订阅和请求/响应两种消息模式。
  • 安全性:MQTT 支持安全特性,例如认证和加密,有助于确保数据安全保密地传输。

综上所述,使用 MQTT 实现 Sparkplug 规范有许多好处,非常适合工业物联网应用。最重要的是,基于 MQTT 发布/订阅消息架构,Sparkplug 系统实现了数据生产者和消费者的解耦。这使得数据交换过程更加灵活和可扩展,因为数据生产者和消费者可以独立地运行。

概念 2 - 会话状态感知

解耦带来了扩展性、灵活性和弹性等多方面的益处,但同时也需要对会话进行管理,以确保系统在多个请求和组件之间保持一致的状态。

会话状态感知是 Sparkplug 的核心特性之一,它使设备在网络连接中断或丢失的情况下仍能与 Broker 维持连接。这是通过利用 Broker 存储的会话状态信息来实现的。当连接恢复时,这些信息可用于重新建立通信。

当设备连接到 Sparkplug Broker 时,它会与 Broker 创建一个会话。在此会话期间,设备可以发布和订阅消息。Broker 会记录设备的会话状态,包括由于网络中断而未能传递的任何订阅或消息。

对于需要高可用性和可靠通信的工业物联网应用而言,会话状态感知是一个非常重要的特性。Sparkplug 通过维护会话状态信息来确保设备在网络中断后能够快速与 Broker 重新建立通信,从而降低宕机和数据丢失的风险。

概念 3 - 统一命名空间

统一命名空间指的是,在工业环境中不同的设备和系统能够不受厂商或通信协议的影响顺畅共享数据的能力。为了保证互操作性和便利的数据交换,它采用一种标准的命名规则和数据模型。

另一方面,Sparkplug 是一种消息传递规范,用于使工业物联网设备和应用之间的通信更加高效和安全。它基于 MQTT 协议,融合了统一命名空间的概念,提供了一种标准化的方式来表达不同设备和系统之间的数据和元数据。

换言之,Sparkplug 借助统一命名空间的概念,为工业设备和系统之间的数据交换提供了一种通用语言。这有助于简化集成和提高互操作性,使得在工业环境中构建和维护复杂的物联网应用变得更加方便。

概念 4 - 中央数据仓库

在 Sparkplug 规范中,中央数据仓库(CDR)是一个集中的服务器或平台,它充当一个枢纽,接收、处理和分发来自不同工业设备和应用的数据。CDR 提供了一种标准化的方式来管理和存储数据,以达到可扩展性和高效性,并使不同设备和应用之间能够互操作。

CDR 的优势包括以下几点:

  • 改善数据质量:CDR 保证所有数据在组织内部是统一和一致的,提升了数据的精确性和可信性。
  • 简化数据管理:由于所有数据都保存在同一个地方,因此更方便管理和维护。
  • 快速访问数据:CDR 为数据提供了一个集中的位置,使得访问和分析数据更快捷和更容易。
  • 减少数据冗余:通过消除重复数据,CDR 减少了存储成本,并降低了数据不一致的风险。

CDR 负责接收来自不同设备和应用的 MQTT 消息,解析和验证数据,并以其他系统可以轻松访问和处理的格式保存。此外,它还提供了一组 API 和接口,使得其他系统可以访问和获取存储在 CDR 中的数据,从而可以向连接到它的设备和应用发送命令或指令。

概念 5 - 单一可信数据源

单一可信数据源(SSOT)是信息管理中常用的一个概念,指的是对于某个特定的数据,应该有一个权威的数据来源。所有与某个特定主题有关的数据,例如客户订单、产品信息或产品详细信息,都应该保存在一个单一的位置,并保持一致。

使用 SSOT 也是 Sparkplug 规范的一个关键特性,它提供了一种标准化的方式来管理和存储数据,保证数据的一致性和可靠性。通过使用单一可信数据源,可以更容易地确保所有系统和应用都能获取最新和最准确的信息,这对于保持系统的完整性和可靠性非常重要。

在实际应用中,SSOT 通常作为 CDR 的一部分来实现,它负责接收和处理来自不同设备和应用的数据。CDR 以标准化的格式保存所有数据,使得其他系统能够轻松地获取和处理数据,并且 CDR 也作为管理和监控不同设备和系统的控制中心。通过使用集中的 SSOT,可以实现不同设备和系统之间的高度互操作性,并保证所有系统都能访问到相同的数据和信息。

Sparkplug 规范中的 MQTT Broker

在 Sparkplug 规范中,MQTT Broker 是实现上述 5 个概念不可或缺的组件。

首先,MQTT Broker 提供了一个发布/订阅解耦的消息传递架构,用于让各种 Sparkplug 主机系统和设备独立运行。

其次,MQTT Broker 提供了一个遗嘱机制,用于支持 Sparkplug 主机系统和设备之间的会话状态感知。

第三,Sparkplug 规范按照统一命名空间的要求,在 MQTT Broker 中定义了消息有效载荷标准和主题命名空间。

第四,MQTT Broker 充当一个中央数据仓库,接收来自设备的消息,并转发给主机接收者。

最后,MQTT Broker 存储了最新和最准确的行业信息,用于维护整个系统的单一可信数据源。

因此,MQTT Broker 是适用于 Sparkplug 规范的正确选择。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/5-key-concepts-for-mqtt-broker-in-sparkplug-specification

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
4月前
|
消息中间件 存储 监控
消息队列 MQ使用问题之客户端重启后仍然出现broker接收消息不均匀,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 网络协议 RocketMQ
消息队列 MQ产品使用合集之broker开启proxy,启动之后producer生产消息始终都只到一个broker,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
3月前
|
消息中间件 SQL 监控
RocketMQ 5.3.0 版本中 Broker IP 配置为 IPv6 的情况
【8月更文第28天】RocketMQ 是一款分布式消息中间件,支持多种消息发布和订阅模式。在 RocketMQ 5.3.0 版本中,Broker 的配置文件 `broker.conf` 允许配置 IPv6 地址。当 Broker 的 `brokerIP1` 配置为 IPv6 地址时,会对 Broker 的启动、消息推送和状态监控等方面产生影响。本文将探讨如何在 RocketMQ 中配置 IPv6 地址,并检查 Broker 的状态。
188 0
|
4月前
|
消息中间件 运维 RocketMQ
MetaQ/RocketMQ 原理问题之slave broker是从master同步信息的问题如何解决
MetaQ/RocketMQ 原理问题之slave broker是从master同步信息的问题如何解决
|
5月前
|
消息中间件 监控 应用服务中间件
消息队列 MQ操作报错合集之重启Broker后,积压数出现为负数是什么导致的
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
164 1
消息队列 MQ操作报错合集之重启Broker后,积压数出现为负数是什么导致的
|
4月前
|
消息中间件 搜索推荐 RocketMQ
消息队列 MQ使用问题之如何将一个主题的多个分区分布到不同的Broker上
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 存储 RocketMQ
MetaQ/RocketMQ 原理问题之MetaQ中Broker的数据同步方式的问题如何解决
MetaQ/RocketMQ 原理问题之MetaQ中Broker的数据同步方式的问题如何解决
|
5月前
|
消息中间件 设计模式 网络安全
消息队列 MQ操作报错合集之broker启用controller配置时,遇到报错,是什么导致的
在使用消息队列MQ时,可能会遇到各种报错情况。以下是一些常见的错误场景、可能的原因以及解决建议的汇总:1.连接错误、2.消息发送失败、3.消息消费报错、4.消息重试与死信处理、5.资源与权限问题、6.配置错误、7.系统资源限制、8.版本兼容性问题。
|
5月前
|
消息中间件 Java Shell
消息队列 MQ产品使用合集之启动broker&proxy的时候会报错,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 Java Apache
消息队列 MQ产品使用合集之Broker内存瞬间增大一倍一般是什么导致的
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
下一篇
无影云桌面