一种基于网络的邮件读取方法

文档序号:8415696阅读:501来源:国知局
一种基于网络的邮件读取方法
【技术领域】
[0001]本发明涉及文件存储,特别涉及一种基于网络的邮件读取方法。
【背景技术】
[0002]在这样的数据总量飞速增长的大背景下,数据中心、全球化的企业、云存储系统均要求能够有效并可靠的访问互联网分布的数据,例如用户的邮件可以存储在各个web集群服务器中。相比内网环境,互联网具有低带宽、高延时的显著特征,并且网络抖动和中断时有发生,这样便对文件的访问性能和可靠性带来挑战,难以向应用提供持续稳定的服务。基于网络的邮件系统在web服务器和客户端的每次“往返”过程都会对邮件的访问性能造成巨大的影响。当客户端访问某文件,向服务器发送open操作时,将打开文件的全部数据内容通过网络读取到客户端浏览器对应的网页目录,也就是说其只支持全文件的缓存方式,不支持部分文件数据的缓存。当客户端访问较大文件的一小部分数据时,不仅会造成带宽的严重浪费,而且在高延迟低带宽的网络环境下会严重影响数据的访问性能。
[0003]因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。

【发明内容】

[0004]为解决上述现有技术所存在的问题,本发明提出了一种基于网络的邮件读取方法,包括:
[0005]将到达客户端的应用请求转换为配置数据请求或者数据内容请求,触发客户端的事件驱动层,然后通过数据传输层将请求远程发送给服务器端的数据传输层,服务器端收到请求后将请求传送给事件处理层进行数据读写;
[0006]所述客户端通过缓存来存储服务器邮件的配置数据信息和数据内容信息,同时利用RAM和数据库永久存储来缓存所述配置数据,其中将正在引用的配置数据缓存在RAM中,并且在RAM中维护配置数据的引用计数,当引用计数变为O时,将配置数据从RAM中替换出去,并永久存储到数据库中。
[0007]优选地,所述客户端通过缓存来存储服务器邮件的配置数据信息和数据内容信息,进一步包括:
[0008]在系统初始时设置配置数据的超期时间,在每次从服务器端获得配置数据信息时,记录当时的系统时间,当访问配置数据时,通过系统当前时间与从服务器端获得配置数据时记录的系统时间进行比较,如果两者的差值小于设定的超期时间,则认为配置数据有效,直接从缓存中获取配置数据;否则认为配置数据失效,重新从服务器端获得配置数据;
[0009]采取如下方式确定客户端缓存中数据内容的有效性:如果其配置数据有效,则认为其缓存中的数据有效;如果其配置数据失效,待重新远程获得配置数据后,通过比较缓存中已失效配置数据的修改时间与新获得配置数据的修改时间是否相同进行判定,如果相同则认为缓存中数据内容有效;否则认为缓存中的数据已经失效,并将客户端缓存中的数据删除;如果在客户端发生了写操作,在客户端的写过程直接将数据写到客户端本地缓存中,并将写片段的状态标记为脏,向上层应用返回写操作成功;
[0010]在系统初始时设定缓存空间的上限阈值和下限阈值,并设计清理线程,该线程默认处于休眠状态,在系统运行过程中一旦检测到缓存容量达到设定的上限阈值,则唤醒清理线程,释放已占用的缓存空间以保证缓存空间在设定的阈值范围内。
[0011]优选地,所述唤醒清理线程,释放已占用的缓存空间,进一步包括:
[0012]所述唤醒清理线程首先删除被替换到数据库中的对象所占用的数据缓存,如果此时剩余缓存空间达到下限阈值,则线程转入休眠状态;否则继续根据对象的访问时间,删除驻留在RAM中的对象对应的数据缓存,直到剩余缓存空间达到下限阈值,然后线程转入休眠状态,替换到数据库中的对象按照访问时间从小到大排序,在RAM中对象则根据访问时间进行LRU排序,在删除缓存数据过程中,若存在脏数据,则需要先将对应的脏数据刷新到服务器端,再释放对应的缓存空间。
[0013]优选地:在客户端收到读请求后根据读请求的片段信息查询客户端缓存,确定对应的数据缓存是否存在,如果存在则直接从缓存中读取,否则从服务器端读取,读取后将对应的数据以及片段信息缓存在客户端,以便后续的读请求继续访问;
[0014]采用片段数据缓存,每个片段都对应着〈offset,size〉二元组,其中offset代表文件数据在邮件中的偏移位置,size代表缓存中该片段的大小;
[0015]通过节点访问相应对象的配置数据和文件数据,节点与文件/目录一一对应,所述文件数据的缓存存在3种状态:清洁状态、脏状态以及锁定状态;所述清洁状态表明缓存数据与服务器端的源数据完全一致;所述脏状态表明客户端对缓存文件发生过写操作而没有将脏数据刷新到服务器端;所述锁定状态表明客户端正在将脏数据刷新到服务器端;
[0016]数据节点被创建时,节点处于清洁状态,此时对该节点执行读操作不会改变节点的状态,但对该节点执行写操作会使节点处于脏状态;当节点处于脏状态时,对该节点的读/写操作均不会修改节点的状态,但对该节点执行刷新操作时,则会使节点处于锁定状态;当节点处于锁定状态时,对该节点执行读操作不修改节点的状态,当刷新操作完成后并且在数据刷新期间没有被修改,则节点会变为清洁状态,否则节点会再次进入脏状态;上述刷新操作是指将客户端对数据的修改同步到服务器端的过程,在刷新数据到服务器端的过程中,按照对应的片段信息读取客户端缓存中的脏数据,并将数据通过web写到服务器端,该过程结束后,将节点的状态标识为清洁状态,即此时该节点对应的缓存数据与服务器端源数据是一致的。
[0017]本发明相比现有技术,具有以下优点:
[0018]提出了一种邮件处理方法,减少客户端与服务器之间的交互次数;并对数据支持部分缓存,维护缓存的一致性;不依赖于底层邮件系统,具有良好的通用性;在网络不稳定时,继续向上层应用提供可靠的数据服务。
【附图说明】
[0019]图1是根据本发明实施例的基于网络的邮件读取方法的流程图。
【具体实施方式】
[0020]下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
[0021]本发明的一方面提供了一种基于网络的邮件读取方法。图1是根据本发明实施例的基于网络的邮件读取方法流程图。邮件系统支持跨局域网数据访问,该系统是典型的B/S模式,包含一个客户端和一个服务器端。在服务器端仅需要设置访问目录后,在客户端就可以看到与服务器端访问目录一致的目录视图。在客户端可以像操作客户端邮件系统一样操作位于远程的邮件系统。客户端支持对远程(即服务器端)文件及目录使用标准的系统调用进行存取访问。
[0022]邮件系统的整体架构中,客户端的事件驱动层用于支撑相关的接口调用,接收邮件系统创建、删除、读、写等系统调用请求;服务器端的事件处理层主要用于处理客户端的访问请求,与底层进行交互并根据请求类型作出相应处理;而数据传输层分别存在于客户端和服务器端,用于客户端和服务器之间的通信。
[0023]邮件系统操作的处理过程包括:应用请求到达
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1