架构设计之分布式缓存
1:前言
我们在开发系统的过程中,缓存是个有用的模块。下面我就把我们的缓存模块给大家做个简单介绍。
2:类图
3:简单介绍
缓存分为两个部分。一个是缓存结构一个是存储结构。缓存结构主要解决对象什么时候过期而存储结构主要解决对象存储到什么地方。
3.1缓存结构
我们在处理缓存过期这个功能的时候提供了两种过期时间。一种是绝对过期一种是相对过期。所谓绝对过期指的是到了时间点该对象就从缓存中移除,而相对过期则指的是只要在一段时间内有访问对象则该对象永不过期(如果一段时间内没有访问对象则过期)。
对于如何确定缓存过期我们使用了个守护线程。通过后台线程在检测缓存的过期。
待改进的地方:缓存没有实现一些像FIFO,LFU,LRU等算法,因为这和缓存命中率相关,而命中率计算需要锁定整个缓存列表效率不高。所以当前没有实现。
3.2存储结构
当前实现的存储结构有两种一种是内存一种是磁盘。对数据库的扩展还没有进行。其实无论那种存储介质都无外乎三个元素首先就是键其次就是路径(对于磁盘就是文件路径对于数据库就是那个数据库的那个表中的字段而对于内存则是指那块内存的那个索引)最后就是值。处理好三者的关系,存储结构就没有什么难的了。
3.3缓存结构和存储结构对接
缓存结构持有存储结构的接口。在构造函数中通过配置文件实例化存储提供者。缓存结构主要解决缓存过期的问题,对于存储,更新,以及删除对象则是调用存储结构的方法来实现的。
3.4缓存集群
分布式的初衷就是利用其他计算机的磁盘或是CPU来完成工作,而对于分布式存贮则是利用其他计算机的磁盘来扩大存储容量提高存取速度。数据的一致性就是个问题,我们的项目对于这个功能的实现是借鉴了一个开源的项目:http://sourceforge.net/projects/thecache/【EhCache v.1.5】。