一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

工业互联网平台主从节点的数据同步方法及系统与流程

2023-02-19 11:49:01 来源:中国专利 TAG:


1.本发明涉及数据同步技术领域,具体地,涉及一种工业互联网平台主从节点的数据同步方法及系统。


背景技术:

2.随着中国传统制造数字化转型工作的不断推进,越来越多的企业开始搭建工业互联网平台。工业互联网平台的建设对于新一代信息技术与制造业深度融合工作来说,起着至关重要的作用。而传统的制造企业通过在各地都有制造基地,采用的是“一总部,多基地”的协同管理模式,子节点负责生产制造,管理则交由总部节点进行,因此,存在主从节点之间的数据同步要求,工业互联网平台需要解决这种管理模式中的数据同步共享的问题。在工业互联网平台的主从节点数据同步处理过程中,包含大量的工业现场设备采集产生的高频数据,这类工业大数据与普通大数据相比,具有实时性高、数据量大、因果关系强的特点,对比研究现有的传统主从节点数据同步方案,本发明主要解决以下几点问题:
3.传统的关系数据库主从同步方案,一般采用读写分离模式,由主数据库负责数据写入,同步到从数据库中,是单向数据流的同步,而工业场景的“一总部,多基地”的管理模式中,存在部分任务执行数据、业务数据的来源,是从子节点中写入,同步到主节点中的,因此,针对需要支持多个子节点与主节点的数据双向同步的需求,本发明结合kafka消息中间件,设计主从节点之间datareader/datawriter与broker的数据传输架构,并采用附加消息头信息解决数据双向同步中的回环问题,实现“一主多从”节点的数据双向同步效果。
4.针对工业大数据存在采集频率高,数据量大,实时性要求高、关联性强,有明确的先后同步顺序的需求的特点,本发明采用分布式消息队列kafka,通过采用动态连接池管理算法与hash多分区映射结合,实现海量数据的削峰填谷,达到高吞吐量处理的效果,并支持单分区的数据顺序同步,从而解决传统的数据主从同步方案无法满足工业大数据同步要求的问题。
5.专利文献cn106383901a(申请号:cn201610865238.x)公开了一种多数据源之间单向数据同步方法。该专利没有实现节点之间的双向同步功能,也没有考虑到数据之间的顺序同步问题,因此,只适用于普通大数据节点之间的分布式单向同步场景。
6.专利文献cn112417045a(申请号:cn202011314944.8)公开了一种数据库主从节点的数据同步方法和装置。该专利基于日志和缓存技术实现数据库的主从传输,主要适用于离线模式的主从单向同步场景,无法满足工业场景的高频数据同步性能要求,也无法支持“一主多从”节点之间的双向同步场景。
7.专利文献cn110502373a(申请号:cn201910680677.7)公开了一种主从节点数据同步的方法,包括以下步骤:响应于主节点下线,根据复制偏移量在从节点中选择新主节点;新主节点接收从节点发送的同步请求,并检测同步请求中是否存在旧主节点标签或新主节点标签;响应于同步请求中存在旧主节点标签,向从节点返回新主节点标签;以及响应于同步请求中存在新主节点标签,通过增量复制的方式将新主节点上的数据复制到从节点。该
专利无法满足工业场景的高频数据同步性能要求,也无法支持“一主多从”节点之间的双向同步场景。


技术实现要素:

8.针对现有技术中的缺陷,本发明的目的是提供一种工业互联网平台主从节点的数据同步方法和系统。
9.根据本发明提供的工业互联网平台主从节点的数据同步方法,包括总部节点的数据同步到子节点:
10.步骤1:通过外部页面操作,或者系统录入数据到总部节点的数据库中;
11.步骤2:通过datareader对象从总部节点的数据库中拉取数据,并在内存中缓存,或者在硬盘中持久化存储;
12.步骤3:将拉取的数据写入到kafka集群对应的主题topic中;
13.步骤4:各子节点定时拉取写入主题topic中的数据并进行处理;
14.步骤5:将处理完的数据写入到各自节点的数据库中,完成总部节点到子节点的数据同步。
15.优选的,还包括子节点的采集数据同步到总部节点:
16.步骤6:各子节点通过现场的高频采集器,将工业数据采集到本节点的datareader对象中;
17.步骤7:将采集的数据写入到kafka集群对应的主题topic中,并在内存中缓存,或者在硬盘中持久化存储;
18.步骤8:同步总部节点和各子节点的datareader对象,定时拉取写入主题topic中的数据并进行处理;
19.步骤9:将处理完的数据写入到总部节点的数据库中,完成子节点到总部节点的数据同步。
20.优选的,对各节点的数据处理过程采用线程池进行动态管理,根据业务场景对线程设置哈希值,并根据哈希值实时对线程池的使用情况进行监控,若线程耗时超出预设时长,则触发报警,并进行线程池的重新分配计算。
21.优选的,所述线程池重新分配计算包括线程个数调整,公式为:
[0022][0023]
其中:n
thread
为线程调整数;n
cpu
为服务器的cpu核数;u
cpu
为cpu的利用率;wi为运行周期线程i的等待时间,ci为运行周期线程i的计算时间;n为线程个数。
[0024]
优选的,所述线程池重新分配计算包括每个线程分配的内存资源调整,公式为:
[0025]rthread-i
=xi*r
sum
=qi/q
sum
*r
sum
[0026]
其中:r
thread-i
为每个线程调整后的内存资源;xi为运行周期线程i的权重系数,计算公式为:xi=qi/q
sum
,qi表示运行周期线程i处理的消息总数,q
sum
表示对应场景的消息总数;r
sum
为当前场景被分配的总内存资源;n为线程个数。
[0027]
根据本发明提供的工业互联网平台主从节点的数据同步系统,包括总部节点的数据同步到子节点:
[0028]
模块m1:通过外部页面操作,或者系统录入数据到总部节点的数据库中;
[0029]
模块m2:通过datareader对象从总部节点的数据库中拉取数据,并在内存中缓存,或者在硬盘中持久化存储;
[0030]
模块m3:将拉取的数据写入到kafka集群对应的主题topic中;
[0031]
模块m4:各子节点定时拉取写入主题topic中的数据并进行处理;
[0032]
模块m5:将处理完的数据写入到各自节点的数据库中,完成总部节点到子节点的数据同步。
[0033]
优选的,还包括子节点的采集数据同步到总部节点:
[0034]
模块m6:各子节点通过现场的高频采集器,将工业数据采集到本节点的datareader对象中;
[0035]
模块m7:将采集的数据写入到kafka集群对应的主题topic中,并在内存中缓存,或者在硬盘中持久化存储;
[0036]
模块m8:同步总部节点和各子节点的datareader对象,定时拉取写入主题topic中的数据并进行处理;
[0037]
模块m9:将处理完的数据写入到总部节点的数据库中,完成子节点到总部节点的数据同步。
[0038]
优选的,对各节点的数据处理过程采用线程池进行动态管理,根据业务场景对线程设置哈希值,并根据哈希值实时对线程池的使用情况进行监控,若线程耗时超出预设时长,则触发报警,并进行线程池的重新分配计算。
[0039]
优选的,所述线程池重新分配计算包括线程个数调整,公式为:
[0040][0041]
其中:n
thread
为线程调整数;n
cpu
为服务器的cpu核数;u
cpu
为cpu的利用率;wi为运行周期线程i的等待时间,ci为运行周期线程i的计算时间;n为线程个数。
[0042]
优选的,所述线程池重新分配计算包括每个线程分配的内存资源调整,公式为:
[0043]rthread-i
=xi*r
sum
=qi/q
sum
*r
sum
[0044]
其中:r
thread-i
为每个线程调整后的内存资源;xi为运行周期线程i的权重系数,计算公式为:xi=qi/q
sum
,qi表示运行周期线程i处理的消息总数,q
sum
表示对应场景的消息总数;r
sum
为当前场景被分配的总内存资源;n为线程个数。
[0045]
与现有技术相比,本发明具有如下的有益效果:
[0046]
本发明基于kafka分布式消息队列技术,设计了一总部多基地的工业数据双向同步架构,并采用动态线程池管理算法和多分区结合,实现高吞吐量的多线程分区数据顺序传输的效果,能够广泛应用于“一总部,多基地”主从管理模式的工业互联网平台节点数据同步的建设。
附图说明
[0047]
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0048]
图1为一主多从节点的数据同步架构图;
[0049]
图2为单分区多并发的数据消费线程池设计图。
具体实施方式
[0050]
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
[0051]
实施例:
[0052]
针对工业互联网平台“一主多从”节点的数据同步架构,如图1所示,工业企业的“一总部,多基地”主从管理模式的特点之一就是数据来源可以从总部输入,然后同步到各个子节点,也可以从子节点现场的采集器产生,同步到总部节点和其他子节点。
[0053]
总部节点的数据同步到子节点的步骤在图中以m开头,具体描述如下:
[0054]
步骤m1:通过外部页面操作、或者系统录入数据到总部节点的数据库中;
[0055]
步骤m2:datareader从数据中拉取数据,并在内存中缓存,也可以在硬盘中持久化存储;
[0056]
步骤m3:datareader作为本节点中kafka集群的生产者,将消息写入到kafka对应的topic中;
[0057]
步骤m4-1、m4-2:各个基地子节点,datawriter作为kafka topic的订阅者,定时批量拉取消息并进行处理;
[0058]
步骤m5-1、m5-2:datawriter将处理完的数据写入到本节点的数据库中,流程结束。
[0059]
子节点的采集数据同步到总部节点的步骤在图中以s开头,图1中以基地a为例,具体描述如下:
[0060]
步骤s1-1、s1-2:通过现场的高频采集器,将工业数据采集到本节点的datareader中;
[0061]
步骤s2:datareader在内存中缓存,也可以在硬盘中持久化存储,作为本节点中kafka集群的生产者,将消息写入到kafka对应的topic中;
[0062]
步骤s3-1、s3-2:同步节点和其他基地子节点的datawriter,作为基地a的kafka topic的订阅者,定时批量拉取消息并进行处理;
[0063]
步骤s4-1、s4-2:datawriter将处理完的数据写入到本节点的数据库中,流程结束。
[0064]
所述步骤s4-1中,存在数据回环的问题,所谓数据回环,指在数据双向同步过程中,数据由发送方同步到目标地址之后,目标监听程序获得数据,又把数据发回给发送方,从而导致无限循环的问题,本发明在数据形成消息的过程中,加入一个附加消息头的信息,具体格式如下:
[0065]
{
[0066]
"send_node":"基地a",
[0067]
"send_type":"子节点",
[0068]
"send_idc":"消息服务器",
[0069]
"send_msg_id":"消息id",
[0070]
"send_msg_body":{************}
[0071]
}
[0072]
当基地a往总部同步数据时,总部的datareader可以根据消息头中记录的信息,判断这个记录原本就是基地a产生的,进行抛弃,通过这种方式来避免数据回环。
[0073]
由于kafka存在每个分区只能由同一个group中的同一个consumer消费的限制,步骤m4-1、m4-2、s3-1、s3-2中的datawriter,需要进行单分区支持多线程访问的改造,以解决工业高频数据处理的性能问题,并且能根据业务计算不同的hash,支持单个线程实现顺序消息的访问效果,实现如图2所示,具体描述如下:
[0074]
步骤1:消费者群组a1、a2采用线程池动态管理,设置多线程连接初始化;
[0075]
步骤2:kafka节点brokera的分区中,根据业务场景,将同一个分区中具有顺序要求的消息,设置为相同的hashkey值;
[0076]
步骤3:消费者群组进行多线程的拉取消费,设置单个线程访问拉取的key值的消息,不同线程拉取不同的key值消息,确保在不打乱消息顺序的前提下,使用消息key的特性支持并发消费;
[0077]
步骤4:线程监控/告警服务实时对线程池的使用情况进行监控,如果出现某个key的消息线程耗时过长,导致分区消息堆积,则触发报警;
[0078]
步骤5:接受到报警后,线程池动态管理等该消费组的线程消息都处理后,进行线程池的重新分配计算;
[0079]
步骤6:在拉取的消息消费完成之后,手动提交位移,流程完毕。
[0080]
所属步骤5的线程池重新分配计算,主要涉及线程个数的调整,以及每个线程分配的内存资源调整,具体方法描述如下:
[0081]
步骤5.1:设置服务器的cpu核数n
cpu

[0082]
步骤5.2:设置cpu的利用率u
cpu

[0083]
步骤5.3:设置上个运行周期线程i的等待时间为wi,上个运行周期线程i的计算时间为ci;
[0084]
步骤5.4:设置权重系数为xi,该值的计算方法为:xi=qi/q
sum
,qi表示上个运行周期线程i处理的消息总数,q
sum
表示对应分区的消息总数;
[0085]
步骤5.5:设置当前消费者群组被分配的总内存资源为r
sum

[0086]
步骤5.6:线程数调整的计算公式为:
[0087]
步骤5.7:线程资源调整的计算公式为:r
thread-i
=xi*r
sum
=qi/q
sum
*r
sum

[0088]
根据本发明提供的工业互联网平台主从节点的数据同步系统,包括总部节点的数据同步到子节点:模块m1:通过外部页面操作,或者系统录入数据到总部节点的数据库中;模块m2:通过datareader对象从总部节点的数据库中拉取数据,并在内存中缓存,或者在硬盘中持久化存储;模块m3:将拉取的数据写入到kafka集群对应的主题topic中;模块m4:各子节点定时拉取写入主题topic中的数据并进行处理;模块m5:将处理完的数据写入到各自节点的数据库中,完成总部节点到子节点的数据同步。
[0089]
还包括子节点的采集数据同步到总部节点:模块m6:各子节点通过现场的高频采
集器,将工业数据采集到本节点的datareader对象中;模块m7:将采集的数据写入到kafka集群对应的主题topic中,并在内存中缓存,或者在硬盘中持久化存储;模块m8:同步总部节点和各子节点的datareader对象,定时拉取写入主题topic中的数据并进行处理;模块m9:将处理完的数据写入到总部节点的数据库中,完成子节点到总部节点的数据同步。
[0090]
对各节点的数据处理过程采用线程池进行动态管理,根据业务场景对线程设置哈希值,并根据哈希值实时对线程池的使用情况进行监控,若线程耗时超出预设时长,则触发报警,并进行线程池的重新分配计算。
[0091]
所述线程池重新分配计算包括线程个数调整,公式为:
[0092][0093]
其中:n
thread
为线程调整数;n
cpu
为服务器的cpu核数;u
cpu
为cpu的利用率;wi为运行周期线程i的等待时间,ci为运行周期线程i的计算时间;n为线程个数。
[0094]
所述线程池重新分配计算包括每个线程分配的内存资源调整,公式为:
[0095]rthread-i
=xi*r
sum
=qi/q
sum
*r
sum
[0096]
其中:r
thread-i
为每个线程调整后的内存资源;xi为运行周期线程i的权重系数,计算公式为:xi=qi/q
sum
,qi表示运行周期线程i处理的消息总数,q
sum
表示对应场景的消息总数;r
sum
为当前场景被分配的总内存资源;n为线程个数。
[0097]
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
[0098]
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献