论文部分内容阅读
随着信息技术的不断发展,数字图书馆慢慢成为人们获取信息和知识的重要途径。数字图书馆能提供的信息和知识的载体也由最初的简单的文本,发展到现在多种多样的音频、视频、图片等多媒体资料,这样可以给用户获取信息的过程增加趣味性,给用户更加直观和深刻的印象。那么如何来设计一个系统安全地保存这些资料,以及如何能让用户方便快捷地获取这些资料,就显得越来越重要了。
那么这样一个系统(我们称之为CALIS数字对象存取系统)应该具有哪些最基本的特性呢?首先,它应该是安全的,具有较强的权限控制系统,使得用户可以方便地控制自己资料的各种权限,可以将一个文件的读权限分配给一个用户,将此文件的写权限分配给另外一个用户,在必要的时候也可以收回这些权限;其次,它应该是可以扩展的,存储的容量应该可以随着用户需要的存储容量动态的扩展,而不应该对用户的存储容量有不合理的限制:最后,它应该是高效的,在用户存储和获取的速率上有一定的保证。
为了使系统满足上述的三个基本的特性,底层的存储采用了可以动态扩展的分布式文件系统HDFS,并且根据本系统实际的需要,对HDFS进行了一些必要的修改,以便更好地满足本系统的实际需求;实现了一个完整的权限控制系统,通过此权限管理系统,用户可以方便、自由地控制相关资料的权限,保证安全性;提供了一个客户端软件,其中实现了并行上传、压缩上传、断点续传等功能,以便用户可以方便快捷地上传和下载文件;最重要的也是本文的重点内容就是分布式缓存技术在系统中的应用,主要是将分布式缓存用于HDFS中存储整个文件系统的状态和缓存用户正在访问的文件。在本系统中的分布式缓存,不但要具有良好的性能,而且要有较强的伸缩性。经过调研,Tcrracotta缓存系统可以基本满足性能和伸缩性上的要求。本系统中最主要的对象是用户以及用户可以访问的文件,这两者之间有较强的联系,例如某一个用户只能访问一个文件,那么他登录后有很大的可能性会访问那个文件。但是Terracotta没有利用已经进入系统中的各个对象之间的关系,而这是非常重要的信息,这些信息可以用于以下两个方面:预载入技术。现有的缓存技术大都是在用户请求对象的时候首先从数据库或者其他地方取出这个对象供用户使用,然后再把该对象放入缓存系统中去。等用户下次再要访问此对象的时候,直接从缓存中获取即可。也就说是,用户第一次访问一个对象会比较慢,没有体现缓存系统的优势。本文通过对系统中已有对象关系的分析,预测那些对象在未来的很短时间内会被很快访问到,将这些很快要被访问到的对象放入缓存中。这样用户第一次的访问时间也就可以大大缩短了。
替换策略的改进。缓存的容量总是有限的,即使是分布式缓存也是如此,不可能将用户要访问到得所有对象同时放入缓存之中,也没有那个必要。这样当缓存系统无法再容纳新的需要缓存对象的时候,就需要根据一定的替换策略将缓存中已有的部分对象替换出去,以便腾出空间让新的对象可以放入缓存中。以往的替换算法例如最近最少使用(LFU)、最久未使用算法(LRU)等等都只是使用对象什么时候进入缓存系统的,在过去一段时间对象的使用频率等信息,而没有利用已经在系统中的各个对象之间的关系。本文在替换缓存中的对象时将对象关系作为加权的一部分与其他的替换算法综合使用,希望能更加准确地找到用户将来不会访问的对象。
论文设计实现了基于HDFS的CALIS数字对象存取系统,将Terracotta的分布式缓存系统应用于其中。对Terracotta缓存系统进行了一些改进,主要实现了预载入技术和对替换策略进行了改进。最后对系统进行了测试,给出了测试结果。