一种电子邮件处理方法
【技术领域】
[0001]本发明涉及文件存储,特别涉及一种电子邮件处理方法。
【背景技术】
[0002]在这样的数据总量飞速增长的大背景下,数据中心、全球化的企业、云存储系统均要求能够有效并可靠的访问互联网分布的数据,例如用户的邮件可以存储在各个web集群服务器中。相比内网环境,互联网具有低带宽、高延时的显著特征,并且网络抖动和中断时有发生,这样便对文件的访问性能和可靠性带来挑战,难以向应用提供持续稳定的服务。基于网络的邮件系统在web服务器和客户端的每次“往返”过程都会对邮件的访问性能造成巨大的影响。当客户端访问某文件,向服务器发送open操作时,将打开文件的全部数据内容通过网络读取到客户端浏览器对应的网页目录,也就是说其只支持全文件的缓存方式,不支持部分文件数据的缓存。当客户端访问较大文件的一小部分数据时,不仅会造成带宽的严重浪费,而且在高延迟低带宽的网络环境下会严重影响数据的访问性能。
[0003]因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。
【发明内容】
[0004]为解决上述现有技术所存在的问题,本发明提出了一种电子邮件处理方法,包括:
[0005]用户通过统一的数据传输层与邮件系统进行业务交互;
[0006]在进行数据备份时,邮件系统将自身数据段驱动层的所有段写入请求都发送给数据传输层,并把接收到的每一个请求都切分成四元组〈客户端编号,逻辑段号,时间点,数据段〉,每个元组表示对某个段的一次写操作;
[0007]在进行数据恢复时,客户端将恢复请求三元组〈时间点,起始逻辑段号,结束逻辑段号 > 发送给数据传输层;
[0008]如果客户端需要删除版本数据,则将一个删除请求二元组〈起始时间点,结束时间点 > 发送给数据传输层,表示其需要删除的版本时间点范围。
[0009]优选地,所述邮件系统还为每个客户端维护版本索引,保存该客户端所有段的所有版本信息以便在恢复时快速查询,版本索引在逻辑上存储的是从二元组〈逻辑段号,时间点〉到数据段的映射,所述版本索引由存储在磁盘上的两级索引和在RAM中的缓存组成,磁盘索引定期进行更新操作,而RAM缓存则存储上次磁盘索引更新之后直至当前的新增的版本信息,其中主索引由时间点和数据段组成,次索引包括逻辑段的版本信息在主索引中的起始位置,当前段最新版本的时间点和数据段ID。
[0010]优选地,所述邮件系统还对每一个新的数据段使用hash算法计算其数据段ID,通过比对该ID判断此数据段是否与已有的数据段重复,采用统一的后端存储池,针对所有客户端的所有段版本数据进行数据去重;
[0011]对每个客户端都在客户端磁盘缓存两类数据,第一类数据是所有段的最新版本数据段,第二类数据是客户端系统内最近段写入操作的数据段,磁盘缓存使用段分配位图来管理存储空间,将段大小设置成所有客户端的段大小的最小值,每个数据段在磁盘上连续存储,用其起始段号来表示存储位置。
[0012]优选地,所述数据备份进一步包括:
[0013]数据传输层持续从客户端系统接收数据写操作流,并分割成针对单个段的写操作,将每个写操作的数据段进行去重计算,在每次索引更新时,读取当前的主索引,将RAM缓存内每个段的新版本记录追加到该段的主索引记录区末尾,生成新的主索引;在开始索引更新前,生成新的RAM缓存,而在更新操作完成之后释放原缓存;根据数据去重结果更新配置数据信息,对新的数据段建立新的元组并赋初始值,对重复的数据段则更新其引用计数,将新的写操作信息传递给磁盘缓存,同步更新各数据段在磁盘缓存中的位置和引用计数信息;将去重后的数据批量存储到服务器端,同时更新其服务器端位置信息。
[0014]优选地,所述数据恢复进一步包括:
[0015]当数据传输层从客户端系统接收到一个数据恢复请求时,首先启动若干工作线程,包括一个版本查询线程、多个数据读取线程和一个数据重组线程;对于每个数据段,版本查询线程从版本索引中查找到时间点不晚于待恢复时间点的最新的版本信息;对于每个段号,该线程首先查询RAM缓存,如能查到结果则直接返回,否则查询线程从次索引中读取该段的信息;如果时间点满足条件,则直接返回数据段,否则继续在主索引中根据当前段和下一段表示的起止位置,采用折半搜索算法查找;将查找到的每个段的待恢复版本的数据段传递给数据读取线程和数据重组线程;数据重组线程在RAM中维护一个队列结构作为滑动窗口,每个队列元素依次表示一个连续待恢复区域内的某个段;对于某个需读取的数据段ID,重组线程首先检查RAM缓存,如果缓存命中则直接读取,否则查找其配置数据信息,如果其客户端磁盘缓存引用计数大于0,则根据磁盘缓存位置从磁盘读取,否则根据服务器端存储位置从服务器端读取;读取操作由数据读取线程并发执行,对于每个读取到的数据段,重组线程将其数据复制到当前滑动窗口内所有出现的位置;将随后滑动窗口前部已读取的数据段批量传输给客户端系统供其写入,恢复窗口则继续向后滑动,直至完成所有段的恢复操作。
[0016]本发明相比现有技术,具有以下优点:
[0017]提出了一种邮件处理方法,减少客户端与服务器之间的交互次数;并对数据支持部分缓存,维护缓存的一致性;不依赖于底层邮件系统,具有良好的通用性;在网络不稳定时,继续向上层应用提供可靠的数据服务。
【附图说明】
[0018]图1是根据本发明实施例的电子邮件处理方法的流程图。
【具体实施方式】
[0019]下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
[0020]本发明的一方面提供了一种电子邮件处理方法。图1是根据本发明实施例的电子邮件处理方法流程图。邮件系统支持跨局域网数据访问,该系统是典型的B/S模式,包含一个客户端和一个服务器端。在服务器端仅需要设置访问目录后,在客户端就可以看到与服务器端访问目录一致的目录视图。在客户端可以像操作客户端邮件系统一样操作位于远程的邮件系统。客户端支持对远程(即服务器端)文件及目录使用标准的系统调用进行存取访问。
[0021]邮件系统的整体架构中,客户端的事件驱动层用于支撑相关的接口调用,接收邮件系统创建、删除、读、写等系统调用请求;服务器端的事件处理层主要用于处理客户端的访问请求,与底层进行交互并根据请求类型作出相应处理;而数据传输层分别存在于客户端和服务器端,用于客户端和服务器之间的通信。
[0022]邮件系统操作的处理过程包括:应用请求到达客户端的文件系统层,文件系统层继续将请求发送至内核组件,触发客户端的事件驱动层,之后通过数据传输层将请求远程发送给服务器端的数据传输层,服务器端收到请求后将请求传送给事件处理层,事件处理层与邮件系统交互,并