CN114285898A - 一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法 - Google Patents
一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法 Download PDFInfo
- Publication number
- CN114285898A CN114285898A CN202111640349.8A CN202111640349A CN114285898A CN 114285898 A CN114285898 A CN 114285898A CN 202111640349 A CN202111640349 A CN 202111640349A CN 114285898 A CN114285898 A CN 114285898A
- Authority
- CN
- China
- Prior art keywords
- pulsar
- resource
- data
- message
- mqtt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 18
- 230000006870 function Effects 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 26
- 230000009471 action Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 7
- 230000003068 static effect Effects 0.000 claims description 2
- 238000007726 management method Methods 0.000 abstract description 7
- 238000007405 data analysis Methods 0.000 abstract description 3
- 238000013500 data storage Methods 0.000 abstract description 3
- 238000005192 partition Methods 0.000 description 5
- 238000012216 screening Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法,构建MQTT+Pulsar主题,包括创建主题和规则;描述基于SQL的业务规则,并通过API的方式传入到数据处理规则管理引擎中,并将这些业务规则翻译为Pulsar中对应的Source、Functions和Sink;根据系统闲置资源,桥接Pulsar,通过扩展Pulsar的Functions对消息进行实时处理,处理完后发送到外部系统中并存储日志消息。使用MQTT和Pulsar使消息服务平台实现了物联网设备数据接入、设备管理、数据存储和数据分析等功能,并且提供了灵活的编程接口。
Description
技术领域
本发明涉及数据传输技术领域,具体的说,是一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法。
背景技术
MQTT协议作为物联网的基本传输协议以来,经历了不同版本的演化,包括有(3.0/5.0)等。为了支持最新的MQTT传输协议,为了方便不同协议版本的设备连接,消息中心的功能和服务都需要扩展。开发通用物联网平台,需要实现数据接入、设备管理、数据存储和数据分析等功能,并且向上层提供编程接口以便开发者能够利用该平台快速开发出满足符合特定垂直行业的物联网应用。由于物联网本身具有接入设备(传感器)数目多,数据量大等特点,因此还要求MQTT能够支持水平扩展以支撑业务扩展等需求。普通的MQTT消息服务,只能提供简单的设备接入,消息接收、转发功能。在当前5G通信时代物联网高速发展的背景下,物联网连接设备数量巨大,会导致海量交互数据。在这种情况下给消息服务器提出了更高的要求。现有技术解决此问题最普遍的解决模式——采用消息队列,把消息可靠的保存下来,再慢慢的处理。由于通用消息队列限制单个分区必须完整的存储在同一个服务器上,同时分区的冗余是按照主从复制来实现的,这就导致新的服务器节点上线之后,必须等待一段长时间的数据同步,直到把需要提供服务的分区的数据都追赶上之后,通过重新触发选举让新的节点成为相应分区的主节点,才能开始对外服务。这不仅仅是存储的浪费,而且一次扩容会耗费很长的时间,且万一副本不同步,有可能丢失消息。必须提前计划和计算服务器、主题、分区和副本的数量,以避免扩展问题,这非常困难。
发明内容
为解决现有技术中存在的问题,本发明提供一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法,利用Pulsar实现对消息的存储和流式处理,通过使用PulsarFunctions实现对数据的快速处理,并且通过该实现方式对上层暴露的物联网SQL处理引擎来实现对物联网数据的分析与处理。
本发明通过下述技术方案解决上述问题:
一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法,包括:
步骤S1、构建MQTT+Pulsar主题,包括创建主题和规则,主题供MQTT和Pulsar采用订阅发布方式交互使用,规则用于在消息发布时进行数据处理;
通过订阅主题适配灵活的消费模型,可以使用Exclusive和Failover的订阅模式。这样同一个Topic只有一个Consumer在消费,可以保证顺序性;也可以使用Shared订阅模式,多个Consumer可以并发消费同一个Topic。通过动态增加Consumer的数量,可以加速Topic的消费,减少消息在服务端的堆积;
在消息发布或事件触发时将触发规则引擎,满足触发条件的规则将执行各自的SQL语句筛选并处理消息和事件的上下文信息;
步骤S2、描述基于SQL的业务规则,并通过API的方式传入到数据处理规则管理引擎中,并将这些业务规则翻译为Pulsar中对应的Source、Functions和Sink;
把基于SQL的业务规则通过API的方式传入到数据处理规则管理引擎中,并将这些业务规则翻译为Pulsar中对应的Source、Functions和Sink。Pulsar的Source通过共享订阅的方式对接入EMQ X Broker设备数据进行消费,Pulsar将这些数据进行持久化,并通过扩展Pulsar的Functions来对消息进行实时处理;
步骤S3、根据系统闲置资源,桥接Pulsar:Pulsar的Source通过共享订阅的方式对接入EMQ X Broker设备数据进行消费,Pulsar将这些数据进行持久化,并通过扩展Pulsar的Functions对消息进行实时处理,处理完后通过Sinks将数据发送到相关的外部系统中,并存储日志消息。
本发明借助Pulsar实现对消息的存储和流式处理,通过使用Pulsar Functions实现对数据的快速处理,并且通过消息平台对上层暴露的物联网SQL处理引擎来实现对物联网数据的分析与处理。
Pulsar Functions作为Pulsar的计算组件,是消息和计算平台在Serverless方向的一个融合和创新。Pulsar Functions支持Thread、Process、Kubernetes等运行时,这为我们编写、运行和部署Functions提供了很好的灵活性,所以在消息服务平台上,我们只需关注计算逻辑,无需处理复杂的配置或管理,就能更加便捷地构建基于消息触发的流平台。
所述步骤S2中采用JSON描述基于SQL的业务规则,格式如下:
规则:{SQL语句,动作列表:[{动作1,动作参数,绑定资源:{资源配置}},{动作2,动作参数,绑定资源:{资源配置}}]};
其中,动作为SQL语句匹配通过之后所执行的任务;资源为通过资源类型为模板实例化出来的对象,用于保存与资源相关的配置和系统资源;资源类型为资源的静态定义,用于描述此类型资源需要的配置项。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明通过结合使用MQTT和Pulsar,使消息服务平台实现了物联网设备数据接入、设备管理、数据存储和数据分析等功能,并且提供了灵活的编程接口以便快速开发出满足符合特定垂直行业的物联网应用。通过MQTT和Pulsar提供的水平扩展能力,消息服务平台实现了设备接入和数据处理的水平扩展。通过测试,消息服务平台可以在双机Pulsar部署,8核CPU、16GB内存的配置下,实现后端每秒6万物联网消息处理的吞吐量,通过增加节点的方式来实现水平扩展。
(2)Pulsar利用自身的分层分片的架构,提供Segmented Stream的存储表征,以满足批流融合的存储需求。通过Pulsar Pub/Sub接口访问Segmented Stream,可以满足流处理的存储需求或者通过Pulsar存储层对segment的访问接口(Segment Reader),满足批处理的并发访问需求。
(3)使用Pulsar Functions自带的API和pulsar-admin functions命令进行增删改查等相应的操作。在多语义保证方面,利用Pulsar Functions提供的At Least Once语义保证,确保每条发送出来的数据至少被处理一次。利用Pulsar存储与计算分离的特性,在存储数据时通过配置消息保存(retention)策略,灵活选择物联网平台保存数据的时间。
附图说明
图1为本发明的流程图;
图2为本发明的框架图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例:
结合附图1和图2所示,一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法,包括:
S1:构建主题,便于MQTT同Pulsar订阅发布。
S2:触发事件消息发布,在消息发布时触发该规则进行数据处理。
S3:首先设计了四种数据类型构建json数据结构描述规则。这四种数据类型分别是:
规则引擎使用SQL语句处理规则条件,需要将payload中所有字段单独选择出来,使用payload.fieldName格式筛选,还需要消息上下文的topic、qos、id信息,实例SQL如下:
SELECT payload.id as client_id,payload.speed as speed,payload.tachometer as tachometer,payload.ts as ts,id FROM"message.publish"WHERE topic=~'t/#'
S4:使用SQL语句WHERE字句进行条件筛选,该业务中我们需要定义两个条件:
仅处理cmd/state/:id主题,使用主题通配符=~对topic进行筛选:topic=~'cmd/state/+'
仅处理tachometer>8000的消息,使用比较符对tachometer进行筛选:payload.tachometer>8000
组合上一步骤得到SQL如下:
SELECT payload.id as client_id,payload.speed as speed,payload.tachometer as tachometer,payload.ts as ts,id FROM"message.publish"WHERE topic=~'cmd/state/+'AND payload.tachometer>8000
S5:增加响应动作,桥接消息到Pulsar
SQL增加规则的条件和触发并写入SQL语句,将筛选结果桥接到Pulsar。系统提供优化资源,Pulsar主题填写上文创建的emqx_rule_engine_output
S6:利用Pulsar Functions的Window特性,实现物联网平台所需的时间窗口能力,首先根据起止时间来确定和获取所需要的Segments列表;然后选择这些Segments,绕过pub/sub接口,直接通过Pulsar的Segment Reader接口,来访问Pulsar的存储层。使用Pulsar Functions自带的API和pulsar-admin functions命令(create,delete,update,restart,stop和get)进行增删改查等相应的操作。如果采用Shared订阅类型,多个Consumer并发消费同一个Topic。动态增加Consumer的数量,加速Topic的消费,减少消息在服务端的堆积,来无限扩展消费能力。
S7:在多语义保证方面,利用Pulsar Functions提供的At Least Once语义保证,确保每条发送出来的数据至少被处理一次。利用Pulsar存储与计算分离的特性,在存储数据时通过配置消息保存(retention)策略,灵活选择物联网平台保存数据的时间。
S8:转发数据到外部系统,利用初始化好的HttpClient将数据投递到外部系统中。并使用钩子函数,存储日志信息。
本发明通过订阅主题,适配灵活的消费模型,可以使用Exclusive和Failover的订阅模式。这样同一个Topic只有一个Consumer在消费,可以保证顺序性;也可以使用Shared订阅模式,多个Consumer可以并发消费同一个Topic。通过动态增加Consumer的数量,可以加速Topic的消费,减少消息在服务端的堆积;利用自身的分层分片的架构,提供SegmentedStream的存储表征,以满足批流融合的存储需求。通过Pulsar Pub/Sub接口访问SegmentedStream,可以满足流处理的存储需求或者通过Pulsar存储层对segment的访问接口(Segment Reader),满足批处理的并发访问需求;使用Pulsar Functions自带的API和pulsar-admin functions命令进行增删改查等相应的操作。在多语义保证方面,利用Pulsar Functions提供的At Least Once语义保证,确保每条发送出来的数据至少被处理一次。利用Pulsar存储与计算分离的特性,在存储数据时通过配置消息保存(retention)策略,灵活选择物联网平台保存数据的时间。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (2)
1.一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法,其特征在于,包括:
步骤S1、构建MQTT+Pulsar主题,包括创建主题和规则,主题供MQTT和Pulsar采用订阅发布方式交互使用,规则用于在消息发布时进行数据处理;
步骤S2、描述基于SQL的业务规则,并通过API的方式传入到数据处理规则管理引擎中,并将这些业务规则翻译为Pulsar中对应的Source、Functions和Sink;
步骤S3、根据系统闲置资源,桥接Pulsar:Pulsar的Source通过共享订阅的方式对接入EMQ X Broker设备数据进行消费,Pulsar将这些数据进行持久化,并通过扩展Pulsar的Functions对消息进行实时处理,处理完后通过Sinks将数据发送到相关的外部系统中,并存储日志消息。
2.根据权利要求1所述的一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法,其特征在于,所述步骤S2中采用JSON描述基于SQL的业务规则,格式如下:
规则:{SQL语句,动作列表:[{动作1,动作参数,绑定资源:{资源配置}},{动作2,动作参数,绑定资源:{资源配置}}]};
其中,动作为SQL语句匹配通过之后所执行的任务;资源为通过资源类型为模板实例化出来的对象,用于保存与资源相关的配置和系统资源;资源类型为资源的静态定义,用于描述此类型资源需要的配置项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111640349.8A CN114285898A (zh) | 2021-12-29 | 2021-12-29 | 一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111640349.8A CN114285898A (zh) | 2021-12-29 | 2021-12-29 | 一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114285898A true CN114285898A (zh) | 2022-04-05 |
Family
ID=80878025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111640349.8A Pending CN114285898A (zh) | 2021-12-29 | 2021-12-29 | 一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114285898A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111639101A (zh) * | 2020-04-27 | 2020-09-08 | 浙江时空道宇科技有限公司 | 一种物联网规则引擎系统的相关方法、装置、系统及存储介质 |
CN112261101A (zh) * | 2020-10-15 | 2021-01-22 | 四川长虹电器股份有限公司 | Mqtt消息中心引入规则引擎的方法 |
WO2021032269A1 (en) * | 2019-08-16 | 2021-02-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Distribution of constrained device data |
-
2021
- 2021-12-29 CN CN202111640349.8A patent/CN114285898A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021032269A1 (en) * | 2019-08-16 | 2021-02-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Distribution of constrained device data |
CN111639101A (zh) * | 2020-04-27 | 2020-09-08 | 浙江时空道宇科技有限公司 | 一种物联网规则引擎系统的相关方法、装置、系统及存储介质 |
CN112261101A (zh) * | 2020-10-15 | 2021-01-22 | 四川长虹电器股份有限公司 | Mqtt消息中心引入规则引擎的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582466B (zh) | 一种定时任务执行方法、分布式服务器集群及电子设备 | |
CN107590001B (zh) | 负载均衡方法及装置、存储介质、电子设备 | |
CN115328663B (zh) | 基于PaaS平台进行资源调度的方法、装置、设备和存储介质 | |
US8108623B2 (en) | Poll based cache event notifications in a distributed cache | |
CN106657314B (zh) | 跨数据中心数据同步系统及方法 | |
CN109684036B (zh) | 一种容器集群管理方法、存储介质、电子设备及系统 | |
CN101146127B (zh) | 一种分布式系统中客户端缓存更新的方法和装置 | |
CN110716744A (zh) | 一种数据流处理方法、系统和计算机可读存储介质 | |
CN112230616A (zh) | 一种联动控制方法、装置及联动中间件 | |
CN112069265A (zh) | 配置数据的同步方法、业务数据系统、计算机系统和介质 | |
US20090199208A1 (en) | Queued message dispatch | |
Da et al. | Kalimucho: middleware for mobile applications | |
CN107391279B (zh) | 一种消息队列容器创建方法、装置及消息队列容器 | |
CN113204353B (zh) | 一种大数据平台组件部署方法及装置 | |
CN112527520A (zh) | 一种部署消息中间件的方法和装置 | |
Brogi et al. | Container-based support for autonomic data stream processing through the fog | |
CN112069266A (zh) | 一种数据同步方法及服务节点 | |
CN113452774A (zh) | 消息推送方法、装置、设备及存储介质 | |
CN114827171B (zh) | 信息同步方法、装置、计算机设备和存储介质 | |
CN111913793A (zh) | 分布式任务调度方法、装置、节点设备和系统 | |
CN112052104A (zh) | 基于多机房实现的消息队列的管理方法及电子设备 | |
CN114285898A (zh) | 一种从MQTT消息系统到Pulsar流数据平台的桥接实现方法 | |
CN111274042B (zh) | 一种fpga异构加速系统及其同步调度方法和相关设备 | |
US20210373862A1 (en) | Compiling monoglot function compositions into a single entity | |
CN115225645B (zh) | 一种服务更新方法、装置、系统和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220405 |
|
RJ01 | Rejection of invention patent application after publication |