数据更新方法、装置、终端及存储介质与流程

文档序号:20918073发布日期:2020-05-29 13:47阅读:212来源:国知局
数据更新方法、装置、终端及存储介质与流程

本发明涉及数据存储领域,具体涉及一种数据更新方法、装置、终端及存储介质。



背景技术:

随着信息技术的发展,业务提供方的访问量不断的增加,用户规模不断扩大,为了保证用户获得业务提供方所提供的业务服务的稳定和效率,业务提供方后台通过局域网连接多个服务器构建分布式服务器集群的方式为用户提供相应的业务,特别是在数据更新业务方面,为了确保分布式环境下数据库中所存储的数据为当前最新数据,需要及时更新数据库中的数据。

现有技术中通过定期对分布式系统中的数据库中的数据进行全量更新,无论原始数据是否存在更新,均会对目标库进行全量更新,由于全量更新时数据量太大,浪费资源,无法保证客户获取的数据是实时更新的数据,并且由于分布式系统存在多台服务器,同一条数据的更新可能存在多个任务,并且各个任务的数据可能不一致,故涉及到分布式更新数据最终一致性的问题。



技术实现要素:

鉴于以上内容,有必要提出一种数据更新方法、装置、终端及存储介质,能够解决分布式存储系统中数据更新时的一致性的问题,提高了数据存储的正确性。

本发明的第一方面提供一种数据更新方法,所述方法包括:

接收多个服务器发送的第一数据更新请求,其中,所述第一数据更新请求包括:更新后的第一数据、发送所述第一数据更新请求的第一时间及所述服务器的标识;

当在预设时间段内接收到所述多个服务器发送的第二数据更新请求时,其中,所述第二数据更新请求包括:更新后的第二数据、发送所述第二数据更新请求的第二时间及所述服务器的标识,判断所述第一数据更新请求与所述第二数据更新请求是否为同一数据的数据更新请求;

当所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求时,将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中;

发起数据异步更新指令至预设数据中心,其中,所述数据异步更新指令中携带有存储于所述数据队列的尾部的更新后的目标数据;

接收所述预设数据中心上报的最新的数据;

判断所述最新的数据与所述目标数据是否相同;

当所述最新的数据与所述目标数据相同时,通知所述预设数据中心发送所述最新的数据给用户。

优选的,所述将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中包括:

对所有所述第一时间和所有所述第二时间进行排序;

根据排序后的时间将所述第一更新请求和所述第二更新请求存储于同一个数据队列中,其中,最大时间对应的数据更新请求存储于所述数据队列的尾部,最小时间对应的数据更新请求存储于所述数据队列的头部。

优选的,所述判断所述第一数据更新请求与所述第二数据更新请求是否为同一数据的数据更新请求包括:

判断所述更新后的第一数据与所述更新后的第二数据中是否有相同的数据;

当所述更新后的第一数据与所述更新后的第二数据中有相同的数据时,确定所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求;

当所述更新后的第一数据与所述更新后的第二数据中没有相同的数据,确定所述第一数据更新请求与所述第二数据更新请求不为同一数据的数据更新请求。

优选的,当确定所述第一数据更新请求与所述第二数据更新请求不为同一数据的数据更新请求时,所述方法还包括:

将所述第一数据更新请求和所述第二数据更新请求存储于不同的数据队列中。

优选的,在所述通知所述预设数据中心发送所述最新的数据给用户之后,所述方法还包括:

保留所述数据队列的尾部存储的数据更新请求;

删除所述数据队列的其余数据更新请求。

优选的,当所述最新的数据与所述目标数据不相同时,所述方法还包括:

添加更新异常的标识至所述预设中心上报的最新数据中。

优选的,所述方法还包括:

当所述最新的数据与所述目标数据不相同时,再次发起数据异步更新指令至所述预设数据中心。

本发明的第二方面提供一种数据更新装置,所述装置包括:

第一接收模块,用于接收多个服务器发送的第一数据更新请求,其中,所述第一数据更新请求包括:更新后的第一数据、发送所述第一数据更新请求的第一时间及所述服务器的标识;

第一判断模块,用于当所述第一接收模块在预设时间段内接收到所述多个服务器发送的第二数据更新请求时,其中,所述第二数据更新请求包括:更新后的第二数据、发送所述第二数据更新请求的第二时间及所述服务器的标识,判断所述第一数据更新请求与所述第二数据更新请求是否为同一数据的数据更新请求;

存储模块,用于当所述第一判断模块确定所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求时,将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中;

发起模块,用于发起数据异步更新指令至预设数据中心,其中,所述数据异步更新指令中携带有存储于所述数据队列的尾部的更新后的目标数据;

第二接收模块,用于接收所述预设数据中心上报的最新的数据;

第二判断模块,用于判断所述最新的数据与所述目标数据是否相同;

通知模块,用于当所述第二判断模块确定所述最新的数据与所述目标数据相同时,通知所述预设数据中心发送所述最新的数据给用户。

本发明的第三方面提供一种终端,所述终端包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述数据更新方法。

本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述数据更新方法。

综上所述,本发明所述的数据更新方法、装置、终端及存储介质,接收多个服务器发送的第一数据更新请求和预设时间段内的第二数据更新请求,当确定所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求时,将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中;发起数据异步更新指令至预设数据中心,其中,所述数据异步更新指令中携带有存储于所述数据队列的尾部的更新后的目标数据;接收所述预设数据中心上报的最新的数据;判断所述最新的数据与所述目标数据是否相同;当所述最新的数据与所述目标数据相同时,通知所述预设数据中心发送所述最新的数据给用户。本发明一方面通过将不同服务器发送的相同数据的数据更新请求存储至同一数据队列,避免了同一个数据队列中出现不同数据的数据更新请求引起的数据混乱的现象,保证了分布式存储系统中数据更新时的一致性的问题,提高了数据存储的准确性。另一方面通过将尾部存储的数据与预设中心上报的最新数据进行比对后发送最新的数据给用户,提高了用户获取数据的准确性。

附图说明

图1是本发明实施例一提供的数据更新方法的流程图。

图2是本发明实施例二提供的数据更新装置的结构图。

图3是本发明实施例三提供的终端的结构示意图。

如下具体实施方式将结合上述附图进一步说明本发明。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

实施例一

图1是本发明实施例一提供的数据更新方法的流程图。

在本实施例中,所述数据更新方法可以应用于终端中,对于需要进行数据更新的终端,可以直接在终端上集成本发明的方法所提供的数据更新的功能,或者以软件开发工具包(softwaredevelopmentkit,skd)的形式运行在终端中。

如图1所示,所述数据更新方法应用于终端中,所述终端与多个服务器连接,所述数据更新方法具体包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。

s11:接收多个服务器发送的第一数据更新请求,其中,所述第一数据更新请求包括:更新后的第一数据、发送所述第一数据更新请求的第一时间及所述服务器的标识。

本实施例中,数据更新请求是指用户通过客户端采用诸如超文本传输协议(hypertexttransferprotocol,http)等向服务器发送数据更新指令,再由服务器根据所述数据更新指令向终端发送的更新请求。

根据不同的应用场景,数据更新请求可以包括但不限于:应用程序更新请求、邮件更新请求、流媒体更新请求、文件下载更新请求、游戏更新请求等,则对应的所述服务器可以包括但不限于:应用程序服务器、邮件服务器、流媒体服务器、文件下载服务器、游戏服务器等。

所述数据更新请求可以包括:更新后的数据、发送所述数据更新请求的时间及所述服务器的标识。

s12:当在预设时间段内接收到所述多个服务器发送的第二数据更新请求时,其中,所述第二数据更新请求包括:更新后的第二数据、发送所述第二数据更新请求的第二时间及所述服务器的标识,判断所述第一数据更新请求与所述第二数据更新请求是否为同一数据的数据更新请求。

本实施例中,所述预设时间段为预先设置的时间段,如可以设置为10分钟或者20分钟。

将在预设时间段内接收到的多个服务器发送的多个数据更新请求认为有可能为同一数据的数据更新请求,将超过预设时间段内接收到的多个服务器发送的多个数据更新请求认为不同数据的数据更新请求。

对于在预设时间段内接收到的多个数据更新请求,例如,第一数据更新请求和第二数据更新请求,认为有可能来自于同一客户端对同一数据的数据更新请求,此时,需要进一步将所述第二数据更新请求中的数据与所述第一数据更新请求中的数据进行匹配,确定所述第一数据更新请求与所述第二数据更新请求的数据是否为同一数据。

具体的,所述判断所述第一数据更新请求与所述第二数据更新请求是否为同一数据的数据更新请求包括:

判断所述更新后的第一数据与所述更新后的第二数据中是否有相同的数据;

当所述更新后的第一数据与所述更新后的第二数据中有相同的数据时,确定所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求;

当所述更新后的第一数据与所述更新后的第二数据中没有相同的数据,确定所述第一数据更新请求与所述第二数据更新请求不为同一数据的数据更新请求。

示例性的,假设用户通过客户端对保单中的受益人进行更新,在10:00时多个服务器均向终端发送了第一数据更新请求,所述第一数据更新请求中携带有更新后的第一数据(保单号、更新后的受益人)、10:00及服务器的标识,在10:02时多个服务器又均向终端发送了第二数据更新请求,所述第二数据更新请求中携带有更新后的第二数据(保单号、更新后的受益人)、10:02及服务器的标识。终端判断所述更新后的第一数据中的保单号与所述更新后的第二数据中的保单号是否相同,当所述更新后的第一数据中的保单号与所述更新后的第二数据中的保单号相同时,认为更新后的第一数据与更新后的第二数据中有相同的数据,则终端确定所述第一数据更新请求与所述第二数据更新请求为同一数据(同一保单号)的数据更新请求。

s13:当所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求时,将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中。

本实施例中,数据队列用于接收不同服务器在不同时间段内发送的数据更新请求,在确定第一数据更新请求和第二数据更新请求为在预设时间段内且为同一数据的数据更新请求时,则将第一数据更新请求和第二数据更新请求存储于同一个数据队列中,以保证数据的一致性及后续查找的便捷性。

需要说明的是,将存储于数据队列中的第一数据更新请求和第二数据更新请求统称为数据更新请求,即所述数据队列中的数据更新请求包括第一数据更新请求和第二数据更新请求。

其中,数据队列中存储的数据更新请求的数据结构为:{更新后的数据[data1,data2,…,datan],发送所述数据更新请求的时间[time],服务器的标识[id]}。

优选的,所述将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中包括:

对所有所述第一时间和所有所述第二时间进行排序;

根据排序后的时间将所述第一更新请求和所述第二更新请求存储于同一个数据队列中,其中,最大时间对应的数据更新请求存储于所述数据队列的尾部,最小时间对应的数据更新请求存储于所述数据队列的头部。

本实施例中,将所述第一时间和所述第二时间按照从小到大的顺序进行排序以将所述第一数据更新请求和所述第二数据更新请求进行排序,由于最大时间对应的数据更新请求为最近从服务器接收到的数据更新请求,最小时间对应的数据更新请求为最早从服务器接收到的数据更新请求,因而将与最大时间对应的数据更新请求存储于所述数据队列的尾部,便于后续直接从所述数据队列的尾部获取最新的更新后的数据。

在一个可选的实施例中,所述方法还包括:

当所述第一数据更新请求和第二数据更新请求为不同数据的数据更新请求时,则将第一数据更新请求和第二数据更新请求存储于不同的数据队列中。

示例性的,假设有3个服务器:服务器a、服务器b和服务器c,终端接收到服务器a发送的第一数据更新请求x,包括:更新后的保单号policyno1、更新后的收益人m1、发送第一数据更新请求x的第一时间t1及服务器的标识a;终端接收到服务器b发送的第一数据更新请求y,包括:更新后的保单号policyno1、更新后的收益人m1、发送第一数据更新请求y的第一时间t2及服务器的标识b;终端接收到服务器c发送的第一数据更新请求z,包括:更新后的保单号policyno1、更新后的收益人m1、发送第一数据更新请求z的第一时间t3;其中,t1<t2<t3,则将最大的第一时间t3对应的第一数据更新请求z存储于与所述保单号policyno1对应的数据队列queue1的尾部,将最小的第一时间t1对应的第一数据更新请求x存储于与所述保单号policyno1对应的数据队列queue1的头部。

假如,在预设时间段(例如2分钟)内,终端再次接收到服务器a发送的第二数据更新请求x’,包括:更新后的保单号policyno1、更新后的收益人m2、发送第二数据更新请求x’的第二时间t4及服务器的标识a;终端再次接收到服务器b发送的第二数据更新请求y’,包括:更新后的保单号policyno1、更新后的收益人m2、发送第二数据更新请求y’的第二时间t5及服务器的标识b;终端再次接收到服务器c发送的第二数据更新请求z’,包括:更新后的保单号policyno1、更新后的收益人m2、发送第二数据更新请求z’的第二时间t6;其中,t4<t6<t5,则由于第一数据更新请求与第二数据更新请求均为同一数据(同一保单号policyno1)的数据更新请求,则将最大的第二时间t5对应的第二数据更新请求y’存储于与数据队列queue1的尾部,在所述数据队列queue1中位于尾部之上的依次为第二数据更新请求z’、第二数据更新请求x’、第一数据更新请求z、第一数据更新请求y,位于所述数据队列queue1头部的为第一数据更新请求x。

又如,在预设时间段(例如2分钟)内,终端再次接收到服务器a发送的第二数据更新请求x’,包括:更新后的保单号policyno2、更新后的收益人m3、发送第二数据更新请求x’的第二时间t7及服务器的标识a;终端再次接收到服务器b发送的第二数据更新请求y’,包括:更新后的保单号policyno2、更新后的收益人m3、发送第二数据更新请求y’的第二时间t8及服务器的标识b;终端再次接收到服务器c发送的第二数据更新请求z’,包括:更新后的保单号policyno2、更新后的收益人m3、发送第二数据更新请求z’的第二时间t9;其中,t7<t8<t9,则由于第一数据更新请求与第二数据更新请求不为同一数据(不同保单号policyno1和policyno2)的数据更新请求,则将第二数据更新请求存储于与所述保单号policyno2对应的数据队列queue2中,其中,数据队列queue2的尾部为第二时间t9第二数据更新请求z’,数据队列queue2的头部为第二时间t7第二数据更新请求x’,介于第二数据更新请求z’和第二数据更新请求x’之间的为第二数据更新请求y’。

本实施例中,将相同数据的多个数据更新请求按照时间从小到大的顺序进行排序,避免了同一个数据队列中出现不同数据的数据更新请求引起的数据混乱的现象,确保同一个数据的数据更新请求对应同一个数据队列,不同数据的数据更新请求对应不同的数据队列;并且每个数据队列的尾部存储最新的数据更新请求,保证了分布式存储系统中数据更新时的一致性的问题,提高了数据存储的准确性。

s14:发起数据异步更新指令至预设数据中心,其中,所述数据异步更新指令中携带有存储于所述数据队列的尾部的更新后的目标数据。

本实施例中,所述预设数据中心是指与客户端连接的数据库。用户可以通过访问预设数据中心来获取最新的数据。

终端将接收到的数据更新请求存储于数据队列之后,再将数据队列中的数据更新请求发送给预设数据中心,通过所述预设数据中心将更新后的数据返回给用户,以向用户表明终端接收到了用户的数据更新请求并执行了相应的更新操作,从而在用户和终端之间形成闭环回路,使得终端与用户双重确定数据是否正确的完成了数据更新。

本实施例中,所述预设数据中心包括缓存数据库,将数据队列中最新的更新后的数据更新到所述缓存数据库中,能够确保整个分布式数据存储系统中的每一个存储节点中的数据为最新数据。

s15:接收预设数据中心上报的最新的数据。

所述预设数据中心在接收到终端发送的异步数据更新指令之后,解析所述异步更新指令得到更新后的数据并及时更新自身存储的数据。同时,向终端上报最新的数据。

s16:判断所述最新的数据与所述目标数据是否相同。

本实施例中,由于数据中心与终端分离式架构,在数据中心与终端通信过程,会存在通信链路不稳定或者数据中心更新数据失败的情况,因而为了确保用户访问数据中心中的数据的正确性,需要确保数据中心中的数据是最新的数据,则终端需进一步比较所述预设数据中心上报的最新的数据与所述目标数据是否相同。

s17:当所述最新的数据与所述目标数据相同时,通知所述预设数据中心发送所述最新的数据给用户。

本实施例中,所述预设数据中心上报的最新数据与所述目标数据相同,表明预设数据中心及时且正确的更新了数据,则预设中心可以将最新的数据发给用户,以向用户表明终端正确的响应了数据更新请求。

进一步的,当所述最新的数据与所述目标数据不相同时,所述方法还包括:

添加更新异常的标识至所述预设中心上报的最新数据中。

本实施例中,所述预设数据中心上报的最新数据与所述目标数据不相同,表明异步更新数据的过程中出现了异常,就会添加更新异常的标识至所述预设中心上报的最新数据中,及时响应用户服务,由于存入了所述数据异常的标识,在一定的时间段内,用户不会再请求所述数据,在一定程度上避免了大量的请求阻塞。

进一步,在所述通知所述预设数据中心发送所述最新的数据给用户之后,所述方法还包括:

保留所述数据队列的尾部存储的数据更新请求;

删除所述数据队列的其余数据更新请求。

本实施例中,通过删除所述数据队列除尾部以外的数据更新请求,能够减少数据队列中数据更新请求的冗余,提高终端的数据存储空间。

进一步的,所述方法还包括:

当所述最新的数据与所述目标数据不相同时,再次发起数据异步更新指令至所述预设数据中心。

本实施例中,当所述最新的数据与所述目标数据不相同时,表明预设数据中心在更新数据的过程中出现了异常情况,需要再次根据数据异步更新指令中携带的更新后的数据来更新缓存数据库中的数据。

综上所述,本实施例所述的数据更新方法,接收多个服务器发送的第一数据更新请求和预设时间段内的第二数据更新请求,当确定所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求时,将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中;发起数据异步更新指令至预设数据中心,其中,所述数据异步更新指令中携带有存储于所述数据队列的尾部的更新后的目标数据;接收所述预设数据中心上报的最新的数据;判断所述最新的数据与所述目标数据是否相同;当所述最新的数据与所述目标数据相同时,通知所述预设数据中心发送所述最新的数据给用户。本实施例一方面通过将不同服务器发送的相同数据的数据更新请求存储至同一数据队列,避免了同一个数据队列中出现不同数据的数据更新请求引起的数据混乱的现象,保证了分布式存储系统中数据更新时的一致性的问题,提高了数据存储的准确性。另一方面通过将尾部存储的数据与预设中心上报的最新数据进行比对后发送最新的数据给用户,提高了用户获取数据的准确性。

此外,通过将发起数据异步更新指令至预设数据中心将数据队列中最新的更新后的数据更新到所述缓存数据库中,能够确保整个分布式数据存储系统中的每一个存储节点中的数据为最新数据。

实施例二

图2是本发明实施例二提供的数据更新装置的结构图。

在一些实施例中,所述数据更新装置20可以包括多个由程序代码段所组成的功能模块。所述数据更新装置20中的各个程序段的程序代码可以存储于终端的存储器中,并由所述至少一个处理器所执行,以执行(详见图1描述)数据更新。

本实施例中,所述数据更新装置20运行于终端中,所述终端与多个服务器连接,所述数据更新装置20根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:第一接收模块201、第一判断模块202、存储模块203、发起模块204、第二接收模块205、第二判断模块206、通知模块207、添加模块208、保留模块209及删除模块210。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。

第一接收模块201:用于接收多个服务器发送的第一数据更新请求,其中,所述第一数据更新请求包括:更新后的第一数据、发送所述第一数据更新请求的第一时间及所述服务器的标识。

本实施例中,数据更新请求是指用户通过客户端采用诸如超文本传输协议(hypertexttransferprotocol,http)等向服务器发送数据更新指令,再由服务器根据所述数据更新指令向终端发送的更新请求。

根据不同的应用场景,数据更新请求可以包括但不限于:应用程序更新请求、邮件更新请求、流媒体更新请求、文件下载更新请求、游戏更新请求等,则对应的所述服务器可以包括但不限于:应用程序服务器、邮件服务器、流媒体服务器、文件下载服务器、游戏服务器等。

本实施例中,所述数据更新请求可以包括:更新后的数据、发送所述数据更新请求的时间及所述服务器的标识。

第一判断模块202:用于当所述第一接收模块201在预设时间段内接收到所述多个服务器发送的第二数据更新请求时,其中,所述第二数据更新请求包括:更新后的第二数据、发送所述第二数据更新请求的第二时间及所述服务器的标识,判断所述第一数据更新请求与所述第二数据更新请求是否为同一数据的数据更新请求。

本实施例中,所述预设时间段为预先设置的时间段,如可以设置为10分钟或者20分钟。

将在预设时间段内接收到的多个服务器发送的多个数据更新请求认为有可能为同一数据的数据更新请求,将超过预设时间段内接收到的多个服务器发送的多个数据更新请求认为不同数据的数据更新请求。

对于在预设时间段内接收到的多个数据更新请求,例如,第一数据更新请求和第二数据更新请求,认为有可能来自于同一客户端对同一数据的数据更新请求,此时,需要进一步将所述第二数据更新请求中的数据与所述第一数据更新请求中的数据进行匹配,确定所述第一数据更新请求与所述第二数据更新请求的数据是否为同一数据。

具体的,所述第一判断模块202判断所述第一数据更新请求与所述第二数据更新请求是否为同一数据的数据更新请求包括:

判断所述更新后的第一数据与所述更新后的第二数据中是否有相同的数据;

当所述更新后的第一数据与所述更新后的第二数据中有相同的数据时,确定所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求;

当所述更新后的第一数据与所述更新后的第二数据中没有相同的数据,确定所述第一数据更新请求与所述第二数据更新请求不为同一数据的数据更新请求。

示例性的,假设用户通过客户端对保单中的受益人进行更新,在10:00时多个服务器均向终端发送了第一数据更新请求,所述第一数据更新请求携带有更新后的第一数据(保单号、更新后的受益人)、10:00及服务器的标识,在10:02时多个服务器又均向终端发送了第二数据更新请求,所述第二数据更新请求中携带有更新后的第二数据(保单号、更新后的受益人)、10:02及服务器的标识。终端判断所述更新后的第一数据中的保单号与所述更新后的第二数据中的保单号是否相同,当所述更新后的第一数据中的保单号与所述更新后的第二数据中的保单号相同时,认为更新后的第一数据与更新后的第二数据中有相同的数据,则终端确定所述第一数据更新请求与所述第二数据更新请求为同一数据(同一保单号)的数据更新请求。

存储模块203:用于当所述第一判断模块202确定所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求时,将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中。

本实施例中,数据队列用于接收不同服务器在不同时间段内发送的数据更新请求,在确定第一数据更新请求和第二数据更新请求为在预设时间段内且为同一数据的数据更新请求时,则将第一数据更新请求和第二数据更新请求存储于同一个数据队列中,以保证数据的一致性及后续查找的便捷性。

需要说明的是,将存储于数据队列中的第一数据更新请求和第二数据更新请求统称为数据更新请求,即所述数据队列中的数据更新请求包括第一数据更新请求和第二数据更新请求。其中,数据队列中存储的数据更新请求的数据结构为:{更新后的数据[data1,data2,…,datan],发送所述数据更新请求的时间[time],服务器的标识[id]}。

优选的,所述存储模块203将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中包括:

对所有所述第一时间和所有所述第二时间进行排序;

根据排序后的时间将所述第一更新请求和所述第二更新请求存储于同一个数据队列中,其中,最大时间对应的数据更新请求存储于所述数据队列的尾部,最小时间对应的数据更新请求存储于所述数据队列的头部。

本实施例中,将所述第一时间和所述第二时间按照从小到大的顺序进行排序以将所述第一数据更新请求和所述第二数据更新请求进行排序,由于最大时间对应的数据更新请求为最近从服务器接收到的数据更新请求,最小时间对应的数据更新请求为最早从服务器接收到的数据更新请求,因而将与最大时间对应的数据更新请求存储于所述数据队列的尾部,便于后续直接从所述数据队列的尾部获取最新的更新后的数据。

在一个可选的实施例中,当所述第一判断模块202确定所述第一数据更新请求和所述第二数据更新请求为不同数据的数据更新请求时,则所述存储模块203将所述第一数据更新请求和所述第二数据更新请求存储于不同的数据队列中。

示例性的,假设有3个服务器:服务器a、服务器b和服务器c,终端接收到服务器a发送的第一数据更新请求x,包括:更新后的保单号policyno1、更新后的收益人m1、发送第一数据更新请求x的第一时间t1及服务器的标识a;终端接收到服务器b发送的第一数据更新请求y,包括:更新后的保单号policyno1、更新后的收益人m1、发送第一数据更新请求y的第一时间t2及服务器的标识b;终端接收到服务器c发送的第一数据更新请求z,包括:更新后的保单号policyno1、更新后的收益人m1、发送第一数据更新请求z的第一时间t3;其中,t1<t2<t3,则将最大的第一时间t3对应的第一数据更新请求z存储于与所述保单号policyno1对应的数据队列queue1的尾部,将最小的第一时间t1对应的第一数据更新请求x存储于与所述保单号policyno1对应的数据队列queue1的头部。

假如,在预设时间段(例如2分钟)内,终端再次接收到服务器a发送的第二数据更新请求x’,包括:更新后的保单号policyno1、更新后的收益人m2、发送第二数据更新请求x’的第二时间t4及服务器的标识a;终端再次接收到服务器b发送的第二数据更新请求y’,包括:更新后的保单号policyno1、更新后的收益人m2、发送第二数据更新请求y’的第二时间t5及服务器的标识b;终端再次接收到服务器c发送的第二数据更新请求z’,包括:更新后的保单号policyno1、更新后的收益人m2、发送第二数据更新请求z’的第二时间t6;其中,t4<t6<t5,则由于第一数据更新请求与第二数据更新请求均为同一数据(同一保单号policyno1)的数据更新请求,则将最大的第二时间t5对应的第二数据更新请求y’存储于与数据队列queue1的尾部,在所述数据队列queue1中位于尾部之上的依次为第二数据更新请求z’、第二数据更新请求x’、第一数据更新请求z、第一数据更新请求y,位于所述数据队列queue1头部的为第一数据更新请求x。

又如,在预设时间段(例如2分钟)内,终端再次接收到服务器a发送的第二数据更新请求x’,包括:更新后的保单号policyno2、更新后的收益人m3、发送第二数据更新请求x’的第二时间t7及服务器的标识a;终端再次接收到服务器b发送的第二数据更新请求y’,包括:更新后的保单号policyno2、更新后的收益人m3、发送第二数据更新请求y’的第二时间t8及服务器的标识b;终端再次接收到服务器c发送的第二数据更新请求z’,包括:更新后的保单号policyno2、更新后的收益人m3、发送第二数据更新请求z’的第二时间t9;其中,t7<t8<t9,则由于第一数据更新请求与第二数据更新请求不为同一数据(不同保单号policyno1和policyno2)的数据更新请求,则将第二数据更新请求存储于与所述保单号policyno2对应的数据队列queue2中,其中,数据队列queue2的尾部为第二时间t9第二数据更新请求z’,数据队列queue2的头部为第二时间t7第二数据更新请求x’,介于第二数据更新请求z’和第二数据更新请求x’之间的为第二数据更新请求y’。

本实施例中,将相同数据的多个数据更新请求按照时间从小到大的顺序进行排序,避免了同一个数据队列中出现不同数据的数据更新请求引起的数据混乱的现象,确保同一个数据的数据更新请求对应同一个数据队列,不同数据的数据更新请求对应不同的数据队列;并且每个数据队列的尾部存储最新的数据更新请求,保证了分布式存储系统中数据更新时的一致性的问题,提高了数据存储的准确性。

发起模块204:用于发起数据异步更新指令至预设数据中心,其中,所述数据异步更新指令中携带有存储于所述数据队列的尾部的更新后的目标数据。

本实施例中,所述预设数据中心是指与客户端连接的数据库。用户可以通过访问预设数据中心来获取最新的数据。

终端将接收到的数据更新请求存储于数据队列之后,再将数据队列中的数据更新请求发送给预设数据中心,通过所述预设数据中心将更新后的数据返回给用户,以向用户表明终端接收到了用户的数据更新请求并执行了相应的更新操作,从而在用户和终端之间形成闭环回路,使得终端与用户双重确定数据是否正确的完成了数据更新。

本实施例中,所述预设数据中心包括缓存数据库,将数据队列中最新的更新后的数据更新到所述缓存数据库中,能够确保整个分布式数据存储系统中的每一个存储节点中的数据为最新数据。

第二接收模块205:用于接收预设数据中心上报的最新的数据。

所述预设数据中心在接收到终端发送的异步数据更新指令之后,解析所述异步更新指令得到更新后的数据并及时更新自身存储的数据。同时,向终端上报最新的数据。

第二判断模块206:用于判断所述最新的数据与所述目标数据是否相同。

本实施例中,由于数据中心与终端分离式架构,在数据中心与终端通信过程,会存在通信链路不稳定或者数据中心更新数据失败的情况,因而为了确保用户访问数据中心中的数据的正确性,需要确保数据中心中的数据是最新的数据,则终端需进一步比较所述预设数据中心上报的最新的数据与所述目标数据是否相同。

通知模块207:用于当所述第二判断模块206确定所述最新的数据与所述目标数据相同时,通知所述预设数据中心发送所述最新的数据给用户。

本实施例中,所述预设数据中心上报的最新数据与所述目标数据相同,表明预设数据中心及时且正确的更新了数据,则预设中心可以将最新的数据发给用户,以向用户表明终端正确的响应了数据更新请求。

进一步的,当所述第二判断模块206确定所述最新的数据与所述目标数据不相同时,添加模块208用于添加更新异常的标识至所述预设中心上报的最新数据中。

本实施例中,所述预设数据中心上报的最新数据与所述目标数据不相同,表明异步更新数据的过程中出现了异常,就会添加更新异常的标识至所述预设中心上报的最新数据中,及时响应用户服务,由于存入了所述数据异常的标识,在一定的时间段内,用户不会再请求所述数据,在一定程度上避免了大量的请求阻塞。

进一步,在所述通知模块207通知所述预设数据中心发送所述最新的数据给用户之后,保留模块209,用于保留所述数据队列的尾部存储的数据更新请求;删除模块210,用于删除所述数据队列的其余数据更新请求。

本实施例中,通过删除所述数据队列除尾部以外的数据更新请求,能够减少数据队列中数据更新请求的冗余,提高终端的数据存储空间。

进一步的,所述发起模块204,还用于当所述第二判断模块206确定所述最新的数据与所述目标数据不相同时,再次发起数据异步更新指令至所述预设数据中心。

本实施例中,当所述最新的数据与所述目标数据不相同时,表明预设数据中心在更新数据的过程中出现了异常情况,需要再次根据数据异步更新指令中携带的更新后的数据来更新缓存数据库中的数据。

综上所述,本实施例所述的数据更新装置,接收多个服务器发送的第一数据更新请求和预设时间段内的第二数据更新请求,当确定所述第一数据更新请求与所述第二数据更新请求为同一数据的数据更新请求时,将所述第一数据更新请求和所述第二数据更新请求存储于同一个数据队列中;发起数据异步更新指令至预设数据中心,其中,所述数据异步更新指令中携带有存储于所述数据队列的尾部的更新后的目标数据;接收所述预设数据中心上报的最新的数据;判断所述最新的数据与所述目标数据是否相同;当所述最新的数据与所述目标数据相同时,通知所述预设数据中心发送所述最新的数据给用户。本实施例一方面通过将不同服务器发送的相同数据的数据更新请求存储至同一数据队列,避免了同一个数据队列中出现不同数据的数据更新请求引起的数据混乱的现象,保证了分布式存储系统中数据更新时的一致性的问题,提高了数据存储的准确性。另一方面通过将尾部存储的数据与预设中心上报的最新数据进行比对后发送最新的数据给用户,提高了用户获取数据的准确性。

此外,通过将发起数据异步更新指令至预设数据中心将数据队列中最新的更新后的数据更新到所述缓存数据库中,能够确保整个分布式数据存储系统中的每一个存储节点中的数据为最新数据。

实施例三

参阅图3所示,为本发明实施例三提供的终端的结构示意图。在本发明较佳实施例中,所述终端3包括存储器31、至少一个处理器32、至少一条通信总线33及收发器34。

本领域技术人员应该了解,图3示出的终端的结构并不构成本发明实施例的限定,既可以是总线型结构,也可以是星形结构,所述终端3还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。

在一些实施例中,所述终端3是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的终端,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。所述终端3还可包括客户设备,所述客户设备包括但不限于任何一种可与客户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、数码相机等。

需要说明的是,所述终端3仅为举例,其他现有的或今后可能出现的电子产品如可适应于本发明,也应包含在本发明的保护范围以内,并以引用方式包含于此。

在一些实施例中,所述存储器31用于存储程序代码和各种数据,例如安装在所述终端3中的数据更新装置20,并在终端3的运行过程中实现高速、自动地完成程序或数据的存取。所述存储器31包括只读存储器(read-onlymemory,rom)、可编程只读存储器(programmableread-onlymemory,prom)、可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)、一次可编程只读存储器(one-timeprogrammableread-onlymemory,otprom)、电子擦除式可复写只读存储器(electrically-erasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。

在一些实施例中,所述至少一个处理器32可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(centralprocessingunit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述至少一个处理器32是所述终端3的控制核心(controlunit),利用各种接口和线路连接整个终端3的各个部件,通过运行或执行存储在所述存储器31内的程序或者模块,以及调用存储在所述存储器31内的数据,以执行终端3的各种功能和处理数据,例如执行数据更新的功能。

在一些实施例中,所述至少一条通信总线33被设置为实现所述存储器31以及所述至少一个处理器32等之间的连接通信。

尽管未示出,所述终端3还可以是给各个部件供电的电源(比如电池),优选的,电源可以通过电源管理装置与所述至少一个处理器32逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述终端3还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。

应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。

上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。

在进一步的实施例中,结合图2,所述至少一个处理器32可执行所述终端3的操作装置以及安装的各类应用程序(如所述的数据更新装置20)、程序代码等,例如,上述的各个模块。

所述存储器31中存储有程序代码,且所述至少一个处理器32可调用所述存储器31中存储的程序代码以执行相关的功能。例如,图2中所述的各个模块是存储在所述存储器31中的程序代码,并由所述至少一个处理器32所执行,从而实现所述各个模块的功能以达到数据更新的目的。

在本发明的一个实施例中,所述存储器31存储多个指令,所述多个指令被所述至少一个处理器32所执行以实现数据更新的功能。

具体地,所述至少一个处理器32对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1