数据备份方法及系统的制作方法_3

文档序号:9616173阅读:来源:国知局
据备份性能。而且,采用多线程池进行数据备份,加大了并发备份数据分布的范围,降低了同时备份小文件集的可能性,有效减少数据文件分布不均导致备份性能的不稳定性,从而增强了数据备份的稳定性。
[0075]可选的,线程池具体可以用于,将所接收到的待备份数据按数据文件分配给不同的线程进行数据备份。
[0076]也就是说,在线程池中,一个线程对一个数据文件中的数据进行备份,即一个线程池负责一个数据文件,不同的线程池负责不同的数据文件。
[0077]由于待备份的数据结构是按照一定的规则来存储的,逻辑结构上为一个数据存储目录代表着一类数据,将一个目录分配给一个线程池,每个线程池负责一个目录,每个线程池中的线程来负责目录中每个数据文件的备份,这样可以防止目录中数据文件分布不均造成备份速度的不稳定。
[0078]另外,这样做可以保证在按照逻辑存储数据备份的基础上,实现更高层次的并发,既能满足顺序备份的要求,也可以在数据备份过程遭受意外中断(如宕机或程序崩溃退出)后进行续传。具体的,本发明实施例提供的数据备份方法还可以包括,若出现宕机或程序崩溃退出等异常情况使得备份过程中断,只需重启备份程序即可,备份程序对需要备份的数据文件是否已经进行备份进行逐个判断,若数据文件已经备份在目的地址,且数据大小与源地址的该数据文件的数据大小相同,则不再对该数据文件进行备份,否则,对该数据文件进行备份。保证程序意外中断后,从中断处进行续传。
[0079]可选的,线程池在对数据文件进行备份的过程中,还可以对数据文件进行监控,若该数据文件传输失败,则自动对该数据文件重传,若执行成功,则将传输该数据文件的线程释放回线程池,等待传输新的数据文件。
[0080]可选的,本发明实施例提供的数据备份系统还可以包括:
[0081]队列管理模块,用于当第一线程池中的所有线程都处于繁忙状态时,若还有未备份的待备份数据,则将待备份数据加入到与第一线程池对应的队列中;
[0082]线程处于繁忙状态即线程正在进行数据传输。对于每个线程池而言,若该线程池中的所有线程均处于繁忙状态,但是还有待备份数据需要启用该线程池中的线程进行备份,则将该待备份数据加入到与该线程池对应的队列中。
[0083]读取模块,用于当第一线程池中有空闲线程时,从与第一线程池对应的队列中读取一数据文件并分配给该空闲线程进行数据备份。
[0084]当有线程备份完成后释放回线程池(即由繁忙状态转为空闲状态)时,再从该线程池对应的队列中读取属于同一数据文件的数据,由线程池中的空闲线程对读取的数据进行备份。
[0085]可选的,获取模块32基于脚本语言实现;备份模块34基于java语言实现。
[0086]本发明实施例中,通过脚本语言实现线程池的分配和管理,通过java语言实现线程池中线程分配和管理。用脚本语言来实现控制数据目录的分配和过滤条件的设置,而不需要关注线程池中数据文件的细节。用java语言实现线程池中数据文件的传输,传输的单位是文件,一个文件分配一个线程,一个文件传输完毕后就将该线程释放回线程池,下一个文件等到空闲的线程在进行数据备份,而不必关心数据的逻辑存储结构,只需要逐个备份分配下来的数据文件即可。
[0087]可见,本发明实施例提供的数据备份方法,有效的划分了数据备份的层次,从而降低了程序的耦合度,简化了程序的管理,可以使程序具有更高的可扩展性和可维护性。
[0088]可选的,上述脚本语言可以为shell脚本语言,或者,Python脚本语言,或者,ruby脚本语言。
[0089]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种数据备份方法,其特征在于,包括: 建立若干个线程池; 按数据存储目录获取待备份数据; 将从同一数据存储目录获取的待备份数据传输给所述若干个线程池中的同一个线程池; 线程池中的若干个线程用于对接收到数据进行备份。2.根据权利要求1所述的方法,其特征在于,线程池对所接收到的数据进行数据备份的过程包括: 将所接收到的待备份数据按数据文件分配给不同的线程进行数据备份。3.根据权利要求2所述的方法,其特征在于,还包括: 当第一线程池中的所有线程都处于繁忙状态时,若还有未备份的待备份数据,则将所述待备份数据加入到与所述第一线程池对应的队列中;所述第一线程池为所述若干个线程池中的任意一个线程池; 当所述第一线程池中有空闲线程时,从与所述第一线程池对应的队列中读取一数据文件并分配给该空闲线程进行数据备份。4.根据权利要求1所述的方法,其特征在于,所述按数据存储目录获取待备份数据基于脚本语言实现;线程池进行数据备份的过程基于java语言实现。5.根据权利要求4所述的方法,其特征在于,所述脚本语言为:shell脚本语言,或者,Python脚本语言,或者,ruby脚本语言。6.一种数据备份系统,其特征在于,包括: 建立模块,用于建立若干个线程池; 获取模块,用于按数据存储目录获取待备份数据; 传输模块,用于将从同一数据存储目录获取的待备份数据传输给所述若干个线程池中的同一个线程池; 备份模块,用于维护所述若干个线程池,线程池中的若干个线程用于对接收到数据进行备份。7.根据权利要求6所述的系统,其特征在于,所述线程池具体用于,将所接收到的待备份数据按数据文件分配给不同的线程进行数据备份。8.根据权利要求7所述的系统,其特征在于,还包括: 队列管理模块,用于当第一线程池中的所有线程都处于繁忙状态时,若还有未备份的待备份数据,则将所述待备份数据加入到与所述第一线程池对应的队列中;所述第一线程池为所述若干个线程池中的任意一个线程池; 读取模块,用于当所述第一线程池中有空闲线程时,从与所述第一线程池对应的队列中读取一数据文件并分配给该空闲线程进行数据备份。9.根据权利要求6所述的系统,其特征在于,所述获取模块基于脚本语言实现;所述备份模块基于java语言实现。10.根据权利要求9所述的系统,其特征在于,所述脚本语言为:shell脚本语言,或者,Python脚本语言,或者,ruby脚本语言。
【专利摘要】本发明实施例公开了一种数据备份方法及系统,建立若干个线程池,将属于同一个数据存储目录的数据分配给同一个线程池,即每个线程池负责一个目录的数据的备份,每个线程池中的线程负责目录中不同数据的备份,从而不需要频繁创建和回收线程,降低CPU资源的消耗,提高了数据备份性能。而且,采用多线程池进行数据备份,加大了并发备份数据分布的范围,降低了同时备份小文件集的可能性,从而增强了数据备份的稳定性。
【IPC分类】G06F11/14
【公开号】CN105373453
【申请号】CN201510938469
【发明人】刘志丹, 杜瑞岭, 刘龙, 曹震, 于雪龙
【申请人】中国农业银行股份有限公司
【公开日】2016年3月2日
【申请日】2015年12月15日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1