一种邮件提取方法_3

文档序号:8383847阅读:来源:国知局
统时间与当前的系统时间之间的差值是否小于系统初始时设定的超期时间,若小于则说明缓存的配置数据有效,可直接使用缓存中的配置数据向上层应用请求返回;否则说明缓存的配置数据已经失效,此时需要重新从服务器端获得配置数据。2)若不存在,说明之前没有对该对象的配置数据访问过,此时需要从服务器端获得配置数据。
[0051]从服务器端获取到新的配置数据信息后,如果是第I次对该对象获取配置数据,则将配置数据直接进行缓存,并记录当前的系统时间。如果缓存中存有已经失效的配置数据时,则会对该配置数据对应的缓存数据进行有效性的判定,以此来保证缓存数据与服务器端源数据的一致性。
[0052]数据读取流程:客户端收到读请求后根据读请求的片段信息查询客户端缓存,确定对应的数据缓存是否存在,如果存在则直接从缓存中读取,否则需要从服务器端读取,读取后将对应的数据以及片段信息缓存在客户端,以便后续的读请求继续访问。本缓存策略支持片段数据缓存,每个片段都对应着〈offset,size) 二元组,其中offset代表文件数据在邮件中的偏移位置,size代表缓存中该片段的大小。在实际应用中,内核模块将读请求切分成最大128KB的读请求大小,将每次与服务器端交互的片段大小设定为IMB并将读取的数据缓存在客户端,并且实际应用访问多为顺序访问,那后续读请求就持续命中缓存,从而提升效率。
[0053]在刷新数据到服务器端的过程中,访问对应节点的flush链表,按照对应的片段信息读取客户端缓存中的脏数据,并将数据通过web写到服务器端,待该过程结束后,将节点的状态标识为清洁状态,表明此时该节点对应的缓存数据与服务器端源数据是一致的。
[0054]在上述邮件处理系统和方法的基础上,本发明在进一步的实施例中,采用数据去重技术进行备份数据的压缩,以取得更高的压缩率。只需要查询并读取对应的数据版本进行恢复,不需要额外的数据读取和运算,因此能够取得更低的备份成本和更快的恢复速度。由于不存在数据版本间的依赖关系,直接删除任意的数据版本而不会影响到其他的数据版本。针对公共网络环境下的数据安全和隐私保护问题,本发明支持对备份数据加密之后再存储到服务器端。
[0055]本实施例的邮件系统中,用户通过统一的数据传输层与邮件系统进行业务交互。在进行数据备份时,邮件系统将自身数据段驱动层的所有段写入请求都发送给数据传输层。把接收到的每一个请求都切分成若干个四元组〈客户端编号,逻辑段号,时间点,数据段 >,每个元组表示对某个段的一次写操作。在进行数据恢复时,客户端将恢复请求三元组<时间点,起始逻辑段号,结束逻辑段号 > 发送给数据传输层。如果客户端需要删除部分版本数据,则将一个删除请求二元组〈起始时间点,结束时间点 > 发送给数据传输层,表示其需要删除的版本时间点范围。
[0056]本实施例的邮件系统中,进一步包含以下模块:
[0057]版本索引模块:系统为每个客户端都维护版本索引,保存该客户端所有段的所有版本信息,以便在恢复时快速查询。版本索引在逻辑上存储的是从二元组〈逻辑段号,时间点 > 到数据段的映射关系。
[0058]由于产生的数据段版本数量巨大,无法使用数据库等普通工具来承载版本信息,因此本发明采用特定数据结构来实现版本信息的保存、更新和查询。即版本索引由存储在磁盘上的两级索引和在RAM中的缓存组成。磁盘索引定期进行更新操作,而RAM缓存则存储上次磁盘索引更新之后直至当前的新增的版本信息。
[0059]主索引由时间点和数据段组成。次索引包括逻辑段的版本信息在主索引中的起始位置,当前段最新版本的时间点和数据段ID。
[0060]RAM缓存使用一个散列表结构来存储若干对段号和指针,每个指针指向一个队列,表示上次磁盘索引更新后发生的对某个段的新写入信息。为了增强邮件系统鲁棒性,缓存内的信息被同步写入到一个磁盘日志中,以便系统重启之后可以恢复这些信息。
[0061]数据去重模块:该模块负责对每一个新的数据段使用hash算法计算其数据段ID,通过比对该ID判断此数据段是否与已有的数据段重复,进而进行去重。本发明采用统一的后端存储池,因此其数据去重是针对所有客户端的所有段版本数据进行的。
[0062]配置数据模块:该模块保存了所有数据段的配置数据信息,包括该数据段在服务器和客户端磁盘缓存中的引用计数;数据段在服务器和客户端磁盘缓存中的存储位置。
[0063]磁盘缓存模块:对每个客户端都在客户端磁盘缓存两类数据以加速恢复过程。第一类数据是所有段的最新版本数据段,第二类数据是客户端系统内最近若干次段写入操作的数据段。磁盘缓存使用段分配位图来管理存储空间,其段大小被设置成所有客户端系统段大小的最小值,每个数据段在磁盘上连续存储,这样其存储位置就可用其起始段号来表不O
[0064]RAM缓存模块:采用LRU算法在RAM中缓存一定数量的去重数据段,从而进一步减少从服务器或磁盘读取的需要,以加速恢复过程。
[0065]在数据备份模式下,本发明的数据备份流程:
[0066]数据传输层持续从客户端系统接收数据写操作流,并分割成针对单个段的写操作。每个写操作的数据段都被传递给数据去重模块计算出数据段进行去重。
[0067]在索引更新粒度上采用定期更新策略。在每次索引更新时,本发明读取当前的主索引,将RAM缓存内每个段的新版本记录追加到该段的主索引记录区末尾,从而生成一个全新的主索引。此过程是从原索引顺序读取数据,并顺序写出数据到新索引,可以达到很快的更新速度。次索引是一个固定长度的结构,可以在新的主索引生成之后进行原地更新,其更新操作也是从头至尾一次性顺序完成,同样具有极高的更新速度。在索引更新开始前,一个新的RAM缓存会被生成,以容纳新到的记录,而原缓存则在更新操作完成之后被释放。
[0068]根据数据去重模块的结果更新配置数据信息,对新的数据段建立新的元组并赋初始值,对重复的数据段则更新其引用计数。
[0069]每一个新的写操作信息还会被传递给磁盘缓存模块,只有磁盘缓存内尚不存在的数据段才会被写入磁盘。根据缓存数据的定义,原数据将被新数据逐步替换,各数据段在磁盘缓存中的位置和引用计数信息则被同步更新。
[0070]从去重模块得到所有的去重并批量存储到服务器端,同时将其服务器端位置信息进行更新。至此即完成了一次对新到写操作的记录和备份过程。
[0071]数据恢复流程具体为:
[0072]当数据传输层从客户端系统接收到一个数据恢复请求时,它将启动数据恢复进程。首先启动若干工作线程,包括一个版本查询线程、多个数据读取线程和一个数据重组线程。
[0073]对于每个数据段,版本查询线程从版本索引中查找到时间点不晚于待恢复时间点的最新的版本信息。对于每个段号,该线程首先查询RAM缓存,如能查到结果则直接返回,否则查询线程从次索引中读取该段的信息。如果时间点满足条件,则直接返回数据段,
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1