CN117131094A - 用于物联网场景的规则引擎、实现方法、设备及存储介质 - Google Patents
用于物联网场景的规则引擎、实现方法、设备及存储介质 Download PDFInfo
- Publication number
- CN117131094A CN117131094A CN202311372611.4A CN202311372611A CN117131094A CN 117131094 A CN117131094 A CN 117131094A CN 202311372611 A CN202311372611 A CN 202311372611A CN 117131094 A CN117131094 A CN 117131094A
- Authority
- CN
- China
- Prior art keywords
- rule
- working condition
- condition information
- message server
- rules
- 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 39
- 238000012545 processing Methods 0.000 claims abstract description 86
- 230000004048 modification Effects 0.000 claims description 46
- 238000012986 modification Methods 0.000 claims description 46
- 230000014509 gene expression Effects 0.000 claims description 28
- 230000009471 action Effects 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 12
- 238000012423 maintenance Methods 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- IDLFZVILOHSSID-OVLDLUHVSA-N corticotropin Chemical group C([C@@H](C(=O)N[C@@H](CO)C(=O)N[C@@H](CCSC)C(=O)N[C@@H](CCC(O)=O)C(=O)N[C@@H](CC=1NC=NC=1)C(=O)N[C@@H](CC=1C=CC=CC=1)C(=O)N[C@@H](CCCNC(N)=N)C(=O)N[C@@H](CC=1C2=CC=CC=C2NC=1)C(=O)NCC(=O)N[C@@H](CCCCN)C(=O)N1[C@@H](CCC1)C(=O)N[C@@H](C(C)C)C(=O)NCC(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](CCCNC(N)=N)C(=O)N[C@@H](CCCNC(N)=N)C(=O)N1[C@@H](CCC1)C(=O)N[C@@H](C(C)C)C(=O)N[C@@H](CCCCN)C(=O)N[C@@H](C(C)C)C(=O)N[C@@H](CC=1C=CC(O)=CC=1)C(=O)N1[C@@H](CCC1)C(=O)N[C@@H](CC(N)=O)C(=O)NCC(=O)N[C@@H](C)C(=O)N[C@@H](CCC(O)=O)C(=O)N[C@@H](CC(O)=O)C(=O)N[C@@H](CCC(O)=O)C(=O)N[C@@H](CO)C(=O)N[C@@H](C)C(=O)N[C@@H](CCC(O)=O)C(=O)N[C@@H](C)C(=O)N[C@@H](CC=1C=CC=CC=1)C(=O)N1[C@@H](CCC1)C(=O)N[C@@H](CC(C)C)C(=O)N[C@@H](CCC(O)=O)C(=O)N[C@@H](CC=1C=CC=CC=1)C(O)=O)NC(=O)[C@@H](N)CO)C1=CC=C(O)C=C1 IDLFZVILOHSSID-OVLDLUHVSA-N 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16Y—INFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
- G16Y40/00—IoT characterised by the purpose of the information processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种用于物联网场景的规则引擎、实现方法、设备及存储介质,涉及规则引擎技术领域,其中,规则引擎包括:规则数据库,存储有至少一条规则;MQTT消息服务器,用于发布工况信息;分布式缓存,与MQTT消息服务器连接,用于订阅发布在MQTT消息服务器中的工况信息,并存储至分布式缓存中的工况队列中;规则处理模块,与规则数据库和分布式缓存连接,且包括至少一个规则处理程序,规则处理程序从规则数据库中读取并加载全部的规则,且在空闲时从工况队列中获取目标工况信息,并基于加载的规则对目标工况信息进行规则处理。本申请的规则引擎降低了对资源以及专业知识的需求,降低了成本并便于维护,保证了规则处理的实时性。
Description
技术领域
本申请涉及规则引擎技术领域,特别涉及用于物联网场景的规则引擎、实现方法、设备及存储介质。
背景技术
物联网规则引擎是物联网(Internet of Things,IoT)系统中的关键组件之一。用于管理和处理物联网系统中的设备或传感器数据流。它的主要功能是定义、执行和管理规则,以便根据接收到的数据触发特定的操作、决策或警报。物联网规则引擎允许用户在物联网环境中实现自动化、实时的数据处理和控制,以满足各种应用需求。
目前的物联网规则引擎主要基于Flink和Storm两个开源流式数据处理框架。所述两个框架虽然功能强大,但也相对复杂且体量庞大,学习成本高,资源需求高、实时性差,且大部分功能都是物联网规则引擎所不需要的。因此,对一些中小型或私有化部署的IoT项目而言,所述的流式数据处理框架并不是理想方案。因此如何解决现有方案所遇到的资源需求与成本过高、复杂性过高和可维护性较差等问题,以满足中小型或私有化部署场景下的IoT项目需求成为本领域的一研究方向。
发明内容
本申请实施例要达到的技术目的是提供一种用于物联网场景的规则引擎、实现方法、设备及存储介质,用以解决当前基于开源流式数据处理框架的规则引擎对于物联网场景来说存在资源需求与成本过高、复杂性过高和可维护性较差等问题。
为解决上述技术问题,本申请实施例提供了一种用于物联网场景的规则引擎,包括:MQTT消息服务器、分布式缓存、规则数据库以及规则处理模块;
其中,所述规则数据库中存储有至少一条规则;
所述MQTT消息服务器与设备端连接,用于发布从所述设备端获取到的工况信息;
所述分布式缓存与所述MQTT消息服务器连接,用于订阅发布在所述MQTT消息服务器中的所述工况信息,并将所述工况信息存储至所述分布式缓存中的工况队列中;
所述规则处理模块与所述规则数据库和所述分布式缓存连接,且包括至少一个规则处理程序,在启动所述规则处理程序时,所述规则处理程序从所述规则数据库中读取并加载全部的所述规则,且在空闲时从所述工况队列中获取目标工况信息,并基于加载的所述规则对所述目标工况信息进行规则处理,其中,所述目标工况信息为所述工况队列中的第一条工况信息。
优选地,如上所述的规则引擎,所述MQTT消息服务器和所述规则数据库还与用户端连接,且所述MQTT消息服务器还与所述规则处理模块连接;
其中,所述规则数据库用于响应所述用户端输入的规则修改信息进行更新;
所述MQTT消息服务器还用于发布所述规则修改信息;
所述规则处理模块用于订阅发布在所述MQTT消息服务器中的所述规则修改信息,并根据所述规则修改信息为所述规则处理程序重新加载规则。
优选地,如上所述的规则引擎,所述规则包括:条件部分和动作部分,所述条件部分中包括至少一个条件表达式;
当所述条件表达式有多个时,所述条件表达式之间通过逻辑运算符连接和/或嵌套。
具体地,如上所述的规则引擎,所述条件表达式包括:工况字段、比较操作字段和目标值字段;
其中,所述比较操作字段包括:等于、不等于、小于、小于等于、大于、大于等于、存在于、不存在于、包含、不包含以及自定义比较函数中的至少一项。
具体地,如上所述的规则引擎,所述规则处理模块中所述规则处理程序的数量根据对应服务器的中央处理器(Central Processing Unit,CPU)核心数和/或CPU利用率确定。
优选地,如上所述的规则引擎,所述分布式缓存中还对应所述设备端存储有预设数量的历史工况信息,且所述历史工况信息在时间上以滑动窗口的方式更替。
本申请的另一实施例还提供了一种用于物联网场景的规则引擎的实现方法,包括:
从设备端获取工况信息,并发布在MQTT消息服务器中;
分布式缓存订阅发布在所述MQTT消息服务器中的所述工况信息,并将所述工况信息存储至所述分布式缓存的工况队列中;
启动规则处理模块中的规则处理程序,所述规则处理程序启动时,从规则数据库中读取并加载全部的所述规则,且在空闲时从所述工况队列中获取目标工况信息,并基于加载的所述规则对所述目标工况信息进行规则处理,其中,所述目标工况信息为所述工况队列中的第一条工况信息。
优选地,如上所述的方法,还包括:
响应用户端输入的规则修改信息,更新所述规则数据库,并将所述规则修改信息发布在所述MQTT消息服务器;
所述规则处理模块订阅发布在所述MQTT消息服务器中的所述规则修改信息,并根据所述规则修改信息为所述规则处理程序重新加载规则。
本申请的再一实施例还提供了一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的用于物联网场景的规则引擎的实现方法的步骤。
本申请的又一实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的用于物联网场景的规则引擎的实现方法的步骤。
与现有技术相比,本申请实施例提供的用于物联网场景的规则引擎、实现方法、设备及存储介质,至少具有以下有益效果:
通过本实施例中的规则引擎相较于现有技术中的开源流式处理框架,采用基于内存的分布式缓存存储工况信息、采用规则处理程序对工况信息进行规则处理,在满足物联网场景需求的前提下,降低了对资源以及专业知识的需求,有利于降低成本并便于维护,且提高了工况信息的读写效率,保证了规则处理的实时性。
附图说明
图1为本申请实施例中用于物联网场景的规则引擎的结构示意图;
图2为本申请实施例中用于物联网场景的规则引擎的实现方法的流程示意图之一;
图3为本申请实施例中用于物联网场景的规则引擎的实现方法的流程示意图之二;
图4为本申请实施例中的电子设备的结构示意图。
具体实施方式
为使本申请要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。在下面的描述中,提供诸如具体的配置和组件的特定细节仅仅是为了帮助全面理解本申请的实施例。因此,本领域技术人员应该清楚,可以对这里描述的实施例进行各种改变和修改而不脱离本申请的范围和精神。另外,为了清楚和简洁,省略了对已知功能和构造的描述。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本申请的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请所提供的实施例中,应理解,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
需要说明的是,本申请所提供的规则引擎为用于物联网场景的规则引擎,尤其是对于中小规模和私有化部署的物联网场景。
参见图1,本申请的一实施例提供了一种用于物联网场景的规则引擎,包括:MQTT消息服务器1、分布式缓存2、规则数据库3以及规则处理模块4;
其中,所述规则数据库3中存储有至少一条规则;
所述MQTT消息服务器1与设备端5连接,用于发布从所述设备端5获取到的工况信息;
所述分布式缓存2与所述MQTT消息服务器1连接,用于订阅发布在所述MQTT消息服务器1中的所述工况信息,并将所述工况信息存储至所述分布式缓存2中的工况队列中;
所述规则处理模块4与所述规则数据库3和所述分布式缓存2连接,且包括至少一个规则处理程序,在启动所述规则处理程序时,所述规则处理程序从所述规则数据库3中读取并加载全部的所述规则,且在空闲时从所述工况队列中获取目标工况信息,并基于加载的所述规则对所述目标工况信息进行规则处理,其中,所述目标工况信息为所述工况队列中的第一条工况信息。
本实施例提供的规则引擎主要包括MQTT消息服务器1、分布式缓存2、规则数据库3以及规则处理模块4,且规则引擎与设备端5和用户端6连接,其中的设备端5即物联网场景中的设备和/或传感器等,用户端6即设备使用者所使用的客户端。
具体地,所述规则数据库3用于存储规则,其基于用户的配置在其中存储有至少一条规则,以供其他部件获取规则并基于规则进行处理。在一具体实施例中规则是一个JSON(Java Script Object Notation)对象,其中,JSON是一种轻量级的数据交换格式。有利于实现规则引擎的轻量化。
所述MQTT消息服务器1作为消息中转部件,其与设备端5连接,用于从所述设备端5获取工况信息,并发布,以使订阅了相关信息的部件可以及时获取到对应的信息;
所述分布式缓存2与所述MQTT消息服务器1连接,通过订阅来获取发布在所述MQTT消息服务器1中的所述工况信息,并将所述工况信息存储至所述分布式缓存2中的工况队列中;其中,将工况信息存储在基于内存存储的分布式缓存2中,而非存储在基于磁盘存储的消息队列中,一方面节省了存储工况信息所需要的资源,另一方面也极大提升了工况信息的读写速度。同时,考虑到中小规模或私有化部署的IoT项目设备数和采集点数相对较小,因此不会造成系统内存耗尽的情况。
所述规则处理模块4中包括至少一个规则处理程序,且通过与规则数据库3和分布式缓存2的连接,在启动规则处理程序时,规则处理程序会从规则数据库3中读取并加载全部的规则,以便于后续基于加载的规则进行数据清洗。需要说明的是,由于每一个规则处理程序均加载有规则数据库3中的全部规则,使得各规则处理程序可处理所有设备类型的所有规则,因此所有的这些规则处理程序是完全同质的,适合规模化与集群部署。且规则处理程序的代码和处理逻辑简单,减少了对资源以及专业知识的需求,有利于降低成本并便于维护。在一具体实施例中,该规则处理程序优选地被设计为单进程单线程程序,从而有利于进一步的减少维护管理的工作量。
进一步的,在规则处理程序处于空闲时,其会从分布式缓存2的工况队列中获取目标工况信息,并基于加载的规则对该目标工况信息进行规则处理,其中,由于在工况队列中各工况信息根据预设的排列方式(包括但不限于根据时间顺序、预设的设备优先级和工况优先级等)排列,为保证规则处理的实时性,该目标工况信息为工况队列中的第一条工况信息。
综上所述,通过本实施例中的规则引擎相较于现有技术中的开源流式处理框架,采用基于内存的分布式缓存2存储工况信息、采用规则处理程序对工况信息进行规则处理,在满足物联网场景需求的前提下,降低了对资源以及专业知识的需求,有利于降低成本并便于维护,且提高了工况信息的读写效率,保证了规则处理的实时性。
需要说明的是,在所述规则处理程序具有多个基础上,由于各规则处理程序是完全同质的,因此还可将规则处理程序在多个不同的服务器上运行,以达到提高规则处理程序使用范围的目的。
优选地,如上所述的规则引擎,所述MQTT消息服务器1和所述规则数据库3还与用户端6连接,且所述MQTT消息服务器1还与所述规则处理模块4连接;
其中,所述规则数据库3用于响应所述用户端6输入的规则修改信息进行更新;
所述MQTT消息服务器1还用于发布所述规则修改信息;
所述规则处理模块4用于订阅发布在所述MQTT消息服务器1中的所述规则修改信息,并根据所述规则修改信息为所述规则处理程序重新加载规则。
在本实施例中,规则数据库3还与用户端6连接,其中,在用户端6输入规则修改信息(包括但不限于规则的新增、修改和删除等)后,规则数据库3会响应用户端6输入的规则修改信息对规则数据库3进行更新,以保证规则数据库3的实时性。
MQTT消息服务器1还与用户端6和规则处理模块4连接,其中,在用户端6输入规则修改信息后,该规则修改信息还会发布在MQTT消息服务器1中,而规则处理模块4会订阅MQTT消息服务器1中的修改信息,当MQTT消息服务器1中发布规则修改信息后,规则处理模块4会基于该规则修改信息为规则处理程序重新加载规则。通过订阅MQTT消息服务器1中的修改信息的方式为规则处理程序重新加载规则,相较于现有的通过定期查询规则数据库3进行规则更新的方式更加高效,实时性更好。
在一具体实施例中,为规则处理程序重新加载规则的具体实现方式可以为直接基于MQTT消息服务器1中发布规则修改信息对规则处理程序中的规则进行更新,或者,订阅到MQTT消息服务器1中发布规则修改信息后,重新从规则数据库3中加载全部规则。
优选地,如上所述的规则引擎,所述规则包括:条件部分和动作部分,所述条件部分中包括至少一个条件表达式;
当所述条件表达式有多个时,所述条件表达式之间通过逻辑运算符连接和/或嵌套。
在本实施例中对规则引擎中所涉及的规则的结构进行具体示例,其中,规则至少包括两部分即条件(conditions)部分和动作(aciton)部分,其中,条件部分用于对工况信息进行判断并得到判断结果,该判断结果为真的情况下,确定当前的工况信息满足条件部分,则触发该规则中动作部分定义的动作。
其中,本实施例中的条件部分包括至少一个条件表达式,在该条件表达式有多个的情况下,条件表达式之间通过逻辑运算符连接和/或嵌套,具体地,条件表达式之间可以是任意多层“or”和/或“and”以任意顺序嵌套,即条件表达式可支持无限层级嵌套,从而可以实现根据规则进行复杂工况的规则处理,以满足不同物联网环境对规则处理的要求。
具体地,如上所述的规则引擎,所述条件表达式包括:工况字段、比较操作字段和目标值字段;
其中,所述比较操作字段包括:等于、不等于、小于、小于等于、大于、大于等于、存在于、不存在于、包含、不包含以及自定义比较函数中的至少一项。
在本实施例中对条件表达式进行了进一步的示例,其中,该条件表达式至少包括:工况字段、比较操作字段和目标值字段,其中,工况字段用于确定规则所处理的工况信息,以便于对工况信息的精准处理;比较操作字段用于对进行处理的工况信息所涉及的目标值进行比较判断,其中,比较操作字段支持常规的比较操作例如:等于、不等于、小于、小于等于、大于、大于等于、存在于、不存在于、包含和不包含,还支持用户自定义比较函数,即有用户基于需求配置的个性化函数,以满足不同用户对不同工况信息的比较需求;目标值字段用于获取工况信息中需要进行比较的目标值,以便于进行比较操作。
具体地,如上所述的规则引擎,所述规则处理模块中所述规则处理程序的数量根据对应服务器的CPU核心数和/或CPU利用率确定。
由于规则处理模块中可存在多个规则处理程序,但规则处理程序的数量不可能无限多,故需要对规则处理程序的数量进行限定。在本实施例中,将规则处理程序的数量与服务器的CPU核心数和/或CPU利用率挂钩,在一具体实施例中,规则处理程序的数量小于等于服务器的CPU核心数。在另一具体实施例中,为避免CPU利用率过低,需要基于CPU利用率对规则处理程序的数量进行调整,其中,当CPU利用率过低(例如小于30%)时,通过缩减规则处理程序的数量来提高CPU利用率,当CPU利用率过高(例如满负荷运转)时,通过增加规则处理程序的数量来降低CPU利用率,但规则处理程序的数量需要小于等于服务器的CPU核心数。
优选地,如上所述的规则引擎,所述分布式缓存中还对应所述设备端存储有预设数量的历史工况信息,且所述历史工况信息在时间上以滑动窗口的方式更替。
在本实施例中,由于部分工况信息在进行规则处理时需要参考部分历史工况信息,因此在分布式缓存中还对应设备端存储有预设数量的历史工况信息,且历史工况信息在时间上以滑动窗口的方式更替,例如在滑动窗口以队列的方式实现,其中队列中可存储的历史工况信息的数量通过预先配置,且在队列中同一设备端对应的历史工况信息根据时间顺序排列,当需要新存储历史工况信息(当前的工况信息被处理完毕)时,在队列已满的情况下,将队列中的第一条历史工况信息删除,并将新的历史工况信息存储在队列的最后一条。
参见图2,本申请的另一实施例还提供了一种用于物联网场景的规则引擎的实现方法,包括:
步骤S201,从设备端获取工况信息,并发布在MQTT消息服务器中;
步骤S202,分布式缓存订阅发布在所述MQTT消息服务器中的所述工况信息,并将所述工况信息存储至所述分布式缓存的工况队列中;
步骤S203,启动规则处理模块中的规则处理程序,所述规则处理程序启动时,从规则数据库中读取并加载全部的所述规则,且在空闲时从所述工况队列中获取目标工况信息,并基于加载的所述规则对所述目标工况信息进行规则处理,其中,所述目标工况信息为所述工况队列中的第一条工况信息。
本实施例提供的实现方法所对应的规则引擎主要包括上述的MQTT消息服务器、分布式缓存、规则数据库以及规则处理模块,且规则引擎与设备端和用户端连接,其中的设备端即物联网场景中的设备和/或传感器等,用户端即设备使用者所使用的客户端。
具体地,规则引擎通过MQTT消息服务器与设备端的连接,从设备端获取工况信息,并发布在MQTT消息服务器中,以使订阅了相关信息的部件可以及时获取到对应的信息;
在MQTT消息服务器订阅了工况信息的分布式缓存,会获取发布在MQTT消息服务器中的工况信息,并存储在分布式缓存的工况队列中,其中,将工况信息存储在基于内存存储的分布式缓存中,而非存储在基于磁盘存储的消息队列中,一方面节省了存储工况信息所需要的资源,另一方面也极大提升了工况信息的读写速度。同时,考虑到中小规模或私有化部署的IoT项目设备数和采集点数相对较小,因此不会造成系统内存耗尽的情况。
所述规则处理模块中包括至少一个规则处理程序,且通过与规则数据库和分布式缓存的连接,在启动规则处理程序时,规则处理程序会从规则数据库中读取并加载全部的规则,以便于后续基于加载的规则进行数据清洗。需要说明的是,由于每一个规则处理程序均加载有规则数据库中的全部规则,使得各规则处理程序可处理所有设备类型的所有规则,因此所有的这些规则处理程序是完全同质的,适合规模化与集群部署。且规则处理程序的代码和处理逻辑简单,减少了对资源以及专业知识的需求,有利于降低成本并便于维护。在一具体实施例中,该规则处理程序优选地被设计为单进程单线程程序,从而有利于进一步的减少维护管理的工作量。
进一步的,在规则处理程序处于空闲时,其会从分布式缓存的工况队列中获取目标工况信息,并基于加载的规则对该目标工况信息进行规则处理,其中,由于在工况队列中各工况信息根据预设的排列方式(包括但不限于根据时间顺序、预设的设备优先级和工况优先级等)排列,为保证规则处理的实时性,该目标工况信息为工况队列中的第一条工况信息。
综上所述,通过本实施例中的规则引擎相较于现有技术中的开源流式处理框架,采用基于内存的分布式缓存存储工况信息、采用规则处理程序对工况信息进行规则处理,在满足物联网场景需求的前提下,降低了对资源以及专业知识的需求,有利于降低成本并便于维护,且提高了工况信息的读写效率,保证了规则处理的实时性。
需要说明的是,在所述规则处理程序具有多个基础上,由于各规则处理程序是完全同质的,因此还可将规则处理程序在多个不同的服务器上运行,以达到提高规则处理程序使用范围的目的。
参见图3,优选地,如上所述的方法,还包括:
步骤S301,响应用户端输入的规则修改信息,更新所述规则数据库,并将所述规则修改信息发布在所述MQTT消息服务器;
步骤S302,所述规则处理模块订阅发布在所述MQTT消息服务器中的所述规则修改信息,并根据所述规则修改信息为所述规则处理程序重新加载规则。
优选地,规则引擎的规则数据库还与用户端连接,其中,在用户端输入规则修改信息(包括但不限于规则的新增、修改和删除等)后,规则引擎会响应用户端输入的规则修改信息对规则数据库进行更新,以保证规则数据库的实时性。同时。还通过与用户端连接的MQTT消息服务器,将该规则修改信息还会发布在MQTT消息服务器中;而与MQTT消息服务器连接的规则处理模块会订阅MQTT消息服务器中的修改信息,当MQTT消息服务器中发布规则修改信息后,规则处理模块会基于该规则修改信息为规则处理程序重新加载规则。通过订阅MQTT消息服务器中的修改信息的方式为规则处理程序重新加载规则,相较于现有的通过定期查询规则数据库进行规则更新的方式更加高效,实时性更好。
在一具体实施例中,为规则处理程序重新加载规则的具体实现方式可以为直接基于MQTT消息服务器中发布规则修改信息对规则处理程序中的规则进行更新,或者,订阅到MQTT消息服务器中发布规则修改信息后,重新从规则数据库中加载全部规则。
优选地,如上所述的规则引擎,所述规则包括:条件部分和动作部分,所述条件部分中包括至少一个条件表达式;
当所述条件表达式有多个时,所述条件表达式之间通过逻辑运算符连接和/或嵌套。
在本实施例中对规则引擎中所涉及的规则的结构进行具体示例,其中,规则至少包括两部分即条件(conditions)部分和动作(aciton)部分,其中,条件部分用于对工况信息进行判断并得到判断结果,该判断结果为真的情况下,确定当前的工况信息满足条件部分,则触发该规则中动作部分定义的动作。
其中,本实施例中的条件部分包括至少一个条件表达式,在该条件表达式有多个的情况下,条件表达式之间通过逻辑运算符连接和/或嵌套,具体地,条件表达式之间可以是任意多层“or”和/或“and”以任意顺序嵌套,即条件表达式可支持无限层级嵌套,从而可以实现根据规则进行复杂工况的规则处理,以满足不同物联网环境对规则处理的要求。
具体地,如上所述的规则引擎,所述条件表达式包括:工况字段、比较操作字段和目标值字段;
其中,所述比较操作字段包括:等于、不等于、小于、小于等于、大于、大于等于、存在于、不存在于、包含、不包含以及自定义比较函数中的至少一项。
在本实施例中对条件表达式进行了进一步的示例,其中,该条件表达式至少包括:工况字段、比较操作字段和目标值字段,其中,工况字段用于确定规则所处理的工况信息,以便于对工况信息的精准处理;比较操作字段用于对进行处理的工况信息所涉及的目标值进行比较判断,其中,比较操作字段支持常规的比较操作例如:等于、不等于、小于、小于等于、大于、大于等于、存在于、不存在于、包含和不包含,还支持用户自定义比较函数,即有用户基于需求配置的个性化函数,以满足不同用户对不同工况信息的比较需求;目标值字段用于获取工况信息中需要进行比较的目标值,以便于进行比较操作。
具体地,如上所述的规则引擎,所述规则处理模块中所述规则处理程序的数量根据对应服务器的CPU核心数和/或CPU利用率确定。
由于规则处理模块中可存在多个规则处理程序,但规则处理程序的数量不可能无限多,故需要对规则处理程序的数量进行限定。在本实施例中,将规则处理程序的数量与服务器的CPU核心数和/或CPU利用率挂钩,在一具体实施例中,规则处理程序的数量小于等于服务器的CPU核心数。在另一具体实施例中,为避免CPU利用率过低,需要基于CPU利用率对规则处理程序的数量进行调整,其中,当CPU利用率过低(例如小于30%)时,通过缩减规则处理程序的数量来提高CPU利用率,当CPU利用率过高(例如满负荷运转)时,通过增加规则处理程序的数量来降低CPU利用率,但规则处理程序的数量需要小于等于服务器的CPU核心数。
优选地,如上所述的规则引擎,所述分布式缓存中还对应所述设备端存储有预设数量的历史工况信息,且所述历史工况信息在时间上以滑动窗口的方式更替。
在本实施例中,由于部分工况信息在进行规则处理时需要参考部分历史工况信息,因此在分布式缓存中还对应设备端存储有预设数量的历史工况信息,且历史工况信息在时间上以滑动窗口的方式更替,例如在滑动窗口以队列的方式实现,其中队列中可存储的历史工况信息的数量通过预先配置,且在队列中同一设备端对应的历史工况信息根据时间顺序排列,当需要新存储历史工况信息(当前的工况信息被处理完毕)时,在队列已满的情况下,将队列中的第一条历史工况信息删除,并将新的历史工况信息存储在队列的最后一条。
参见图4,本申请的再一实施例还提供了一种电子设备,包括处理器7、存储器8及存储在所述存储器8上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器7执行时实现如上所述的用于物联网场景的规则引擎的实现方法的步骤。
本申请的又一实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的用于物联网场景的规则引擎的实现方法的步骤。
此外,本申请可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含。
以上所述是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请所述原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种用于物联网场景的规则引擎,其特征在于,包括:MQTT消息服务器、分布式缓存、规则数据库以及规则处理模块;
其中,所述规则数据库中存储有至少一条规则;
所述MQTT消息服务器与设备端连接,用于发布从所述设备端获取到的工况信息;
所述分布式缓存与所述MQTT消息服务器连接,用于订阅发布在所述MQTT消息服务器中的所述工况信息,并将所述工况信息存储至所述分布式缓存中的工况队列中;
所述规则处理模块与所述规则数据库和所述分布式缓存连接,且包括至少一个规则处理程序,在启动所述规则处理程序时,所述规则处理程序从所述规则数据库中读取并加载全部的所述规则,且在空闲时从所述工况队列中获取目标工况信息,并基于加载的所述规则对所述目标工况信息进行规则处理,其中,所述目标工况信息为所述工况队列中的第一条工况信息。
2.根据权利要求1所述的规则引擎,其特征在于,所述MQTT消息服务器和所述规则数据库还与用户端连接,且所述MQTT消息服务器还与所述规则处理模块连接;
其中,所述规则数据库用于响应所述用户端输入的规则修改信息进行更新;
所述MQTT消息服务器还用于发布所述规则修改信息;
所述规则处理模块用于订阅发布在所述MQTT消息服务器中的所述规则修改信息,并根据所述规则修改信息为所述规则处理程序重新加载规则。
3.根据权利要求1所述的规则引擎,其特征在于,所述规则包括:条件部分和动作部分,所述条件部分中包括至少一个条件表达式;
当所述条件表达式有多个时,所述条件表达式之间通过逻辑运算符连接和/或嵌套。
4.根据权利要求3所述的规则引擎,其特征在于,所述条件表达式包括:工况字段、比较操作字段和目标值字段;
其中,所述比较操作字段包括:等于、不等于、小于、小于等于、大于、大于等于、存在于、不存在于、包含、不包含以及自定义比较函数中的至少一项。
5.根据权利要求1所述的规则引擎,其特征在于,所述规则处理模块中所述规则处理程序的数量根据对应服务器的中央处理器CPU核心数和/或CPU利用率确定。
6.根据权利要求1所述的规则引擎,其特征在于,所述分布式缓存中还对应所述设备端存储有预设数量的历史工况信息,且所述历史工况信息在时间上以滑动窗口的方式更替。
7.一种用于物联网场景的规则引擎的实现方法,其特征在于,包括:
从设备端获取工况信息,并发布在MQTT消息服务器中;
分布式缓存订阅发布在所述MQTT消息服务器中的所述工况信息,并将所述工况信息存储至所述分布式缓存的工况队列中;
启动规则处理模块中的规则处理程序,所述规则处理程序启动时,从规则数据库中读取并加载全部的所述规则,且在空闲时从所述工况队列中获取目标工况信息,并基于加载的所述规则对所述目标工况信息进行规则处理,其中,所述目标工况信息为所述工况队列中的第一条工况信息。
8.根据权利要求7所述的方法,其特征在于,还包括:
响应用户端输入的规则修改信息,更新所述规则数据库,并将所述规则修改信息发布在所述MQTT消息服务器;
所述规则处理模块订阅发布在所述MQTT消息服务器中的所述规则修改信息,并根据所述规则修改信息为所述规则处理程序重新加载规则。
9.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求7或8所述的用于物联网场景的规则引擎的实现方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求7或8所述的用于物联网场景的规则引擎的实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311372611.4A CN117131094A (zh) | 2023-10-23 | 2023-10-23 | 用于物联网场景的规则引擎、实现方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311372611.4A CN117131094A (zh) | 2023-10-23 | 2023-10-23 | 用于物联网场景的规则引擎、实现方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117131094A true CN117131094A (zh) | 2023-11-28 |
Family
ID=88856712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311372611.4A Pending CN117131094A (zh) | 2023-10-23 | 2023-10-23 | 用于物联网场景的规则引擎、实现方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117131094A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111917862A (zh) * | 2020-07-28 | 2020-11-10 | 深圳市道通科技股份有限公司 | 一种基于云平台的汽车后服务管理系统和方法 |
CN112422544A (zh) * | 2020-11-09 | 2021-02-26 | 深圳市华昊软件有限公司 | 基于mqtt通讯协议的机房设备信息监控系统 |
CN113111261A (zh) * | 2021-04-20 | 2021-07-13 | 树根互联股份有限公司 | 一种云平台的数据处理方法、云平台及全景分析系统 |
CN113810422A (zh) * | 2021-09-18 | 2021-12-17 | 四川中电启明星信息技术有限公司 | 一种基于Emqx broker架构的物联平台设备数据安全连接方法 |
US20220406195A1 (en) * | 2021-06-17 | 2022-12-22 | Honeywell International Inc. | Systems and methods of situation aware edge analytics framework for avionics iot gateways |
-
2023
- 2023-10-23 CN CN202311372611.4A patent/CN117131094A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111917862A (zh) * | 2020-07-28 | 2020-11-10 | 深圳市道通科技股份有限公司 | 一种基于云平台的汽车后服务管理系统和方法 |
CN112422544A (zh) * | 2020-11-09 | 2021-02-26 | 深圳市华昊软件有限公司 | 基于mqtt通讯协议的机房设备信息监控系统 |
CN113111261A (zh) * | 2021-04-20 | 2021-07-13 | 树根互联股份有限公司 | 一种云平台的数据处理方法、云平台及全景分析系统 |
US20220406195A1 (en) * | 2021-06-17 | 2022-12-22 | Honeywell International Inc. | Systems and methods of situation aware edge analytics framework for avionics iot gateways |
CN113810422A (zh) * | 2021-09-18 | 2021-12-17 | 四川中电启明星信息技术有限公司 | 一种基于Emqx broker架构的物联平台设备数据安全连接方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9660930B2 (en) | Dynamic data server nodes | |
US20120096043A1 (en) | Data graph cloud system and method | |
CN112000394B (zh) | 用于访问小程序的方法、装置、设备以及存储介质 | |
US11934287B2 (en) | Method, electronic device and computer program product for processing data | |
US11689626B2 (en) | Transport channel via web socket for ODATA | |
US20200327001A1 (en) | Message processing method and system, storage medium and electronic device | |
CN112948025B (zh) | 数据加载方法、装置及存储介质、计算设备、计算系统 | |
CN111562885A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN111949389B (zh) | 基于Slurm的信息采集方法和装置、服务器、计算机可读存储介质 | |
CN112491609A (zh) | 基于业务服务的系统应用架构发现方法及系统 | |
US11048555B2 (en) | Method, apparatus, and computer program product for optimizing execution of commands in a distributed system | |
US20220413906A1 (en) | Method, device, and program product for managing multiple computing tasks based on batch | |
CN111522879B (zh) | 一种基于缓存的数据分发方法和电子设备 | |
CN117131094A (zh) | 用于物联网场景的规则引擎、实现方法、设备及存储介质 | |
CN111666045A (zh) | 基于Git系统的数据处理方法、系统、设备及存储介质 | |
CN116880990A (zh) | 任务执行方法、装置、电子设备及计算机可读存储介质 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
CN110727666A (zh) | 面向工业互联网平台的缓存组件、方法、设备及存储介质 | |
CN116108036A (zh) | 一种后端系统数据离线导出方法和装置 | |
CN113138943B (zh) | 一种处理请求的方法和装置 | |
US9172729B2 (en) | Managing message distribution in a networked environment | |
US10409641B1 (en) | Module assignment management | |
US11550624B2 (en) | Method, device, and computer program product for executing a job in an application system | |
CN115563183B (zh) | 查询方法、装置及程序产品 | |
CN111209308B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20231128 |