基于消息队列的数据异步更新方法及装置
技术领域
本发明涉及数据处理领域,尤其涉及一种基于消息队列的数据异步更新方法及装置。
背景技术
当前,用户数量庞大的领域(如电网领域等)每天均会产生大量的数据,这些数据包括但不限于提交的数据、需要修改的数据以及自动采集到的数据,且相关人员也可以根据实际需求主动访问新产生的数据或者通过订阅的方式实时获取新产生的数据。
在实际应用中,对于新产生的数据而言,需要等其被成功写入数据库并被加载到缓存之后才能被获取。然而实践发现,数据被写入数据库的过程较为缓慢,相关人员使用相关终端(如建模客户端)在进行数据更新时存在卡顿的现象,此外,由于数据被写入数据库并将数据读取到缓存的过程中会频繁读写数据库,降低了数据库的性能,进一步会导致在进行数据更新时存在操作不流畅的现象,不利于提高数据更新效率。
发明内容
本发明所要解决的技术问题在于,提供一种基于消息队列的数据异步更新方法及装置,能够在数据更新时减少卡顿现象,提高数据更新效率。
为了解决上述技术问题,本发明第一方面公开了一种基于消息队列的数据异步更新方法,所述方法包括:
建模服务模块接收数据更新指令,并根据所述数据更新指令确定需要更新的初始数据;
消息服务模块将根据所述初始数据确定出的目标数据写入第一消息队列中;
缓存服务模块从所述第一消息队列中读取所述目标数据,并将从所述第一消息队列中读取的所述目标数据加载到预先确定出的内存中,加载至所述内存的数据用于发布至展示终端处进行展示;
写库服务模块从所述第一消息队列中读取所述目标数据,并将从所述第一消息队列中读取到的所述目标数据写入对应的数据库中。
作为一种可选的实施方式,在本发明第一方面中,所述消息服务模块将根据所述初始数据确定出的目标数据写入第一消息队列中,包括:
对所述建模服务模块确定出的所述初始数据执行预处理操作,得到需要更新的目标数据,并将所述目标数据写入第一消息队列中;
其中,所述预处理操作包括数据校验操作、数据合并操作以及数据锁定操作中的至少一种。
作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
撤销重做服务模块构造所述目标数据对应的撤回消息,并将所述目标数据对应的撤回消息写入预先生成的快照表中。
作为一种可选的实施方式,在本发明第一方面中,所述消息服务模块将根据所述初始数据确定出的目标数据写入第一消息队列中之后,所述方法还包括:
所述消息服务模块向所述缓存服务模块和/或所述写库服务模块发送数据更新提示,以提示当前存在需要更新的数据;
以及,所述缓存服务模块从所述第一消息队列中读取所述目标数据,并将从所述第一消息队列中读取的所述目标数据加载到预先确定出的内存中之后,所述方法还包括:
所述缓存服务模块以矢量切片的形式发布所述目标数据。
作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
所述撤销重做服务模块接收撤销重做指令,根据所述撤销重做指令从所述快照表中读取历史产生的撤销重置数据,并将所述撤销重置数据发送至所述消息服务模块;
所述消息服务模块根据所述撤销重置数据确定待变更数据,并将所述待变更数据写入第二消息队列中;
所述缓存服务模块读取所述第二消息队列中的所述待变更数据,将从所述第二消息队列中读取到的所述待变更数据增量加载至相应内存中,并以矢量切片的形式发布所述待变更数据;
所述写库服务模块读取所述第二消息队列中的所述待变更数据,并将所述待变更数据写入所述数据库中。
作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
工单竣工服务模块接收外部服务发送的工单竣工指令,根据所述工单竣工指令调用竣工脚本操作所述数据库以将对应的工单数据竣工至运行态,并将第一工单竣工消息发送至所述消息服务模块;
所述消息服务模块将所述第一工单竣工消息写入第三消息队列中;
所述缓存服务模块读取所述第三消息队列中的所述第一工单竣工信息,从所述数据库中加载所述第一工单竣工信息所对应的第一工单竣工数据,并以矢量切片的形式发布所述第一工单竣工数据。
作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
数据同步服务模块执行工单竣工数据同步操作,在接收到同步完成指示消息之后向工单竣工服务模块发送第二工单竣工信息;
所述工单竣工服务模块将所述第二工单竣工消息发送至所述消息服务模块;
所述消息服务模块将所述第二工单竣工信息写入第四消息队列中;
所述缓存服务模块读取所述第四消息队列中的所述第二工单竣工信息,从所述数据库中加载所述第二工单竣工信息所对应的第二工单竣工数据,并以矢量切片的形式发布所述第二工单竣工数据。
作为一种可选的实施方式,在本发明第一方面中,所述撤销重做服务模块构造所述目标数据对应的撤回消息,并将所述目标数据对应的撤回消息写入预先生成的快照表中之前,所述方法还包括:
撤回重做服务模块确定所述目标数据对应的目标信息,并根据所述目标信息判断所述目标数据是否满足撤回重做条件;
当判断出所述目标数据满足所述撤回重做条件时,所述撤回重做服务模块执行所述的构造所述目标数据对应的撤回消息,并将所述目标数据对应的撤回消息写入预先生成的快照表中的操作。
作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
流畅度处理模块获取至少两个目标服务模块在所述目标数据更新过程中的处理时长;
所述流畅度处理模块根据每个所述服务模块在所述目标数据更新过程中的处理时长以及每个所述服务模块在所述目标数据更新过程中的影响程度,计算所述目标数据的更新流畅度;
所述流畅度处理模块判断所述目标数据的更新流畅度是否满足预先设定的更新流畅条件,当判断出所述目标数据的更新流畅度满足所述更新流畅条件时,生成所述目标数据对应的更新流程表并为所述更新流程表设定所述目标数据的数据属性。
本发明第二方面公开了基于消息队列的数据异步更新装置,所述装置包括建模服务模块、消息服务模块、缓存服务模块以及写库服务模块,其中:
所述建模服务模块,用于接收数据更新指令,并根据所述数据更新指令确定需要更新的初始数据;
所述消息服务模块,用于将根据所述初始数据确定出的目标数据写入第一消息队列中;
所述缓存服务模块,用于从所述第一消息队列中读取所述目标数据,并将从所述第一消息队列中读取的所述目标数据加载到预先确定出的内存中,加载至所述内存的数据用于发布至展示终端处进行展示;
所述写库服务模块,用于从所述第一消息队列中读取所述目标数据,并将从所述第一消息队列中读取到的所述目标数据写入对应的数据库中。
作为一种可选的实施方式,在本发明第二方面中,所述消息服务模块将根据所述初始数据确定出的目标数据写入第一消息队列中的具体方式包括:
对所述建模服务模块确定出的所述初始数据执行预处理操作,得到需要更新的目标数据,并将所述目标数据写入第一消息队列中;
其中,所述预处理操作包括数据校验操作、数据合并操作以及数据锁定操作中的至少一种。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括撤销重做服务模块,其中:
所述撤销重做服务模块,用于构造所述目标数据对应的撤回消息,并将所述目标数据对应的撤回消息写入预先生成的快照表中。
作为一种可选的实施方式,在本发明第二方面中,所述消息服务模块,还用于在将根据所述初始数据确定出的目标数据写入第一消息队列中之后,向所述缓存服务模块和/或所述写库服务模块发送数据更新提示,以提示当前存在需要更新的数据;
以及,所述缓存服务模块,还用于在从所述第一消息队列中读取所述目标数据,并将从所述第一消息队列中读取的所述目标数据加载到预先确定出的内存中之后,以矢量切片的形式发布所述目标数据。
作为一种可选的实施方式,在本发明第二方面中,所述撤销重做服务模块,还用于接收撤销重做指令,根据所述撤销重做指令从所述快照表中读取历史产生的撤销重置数据,并将所述撤销重置数据发送至所述消息服务模块;
所述消息服务模块,还用于根据所述撤销重置数据确定待变更数据,并将所述待变更数据写入第二消息队列中;
所述缓存服务模块,还用于读取所述第二消息队列中的所述待变更数据,将从所述第二消息队列中读取到的所述待变更数据增量加载至相应内存中,并以矢量切片的形式发布所述待变更数据;
所述写库服务模块,还用于读取所述第二消息队列中的所述待变更数据,并将所述待变更数据写入所述数据库中。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括工单竣工服务模块,其中:
所述工单竣工服务模块,用于接收外部服务发送的工单竣工指令,根据所述工单竣工指令调用竣工脚本操作所述数据库以将对应的工单数据竣工至运行态,并将第一工单竣工消息发送至所述消息服务模块;
所述消息服务模块,还用于将所述第一工单竣工消息写入第三消息队列中;
所述缓存服务模块,还用于读取所述第三消息队列中的所述第一工单竣工信息,从所述数据库中加载所述第一工单竣工信息所对应的第一工单竣工数据,并以矢量切片的形式发布所述第一工单竣工数据。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括数据同步服务模块,其中:
所述数据同步服务模块,用于执行工单竣工数据同步操作,在接收到同步完成指示消息之后向工单竣工服务模块发送第二工单竣工信息;
所述工单竣工服务模块,用于将所述第二工单竣工消息发送至所述消息服务模块;
所述消息服务模块,还用于将所述第二工单竣工信息写入第四消息队列中;
所述缓存服务模块,还用于读取所述第四消息队列中的所述第二工单竣工信息,从所述数据库中加载所述第二工单竣工信息所对应的第二工单竣工数据,并以矢量切片的形式发布所述第二工单竣工数据。
作为一种可选的实施方式,在本发明第二方面中,所述撤回重做服务模块,还用于在构造所述目标数据对应的撤回消息,并将所述目标数据对应的撤回消息写入预先生成的快照表中之前,确定所述目标数据对应的目标信息,并根据所述目标信息判断所述目标数据是否满足撤回重做条件,当判断出所述目标数据满足所述撤回重做条件时,触发执行所述的构造所述目标数据对应的撤回消息,并将所述目标数据对应的撤回消息写入预先生成的快照表中的操作。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括流畅度处理模块,其中:
所述流畅度处理模块,用于获取至少两个目标服务模块在所述目标数据更新过程中的处理时长;
所述流畅度处理模块,还用于根据每个所述服务模块在所述目标数据更新过程中的处理时长以及每个所述服务模块在所述目标数据更新过程中的影响程度,计算所述目标数据的更新流畅度;
所述流畅度处理模块,还用于判断所述目标数据的更新流畅度是否满足预先设定的更新流畅条件,当判断出所述目标数据的更新流畅度满足所述更新流畅条件时,生成所述目标数据对应的更新流程表并为所述更新流程表设定所述目标数据的数据属性。
本发明第三方面公开了另一种基于消息队列的数据异步更新装置,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明第一方面公开的基于消息队列的数据异步更新方法中的部分或全部步骤。
本发明第四方面公开了一种计算机可存储介质,所述计算机可存储介质存储有计算机指令,所述计算机指令被调用时,用于执行本发明第一方面公开的基于消息队列的数据异步更新方法中的部分或全部步骤。
与现有技术相比,本发明实施例具有以下有益效果:
建模服务模块根据数据更新指令确定需要更新的初始数据;消息服务模块将由初始数据确定出的目标数据写入第一消息队列中;缓存服务模块从第一消息队列中读取目标数据并将其加载到内存中,被加载到内存的数据用于发布;写库服务模块将从第一消息队列中读取的目标数据写入数据库。可见,本发明能够通过消息队列接收数据并持久化存储到本地,避免了数据先写入数据库的过程,还将数据推送至缓存服务并由缓存服务发布,减少了直接从数据库读取数据的过程,最后由写库服务异步将数据写入数据库,减少写入数据库的数据量,基于以上模式,数据库能够跳出增量数据的产生、发布流程,这样能够增加相应终端(如建模客户端)在数据更新过程中的流畅度,在降低数据库读写压力的同时,减少数据更新时的卡顿现象,提高数据更新效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种基于消息队列的数据异步更新方法所适用架构的架构示意图;
图2是本发明实施例公开的一种基于消息队列的数据异步更新方法的流程示意图;
图3是本发明实施例公开的一种基于消息队列的撤销重做方法的流程示意图;
图4是本发明实施例公开的一种基于消息队列的工单竣工方法的流程示意图;
图5是本发明实施例公开的一种基于消息队列的数据同步方法的流程示意图;
图6是本发明实施例公开的一种基于消息队列的数据异步更新装置的结构示意图;
图7是本发明实施例公开的另一种基于消息队列的数据异步更新装置的结构示意图;
图8是奔发明实施例公开的又一种基于消息队列的数据异步更新装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或端没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或端固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明公开了一种基于消息队列的数据异步更新方法及装置,能够通过消息队列接收数据并持久化存储到本地,避免了数据先写入数据库的过程,还将数据推送至缓存服务并由缓存服务发布,减少了直接从数据库读取数据的过程,最后由写库服务异步将数据写入数据库,减少写入数据库的数据量,基于以上模式,数据库能够跳出增量数据的产生、发布流程,这样能够增加相应终端(如建模客户端)在数据更新过程中的流畅度,在降低数据库读写压力的同时,减少数据更新时的卡顿现象,提高数据更新效率。以下分别进行详细说明。
为了更好的了解本发明所描述的基于消息队列的数据异步更新方法及装置,首先对本发明描述的方法所适用的架构进行描述,具体的架构可以如图1所示,图1是本发明实施例公开的一种基于消息队列的数据异步更新方法所适用架构的架构示意图。如图1所示,该架构可以至少包括应用服务端,进一步的,还可以包括用户终端(如客户端)和/或数据服务端,其中,客户端可以为建模客户端,负责前端操作和查看;应用服务端包括建模服务、撤销重做服务、缓存服务、工单竣工服务、消息服务、消息队列、写库服务和数据同步服务,负责数据更新指令(如编辑设备指令)的处理、工单竣工指令的处理、撤销重做指令的处理以及撤销重做数据的生成、增量数据的写库以及最新数据的发布等;数据服务端负责执行数据入库指令以及向数据服务提供全量数据。其中,DB1和DB2为两个示例性的数据库。
进一步的,建模客户端可以包含电网设备建模功能和图形化展示电网数据的功能,其依靠应用服务端所提供的建模服务、撤销重做服务、缓存服务的功能实现电网数据的编辑以及电网数据的展示。
可见,图1所描述的架构能够在相关人员在前端操作数据时,通过服务在内存中进行计算得到结果并将计算得到的结果写入持久化数据库时,可同步写入缓存区,保证缓存区与物理数据库中的数据一致,且操作界面所需获取的数据直接从缓存区获取,减少由物理数据库至缓存区的步骤,提升前端操作界面展示最新数据的响应时间,进而有利于提高相关人员获取最新数据的效率。更为具体的流程、功能结构,分别通过以下实施例进行详细说明。
实施例一
请参阅图2,图2是本发明实施例公开的一种基于消息队列的数据异步更新方法的流程示意图。其中,图2所描述的方法可以应用于应用服务端中,且该应用服务端可以至少包括建模服务模块、消息服务模块、缓存服务模块以及写库服务模块,本发明实施例不做限定。如图2所示,该基于消息队列的数据异步更新方法可以包括以下操作:
201、建模服务模块接收数据更新指令,并根据数据更新指令确定需要更新的初始数据。
本发明实施例中,该数据更新指令可以具体为编辑设备指令,其具体是用户使用建模客户端触发编辑设备操作之后生成的,由建模客户端将生成的编辑设备指令发送至建模服务模块。具体的,建模服务模块在接收到编辑设备指令后响应编辑设备操作,生成变更设备数据作为需要更新的初始数据,并将需要更新的初始数据发送至消息服务模块。
202、消息服务模块将根据初始数据确定出的目标数据写入第一消息队列中。
可选的,在目标数据写入第一消息队列之后,消息服务模块可以向建模客户端发送用于表示更新的数据已写入完成的通知消息。
203、缓存服务模块从第一消息队列中读取目标数据,并将从第一消息队列中读取的目标数据加载到预先确定出的内存中,加载至内存的数据用于发布至展示终端处进行展示。
可选的,加载至内存的数据(也即最新电网数据)能够具体由缓存服务模块以矢量切片的形式发布。
204、写库服务模块从第一消息队列中读取目标数据,并将从第一消息队列中读取到的目标数据写入对应的数据库中。
可选的,写库服务模块从第一消息队列中读取目标数据之后可以对目标数据进行数据校验,校验通过之后再写入对应的数据库,有利于提高写入数据库的数据的安全性及有效性。
可见,实施图1所描述的方法能够通过消息队列接收数据并持久化存储到本地,避免了数据先写入数据库的过程,还将数据推送至缓存服务并由缓存服务发布,减少了直接从数据库读取数据的过程,最后由写库服务异步将数据写入数据库,减少写入数据库的数据量,基于以上模式,数据库能够跳出增量数据的产生、发布流程,这样能够增加相应终端(如建模客户端)在数据更新过程中的流畅度,在降低数据库读写压力的同时,减少数据更新时的卡顿现象,提高数据更新效率。
在一个可选的实施例中,消息服务模块将根据初始数据确定出的目标数据写入第一消息队列中,包括:
对建模服务模块确定出的初始数据执行预处理操作,得到需要更新的目标数据,并将目标数据写入第一消息队列中。
其中,预处理操作可以包括数据校验操作、数据合并操作以及数据锁定操作中的至少一种。
可见,该可选的实施例在将需要更新的数据写入消息队列之前,执行数据校验操作能够提高写入消息队列的数据的准确性,执行数据合并操作能够减少写入消息队列的数据量,执行数据锁定操作能够提高写入消息队列的数据的准确性及效率。
在另一个可选的实施例中,该方法还可以包括以下操作:
撤销重做服务模块构造目标数据对应的撤回消息,并将目标数据对应的撤回消息写入预先生成的快照表中。
进一步可选的,消息服务模块将根据初始数据确定出的目标数据写入第一消息队列中之后,还可以向撤销重做服务模块发送提示消息,以提示当前存在需要更新的数据,进而有利于撤销重做服务模块及时、快速的构造相应的撤回消息。
可见,该可选的实施例能够在需要更新的数据被写入消息队列之后,由撤销重做服务模块构造对应的撤回(Undo)消息,进而能够为快速响应用户通过建模客户端触发的撤回重做指令做准备。
在又一个可选的实施例中,消息服务模块将根据初始数据确定出的目标数据写入第一消息队列中之后,该方法还包括以下操作:
消息服务模块向缓存服务模块和/或写库服务模块发送数据更新提示,以提示当前存在需要更新的数据。
在其它可选的实施例中,数据更新提示也可以由消息队列直接发送至缓存服务模块和/或写库服务模块。
可见,该可选的实施例还能够在消息服务模块将根据初始数据确定出的目标数据写入第一消息队列中之后,向缓存服务模块和/或写库服务模块发送更新提示,以提高缓存服务模块和/或写库服务模块的响应速度。
在又一个可选的实施例中,该方法还可以包括以下操作:
从第一消息队列中读取目标数据,并将从第一消息队列中读取的目标数据加载到预先确定出的内存中之后,该方法还可以包括以下操作:
缓存服务模块以矢量切片的形式发布目标数据。
可见,该可选的实施例可以直接由缓存服务模块发布最新数据,减少了直接从数据库读取数据的过程,在降低数据库读写压力的同时,提高发布最新数据的响应时间。
又进一步可选的,该方法还可以包括基于消息队列的撤销重做流程、基于消息队列的工单竣工流程以及基于消息队列的数据同步流程中的至少一种,本发明实施例不做限定。具体的,基于消息队列的撤销重做流程、基于消息队列的工单竣工流程、基于消息队列的数据同步流程可以具体分别参照实施例二~实施例四的详细描述。需要说明的是,基于消息队列的撤销重做流程、基于消息队列的工单竣工流程、基于消息队列的数据同步流程也可以分别作为单独的实施例布局。
在又一个可选的实施例中,撤销重做服务模块构造目标数据对应的撤回消息,并将目标数据对应的撤回消息写入预先生成的快照表中之前,该方法还可以包括以下操作:
撤回重做服务模块确定目标数据对应的目标信息,并根据目标信息判断目标数据是否满足撤回重做条件;
当判断出目标数据满足撤回重做条件时,撤回重做服务模块执行上述的构造目标数据对应的撤回消息,并将目标数据对应的撤回消息写入预先生成的快照表中的操作。
可选的,目标数据对应的目标信息可以包括触发目标数据更新的触发人员信息、目标数据的重要等级、目标数据的紧急程度、目标数据的历史更新次数、目标数据的安全等级等中的一种或多种的组合。
可见,该可选的实施例还能够在更新数据写入消息队列之后以及构造相应的撤回消息之前,智能化的判断目标数据是否满足撤回重做条件,若满足,则再构造撤回消息,能够减少撤回重做服务模块不必要的撤回消息构造操作。
在又一个可选的实施例中,该方法还可以包括以下操作:
流畅度处理模块获取至少两个目标服务模块在目标数据更新过程中的处理时长;
流畅度处理模块根据每个服务模块在目标数据更新过程中的处理时长以及每个服务模块在目标数据更新过程中的影响程度,计算目标数据的更新流畅度;
流畅度处理模块判断目标数据的更新流畅度是否满足预先设定的更新流畅条件,当判断出目标数据的更新流畅度满足更新流畅条件时,生成目标数据对应的更新流程表并为更新流程表设定目标数据的数据属性。
可见,该可选的实施例还能够在数据更新之后根据每个服务模块在数据更新过程中的处理时长以及每个服务模块在数据更新过程中的影响程度综合性的计算本次更新数据的更新流畅度,有利于提高计算出的更新流畅度的准确性。此外,还能够在判断出本次更新数据的更新流畅度满足更新流畅条件时,生成相应的更新流程表并为更新流程表设定目标数据的数据属性,以便于为其它相同或相似属性的数据在更新时提供更新流程依据,进而提高其它相同或相似属性的数据在更新时的更新流畅度。
实施例二
请参阅图3,图3是本发明实施例公开的一种基于消息队列的撤销重做方法的流程示意图。其中,图3所描述的方法可以应用于应用服务端中,且该应用服务端可以至少包括撤销重做服务模块、消息服务模块、缓存服务模块以及写库服务模块,进一步的,还可以包括建模服务模块和/或流畅度处理模块,本发明实施例不做限定。如图3所示,该基于消息队列的撤销重做方法可以包括以下操作:
301、撤销重做服务模块接收撤销重做指令,根据撤销重做指令从快照表中读取历史产生的撤销重置数据,并将撤销重置数据发送至消息服务模块。
本发明实施例中,撤销重做指令可以是用户在触发数据更新指令之后根据实际需求通过建模客户端触发的。
302、消息服务模块根据撤销重置数据确定待变更数据,并将待变更数据写入第二消息队列中。
可选的,消息服务模块根据撤销重置数据确定待变更数据,可以包括:
消息服务模块对撤销重置数据执行相应的预处理操作,得到待变更数据。
可选的,该预处理操作可以具体包括数据校验操作、数据合并操作以及数据锁定/解锁操作等中的一种或多种的组合。
可选的,消息服务模块将待变更数据写入第二消息队列中之后向建模客户端反馈数据写入完成通知消息。
可选的,消息服务模块将待变更数据写入第二消息队列中之后,还可以向缓存服务模块和/或写库服务模块发送数据更新提示。
在其它可选的实施例中,数据更新提示也可以由消息队列直接发送至缓存服务模块和/或写库服务模块。
303、缓存服务模块读取第二消息队列中的待变更数据,将从第二消息队列中读取到的待变更数据增量加载至相应内存中,并以矢量切片的形式发布待变更数据。
304、写库服务模块读取第二消息队列中的待变更数据,并将待变更数据写入数据库中。
可选的,写库服务模块读取第二消息队列中的待变更数据之后,可以先对待变更数据进行校验,校验通过之后写入数据库。
需要说明的是,针对消息服务模块、缓存服务模块、写库服务模块、建模服务模块、流畅度处理模块的其它描述请参照实施例一中的详细描述,本发明实施例不再赘述。
可见,实施本发明实施例所描述的方法能够提供数据撤销重做服务,以便于相关人员根据实际需求通过建模客户端触发撤销重做指令,且预先生成的快照表能够提高针对撤销重做指令的响应速度。
实施例三
请参阅图4,图4是本发明实施例公开的一种基于消息队列的工单竣工方法的流程示意图。其中,图4所描述的方法可以应用于应用服务端中,且该应用服务端可以至少包括工单竣工服务模块、消息服务模块、缓存服务模块以及写库服务模块,进一步的,还可以包括建模服务模块、撤销重做服务模块以及流畅度处理模块中的至少一种,本发明实施例不做限定。如图4所示,该基于消息队列的工单竣工方法可以包括以下操作:
401、工单竣工服务模块接收外部服务发送的工单竣工指令,根据工单竣工指令调用竣工脚本操作数据库以将对应的工单数据竣工至运行态,并将第一工单竣工消息发送至消息服务模块。
本发明实施例中,工单竣工服务模块根据工单竣工指令调用竣工脚本操作数据库以将对应的工单数据竣工至运行态,进而解除锁定编辑设备指令所锁定的数据。
402、消息服务模块将第一工单竣工消息写入第三消息队列中。
可选的,消息服务模块将第一工单竣工消息写入第三消息队列中之后,还可以通知缓存服务模块。在其它可选的实施例中,消息服务模块将第一工单竣工消息写入第三消息队列中之后,也可以由消息队列直接通知缓存服务模块。
403、缓存服务模块读取第三消息队列中的第一工单竣工信息,从数据库中加载第一工单竣工信息所对应的第一工单竣工数据,并以矢量切片的形式发布第一工单竣工数据。
可选的,工单竣工服务模块还可以向外部服务反馈竣工完成提示。
需要说明的是,针对消息服务模块、缓存服务模块、写库服务模块、建模服务模块、流畅度处理模块的其它描述请参照实施例一中的详细描述,本发明实施例不再赘述。
可见,实施本发明实施例所描述的方法提供了基于消息队列的工单竣工服务,不仅丰富了应用服务端的功能,还能够实现对外部服务的快速、准确的响应。
实施例四
请参阅图5,图5是本发明实施例公开的一种基于消息队列的数据同步方法的流程示意图。其中,图5所描述的方法可以应用于应用服务端中,且该应用服务端可以至少包括数据同步服务模块、工单竣工服务模块、消息服务模块、缓存服务模块以及写库服务模块,进一步的,还可以包括建模服务模块、撤销重做服务模块以及流畅度处理模块中的至少一种,本发明实施例不做限定。如图5所示,该基于消息队列的数据同步方法可以包括以下操作:
501、数据同步服务模块执行工单竣工数据同步操作,在接收到同步完成指示消息之后向工单竣工服务模块发送第二工单竣工信息。
502、工单竣工服务模块将第二工单竣工消息发送至消息服务模块。
503、消息服务模块将第二工单竣工信息写入第四消息队列中。
504、缓存服务模块读取第四消息队列中的第二工单竣工信息,从数据库中加载第二工单竣工信息所对应的第二工单竣工数据,并以矢量切片的形式发布第二工单竣工数据。
需要说明的是,针对消息服务模块、缓存服务模块、写库服务模块、建模服务模块、流畅度处理模块的其它描述请参照实施例一中的详细描述,本发明实施例不再赘述。
可见,实施本发明实施例所描述的方法提供了基于消息队列的数据同步服务,不仅丰富了应用服务端的功能,还能够实现数据库之间工单竣工数据的同步,保证了数据库间工单竣工数据的一致性。
实施例五
请参阅图6,图6是本发明实施例公开的一种基于消息队列的数据异步更新装置的结构示意图。其中,图6所描述的装置可以应用于应用服务端中。如图6所示,该装置可以包括:
建模服务模块601,用于接收数据更新指令,并根据数据更新指令确定需要更新的初始数据;
消息服务模块602,用于将根据初始数据确定出的目标数据写入第一消息队列中;
缓存服务模块603,用于从第一消息队列中读取目标数据,并将从第一消息队列中读取的目标数据加载到预先确定出的内存中,加载至内存的数据用于发布至展示终端处进行展示;
写库服务模块604,用于从第一消息队列中读取目标数据,并将从第一消息队列中读取到的目标数据写入对应的数据库中。
可见,实施图6所描述的装置能够通过消息队列接收数据并持久化存储到本地,避免了数据先写入数据库的过程,还将数据推送至缓存服务并由缓存服务发布,减少了直接从数据库读取数据的过程,最后由写库服务异步将数据写入数据库,减少写入数据库的数据量,基于以上模式,数据库能够跳出增量数据的产生、发布流程,这样能够增加相应终端(如建模客户端)在数据更新过程中的流畅度,在降低数据库读写压力的同时,减少数据更新时的卡顿现象,提高数据更新效率。
在一个可选的实施例中,消息服务模块602将根据初始数据确定出的目标数据写入第一消息队列中的具体方式包括:
对建模服务模块601确定出的初始数据执行预处理操作,得到需要更新的目标数据,并将目标数据写入第一消息队列中。
其中,预处理操作包括数据校验操作、数据合并操作以及数据锁定操作中的至少一种。
可见,该可选的实施例在将需要更新的数据写入消息队列之前,执行数据校验操作能够提高写入消息队列的数据的准确性,执行数据合并操作能够减少写入消息队列的数据量,执行数据锁定操作能够提高写入消息队列的数据的准确性及效率。
在另一个可选的实施例中,如图7所示,该装置还可以包括:
撤销重做服务模块605,用于构造目标数据对应的撤回消息,并将目标数据对应的撤回消息写入预先生成的快照表中。
可见,该可选的实施例能够在需要更新的数据被写入消息队列之后,由撤销重做服务模块构造对应的撤回(Undo)消息,进而能够为快速响应用户通过建模客户端触发的撤回重做指令做准备。
在又一个可选的实施例中,消息服务模块602,还用于在将根据初始数据确定出的目标数据写入第一消息队列中之后,向缓存服务模块603和/或写库服务模块604发送数据更新提示,以提示当前存在需要更新的数据。
可见,该可选的实施例还能够在消息服务模块将根据初始数据确定出的目标数据写入第一消息队列中之后,向缓存服务模块和/或写库服务模块发送更新提示,以提高缓存服务模块和/或写库服务模块的响应速度。
在又一个可选的实施例中,缓存服务模块603,还用于在从第一消息队列中读取目标数据,并将从第一消息队列中读取的目标数据加载到预先确定出的内存中之后,以矢量切片的形式发布目标数据。
可见,该可选的实施例可以直接由缓存服务模块发布最新数据,减少了直接从数据库读取数据的过程,在降低数据库读写压力的同时,提高发布最新数据的响应时间。
在又一个可选的实施例中,撤销重做服务模块605,还用于接收撤销重做指令,根据撤销重做指令从快照表中读取历史产生的撤销重置数据,并将撤销重置数据发送至消息服务模块602;
消息服务模块602,还用于根据撤销重置数据确定待变更数据,并将待变更数据写入第二消息队列中;
缓存服务模块603,还用于读取第二消息队列中的待变更数据,将从第二消息队列中读取到的待变更数据增量加载至相应内存中,并以矢量切片的形式发布待变更数据;
写库服务模块604,还用于读取第二消息队列中的待变更数据,并将待变更数据写入数据库中。
可见,该可选的实施例还能够提供数据撤销重做服务,以便于相关人员根据实际需求通过建模客户端触发撤销重做指令,且预先生成的快照表能够提高针对撤销重做指令的响应速度。
在又一个可选的实施例中,如图7所示,该装置还可以包括:
工单竣工服务模块606,用于接收外部服务发送的工单竣工指令,根据工单竣工指令调用竣工脚本操作数据库以将对应的工单数据竣工至运行态,并将第一工单竣工消息发送至消息服务模块602;
消息服务模块602,还用于将第一工单竣工消息写入第三消息队列中;
缓存服务模块603,还用于读取第三消息队列中的第一工单竣工信息,从数据库中加载第一工单竣工信息所对应的第一工单竣工数据,并以矢量切片的形式发布第一工单竣工数据。
可见,该可选的实施例还提供了基于消息队列的工单竣工服务,不仅丰富了应用服务端的功能,还能够实现对外部服务的快速、准确的响应。
在又一个可选的实施例中,如图7所示,该装置还可以包括:
数据同步服务模块607,用于执行工单竣工数据同步操作,在接收到同步完成指示消息之后向工单竣工服务模块发送第二工单竣工信息;
工单竣工服务模块606,还用于将第二工单竣工消息发送至消息服务模块602;
消息服务模块602,还用于将第二工单竣工信息写入第四消息队列中;
缓存服务模块603,还用于读取第四消息队列中的第二工单竣工信息,从数据库中加载第二工单竣工信息所对应的第二工单竣工数据,并以矢量切片的形式发布第二工单竣工数据。
可见,该可选的实施例还提供了基于消息队列的数据同步服务,不仅丰富了应用服务端的功能,还能够实现数据库之间工单竣工数据的同步,保证了数据库间工单竣工数据的一致性。
在又一个可选的实施例中,撤回重做服务模块605,还用于在构造目标数据对应的撤回消息,并将目标数据对应的撤回消息写入预先生成的快照表中之前,确定目标数据对应的目标信息,并根据目标信息判断目标数据是否满足撤回重做条件,当判断出目标数据满足撤回重做条件时,触发执行上述的构造目标数据对应的撤回消息,并将目标数据对应的撤回消息写入预先生成的快照表中的操作。
可见,该可选的实施例还能够在更新数据写入消息队列之后以及构造相应的撤回消息之前,智能化的判断目标数据是否满足撤回重做条件,若满足,则再构造撤回消息,能够减少撤回重做服务模块不必要的撤回消息构造操作。
在又一个可选的实施例中,如图7所示,该装置还可以包括流畅度处理模块608,其中:
流畅度处理模块608,用于获取至少两个目标服务模块在目标数据更新过程中的处理时长;
流畅度处理模块608,还用于根据每个服务模块在目标数据更新过程中的处理时长以及每个服务模块在目标数据更新过程中的影响程度,计算目标数据的更新流畅度;
流畅度处理模块608,还用于判断目标数据的更新流畅度是否满足预先设定的更新流畅条件,当判断出目标数据的更新流畅度满足更新流畅条件时,生成目标数据对应的更新流程表并为更新流程表设定目标数据的数据属性。
可见,实施图7所描述的装置还能够在数据更新之后根据每个服务模块在数据更新过程中的处理时长以及每个服务模块在数据更新过程中的影响程度综合性的计算本次更新数据的更新流畅度,有利于提高计算出的更新流畅度的准确性。此外,还能够在判断出本次更新数据的更新流畅度满足更新流畅条件时,生成相应的更新流程表并为更新流程表设定目标数据的数据属性,以便于为其它相同或相似属性的数据在更新时提供更新流程依据,进而提高其它相同或相似属性的数据在更新时的更新流畅度。
实施例六
请参阅图8,图8是奔发明实施例公开的又一种基于消息队列的数据异步更新装置的结构示意图。其中,图8所描述的装置可以应用在应用服务端中。如图8所示,该装置可以包括:
存储有可执行程序代码的存储器701;
与存储器701耦合的处理器702;
处理器702调用存储器701中存储的可执行程序代码,执行本发明实施例一~本发明实施例四中任一实施例所描述的方法中的步骤。
实施例七
本发明实施例公开了一种计算机可存储介质,该计算机存储介质存储有计算机指令,该计算机指令被调用时,用于执行本发明实施例一~本发明实施例四中任一实施例所描述的方法中的步骤。
实施例八
本发明实施例公开了一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,且该计算机程序可操作来使计算机执行本发明实施例一~本发明实施例四中任一实施例所描述的方法中的步骤。
以上所描述的装置实施例仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施例的具体描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、一次可编程只读存储器(One-timeProgrammable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
最后应说明的是:本发明实施例公开的一种基于消息队列的数据异步更新装置及装置所揭露的仅为本发明较佳实施例而已,仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各项实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应的技术方案的本质脱离本发明各项实施例技术方案的精神和范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:资源更新方法及装置、电子设备、存储介质