公开/公告号CN112199209A
专利类型发明专利
公开/公告日2021-01-08
原文格式PDF
申请/专利权人 珠海许继芝电网自动化有限公司;珠海许继电气有限公司;
申请/专利号CN202010989418.5
申请日2020-09-18
分类号G06F9/54(20060101);G06F16/2457(20190101);G06F16/2458(20190101);H04L12/861(20130101);
代理机构44205 广州嘉权专利商标事务所有限公司;
代理人叶琦炜
地址 519060 广东省珠海市南屏科技工业园屏北二路12号科研楼
入库时间 2023-06-19 09:29:07
技术领域
本发明涉及数据处理领域,特别涉及一种终端数据并行顺序处理方法、系统及介质。
背景技术
随着物联网设备应用越来越广泛,采用IoT平台对终端采集的数据进行订阅或推送,IoT平台发送的终端数据需要进行处理。随着终端接入的数据越来越多,终端的数据量越来越多,对终端数据的处理需要更高的计算能力。现有终端数据处理软件,有的通过增加处理器和内存资源的方法提升处理能力,有的通过只处理核心数据,将后处理(如关系库、实时库操作)放到其他节点以提升处理能力,还有启动多个节点同时处理数据以提升处理能力。但是以上方法存在很大的局限,单节点的角度考虑性能提升存在天花板效应,而多节点方案无法保证数据处理顺序性。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种终端数据并行顺序处理方法,能够在保证数据处理顺序性的前提下,并行处理终端数据,有效提升终端数据处理效率。
本发明还提出一种终端数据并行顺序处理系统。
本发明还提出一种实施上述终端数据并行顺序处理方法的计算机可读存储介质。
根据本发明的第一方面实施例的终端数据并行顺序处理方法,所述方法包括:创建多个终端数据队列,根据当前终端数量及数据处理模块数量,确定各数据处理模块对应的队列ID;接收终端数据,根据所述终端数据中的终端ID,将所述终端数据发送到指定的所述终端数据队列中;各数据处理模块根据自身对应的队列ID从所述终端数据队列中读取所述终端数据并进行处理。
根据本发明的一些实施例,所述接收终端数据,根据所述终端数据中的终端ID,将所述终端数据发送到指定的所述终端数据队列中包括:根据接收的所述终端数据的终端ID查询表格,确定对应的队列ID;所述表格的字段包括终端ID和队列ID,终端ID字段设置唯一性约束;查找结果为空时,根据所述终端ID生成队列ID,并将所述终端ID和生成的所述队列ID存储在所述表格中。
根据本发明的一些实施例,所述终端ID是用于标识唯一终端的字符串。
根据本发明的一些实施例,该方法还包括:根据接入的终端规模动态调整所述终端数据队列的数量,调整后更新所述各数据处理模块对应的队列ID。
根据本发明的一些实施例,所述终端数据队列为分布式队列,所述各数据处理模块支持分布式部署。
根据本发明的一些实施例,所述各数据处理模块根据自身对应的队列ID从所述终端数据队列中读取所述终端数据并进行处理包括:将所述队列ID设置为所述各数据处理模块的函数参数。
根据本发明的第二方面实施例的终端数据并行顺序处理系统,包括:终端数据队列模块,用于创建多个终端数据队列,根据当前终端数量及数据处理模块数量,确定各数据处理模块对应的队列ID;数据接收转发模块,用于接收终端数据,根据所述终端数据中的终端ID,将所述终端数据发送到指定的所述终端数据队列中;多个数据处理模块,用于根据自身对应的队列ID从所述终端数据队列中读取所述终端数据并进行处理。
根据本发明的一些实施例,所述数据接收转发模块包括:查询模块,用于根据接收的所述终端数据的终端ID查询表格,确定对应的队列ID;所述表格的字段包括终端ID和队列ID,终端ID字段设置为唯一性约束;队列ID生成模块,用于在查找结果为空时,根据所述终端ID生成队列ID,并将所述终端ID和生成的所述队列ID存储在所述表格中。
根据本发明的一些实施例,所述系统还包括:队列数量调整模块,用于根据接入的终端规模动态调整所述终端数据队列的数量,调整后更新所述各数据处理模块对应的队列ID。
根据本发明的第三方面实施例的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明的第一方面实施例中任一项的方法。
本发明实施例至少具有如下有益效果:通过数据接收转发模块,以及自定义终端数据队列与数据处理模块对应关系,实现终端数据以终端为单位的负载均衡,并且本发明实施例能够在保证数据处理顺序性的前提下,并行处理终端数据,有效提升终端数据处理效率。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的方法的流程示意图。
图2为根据本发明实施例的方法的确定队列ID的方法流程图。
图3为本发明实施例的系统应用场景示意图。
图4为本发明实施例的系统的示意图。
图5为根据本发明实施例的数据接收转发模块的结构框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个及两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
参照图1,本发明实施例的终端数据并行顺序处理方法包括:创建多个终端数据队列,根据当前终端数量及数据处理模块数量,确定各数据处理模块对应的队列ID;接收终端数据,根据终端数据中的终端ID,将终端数据发送到指定的终端数据队列中;各数据处理模块根据自身对应的队列ID从终端数据队列中读取终端数据并进行处理。
进一步参照图2,上述步骤接收终端数据,根据终端数据中的终端ID,将终端数据发送到指定的终端数据队列中包括:根据接收的终端数据的终端ID查询表格,确定对应的队列ID;其中,表格的字段包括终端ID和队列ID,终端ID字段设置唯一性约束;查找结果为空时,根据终端ID生成队列ID,并将终端ID和生成的队列ID存储在表格中。
在一些实施例中,根据终端ID生成队列ID的算法可以是自定义的函数,输入终端ID,终端ID可以是阿拉伯数字或者字符串或者任意数字字符的组合,输出队列ID。需要注意的是,输入同一终端ID必须输出同样的队列ID。
在一些实施例中,终端ID是用于标识唯一终端的字符串。
在一些实施例中,该方法还包括:根据接入的终端规模动态调整终端数据队列的数量,调整后更新各数据处理模块对应的队列ID。
在一些实施例中,终端数据队列为分布式队列,各数据处理模块支持分布式部署。例如,队列采用kafka分布式队列。Kafka是分布式消息队列,具有高性能、持久化、多副本备份和横向扩展能力。
在一些实施例中,上述步骤各数据处理模块根据自身对应的队列ID从终端数据队列中读取终端数据并进行处理包括:将队列ID设置为各数据处理模块的函数参数。
参照图3,物联网终端通过物联网协议将采集到的终端数据发送至IoT平台,IoT平台通过订阅/推送的方式将数据发送给数据接收转发节点,数据接收转发节点通过数据处理程序发送的程序注册信息确定数据处理程序数量,并创建多个队列,通过确定终端与队列、队列与数据处理程序的对应关系,实现以终端为单位的负载均衡。队列作为终端数据的缓冲,数据接收转发节点将终端数据发送至指定的队列,而数据处理程序将处理各自对应的队列中的终端数据,保证数据处理的顺序。
参照图4,本发明实施例的终端数据并行顺序处理系统包括:数据接收转发模块、终端数据队列模块以及多个数据处理模块。其中,终端数据队列模块用于创建多个终端数据队列,根据当前终端数量及数据处理模块数量,确定各数据处理模块对应的队列ID;数据接收转发模块用于接收终端数据,根据终端数据中的终端ID,将终端数据发送到指定的终端数据队列中;多个数据处理模块用于根据自身对应的队列ID从终端数据队列中读取终端数据并进行处理。
参照图5,在一些实施例中,数据接收转发模块包括:查询模块,用于根据接收的终端数据的终端ID查询表格,确定对应的队列ID;其中,表格的字段包括终端ID和队列ID,终端ID字段设置为唯一性约束;队列ID生成模块,用于在查找结果为空时,根据终端ID生成队列ID,并将终端ID和生成的队列ID存储在表格中。
在一些实施例中,终端数据并行顺序处理系统还包括:队列数量调整模块,用于根据接入的终端规模动态调整终端数据队列的数量,调整后更新各数据处理模块对应的队列ID。
本发明实施例通过创新性引入数据接收转发模块,加上自定义算法,将终端与队列、队列与数据处理模块进行匹配,实现终端数据以终端为单位的负载均衡。并且在保证数据处理顺序性的前提下采用并行的软件设计方案,有效提升其性能。还有本发明实施例引入分布式队列后,支持分布式部署。
尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文所述的例示性具体实施和架构的许多其它修改也处于本公开的范围内。
上文参考根据示例性实施方案所述的系统、方法、系统和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。
因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机系统或者专用硬件和计算机指令的组合来实现。
本文所述的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,所述计算机可执行指令响应于执行而使本文所述的功能的至少一部分(例如,本文所述的例示性方法的一种或多种操作)被执行。
软件组件可以用各种编程语言中的任一种来编码。一种例示性编程语言可以为低级编程语言,诸如与特定硬件体系结构和/或操作系统平台相关联的汇编语言。包括汇编语言指令的软件组件可能需要在由硬件架构和/或平台执行之前由汇编程序转换为可执行的机器代码。另一种示例性编程语言可以为更高级的编程语言,其可以跨多种架构移植。包括更高级编程语言的软件组件在执行之前可能需要由解释器或编译器转换为中间表示。编程语言的其它示例包括但不限于宏语言、外壳或命令语言、作业控制语言、脚本语言、数据库查询或搜索语言、或报告编写语言。在一个或多个示例性实施方案中,包含上述编程语言示例中的一者的指令的软件组件可直接由操作系统或其它软件组件执行,而无需首先转换成另一种形式。
软件组件可存储为文件或其它数据存储构造。具有相似类型或相关功能的软件组件可一起存储在诸如特定的目录、文件夹或库中。软件组件可为静态的(例如,预设的或固定的)或动态的(例如,在执行时创建或修改的)。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
机译: 打印顺序系统,打印顺序终端,打印顺序接收终端,打印顺序方法,打印顺序接收方法和记录介质
机译: COPY管理系统,存储客户终端信息处理程序中的计算机可读存储介质,存储管理服务器信息处理程序中的计算机可读存储介质,客户机终端信息处理程序,信息处理服务器管理程序客户终端的方法,信息处理方法和管理服务器的信息处理方法
机译: 服务器,服务器处理方法,终端,终端处理方法,信息处理系统和信息记录介质