CN105956032B - 缓存数据同步方法、系统和装置 - Google Patents
缓存数据同步方法、系统和装置 Download PDFInfo
- Publication number
- CN105956032B CN105956032B CN201610262191.8A CN201610262191A CN105956032B CN 105956032 B CN105956032 B CN 105956032B CN 201610262191 A CN201610262191 A CN 201610262191A CN 105956032 B CN105956032 B CN 105956032B
- Authority
- CN
- China
- Prior art keywords
- database
- synchronized
- equipment
- data cached
- data
- 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
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Abstract
本发明公开了缓存数据同步方法、系统和装置,所述方法包括:工作装置访问管理装置,获取包含有待同步的数据库配置信息和当前同步点信息的同步任务信息;工作装置根据待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从待同步的数据库中依次抓取出当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据。应用本发明所述方案,能够降低对业务程序的侵入性和提高业务的执行效率。
Description
【技术领域】
本发明涉及数据处理技术,特别涉及缓存数据同步方法、系统和装置。
【背景技术】
当数据库中的数据在缓存系统中作了缓存时,需要保证缓存系统中的缓存数据与数据库中的源数据的一致性。
现有技术中,主要采用以下方式来保持所述一致性:当业务程序需要更新数据库中的某一数据时,计算出该数据对应的缓存数据的key,然后同步更新缓存数据。
但是,上述方式会对业务程序产生很大的侵入性,而且也会增加业务执行的平均时耗,降低业务的执行效率。
【发明内容】
有鉴于此,本发明提供了缓存数据同步方法、系统和装置,能够降低对业务程序的侵入性和提高业务的执行效率。
具体技术方案如下:
一种缓存数据同步方法,该方法包括:
工作装置访问管理装置,获取包含有待同步的数据库配置信息和当前同步点信息的同步任务信息;
所述工作装置根据所述待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从所述待同步的数据库中依次抓取出所述当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据。
根据本发明一优选实施例,所述在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据包括:
所述工作装置在抓取到一个更新事件之后,则对其进行解析,得到一条数据库更新记录;
所述工作装置在缓存系统中写入解析得到的数据库更新记录对应的锁,并在所述锁的有效期内,更新缓存系统中与解析得到的数据库更新记录对应的缓存数据。
根据本发明一优选实施例,所述更新缓存系统中与抓取到的更新事件对应的缓存数据包括:
所述工作装置删除缓存系统中与抓取到的更新事件对应的缓存数据。
根据本发明一优选实施例,该方法进一步包括:
业务程序访问一个数据库之前,访问缓存系统,若未在缓存系统中找到所需的访问数据,或者,在缓存系统中找到访问数据但访问数据处于不可用状态,则访问数据库,并将得到的访问数据写入到缓存系统中。
根据本发明一优选实施例,该方法进一步包括:
若在缓存系统中找到访问数据,且访问数据处于可用状态,则业务程序使用位于缓存系统中的访问数据。
根据本发明一优选实施例,该方法进一步包括:
所述工作装置定期地向所述管理装置反馈当前的任务延迟信息,所述当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,以便所述管理装置在接收到的时间差大于预定阈值时,将缓存系统中对应于所述待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态。
一种缓存数据同步方法,该方法包括:
管理装置接受工作装置的访问,为所述工作装置分配包含有待同步的数据库配置信息和当前同步点信息的同步任务信息,以便所述工作装置根据所述待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从所述待同步的数据库中依次抓取出所述当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据。
根据本发明一优选实施例,该方法进一步包括:
所述管理装置接收所述工作装置定期反馈来的当前的任务延迟信息,所述当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,若确定接收到的时间差大于预定阈值,则将缓存系统中对应于所述待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态,处于不可用状态的缓存数据将不能被业务程序使用。
一种工作装置,包括:获取模块和同步模块;
所述获取模块,用于访问管理装置,获取包含有待同步的数据库配置信息和当前同步点信息的同步任务信息,并将所述同步任务信息发送给所述同步模块;
所述同步模块,用于根据所述待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从所述待同步的数据库中依次抓取出所述当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据。
根据本发明一优选实施例,所述同步模块进一步用于,在抓取到一个更新事件之后,则对其进行解析,得到一条数据库更新记录,并在缓存系统中写入解析得到的数据库更新记录对应的锁,在所述锁的有效期内,更新缓存系统中与解析得到的数据库更新记录对应的缓存数据。
根据本发明一优选实施例,所述同步模块在抓取到一个更新事件之后,则删除缓存系统中与抓取到的更新事件对应的缓存数据。
根据本发明一优选实施例,所述同步模块进一步用于,定期地向所述管理装置反馈当前的任务延迟信息,所述当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,以便所述管理装置在接收到的时间差大于预定阈值时,将缓存系统中对应于所述待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态,处于不可用状态的缓存数据将不能被业务程序使用。
一种管理装置,包括:分配模块;
所述分配模块,用于接受工作装置的访问,为所述工作装置分配包含有待同步的数据库配置信息和当前同步点信息的同步任务信息,以便所述工作装置根据所述待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从所述待同步的数据库中依次抓取出所述当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据。
根据本发明一优选实施例,所述管理装置中进一步包括:标记模块;
所述标记模块,用于接收所述工作装置定期反馈来的当前的任务延迟信息,所述当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,若确定接收到的时间差大于预定阈值,则将缓存系统中对应于所述待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态,处于不可用状态的缓存数据将不能被业务程序使用。
一种缓存数据同步系统,包括上述工作装置以及上述管理装置。
由以上介绍可以看出,本发明所述方案中,可直接根据数据库更新事件来更新缓存数据,从而可在对业务程序透明的情况下实现缓存数据的同步,进而避免了现有技术中存在的问题,降低了对业务程序的侵入性和提高了业务的执行效率。
【附图说明】
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于所属领域技术人员来说,还可以根据这些附图获得其他的附图。
图1为本发明数据库、缓存系统、管理装置、工作装置以及业务程序之间的交互方式示意图。
图2为本发明缓存数据同步方法实施例的流程图。
图3为本发明工作装置31实施例的组成结构示意图。
图4为本发明管理装置32实施例的组成结构示意图。
【具体实施方式】
针对现有技术中存在的问题,本发明中提出一种缓存数据同步方案,能够降低对业务程序的侵入性和提高业务的执行效率。
为此,本发明在现有的数据库和缓存系统之外,增设了管理(manager)装置和工作(worker)装置,其中,管理装置主要负责同步任务的分配(调度),工作装置主要负责同步任务的执行。
相应的,图1为本发明数据库、缓存系统、管理装置、工作装置以及业务程序之间的交互方式示意图。
所述交互包括两个过程,一个是缓存数据同步过程,另一个是缓存数据写入过程。
如图1所示,缓存数据同步过程包括:
工作装置访问管理装置,获取包含有待同步的数据库配置信息和当前同步点信息的同步任务信息;
工作装置根据待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从待同步的数据库中依次抓取出当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据。
缓存系统中的缓存数据是由业务程序写入的。
如图1所示,缓存数据的写入过程包括:
业务程序访问一个数据库之前,访问缓存系统,若未在缓存系统中找到所需的访问数据,或者,在缓存系统中找到访问数据但访问数据处于不可用状态,则访问数据库,并将得到的访问数据写入到缓存系统中;
反之,若在缓存系统中找到访问数据,且访问数据处于可用状态,则业务程序可直接使用位于缓存系统中的访问数据。
业务程序访问数据库,通常是指业务程序对数据库进行读操作,相应的,业务程序将得到的访问数据写入到缓存系统中,即指业务程序将读取到的访问数据写入到缓存系统中。
处于不可用状态的缓存数据被认为是不可靠的,不会被业务程序使用。
数据库中保存的数据量是非常大的,不可能都写入到缓存系统中,而依靠业务程序来向缓存系统中写入数据,可以尽可能地保证写入到缓存系统中的都是热数据,从而提高了缓存数据的命中率。
为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步的详细说明。
实施例一
图2为本发明缓存数据同步方法实施例的流程图,如图2所示,包括以下具体实现。
在21中,工作装置访问管理装置,获取包含有待同步的数据库配置信息和当前同步点信息的同步任务信息。
工作装置启动之后,需要注册到管理装置,即访问管理装置。
管理装置会为工作装置分配同步任务信息,其中可包括待同步的数据库配置信息和当前同步点信息等。
待同步的数据库配置信息,即通知工作装置需要将哪个数据库中的数据同步到缓存系统中,待同步的数据库配置信息中可包括:待同步的数据库的IP、端口号、用户名和密码等。
当前同步点信息,即通知工作装置需要从数据库中的哪个位置开始进行同步缓存。
可采用以下任一方式来对同步点进行标记:
1)binlog_name+binlog_pos的标记方式,binlog_name表示binlog文件名,binlog_pos表示文件内偏移量,即相对于文件开始处偏移的字节数;
2)使用全局的event_id来进行标记的方式。
具体采用上述哪种标记方式可根据实际需要而定。
同步任务信息是预先初始化到管理装置中的,比如,可预先由管理员手动调用管理装置的任务初始化接口,将同步任务信息写入到管理装置中,同步任务信息写入到管理装置中之后,才能由管理装置将其分配给工作装置,后续,如果同步任务信息发生了变化,如待同步的数据库的IP发生了变化,那么可再由管理员进行手动修改。
在22中,工作装置从待同步的数据库配置信息对应的待同步的数据库中抓取当前同步点之后的第一个更新事件。
工作装置可根据待同步的数据库的IP、端口号、用户名和密码等,访问待同步的数据库,并可按照发生时间由先到后的顺序,抓取出当前同步点之后的第一个更新事件,如何进行抓取为现有技术。
在23中,工作装置对抓取到的更新事件进行解析,得到一条数据库更新记录。
工作装置如何对抓取到的更新事件进行解析为现有技术。
对数据库进行更新,主要通过写操作来完成,所述写操作可包括插入、修改和删除等。
在24中,工作装置在缓存系统中写入解析得到的数据库更新记录对应的锁。
如何写入锁为现有技术。
在25中,在锁的有效期内,工作装置更新缓存系统中与解析得到的数据库更新记录对应的缓存数据。
在锁的有效期内对解析得到的数据库更新记录对应的缓存数据进行更新,是为了尽可能地避免在缓存系统中出现脏数据。
举例说明:
假设存在两个并发的业务请求,操作的是数据库中的同一条数据,其中一个请求是读请求,另外一个请求是写请求;
读请求先读取到了该条数据,并要将其写入到缓存系统中,但是由于某种原因,此操作卡住了;
此时写请求对数据库中的该条数据执行了写操作,然后工作装置抓取到了该更新事件,并将该更新事件同步到了缓存系统中;
如果没有锁的存在,当读请求复活后,将会执行对缓存系统的写操作,即会将之前读取到的数据写入到缓存系统中,覆盖之前所作更新,从而使缓存系统中出现脏数据。
锁的有效期的具体时长可根据实际需要而定。
另外,本发明中,工作装置更新缓存系统中与解析得到的数据库更新记录对应的缓存数据的方式可为:删除缓存系统中与解析得到的数据库更新记录对应的缓存数据。
目前采用较多的更新方式主要为以下两种:
1)增量更新方式,即数据库中在原来的基础上作了什么更新,缓存数据也作相应的更新,如对数据库中的某一条数据进行了一定的修改,那么也对缓存系统中的对应缓存数据进行相应的修改;
2)全量更新方式,即重新将更新后的完整数据写入到缓存系统中,如对数据库中的某一条数据进行了一定的修改,那么将修改后的该条完整数据重新写入到缓存系统中。
对于增量更新方式,一旦某次更新失败,那么后续每次更新后的数据都是脏数据,因此本发明中采用全量更新方式,即针对解析得到的每条数据库更新记录,删除缓存系统中与该数据库更新记录对应的缓存数据,后续等到业务程序从数据库中读取到该条数据库更新记录对应的数据时,再将其写入到缓存系统中。
在26中,工作装置从待同步的数据库中抓取下一个更新事件,并在之后重复执行上述23~26。
理论上,只要工作装置不出现故障,可一直按照图2所示流程运行。
在运行过程中,工作装置还会定期地向管理装置反馈当前的任务延迟信息,即当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差。管理装置确定接收到的时间差大于预定阈值,则可将缓存系统中与该工作装置对应的待同步的数据库对应的缓存数据标记为不可用状态,否则,标记为可用状态。这样,当业务程序需要使用缓存数据时,即可明确地知道其处于可用状态还是不可用状态。
对于工作装置来说,其在抓取到一个更新事件后,可以获取到该更新事件的发生时间,而显然,工作装置也知道对该更新事件对应的缓存数据进行更新的时间,那么进而即可计算出这两个时间之间的时间差,反馈给管理装置。管理装置在对缓存数据进行标记时,以数据库为单位进行,即一旦接收自工作装置的时间差大于预定阈值,则将该工作装置对应的待同步的数据库中保存在缓存系统中的缓存数据均标记为不可用状态,等到接收到的时间差小于或等于预定阈值时,再标记为可用状态。
所述阈值的具体取值以及工作装置相邻两次向管理装置反馈任务延迟信息所间隔的具体时长均可根据实际需要而定。
另外,工作装置在定期地向管理装置反馈当前的任务延迟信息的同时,还可将当前的同步点等信息一并反馈给管理装置,即通知管理装置当前已经同步到了什么位置,管理装置可将接收到的当前的同步点等信息保存到工作装置对应的待同步的数据库中。
在实际应用中,工作装置的个数可为多个,每个工作装置可分别处理不同的同步任务,对于任一工作装置,一旦该工作装置出现故障,那么管理装置可将该工作装置的同步任务分配给其他工作装置,并从对应的数据库中获取最新的同步点信息,以便通知新分配的工作装置从什么位置开始进行同步。
实施例二
图3为本发明工作装置31实施例的组成结构示意图,如图3所示,包括:获取模块311和同步模块312。
获取模块311,用于访问管理装置32,获取包含有待同步的数据库配置信息和当前同步点信息的同步任务信息,并将同步任务信息发送给同步模块312;
同步模块312,用于根据待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从待同步的数据库中依次抓取出当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据。
获取模块311所在工作装置31启动之后,需要注册到管理装置32,即访问管理装置32。管理装置32会为工作装置31分配同步任务信息,其中可包括待同步的数据库配置信息和当前同步点信息等。
待同步的数据库配置信息,即通知工作装置31需要将哪个数据库中的数据同步到缓存系统中,待同步的数据库配置信息中可包括:待同步的数据库的IP、端口号、用户名和密码等。当前同步点信息,即通知工作装置31需要从数据库中的哪个位置开始进行同步缓存。
同步任务信息是预先初始化到管理装置32中的。
获取模块311获取到同步任务信息之后,将其发送给同步模块312。
同步模块312获取到同步任务信息之后,可根据待同步的数据库的IP、端口号、用户名和密码等,访问待同步的数据库,并可按照发生时间由先到后的顺序,从待同步的数据库中依次抓取出当前同步点之后的各更新事件,其中,在每抓取到一个更新事件之后,则可对其进行解析,从而得到一条数据库更新记录,并可在缓存系统中写入解析得到的数据库更新记录对应的锁,在锁的有效期内,更新缓存系统中与解析得到的数据库更新记录对应的缓存数据。
在锁的有效期内对解析得到的数据库更新记录对应的缓存数据进行更新,是为了尽可能地避免在缓存系统中出现脏数据。
同步模块312可采用全量更新方式来对缓存数据进行更新,即同步模块312在抓取到一个更新事件之后,则可删除缓存系统中与抓取到的更新事件对应的缓存数据。
另外,同步模块312还可定期地向管理装置32反馈当前的任务延迟信息,所述当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,以便管理装置32在接收到的时间差大于预定阈值时,将缓存系统中对应于待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态。
当业务程序需要访问一个数据库时,若未在缓存系统中找到访问数据,或者,在缓存系统中找到访问数据但访问数据处于不可用状态,则访问数据库,并将访问得到的访问数据写入到缓存系统中;反之,若在缓存系统中找到访问数据,且访问数据处于可用状态,则业务程序可直接使用位于缓存系统中的访问数据。
实施例三
图4为本发明管理装置32实施例的组成结构示意图,如图4所示,包括:分配模块321。
分配模块321,用于接受工作装置31的访问,为工作装置31分配包含有待同步的数据库配置信息和当前同步点信息的同步任务信息,以便工作装置31根据待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从待同步的数据库中依次抓取出当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据。
工作装置31启动之后,需要访问管理装置32。分配模块321会为工作装置31分配同步任务信息,其中可包括待同步的数据库配置信息和当前同步点信息等。
待同步的数据库配置信息,即通知工作装置31需要将哪个数据库中的数据同步到缓存系统中,待同步的数据库配置信息中可包括:待同步的数据库的IP、端口号、用户名和密码等。当前同步点信息,即通知工作装置31需要从数据库中的哪个位置开始进行同步缓存。
工作装置31获取到同步任务信息之后,可根据待同步的数据库的IP、端口号、用户名和密码等,访问待同步的数据库,并可按照发生时间由先到后的顺序,从待同步的数据库中依次抓取出当前同步点之后的各更新事件,其中,在抓取到一个更新事件之后,则可对其进行解析,从而得到一条数据库更新记录,并可在缓存系统中写入解析得到的数据库更新记录对应的锁,在锁的有效期内,更新缓存系统中与解析得到的数据库更新记录对应的缓存数据。
另外,如图4所示,管理装置32中还可进一步包括:标记模块322。
标记模块322接收工作装置31定期反馈来的当前的任务延迟信息,当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,若确定接收到的时间差大于预定阈值,则将缓存系统中对应于待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态,处于不可用状态的缓存数据将不能被业务程序使用。
当业务程序需要访问一个数据库时,若未在缓存系统中找到访问数据,或者,在缓存系统中找到访问数据但访问数据处于不可用状态,则访问数据库,并将得到的访问数据写入到缓存系统中;反之,若在缓存系统中找到访问数据,且访问数据处于可用状态,则业务程序可直接使用位于缓存系统中的访问数据。
实施例四
本实施例中提出了一种缓存数据同步系统,包括如实施例二中所述的工作装置以及如实施例三中所述的管理装置。
基于上述各实施例可知,采用本发明所述方案,可直接根据数据库更新事件来更新缓存数据,从而可在对业务程序透明的情况下实现缓存数据的同步,进而避免了现有技术中存在的问题,降低了对业务程序的侵入性和提高了业务的执行效率,而且,本发明所述方案实现起来简单方便,从而便于进行普及和推广。
需要说明的是,在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (15)
1.一种缓存数据同步方法,其特征在于,该方法包括:
工作装置访问管理装置,获取包含有待同步的数据库配置信息和当前同步点信息的同步任务信息,所述待同步的数据库配置信息包括待同步的数据库的IP、端口号、用户名和密码;
所述工作装置根据所述待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从所述待同步的数据库中依次抓取出所述当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据;
所述工作装置为多个,任一工作装置出现故障时,所述管理装置将出现故障的工作装置的同步任务分配给其他工作装置。
2.根据权利要求1所述的缓存数据同步方法,其特征在于,
所述在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据包括:
所述工作装置在抓取到一个更新事件之后,则对其进行解析,得到一条数据库更新记录;
所述工作装置在缓存系统中写入解析得到的数据库更新记录对应的锁,并在所述锁的有效期内,更新缓存系统中与解析得到的数据库更新记录对应的缓存数据。
3.根据权利要求1所述的缓存数据同步方法,其特征在于,
所述更新缓存系统中与抓取到的更新事件对应的缓存数据包括:
所述工作装置删除缓存系统中与抓取到的更新事件对应的缓存数据。
4.根据权利要求1所述的缓存数据同步方法,其特征在于,
该方法进一步包括:
业务程序访问一个数据库之前,访问缓存系统,若未在缓存系统中找到所需的访问数据,或者,在缓存系统中找到访问数据但访问数据处于不可用状态,则访问数据库,并将得到的访问数据写入到缓存系统中。
5.根据权利要求4所述的缓存数据同步方法,其特征在于,
该方法进一步包括:
若在缓存系统中找到访问数据,且访问数据处于可用状态,则业务程序使用位于缓存系统中的访问数据。
6.根据权利要求5所述的缓存数据同步方法,其特征在于,
该方法进一步包括:
所述工作装置定期地向所述管理装置反馈当前的任务延迟信息,所述当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,以便所述管理装置在接收到的时间差大于预定阈值时,将缓存系统中对应于所述待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态。
7.一种缓存数据同步方法,其特征在于,该方法包括:
管理装置接受工作装置的访问,为所述工作装置分配包含有待同步的数据库配置信息和当前同步点信息的同步任务信息,以便所述工作装置根据所述待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从所述待同步的数据库中依次抓取出所述当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据;所述待同步的数据库配置信息包括待同步的数据库的IP、端口号、用户名和密码;
所述工作装置为多个,任一工作装置出现故障时,所述管理装置将出现故障的工作装置的同步任务分配给其他工作装置。
8.根据权利要求7所述的缓存数据同步方法,其特征在于,
该方法进一步包括:
所述管理装置接收所述工作装置定期反馈来的当前的任务延迟信息,所述当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,若确定接收到的时间差大于预定阈值,则将缓存系统中对应于所述待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态,处于不可用状态的缓存数据将不能被业务程序使用。
9.一种工作装置,其特征在于,包括:获取模块和同步模块;
所述获取模块,用于访问管理装置,获取包含有待同步的数据库配置信息和当前同步点信息的同步任务信息,并将所述同步任务信息发送给所述同步模块;所述待同步的数据库配置信息包括待同步的数据库的IP、端口号、用户名和密码;所述获取模块还用于从所述管理装置获取其他出现故障的工作装置的同步任务信息;
所述同步模块,用于根据所述待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从所述待同步的数据库中依次抓取出所述当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据。
10.根据权利要求9所述的工作装置,其特征在于,
所述同步模块进一步用于,在抓取到一个更新事件之后,则对其进行解析,得到一条数据库更新记录,并在缓存系统中写入解析得到的数据库更新记录对应的锁,在所述锁的有效期内,更新缓存系统中与解析得到的数据库更新记录对应的缓存数据。
11.根据权利要求9所述的工作装置,其特征在于,
所述同步模块在抓取到一个更新事件之后,则删除缓存系统中与抓取到的更新事件对应的缓存数据。
12.根据权利要求9所述的工作装置,其特征在于,
所述同步模块进一步用于,定期地向所述管理装置反馈当前的任务延迟信息,所述当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,以便所述管理装置在接收到的时间差大于预定阈值时,将缓存系统中对应于所述待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态,处于不可用状态的缓存数据将不能被业务程序使用。
13.一种管理装置,其特征在于,包括:分配模块;
所述分配模块,用于接受工作装置的访问,为所述工作装置分配包含有待同步的数据库配置信息和当前同步点信息的同步任务信息,以便所述工作装置根据所述待同步的数据库配置信息访问待同步的数据库,并按照发生时间由先到后的顺序,从所述待同步的数据库中依次抓取出所述当前同步点之后的各更新事件,在抓取到一个更新事件之后,则更新缓存系统中与抓取到的更新事件对应的缓存数据;所述待同步的数据库配置信息包括待同步的数据库的IP、端口号、用户名和密码;
所述工作装置为多个,任一工作装置出现故障时,所述分配模块还用于将出现故障的工作装置的同步任务分配给其他工作装置。
14.根据权利要求13所述的管理装置,其特征在于,
所述管理装置中进一步包括:标记模块;
所述标记模块,用于接收所述工作装置定期反馈来的当前的任务延迟信息,所述当前的任务延迟信息为:当前处理的更新事件在数据库中的发生时间与对该更新事件对应的缓存数据进行更新的时间之间的时间差,若确定接收到的时间差大于预定阈值,则将缓存系统中对应于所述待同步的数据库的缓存数据标记为不可用状态,否则,标记为可用状态,处于不可用状态的缓存数据将不能被业务程序使用。
15.一种缓存数据同步系统,其特征在于,包括如权利要求9~12中任一项所述的工作装置以及如权利要求13~14中任一项所述的管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610262191.8A CN105956032B (zh) | 2016-04-25 | 2016-04-25 | 缓存数据同步方法、系统和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610262191.8A CN105956032B (zh) | 2016-04-25 | 2016-04-25 | 缓存数据同步方法、系统和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105956032A CN105956032A (zh) | 2016-09-21 |
CN105956032B true CN105956032B (zh) | 2019-09-20 |
Family
ID=56916623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610262191.8A Active CN105956032B (zh) | 2016-04-25 | 2016-04-25 | 缓存数据同步方法、系统和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105956032B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107018170B (zh) * | 2016-10-27 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和设备 |
CN109144992A (zh) * | 2017-06-15 | 2019-01-04 | 北京京东尚科信息技术有限公司 | 一种数据存储的方法和装置 |
CN112307060B (zh) * | 2019-08-01 | 2024-04-23 | 北京京东振世信息技术有限公司 | 拣货任务处理的方法和装置 |
CN111881167B (zh) * | 2020-07-22 | 2022-12-27 | 苏州浪潮智能科技有限公司 | 一种获取风扇状态的方法 |
CN112035495B (zh) * | 2020-08-20 | 2024-02-23 | 深圳乐信软件技术有限公司 | 数据同步方法、装置、服务器及存储介质 |
CN113590716B (zh) * | 2021-08-09 | 2022-06-10 | 深圳市携客互联科技有限公司 | 基于erp系统集成接口业务数据自动同步方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530290A (zh) * | 2012-07-03 | 2014-01-22 | 深圳市腾讯计算机系统有限公司 | 数据库间的数据迁移方法和系统 |
CN104572689A (zh) * | 2013-10-17 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置及系统 |
CN105302895A (zh) * | 2015-10-21 | 2016-02-03 | 浪潮通用软件有限公司 | 一种数据缓存同步方法、服务器和客户端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9514160B2 (en) * | 2013-03-11 | 2016-12-06 | Oracle International Corporation | Automatic recovery of a failed standby database in a cluster |
-
2016
- 2016-04-25 CN CN201610262191.8A patent/CN105956032B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530290A (zh) * | 2012-07-03 | 2014-01-22 | 深圳市腾讯计算机系统有限公司 | 数据库间的数据迁移方法和系统 |
CN104572689A (zh) * | 2013-10-17 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置及系统 |
CN105302895A (zh) * | 2015-10-21 | 2016-02-03 | 浪潮通用软件有限公司 | 一种数据缓存同步方法、服务器和客户端 |
Non-Patent Citations (1)
Title |
---|
数据缓存按需同步的设计与应用;周京晖;《软件》;20131231;第34卷(第5期);第6-11页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105956032A (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105956032B (zh) | 缓存数据同步方法、系统和装置 | |
JP7090744B2 (ja) | 分散データベースクラスタシステム、及びデータ同期方法 | |
CN103294675B (zh) | 一种分布式存储系统中的数据更新方法及装置 | |
CN103955486B (zh) | 分布式服务系统及其数据更新、数据查询的方法 | |
US11442961B2 (en) | Active transaction list synchronization method and apparatus | |
EP2378718B1 (en) | Method, node and system for controlling version in distributed system | |
CN103530362B (zh) | 一种用于多副本分布式系统的计算机数据读写方法 | |
US9672244B2 (en) | Efficient undo-processing during data redistribution | |
CN103186554B (zh) | 分布式数据镜像方法及存储数据节点 | |
CN105814544B (zh) | 用于支持分布式数据网格中的持久化分区恢复的系统和方法 | |
CN106528574A (zh) | 一种数据同步方法及设备 | |
CN106610876A (zh) | 数据快照的恢复方法及装置 | |
CN105324757A (zh) | 具有分布式清单的去复制的数据存储系统 | |
JP6251388B2 (ja) | KeyValueデータベースのデータテーブルを更新するための方法およびテーブルデータを更新するための装置 | |
RU2654144C1 (ru) | Ведение журнала отката для секционированных наборов данных в памяти | |
CN110046062A (zh) | 分布式数据处理方法及系统 | |
US11055185B2 (en) | Method and system for global snapshots of distributed storage | |
CN108183965A (zh) | 一种数据同步方法、装置、设备、系统及可读存储介质 | |
CN102508740A (zh) | 文件系统远程复制方法 | |
CN106648993A (zh) | 一致性组快照管理的方法及装置 | |
CN101232514A (zh) | 网络附加存储节点的元数据同步方法及网络附加存储节点 | |
JP2016144169A (ja) | 通信システム、キュー管理サーバ、及び、通信方法 | |
US9201685B2 (en) | Transactional cache versioning and storage in a distributed data grid | |
CN111475480B (zh) | 一种日志处理方法及系统 | |
CN110895547B (zh) | 基于db2联邦特性的多源异构数据库数据同步系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |