CN110543486B - 数据变更方法、装置及服务器 - Google Patents
数据变更方法、装置及服务器 Download PDFInfo
- Publication number
- CN110543486B CN110543486B CN201910804110.6A CN201910804110A CN110543486B CN 110543486 B CN110543486 B CN 110543486B CN 201910804110 A CN201910804110 A CN 201910804110A CN 110543486 B CN110543486 B CN 110543486B
- Authority
- CN
- China
- Prior art keywords
- current data
- changed
- current
- data
- processing
- 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.)
- Active
Links
Images
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/23—Updating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种数据变更方法、装置及服务器,实现接收各个处理服务器发送的当前数据变更消息;判断已记录的延迟处理数据标识中是否包含当前待变更数据的标识信息;如果是,则不对当前数据变更消息进行处理;如果否,则对当前数据变更进行处理;记录当前待变更数据的标识信息,并设置到期处理时刻;当到达当前数据变更消息的到期处理时刻时,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;更新当前待变更数据。可见本实施例针对预设时长内接收到的对同一待变更数据的数据变更消息,只需对一条数据变更消息进行处理,其他的不需要逐一进行处理,解决了现有技术数据变更效率低的问题。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种数据变更方法、装置及服务器。
背景技术
在图1所示的分布式并发网络环境下,业务服务器110会在同一时间段接收到多个由处理服务器120发出的针对同一条数据的数据变更消息,其中,一个处理服务器120或一类处理服务器120负责对数据的一个或多个字段进行修改处理。各个处理服务器120每执行一次修改操作,就会向业务服务器110发一条数据变更消息,在极端的情况下有可能会出现处理服务器120在极短的时间内对同一条数据进行了多次修改。这就意味着,业务服务器110也会在极短的时间内收到多条针对同一条数据的数据变更消息,这会导致业务服务器110 在根据接收到的数据变更消息进行变更处理时,很容易出现数据不一致的问题。
针对上述问题,现有的数据变更方法通常是通过如下方式进行处理:业务服务器110在每接收到一条数据变更消息时,都请求获取分布式锁;如果分布式锁被占用,则等到分布式锁被释放后获取分布式锁并进行数据变更;如果分布式锁未被占用,则获取分布式锁并进行数据变更;在数据变更后,释放分布式锁。
发明人在实现本发明的过程中发现,现有技术至少存在如下问题:现有的数据变更方法,针对每一条数据变更消息在没有获取到分布式锁时都需要等待,直到可以获取到分布式锁;并且,对每一条数据变更消息都要进行处理,因此,数据变更效率较低。
发明内容
本发明实施例的目的在于提供一种数据变更方法、装置及服务器,以实现提高数据变更的效率。具体技术方案如下:
为了达到上述目的,第一方面,本发明实施例提供了一种数据变更方法,应用于业务服务器,该方法包括:
接收与所述业务服务器通信连接的各个处理服务器发送的当前数据变更消息;所述当前数据变更消息中包含当前待变更数据的标识信息、待变更字段和对应的变更数据;所述当前数据变更请求为所述处理服务器对所述当前数据执行完一次修改操作后发送的;
判断已记录的延迟处理数据标识中是否包含所述当前待变更数据的标识信息;
如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则不对所述当前数据变更消息进行处理;
如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则按照所述当前数据变更消息中包含的待变更字段和对应的变更数据,将所述当前待变更数据中的待变更字段对应的数据变更为所述变更数据;
将所述当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻;所述到期处理时刻是根据所述处理服务器完成预计次数的修改操作所需的预设时长确定的;
当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
按照获取的修改后当前待变更数据,更新所述当前待变更数据。
可选的,所述将所述当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻的步骤,包括:
根据当前时刻和所述预设时长,确定当前数据变更消息的到期处理时刻;
将所述当前待变更数据的标识信息及到期处理时刻,记录至预设的延时处理队列中;
所述当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
实时读取所述延时处理队列,当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
按照修改后当前待变更数据,更新所述当前待变更数据。
可选的,所述获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
向所述各个处理服务器发送获取修改后当前待变更数据的请求;
接收所述各个处理服务器返回的,在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
可选的,所述获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
从数据库中获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;所述修改后当前待变更数据,是由所述各个处理服务器在每对所述当前数据执行完一次修改操作后,保存至所述数据库中的。
可选的,所述预设的延时处理队列为包含预设数量个空位和一个当前索引指针的环形队列;所述空位用于记录待变更数据的标识信息及到期处理时刻;所述当前索引指针用于每隔预设间隔时刻,按照预设的移动方向由当前空位顺次移动至下一个空位;
所述将所述当前待变更数据的标识信息及到期处理时刻,记录至预设的延时处理队列中的步骤,包括:
根据为所述当前待变更数据设置的到期处理时刻、所述预设的延时处理队列包含的空位数量、所述当前索引指针指向的空位信息和所述当前索引指针由当前空位指向下一个空位的间隔时间,确定所述当前待变更数据在所述延时处理队列中对应的目标空位;
将所述当前待变更数据的标识信息及到期处理时刻记录至所述目标空位;
所述实时读取所述延时处理队列,当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
当所述当前索引指针移动至所述目标空位时,确定当到达所述当前数据变更消息的到期处理时刻;并按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
可选的,所述预设的延时处理队列,还包括:
循环圈数Cycle-Num,所述Cycle-Num用于根据为所述当前待变更数据设置的到期处理时刻、所述预设的延时处理队列包含的空位数量、所述当前索引指针指向的空位信息和所述当前索引指针由当前空位指向下一个空位的间隔时间,确定针对所述当前待变更数据所述当前索引指针的循环圈数;
所述实时读取所述延时处理队列,当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
当所述当前索引指针移动至所述目标空位时,判断所述当前数据变更消息对应的Cycle-Num是否为0;
如果所述当前数据变更消息对应的Cycle-Num为0;则确定到达所述当前数据变更消息的到期处理时刻;并按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
如果所述当前数据变更消息对应的Cycle-Num不为0;则确定未到达所述当前数据变更消息的到期处理时刻,将所述当前数据变更消息对应的Cycle-Num 减1;并执行当所述当前索引指针移动至所述目标空位时,判断所述当前数据变更消息对应的Cycle-Num是否为0的步骤。
可选的,在所述按照获取的修改后当前待变更数据,更新所述当前待变更数据的步骤之后,还包括:
针对所述当前待变更数据记录本次数据变更的时间和变更结果,形成统计报表并输出。
第二方面,本发明实施例提供了一种数据变更装置,应用于业务服务器,该装置,包括:
接收模块,用于接收与所述业务服务器通信连接的各个处理服务器发送的当前数据变更消息;所述当前数据变更消息中包含当前待变更数据的标识信息、待变更字段和对应的变更数据;所述当前数据变更请求为所述处理服务器对所述当前数据执行完一次修改操作后发送的;
判断模块,用于判断已记录的延迟处理数据标识中是否包含所述当前待变更数据的标识信息;如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则不对所述当前数据变更消息进行处理;如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则启动变更模块;
所述变更模块,用于按照所述当前数据变更消息中包含的待变更字段和对应的变更数据,将所述当前待变更数据中的待变更字段对应的数据变更为所述变更数据;
记录模块,用于将所述当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻;所述到期处理时刻是根据所述处理服务器完成预计次数的修改操作所需的预设时长确定的;
获取模块,用于当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
更新模块,用于按照获取的修改后当前待变更数据,更新所述当前待变更数据。
可选的,所述记录模块,具体用于:
根据当前时刻和所述预设时长,确定当前数据变更消息的到期处理时刻;
将所述当前待变更数据的标识信息及到期处理时刻,记录至预设的延时处理队列中;
所述获取模块,具体用于:实时读取所述延时处理队列,当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
可选的,所述获取模块,具体用于:
向所述各个处理服务器发送获取修改后当前待变更数据的请求;
接收所述各个处理服务器返回的,在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
可选的,所述获取模块,具体用于:
从数据库中获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;所述修改后当前待变更数据,是由所述各个处理服务器在每对所述当前数据执行完一次修改操作后,保存至所述数据库中的。
可选的,所述预设的延时处理队列为包含预设数量个空位和一个当前索引指针的环形队列;所述空位用于记录待变更数据的标识信息及到期处理时刻;所述当前索引指针用于每隔预设间隔时刻,按照预设的移动方向由当前空位顺次移动至下一个空位;
所述记录模块,具体用于:
根据为所述当前待变更数据设置的到期处理时刻、所述预设的延时处理队列包含的空位数量、所述当前索引指针指向的空位信息和所述当前索引指针由当前空位指向下一个空位的间隔时间,确定所述当前待变更数据在所述延时处理队列中对应的目标空位;
将所述当前待变更数据的标识信息及到期处理时刻记录至所述目标空位;
所述获取模块,具体用于:当所述当前索引指针移动至所述目标空位时,确定当到达所述当前数据变更消息的到期处理时刻;并按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
可选的,所述预设的延时处理队列,还包括:
循环圈数Cycle-Num,所述Cycle-Num用于根据为所述当前待变更数据设置的到期处理时刻、所述预设的延时处理队列包含的空位数量、所述当前索引指针指向的空位信息和所述当前索引指针由当前空位指向下一个空位的间隔时间,确定针对所述当前待变更数据所述当前索引指针的循环圈数;
所述获取模块,具体用于:
当所述当前索引指针移动至所述目标空位时,判断所述当前数据变更消息对应的Cycle-Num是否为0;
如果所述当前数据变更消息对应的Cycle-Num为0;则确定到达所述当前数据变更消息的到期处理时刻;并按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
如果所述当前数据变更消息对应的Cycle-Num不为0;则确定未到达所述当前数据变更消息的到期处理时刻,将所述当前数据变更消息对应的Cycle-Num 减1;并执行当所述当前索引指针移动至所述目标空位时,判断所述当前数据变更消息对应的Cycle-Num是否为0的步骤。
可选的,该数据变更装置,还包括:
统计报表模块,用于在按照获取的修改后当前待变更数据,更新所述当前待变更数据后,针对所述当前待变更数据记录本次数据变更的时间和变更结果,形成统计报表并输出。
第三方面,本发明实施例提供了一种服务器,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如下步骤:
接收与所述业务服务器通信连接的各个处理服务器发送的当前数据变更消息;所述当前数据变更消息中包含当前待变更数据的标识信息、待变更字段和对应的变更数据;所述当前数据变更请求为所述处理服务器对所述当前数据执行完一次修改操作后发送的;
判断已记录的延迟处理数据标识中是否包含所述当前待变更数据的标识信息;
如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则不对所述当前数据变更消息进行处理;
如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则按照所述当前数据变更消息中包含的待变更字段和对应的变更数据,将所述当前待变更数据中的待变更字段对应的数据变更为所述变更数据;
将所述当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻;所述到期处理时刻是根据所述处理服务器完成预计次数的修改操作所需的预设时长确定的;
当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
按照获取的修改后当前待变更数据,更新所述当前待变更数据。
本发明实施还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据变更方法的步骤。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一数据变更方法。
本发明实施例提供的数据变更方法、装置及服务器,可以实现接收与业务服务器通信连接的各个处理服务器发送的当前数据变更消息;判断已记录的延迟处理数据标识中是否包含当前待变更数据的标识信息;如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则不对当前数据变更消息进行处理;如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则按照当前数据变更消息中包含的待变更字段和对应的变更数据,将当前待变更数据中的待变更字段对应的数据变更为变更数据;将当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻;当到达当前数据变更消息的到期处理时刻时,按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;按照获取的修改后当前待变更数据,更新当前待变更数据。可见,本发明实施例针对预设时长内接收到的对同一待变更数据的数据变更消息,只对一条数据变更消息进行处理;对于与该数据变更消息中的当前待变更数据的标识信息相同的数据变更消息,则不用进行变更处理,只在延时处理队列中进行记录;当到达当前数据变更消息的到期处理时刻时,再按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。因此,本发明实施例针对预设时长内接收到的对同一待变更数据的数据变更消息,只需要对一条数据变更消息进行处理,其他的不需要逐一进行处理。从而,解决了现有技术由于对每一条数据变更消息都需要进行处理导致的数据变更效率低的问题。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为一种分布式并发网络环境的结构示意图;
图2为本发明实施例提供的数据变更方法的一种流程示意图;
图3为本发明实施例提供的环形队列的结构示意图;
图4为本发明实施例提供的数据变更方法的另一种流程示意图;
图5为本发明实施例提供的数据变更装置的一种结构示意图;
图6为本发明实施例提供的数据变更装置的另一种结构示意图;
图7为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
为了实现提高数据变更的效率,本发明实施例提供了一种数据变更方法,应用于图1中的业务服务器,参见图2,该方法,包括:
S201:接收与业务服务器通信连接的各个处理服务器发送的当前数据变更消息;该当前数据变更消息中包含当前待变更数据的标识信息、待变更字段和对应的变更数据;当前数据变更请求为处理服务器对该当前数据执行完一次修改操作后发送的;
S202:判断已记录的延迟处理数据标识中是否包含当前待变更数据的标识信息;如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则执行步骤S207;如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则执行步骤S203;
S203:按照当前数据变更消息中包含的待变更字段和对应的变更数据,将当前待变更数据中的待变更字段对应的数据变更为变更数据;
具体的,可以是针对当前数据变更消息请求获取预设的分布式锁;当针对当前数据变更消息获取到预设的分布式锁后,则按照当前数据变更消息中包含的待变更字段和对应的变更数据,将当前待变更数据中的待变更字段对应的数据变更为变更数据。
例如:当前数据变更消息中包含的待变更字段是1、3、5和7,待变更字段是1对应的变更数据是数据1、待变更字段是3对应的变更数据是数据3、待变更字段是5对应的变更数据是数据5及待变更字段是7对应的变更数据是数据7;则在针对当前数据变更消息获取到预设的分布式锁后,分别将当前数据变更消息中的1、3、5和7字段对应的数据变更为数据1、数据3、数据5 和数据7。
在实际应用中,如果针对当前数据变更消息未获取到预设的分布式锁,则等待分布式锁被释放后获取分布式锁按照当前数据变更消息中包含的待变更字段和对应的变更数据,将当前待变更数据中的待变更字段对应的数据变更为变更数据;并在数据变更后,释放分布式锁。
S204:将当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻;到期处理时刻是根据处理服务器完成预计次数的修改操作所需的预设时长确定的;
在一种具体的实施例中,将当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻的步骤,可以包括:
根据当前时刻和预设时长,确定当前数据变更消息的到期处理时刻;
将当前待变更数据的标识信息及到期处理时刻,记录至预设的延时处理队列中;
例如,处理服务器完成预计次数的修改操作所需的预设时长约为3分钟,则可以确定当前数据变更消息的到期处理时刻为:以当前时刻为起始时间点的 3分钟后,例如,当前时刻为14:00,则当前数据变更消息的到期处理时刻为 14:03分;将当前待变更数据的标识信息及到期处理时刻14:03分,记录至预设的延时处理队列中。
具体的,预设的延时处理队列为包含预设数量个空位和一个当前索引指针的环形队列;空位用于记录待变更数据的标识信息及到期处理时刻;当前索引指针用于每隔预设间隔时刻,按照预设的移动方向由当前空位顺次移动至下一个空位;
例如:预设的延时处理队列可以为包含3600个元素位置,也就是3600个空位(slot)和一个当前索引指针(Current Index)的环形队列,该空位用于记录待处理任务,其中,该待处理任务为需要延时处理的事件,空位可以用于记录待处理任务的标识信息及到期处理时刻;每个空位都可以看作是一个集合(set),该集合可以存放一个或多个待处理任务的记录,也就是说,一个空位中可以记录多个待处理任务。每隔1秒,当前索引指针按照预设的移动方向由当前空位顺次移动至下一个空位,比如,设置定时器(timer)的定时时间为1秒,每当定时器到达设置的定时时间时,当前索引指针就按照预设的移动方向由当前空位顺次移动至下一个空位。
具体的,将当前待变更数据的标识信息及到期处理时刻,记录至预设的延时处理队列中的步骤,可以包括:
根据为当前待变更数据设置的到期处理时刻、预设的延时处理队列包含的空位数量、当前索引指针指向的空位信息和当前索引指针由当前空位指向下一个空位的间隔时间,确定当前待变更数据在延时处理队列中对应的目标空位;
将当前待变更数据的标识信息及到期处理时刻记录至目标空位。
例如:为当前待变更数据设置的到期处理时刻为14:03分,参见图3所示的环形延时处理队列,预设的延时处理队列包含的空位数量为3600个、当前索引指针指向第1个空位、当前索引指针由当前空位指向下一个空位的间隔时间为1秒;在计算目标空位时,可以现将到期处理时刻对应的时间单位,转换为当前索引指针由当前空位指向下一个空位的间隔时间对应的时间单位,即, 3(分钟)*60=180秒;获得到期处理时刻除以延时处理队列包含的空位数量的余数,即,获得180/3600的余数,该余数为180;在将该余数和当前索引指针指向的空位编号相加,确定目标空位;即,180+1=181,这样就确定了延时处理队列中的第181个空位为目标空位,将当前待变更数据的标识信息及到期处理时刻记录至该目标空位。
S205:当到达当前数据变更消息的到期处理时刻时,按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
在一种具体的实施例中,可以是实时读取延时处理队列,当到达当前数据变更消息的到期处理时刻时,按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
具体的,可以是在当前索引指针移动至记录当前待变更数据的标识信息的空位时,确定到达当前数据变更消息的到期处理时刻;并按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
向各个处理服务器发送获取修改后当前待变更数据的请求;
接收各个处理服务器返回的,在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
在另一种具体的实施例中,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,可以包括:
从数据库中获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;修改后当前待变更数据,是由各个处理服务器在每对当前数据执行完一次修改操作后,保存至数据库中的。
这里获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据,具体可以是:
业务服务器110向各个处理服务器120发送获取修改后当前待变更数据的请求;处理服务器120在接收到该请求时,将在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据返回至业务服务器110;业务服务器110接收各个处理服务器返回的数据。
在其他实施例中,还可以是各个处理服务器120在每对当前数据执行完一次修改操作后,将修改后的当前待变更数据保存至存储至数据库中;那么,这里获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据:具体可以是:
业务服务器110根据当前待变更数据的标识信息,从数据库中获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。例如,处理服务器在预设时长内对当前待变更数据执行了6 次修改操作,当到达预设时长时,业务服务器110根据当前待变更数据的标识信息,从数据库中获取处理服务器执行了6次修改操作后的修改后当前待变更数据。
S206:按照获取的修改后当前待变更数据,更新当前待变更数据;结束;
S207:不对当前数据变更消息进行处理。
本实施例中,当接收到处理服务器发送的当前数据变更消息,并根据当前数据变更消息中的当前待变更数据的标识信息,判断到已记录的延迟处理数据标识中包含当前待变更数据的标识信息,可以不对当前数据变更消息进行处理,因为本实施例当到达预设的到期处理时刻时,可以获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据,按照修改后当前待变更数据,更新当前待变更数据,所以,本发明实施例针对接收到的对同一待变更数据的数据变更消息不用逐一进行处理,也就是,当延迟处理数据标识中包含当前待变更数据的标识信息,可以不对当前数据变更消息进行处理。
由图2所示的实施例可见,本发明实施针对预设时长内接收到的对同一待变更数据的数据变更消息,只对一条数据变更消息进行处理;对于与该数据变更消息中的当前待变更数据的标识信息相同的数据变更消息,则不用进行变更处理,只在延时处理队列中进行记录;当到达当前数据变更消息的到期处理时刻时,再按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。因此,本发明实施例针对预设时长内接收到的对同一待变更数据的数据变更消息,只需要对一条数据变更消息进行处理,其他的不需要逐一进行处理。从而,解决了现有技术由于对每一条数据变更消息都需要进行处理导致的数据变更效率低的问题。
在一种具体的实施例中,预设的延时处理队列还可以包括:
循环圈数(Cycle-Num),该Cycle-Num用于根据为当前待变更数据设置的到期处理时刻、预设的延时处理队列包含的空位数量、当前索引指针指向的空位信息和当前索引指针由当前空位指向下一个空位的间隔时间,确定针对当前待变更数据当前索引指针的循环圈数;
例如:为当前待变更数据设置的到期处理时刻14:03分,预设的延时处理队列包含的空位数量为100个、当前索引指针指向第1个空位、当前索引指针由当前空位指向下一个空位的间隔时间为1秒;现将到期处理时刻对应的时间单位,转换为当前索引指针由当前空位指向下一个空位的间隔时间对应的时间单位,即,3(分钟)*60=180秒;获得到期处理时刻除以延时处理队列包含的空位数量的除数,即,获得180/100的除数,该除数为1;再将该除数加1,就确定了针对当前待变更数据当前索引指针的循环圈数为2圈,也就是在当前索引指针第二次指向目标空位时,就到达了为当前待变更数据设置的到期处理时刻。
这样,实时读取延时处理队列,当到达当前数据变更消息的到期处理时刻时,按照当前待变更数据的标识信息,从处理服务器中获取变更后的当前待变更数据;按照获取的变更后的当前待变更数据更新当前待变更数据的步骤,可以包括:
在当前索引指针移动至目标空位时,判断当前数据变更消息对应的 Cycle-Num是否为0;
如果当前数据变更消息对应的Cycle-Num为0;则确定到达当前数据变更消息的到期处理时刻;并按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
如果当前数据变更消息对应的Cycle-Num不为0;则确定未到达当前数据变更消息的到期处理时刻,将当前数据变更消息对应的Cycle-Num减1;并执行在当前索引指针移动至目标空位时,判断当前数据变更消息对应的Cycle-Num是否为0的步骤。
在实际应用中,为了方便设计,可以仅设计一个延时处理队列,各业务中所有需要延时处理的事件都可以作为待处理任务(task),记录至该延时处理队列中;此时,由于延时处理队列中各待处理任务的功能不同,因此,在该延时处理队列中不仅要记录待处理任务的标识信息和到期处理时刻,还需要记录待处理任务的功能(task-function)。比如:对于购买视频服务业务中的订单完成48小时后关闭评价的事件,可以作为待处理任务记录在该延时处理队列中,其中,该待处理任务的功能为根据待处理任务的标识信息关闭待处理任务的评价功能;在该延时处理队列中要记录该待处理任务的标识信息、到期处理时刻和该待处理任务的功能。
由于延时队列中每个空位都可以看作是一个集合,该集合可以存放一个或多个待处理任务的记录,因此,在多种任务都用的情况下,不同的任务也可以记录在同一个空位里,例如,待处理任务A、B和C都记录在记录在延迟队列的第3个空位里;其中,在该空位中分别记录着待处理任务A、B和C的标识信息、到期处理时刻、待处理任务A、B和C对应的Cycle-Num和待处理任务A、B和C 的功能;当一个待处理任务被处理完成后,将会从延迟队列中删除该待处理任务对应的记录;比如,当A待处理任务被处理完成后,将会从延迟队列中删除待处理任务A对应的记录,此时,第3个空位里就剩下待处理任务B和C的记录。
以下列举一个具体的实施例对本发明实施例提供的数据变更方法做进一步详细的说明。
在本实施例中延时处理队列为各业务共用的环形延时处理队列,该延时处理队列包含的空位数量为3600个、当前索引指针指向第1个空位、当前索引指针由当前空位指向下一个空位的间隔时间为1秒;该延时处理队列需要记录待处理任务的标识信息、到期处理时刻和待处理任务的功能。参见图4,该方法,包括:
S401:接收与业务服务器通信连接的各个处理服务器发送的当前数据变更消息;该当前数据变更消息中包含当前待变更数据的标识信息、待变更字段和对应的变更数据;当前数据变更请求为处理服务器对该当前数据执行完一次修改操作后发送的;
S402:判断已记录的延迟处理数据标识中是否包含当前待变更数据的标识信息;如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则执行步骤S413;如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则执行步骤S403;
S403:针对当前数据变更消息请求获取预设的分布式锁;
S404:当针对当前数据变更消息获取到预设的分布式锁后,按照当前数据变更消息中包含的待变更字段和对应的变更数据,将当前待变更数据中的待变更字段对应的数据变更为变更数据;
S405:根据当前时刻和预设时长,确定当前数据变更消息的到期处理时刻;
S406:根据为当前待变更数据设置的到期处理时刻、预设的延时处理队列包含的空位数量、当前索引指针指向的空位信息和当前索引指针由当前空位指向下一个空位的间隔时间,确定当前待变更数据在延时处理队列中对应的目标空位;
S407:根据为当前待变更数据设置的到期处理时刻、预设的延时处理队列包含的空位数量、当前索引指针指向的空位信息和当前索引指针由当前空位指向下一个空位的间隔时间,确定针对当前待变更数据当前索引指针的循环圈数;
其中,确定针对当前待变更数据当前索引指针的循环圈数,也就是确定当前数据变更消息对应的循环圈数。
本实施例并不限定步骤S406和S407的执行顺序,在一种具体实施例中也可以先执行S407再执行S406;在其他实施例中也可以同时执行步骤S406和S407。
S408:将当前待变更数据的标识信息、到期处理时刻、当前数据变更消息对应的Cycle-Num和待处理任务的功能记录至目标空位;
其中,该待处理任务的功能为:当到达当前数据变更消息的到期处理时刻时,按照当前待变更数据的标识信息,按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;按照获取的修改后当前待变更数据,更新当前待变更数据。
S409:在当前索引指针移动至目标空位时,判断当前数据变更消息对应的 Cycle-Num是否为0;如果当前数据变更消息对应的Cycle-Num为0,则执行步骤S410;如果当前数据变更消息对应的Cycle-Num不为0,则执行步骤S412;
S410:确定到达当前数据变更消息的到期处理时刻;按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;按照获取的修改后当前待变更数据,更新当前待变更数据;并将延时处理队列中记录的当前待变更数据的标识信息、到期处理时刻、当前数据变更消息对应的Cycle-Num和待处理任务的功能删除;
S411:针对当前待变更数据记录本次数据变更的时间和变更结果,形成统计报表并输出;结束;
在实际应用中,可以在按照获取的修改后当前待变更数据,更新当前待变更数据的步骤之后,针对当前待变更数据记录本次数据变更的时间和变更结果,形成统计报表并输出,以使开发人员可以根据该统计报表中记录的数据变更次数和数据变更时间判断处理服务器是否处于正常工作状态。比如:根据该统计报表中记录的数据变更次数和数据变更时间,开发人员发现处理服务器在预设时间段内,发送数据变更消息的次数超过了预设的次数,那么,可以确定该处理服务器的工作状态处于异常状态,可能需要对其进行检修。
S412:确定未到达当前数据变更消息的到期处理时刻,将当前数据变更消息对应的Cycle-Num减1;并执行步骤S409;
S413:不对当前数据变更消息进行处理。
由图4所示的实施例可见,本发明实施针对接收到的对同一待变更数据的数据变更消息,只有一条数据变更消息在等待获取分布式锁,并且只对获取分布式锁的数据变更消息进行处理;对于与获取到分布式锁的数据变更消息中的当前待变更数据的标识信息相同的数据变更消息,则不用进行处理,只在延时处理队列中进行记录;当到达预设的到期处理时刻时,再按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据,按照获取的修改后当前待变更数据,更新当前待变更数据。因此,本发明实施例针对接收到的对同一待变更数据的数据变更消息,只需要对一条数据变更消息进行处理,其他的不需要逐一进行处理。从而,解决了现有技术由于每一条数据变更消息都需要等待分布式锁,并且对每一条数据变更消息都需要进行处理导致的数据变更效率低的问题。
与图2所示实施例对应的,本发明实施例还提供了一种数据变更装置,应用于业务服务器,参见图5,该数据变更装置,可以包括:
接收模块501,用于接收与业务服务器通信连接的各个处理服务器发送的当前数据变更消息;当前数据变更消息中包含当前待变更数据的标识信息、待变更字段和对应的变更数据;当前数据变更请求为处理服务器对当前数据执行完一次修改操作后发送的;
判断模块502,用于判断已记录的延迟处理数据标识中是否包含当前待变更数据的标识信息;如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则不对当前数据变更消息进行处理;如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则启动变更模块503;
变更模块503,用于按照当前数据变更消息中包含的待变更字段和对应的变更数据,将当前待变更数据中的待变更字段对应的数据变更为变更数据;
记录模块504,用于将当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻;到期处理时刻是根据处理服务器完成预计次数的修改操作所需的预设时长确定的;
获取模块505,用于当到达当前数据变更消息的到期处理时刻时,按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
更新模块506,用于按照获取的修改后当前待变更数据,更新当前待变更数据。
可选的,记录模块504,可以具体用于:
根据当前时刻和预设时长,确定当前数据变更消息的到期处理时刻;
将当前待变更数据的标识信息及到期处理时刻,记录至预设的延时处理队列中;
获取模块505,可以具体用于:实时读取延时处理队列,当到达当前数据变更消息的到期处理时刻时,按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
可选的,获取模块505,可以具体用于:
向各个处理服务器发送获取修改后当前待变更数据的请求;
接收各个处理服务器返回的,在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
可选的,获取模块505,可以具体用于:
从数据库中获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;修改后当前待变更数据,是由各个处理服务器在每对当前数据执行完一次修改操作后,保存至数据库中的。
可选的,预设的延时处理队列为包含预设数量个空位和一个当前索引指针的环形队列;空位用于记录待变更数据的标识信息及到期处理时刻;当前索引指针用于每隔预设间隔时刻,按照预设的移动方向由当前空位顺次移动至下一个空位;
记录模块504,可以具体用于:
根据为当前待变更数据设置的到期处理时刻、预设的延时处理队列包含的空位数量、当前索引指针指向的空位信息和当前索引指针由当前空位指向下一个空位的间隔时间,确定当前待变更数据在延时处理队列中对应的目标空位;
将当前待变更数据的标识信息及到期处理时刻记录至目标空位;
获取模块505,可以具体用于:当当前索引指针移动至目标空位时,确定当到达当前数据变更消息的到期处理时刻;并按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
可选的,预设的延时处理队列,还可以包括:
循环圈数Cycle-Num,Cycle-Num用于根据为当前待变更数据设置的到期处理时刻、预设的延时处理队列包含的空位数量、当前索引指针指向的空位信息和当前索引指针由当前空位指向下一个空位的间隔时间,确定针对当前待变更数据当前索引指针的循环圈数;
获取模块505,可以具体用于:
当当前索引指针移动至目标空位时,判断当前数据变更消息对应的 Cycle-Num是否为0;
如果当前数据变更消息对应的Cycle-Num为0;则确定到达当前数据变更消息的到期处理时刻;并按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
如果当前数据变更消息对应的Cycle-Num不为0;则确定未到达当前数据变更消息的到期处理时刻,将当前数据变更消息对应的Cycle-Num减1;并执行当当前索引指针移动至目标空位时,判断当前数据变更消息对应的Cycle-Num是否为0的步骤。
可选的,参见图6,该数据变更装置,还可以包括:
统计报表模块601,用于在按照获取的修改后当前待变更数据,更新当前待变更数据后,针对当前待变更数据记录本次数据变更的时间和变更结果,形成统计报表并输出。
由图5和图6所示的实施例可见,本发明实施例提供的装置,针对预设时长内接收到的对同一待变更数据的数据变更消息,只对一条数据变更消息进行处理;对于与该数据变更消息中的当前待变更数据的标识信息相同的数据变更消息,则不用进行变更处理,只在延时处理队列中进行记录;当到达当前数据变更消息的到期处理时刻时,再按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。因此,本发明实施例针对预设时长内接收到的对同一待变更数据的数据变更消息,只需要对一条数据变更消息进行处理,其他的不需要逐一进行处理。从而,解决了现有技术由于对每一条数据变更消息都需要进行处理导致的数据变更效率低的问题。
与图2所示实施例对应的,本发明实施例还提供了一种服务器,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信;
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:
接收与业务服务器通信连接的各个处理服务器发送的当前数据变更消息;当前数据变更消息中包含当前待变更数据的标识信息、待变更字段和对应的变更数据;当前数据变更请求为处理服务器对当前数据执行完一次修改操作后发送的;
判断已记录的延迟处理数据标识中是否包含当前待变更数据的标识信息;
如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则不对当前数据变更消息进行处理;
如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则按照当前数据变更消息中包含的待变更字段和对应的变更数据,将当前待变更数据中的待变更字段对应的数据变更为变更数据;
将当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻;到期处理时刻是根据处理服务器完成预计次数的修改操作所需的预设时长确定的;
当到达当前数据变更消息的到期处理时刻时,按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
按照获取的修改后当前待变更数据,更新当前待变更数据。
由图7所示的实施例可见,本发明实施例提供的服务器,针对预设时长内接收到的对同一待变更数据的数据变更消息,只对一条数据变更消息进行处理;对于与该数据变更消息中的当前待变更数据的标识信息相同的数据变更消息,则不用进行变更处理,只在延时处理队列中进行记录;当到达当前数据变更消息的到期处理时刻时,再按照当前待变更数据的标识信息,获取各个处理服务器在预设时长内,对当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。因此,本发明实施例针对预设时长内接收到的对同一待变更数据的数据变更消息,只需要对一条数据变更消息进行处理,其他的不需要逐一进行处理。从而,解决了现有技术由于对每一条数据变更消息都需要进行处理导致的数据变更效率低的问题。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器 (DigitalSignal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据变更方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据变更方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (15)
1.一种数据变更方法,其特征在于,应用于业务服务器,所述方法,包括:
接收与所述业务服务器通信连接的各个处理服务器发送的当前数据变更消息;所述当前数据变更消息中包含当前待变更数据的标识信息、待变更字段和对应的变更数据;所述当前数据变更消息 为所述处理服务器对所述当前数据执行完一次修改操作后发送的;
判断已记录的延迟处理数据标识中是否包含所述当前待变更数据的标识信息;
如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则不对所述当前数据变更消息进行处理;
如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则按照所述当前数据变更消息中包含的待变更字段和对应的变更数据,将所述当前待变更数据中的待变更字段对应的数据变更为所述变更数据;
将所述当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻;所述到期处理时刻是根据所述处理服务器完成预计次数的修改操作所需的预设时长确定的;
当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
按照获取的修改后当前待变更数据,更新所述当前待变更数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻的步骤,包括:
根据当前时刻和所述预设时长,确定当前数据变更消息的到期处理时刻;
将所述当前待变更数据的标识信息及到期处理时刻,记录至预设的延时处理队列中;
所述当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
实时读取所述延时处理队列,当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
按照修改后当前待变更数据,更新所述当前待变更数据。
3.根据权利要求1所述的方法,其特征在于,所述获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
向所述各个处理服务器发送获取修改后当前待变更数据的请求;
接收所述各个处理服务器返回的,在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
4.根据权利要求1所述的方法,其特征在于,所述获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
从数据库中获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;所述修改后当前待变更数据,是由所述各个处理服务器在每对所述当前数据执行完一次修改操作后,保存至所述数据库中的。
5.根据权利要求2所述的方法,其特征在于,
所述预设的延时处理队列为包含预设数量个空位和一个当前索引指针的环形队列;所述空位用于记录待变更数据的标识信息及到期处理时刻;所述当前索引指针用于每隔预设间隔时刻,按照预设的移动方向由当前空位顺次移动至下一个空位;
所述将所述当前待变更数据的标识信息及到期处理时刻,记录至预设的延时处理队列中的步骤,包括:
根据为所述当前待变更数据设置的到期处理时刻、所述预设的延时处理队列包含的空位数量、所述当前索引指针指向的空位信息和所述当前索引指针由当前空位指向下一个空位的间隔时间,确定所述当前待变更数据在所述延时处理队列中对应的目标空位;
将所述当前待变更数据的标识信息及到期处理时刻记录至所述目标空位;
所述实时读取所述延时处理队列,当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
当所述当前索引指针移动至所述目标空位时,确定当到达所述当前数据变更消息的到期处理时刻;并按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
6.根据权利要求5所述的方法,其特征在于,所述预设的延时处理队列,还包括:
循环圈数Cycle-Num,所述Cycle-Num用于根据为所述当前待变更数据设置的到期处理时刻、所述预设的延时处理队列包含的空位数量、所述当前索引指针指向的空位信息和所述当前索引指针由当前空位指向下一个空位的间隔时间,确定针对所述当前待变更数据所述当前索引指针的循环圈数;
所述实时读取所述延时处理队列,当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据的步骤,包括:
当所述当前索引指针移动至所述目标空位时,判断所述当前数据变更消息对应的Cycle-Num是否为0;
如果所述当前数据变更消息对应的Cycle-Num为0;则确定到达所述当前数据变更消息的到期处理时刻;并按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
如果所述当前数据变更消息对应的Cycle-Num不为0;则确定未到达所述当前数据变更消息的到期处理时刻,将所述当前数据变更消息对应的Cycle-Num减1;并执行当所述当前索引指针移动至所述目标空位时,判断所述当前数据变更消息对应的Cycle-Num是否为0的步骤。
7.根据权利要求1所述的方法,其特征在于,在所述按照获取的修改后当前待变更数据,更新所述当前待变更数据的步骤之后,还包括:
针对所述当前待变更数据记录本次数据变更的时间和变更结果,形成统计报表并输出。
8.一种数据变更装置,其特征在于,应用于业务服务器,所述装置,包括:
接收模块,用于接收与所述业务服务器通信连接的各个处理服务器发送的当前数据变更消息;所述当前数据变更消息中包含当前待变更数据的标识信息、待变更字段和对应的变更数据;所述当前数据变更消息 为所述处理服务器对所述当前数据执行完一次修改操作后发送的;
判断模块,用于判断已记录的延迟处理数据标识中是否包含所述当前待变更数据的标识信息;如果已记录的延迟处理数据标识中包含当前待变更数据的标识信息,则不对所述当前数据变更消息进行处理;如果已记录的延迟处理数据标识中不包含当前待变更数据的标识信息,则启动变更模块;
所述变更模块,用于按照所述当前数据变更消息中包含的待变更字段和对应的变更数据,将所述当前待变更数据中的待变更字段对应的数据变更为所述变更数据;
记录模块,用于将所述当前待变更数据的标识信息作为延迟处理数据标识进行记录,并为当前数据变更消息设置到期处理时刻;所述到期处理时刻是根据所述处理服务器完成预计次数的修改操作所需的预设时长确定的;
获取模块,用于当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
更新模块,用于按照获取的修改后当前待变更数据,更新所述当前待变更数据。
9.根据权利要求8所述的装置,其特征在于,所述记录模块,具体用于:
根据当前时刻和所述预设时长,确定当前数据变更消息的到期处理时刻;
将所述当前待变更数据的标识信息及到期处理时刻,记录至预设的延时处理队列中;
所述获取模块,具体用于:实时读取所述延时处理队列,当到达所述当前数据变更消息的到期处理时刻时,按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
10.根据权利要求8所述的装置,其特征在于,所述获取模块,具体用于:
向所述各个处理服务器发送获取修改后当前待变更数据的请求;
接收所述各个处理服务器返回的,在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
11.根据权利要求8所述的装置,其特征在于,所述获取模块,具体用于:
从数据库中获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;所述修改后当前待变更数据,是由所述各个处理服务器在每对所述当前数据执行完一次修改操作后,保存至所述数据库中的。
12.根据权利要求9所述的装置,其特征在于,
所述预设的延时处理队列为包含预设数量个空位和一个当前索引指针的环形队列;所述空位用于记录待变更数据的标识信息及到期处理时刻;所述当前索引指针用于每隔预设间隔时刻,按照预设的移动方向由当前空位顺次移动至下一个空位;
所述记录模块,具体用于:
根据为所述当前待变更数据设置的到期处理时刻、所述预设的延时处理队列包含的空位数量、所述当前索引指针指向的空位信息和所述当前索引指针由当前空位指向下一个空位的间隔时间,确定所述当前待变更数据在所述延时处理队列中对应的目标空位;
将所述当前待变更数据的标识信息及到期处理时刻记录至所述目标空位;
所述获取模块,具体用于:当所述当前索引指针移动至所述目标空位时,确定当到达所述当前数据变更消息的到期处理时刻;并按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据。
13.根据权利要求12所述的装置,其特征在于,所述预设的延时处理队列,还包括:
循环圈数Cycle-Num,所述Cycle-Num用于根据为所述当前待变更数据设置的到期处理时刻、所述预设的延时处理队列包含的空位数量、所述当前索引指针指向的空位信息和所述当前索引指针由当前空位指向下一个空位的间隔时间,确定针对所述当前待变更数据所述当前索引指针的循环圈数;
所述获取模块,具体用于:
当所述当前索引指针移动至所述目标空位时,判断所述当前数据变更消息对应的Cycle-Num是否为0;
如果所述当前数据变更消息对应的Cycle-Num为0;则确定到达所述当前数据变更消息的到期处理时刻;并按照所述当前待变更数据的标识信息,获取所述各个处理服务器在所述预设时长内,对所述当前待变更数据执行至少一次修改操作后的修改后当前待变更数据;
如果所述当前数据变更消息对应的Cycle-Num不为0;则确定未到达所述当前数据变更消息的到期处理时刻,将所述当前数据变更消息对应的Cycle-Num减1;并执行当所述当前索引指针移动至所述目标空位时,判断所述当前数据变更消息对应的Cycle-Num是否为0的步骤。
14.根据权利要求8所述的装置,其特征在于,所述装置,还包括:
统计报表模块,用于在按照获取的修改后当前待变更数据,更新所述当前待变更数据后,针对所述当前待变更数据记录本次数据变更的时间和变更结果,形成统计报表并输出。
15.一种服务器,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910804110.6A CN110543486B (zh) | 2019-08-28 | 2019-08-28 | 数据变更方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910804110.6A CN110543486B (zh) | 2019-08-28 | 2019-08-28 | 数据变更方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110543486A CN110543486A (zh) | 2019-12-06 |
CN110543486B true CN110543486B (zh) | 2022-03-04 |
Family
ID=68710708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910804110.6A Active CN110543486B (zh) | 2019-08-28 | 2019-08-28 | 数据变更方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110543486B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111640027B (zh) * | 2020-05-28 | 2023-09-12 | 北京金山云网络技术有限公司 | 业务数据的处理、业务的处理方法、装置及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080077624A1 (en) * | 2006-09-21 | 2008-03-27 | International Business Machines Corporation | Method for high performance optimistic item level replication |
CN109597818A (zh) * | 2018-11-28 | 2019-04-09 | 优刻得科技股份有限公司 | 数据更新方法、装置、存储介质和设备 |
-
2019
- 2019-08-28 CN CN201910804110.6A patent/CN110543486B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080077624A1 (en) * | 2006-09-21 | 2008-03-27 | International Business Machines Corporation | Method for high performance optimistic item level replication |
CN109597818A (zh) * | 2018-11-28 | 2019-04-09 | 优刻得科技股份有限公司 | 数据更新方法、装置、存储介质和设备 |
Non-Patent Citations (2)
Title |
---|
A Mass Data Update Method in Distributed Systems;Tsukasa Kudoa 等;《Procedia Computer Science》;20131004;第502-511页 * |
一种网络编码分布式存储系统中的数据更新策略;刘冰星 等;《计算机应用与软件》;20170331;第38卷(第3期);第645-650页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110543486A (zh) | 2019-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897628B (zh) | 一种分布式锁的实现方法、装置及电子设备 | |
CN108255620B (zh) | 一种业务逻辑处理方法、装置、业务服务器及系统 | |
CN112115200B (zh) | 数据同步方法、装置、电子设备及可读存储介质 | |
CN107748790B (zh) | 一种线上服务系统、数据加载方法、装置及设备 | |
CN111491002B (zh) | 设备巡检方法、装置、被巡检设备、巡检服务器及系统 | |
CN106066894A (zh) | 数据全缓存方法和数据全缓存装置 | |
CN110633977A (zh) | 支付异常处理方法、装置及终端设备 | |
CN110543486B (zh) | 数据变更方法、装置及服务器 | |
US10437757B2 (en) | Determine priority of requests using request signals and priority signals at an arbitration node | |
CN111399849B (zh) | 一种应用程序安装包的确定方法及系统 | |
CN116737084A (zh) | 一种队列统计方法、装置、电子设备及存储介质 | |
CN111309693A (zh) | 一种数据同步方法、装置、系统、电子设备及存储介质 | |
CN111291127B (zh) | 一种数据同步方法、装置、服务器及存储介质 | |
CN111382380A (zh) | 一种页面访问时长的统计方法和装置 | |
CN109933580B (zh) | 训练数据生成方法、装置及服务器 | |
CN111092922B (zh) | 一种信息发送方法及装置 | |
CN112508449B (zh) | 任务执行方法、装置、电子设备及计算机可读存储介质 | |
CN112416401B (zh) | 一种数据更新方法、装置及设备 | |
CN112527538B (zh) | 设备更新方法、装置、电子设备及存储介质 | |
CN113849133B (zh) | 隐私数据的处理方法、装置、电子设备及存储介质 | |
CN112463125B (zh) | 一种虚拟定时器的定时方法及设备 | |
CN110858848B (zh) | 一种集群系统的任务资源的纠正方法及装置 | |
CN113343912B (zh) | 一种播放异常原因的确定方法、装置及电子设备 | |
CN114077699A (zh) | 热点关键字确定方法、装置、电子设备及存储介质 | |
US20230143636A1 (en) | Buffering Techniques for a Change Record Stream of a Database |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |