System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及缓存数据备份,尤其是涉及一种基于模糊快照的缓存持久化方法。
技术介绍
1、在paas缓存领域,为提升缓存的可靠性,通常会对内存中的缓存数据定时做快照持久化在本地磁盘或云硬盘。但是做数据持久化快照需要一段较长时间,此期间对缓存做修改操作,则需要挂起修改操作或者额外拷贝一份数据。挂起修改操作影响用户体验,一般系统的处理方法为预留额外内存,再拷贝一份数据出来。
2、目前常用缓存备份方案存在较为显著的问题。例如:内存利用率低,缓存使用成本高,由于用户修改缓存与定时任务读取的冲突可能,一般需要额外预留20%以上的内存,来保证在极端情况下有足够的内存空间来复制缓存数据,而大部分情况,并不存在访问冲突,预留内存也无法提供给用户来做数据缓存使用,浪费了宝贵的内存空间,增加了缓存使用成本。缓存性能不高,由于做快照期间的修改操作,带来额外的cow开销,响应缓存访问性能。无法恢复到任意修改点,传统方案往往只保存若干个数据快照,无法恢复到两个快照之间的其他修改点。
3、因此,亟须一种缓存备份方法解决上述传统缓存备份方案面临的问题。
技术实现思路
1、本专利技术的目的是提供一种基于模糊快照的缓存持久化方法,包括缓存备份和缓存恢复;
2、所述缓存备份包括一轮或多轮快照,其中,一轮快照包括:生成临时快照文件及与所述临时快照文件对应的redo日志文件;读取内存缓存数据库的缓存数据,并将所述内存的缓存数据写入所述临时快照文件,写入完毕后对所述临时快照文件添加校验和,
3、所述缓存恢复包括:读取所述临时快照文件与所述临时快照文件对应的所述redo日志文件放入所述内存缓存数据库中。
4、进一步的,所述生成临时快照文件及与所述临时快照文件对应的redo日志文件后,对所述生成临时快照文件及与所述临时快照文件对应的redo日志文件进行命名;
5、命名生成的临时快照文件及与所述临时快照文件对应的redo日志文件的名称包括相同的标识符,所述标识符用于对生成临时快照文件及与所述临时快照文件对应的redo日志文件进行同时查找或读取。
6、进一步的,所述标识符为自增id或时间戳。
7、进一步的,所述读取内存的缓存数据的方法为遍历读取,所述遍历读取期间收到的修改操作先写入所述redo日志文件中。
8、进一步的,所述内存缓存数据库的底层的表现形式为哈希表,所述遍历读取为独立进程或线程顺序地遍历读取各个哈希桶中的数据。
9、进一步的,所述临时快照文件与所述redo日志文件的写入流程各自独立。
10、进一步的,所述redo日志文件为幂等性类操作日志;
11、当所述redo日志文件为非幂等性类操作日志时,将所述redo日志文件转换成幂等性类操作日志。
12、进一步的,读取内存缓存数据库的缓存数据,并将所述内存的缓存数据写入所述临时快照文件,写入完毕后对所述临时快照文件添加校验和,并将所述校验和写入所述临时快照文件,写入完毕后将所述临时快照文件重命名为正式快照文件,完成一轮快照。
13、进一步的,所述缓存备份是快照定时任务,所述临时快照文件的生成是由所述快照定时任务创建的,所述临时快照文件是对应于一个时间段[t0,t1]之间的一段动态的数据;
14、其中,t0表示所述快照定时任务的起点时间,t1表示快照定时任务的完成时间。
15、进一步的,读取所述临时快照文件与所述临时快照文件对应的所述redo日志文件放入所述内存缓存数据库中。
16、进一步的,读取所述临时快照文件与所述临时快照文件对应的所述redo日志文件放入所述内存缓存数据库前,先校验所述临时快照文件是否完整;
17、当所述临时快照文件完整,则将所述临时快照文件与所述临时快照文件对应的所述redo日志文件放入所述内存缓存数据库中;
18、当所述临时快照文件不完整,则对所述临时快照文件进行重新选择。
19、进一步的,读取内存缓存数据库的缓存数据,并将所述内存的缓存数据写入所述临时快照文件,写入完毕后对所述临时快照文件添加校验和,并将所述校验和写入所述临时快照文件,写入完毕后将所述临时快照文件重命名为正式快照文件,完成一轮快照。
20、本专利技术的有益效果主要有:
21、本专利技术公开一种基于模糊快照的缓存持久化方法,所述缓存持久化方法结合了模糊快照、redo日志以及幂等操作转化等关键技术,实现了缓存备份、恢复;本专利技术公开的缓存备份方法,能够解决通常的缓存备份方案对缓存系统造成的负面影响,并能进一步地将缓存备份恢复到任意修改点。
22、同时,所述缓存持久化方法成本更低,不需要预留内存,提升内存使用率,降低了缓存成本,而且性能更好,避免了cow造成的性能下降。
23、下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。
本文档来自技高网...【技术保护点】
1.一种基于模糊快照的缓存持久化方法,其特征在于,包括缓存备份和缓存恢复;
2.根据权利要求1所述的基于模糊快照的缓存持久化方法,其特征在于,所述生成临时快照文件及与所述临时快照文件对应的REDO日志文件后,对所述生成临时快照文件及与所述临时快照文件对应的REDO日志文件进行命名;
3.根据权利要求2所述的基于模糊快照的缓存持久化方法,其特征在于,所述读取内存的缓存数据的方法为遍历读取,所述遍历读取期间收到的修改操作先写入所述REDO日志文件中。
4.根据权利要求3所述的基于模糊快照的缓存持久化方法,其特征在于,所述内存缓存数据库的底层的表现形式为哈希表,所述遍历读取为独立进程或线程顺序地遍历读取各个哈希桶中的数据。
5.根据权利要求4所述的基于模糊快照的缓存持久化方法,其特征在于,所述临时快照文件与所述REDO日志文件的写入流程各自独立。
6.根据权利要求5所述的基于模糊快照的缓存持久化方法,其特征在于,所述REDO日志文件为幂等性类操作日志;
7.根据权利要求6所述的基于模糊快照的缓存持久化方法,其特征在
8.根据权利要求7所述的基于模糊快照的缓存持久化方法,其特征在于,读取所述临时快照文件与所述临时快照文件对应的所述REDO日志文件放入所述内存缓存数据库中。
9.根据权利要求8所述的基于模糊快照的缓存持久化方法,其特征在于,读取所述临时快照文件与所述临时快照文件对应的所述REDO日志文件放入所述内存缓存数据库前,先校验所述临时快照文件是否完整;
10.根据权利要求9所述的基于模糊快照的缓存持久化方法,其特征在于,读取内存缓存数据库的缓存数据,并将所述内存的缓存数据写入所述临时快照文件,写入完毕后对所述临时快照文件添加校验和,并将所述校验和写入所述临时快照文件,写入完毕后将所述临时快照文件重命名为正式快照文件,完成一轮快照。
...【技术特征摘要】
1.一种基于模糊快照的缓存持久化方法,其特征在于,包括缓存备份和缓存恢复;
2.根据权利要求1所述的基于模糊快照的缓存持久化方法,其特征在于,所述生成临时快照文件及与所述临时快照文件对应的redo日志文件后,对所述生成临时快照文件及与所述临时快照文件对应的redo日志文件进行命名;
3.根据权利要求2所述的基于模糊快照的缓存持久化方法,其特征在于,所述读取内存的缓存数据的方法为遍历读取,所述遍历读取期间收到的修改操作先写入所述redo日志文件中。
4.根据权利要求3所述的基于模糊快照的缓存持久化方法,其特征在于,所述内存缓存数据库的底层的表现形式为哈希表,所述遍历读取为独立进程或线程顺序地遍历读取各个哈希桶中的数据。
5.根据权利要求4所述的基于模糊快照的缓存持久化方法,其特征在于,所述临时快照文件与所述redo日志文件的写入流程各自独立。
6.根据权利要求5所述的基于模糊快照的缓存持久化方法,其特征在于,所述redo日志文件为幂等性类...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。