|
该体系结构的具体组件包括:客户端组件,前端组件及缓存服务器组件。客户端的请求先由被称为前端的组件处理。前端具有数据的散列能力,通过制定的分布式算法将数据散列到不同的缓存服务器上,从而实现数据在不同缓存服务器中的分布存储。缓存服务器两两之间都建立了连接,多个缓存服务器形成一个缓存服务器组。当组内某个缓存服务器上有数据更新的时候,数据会同步的更新到另一个备份缓存服务器中,这样就实现了数据的单点备份。 本文选择的缓存框架是Memcached。Memcached是高性能的,分布式的内存对象缓存框架,有多种语言支持的API可用,用于在动态应用中减少数据库负载,提升访问速度。 Memcached由服务器端和客户端两个基本组成部分。它是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端API包括Perl/PHP/Python/Ruby/Java/C#/C等等。当客户端与Memcached服务建立连接后,每个被存取的对象都有一个唯一的标识符key,存取操作均通过这个key进行,保存到Memcached中的对象实际上是放置内存中的,并不是保存在cache文件中的,这也是为什么Memcached能够如此高效快速的原因。但这些对象并不是持久的,服务停止之后,里边的数据就会丢失。 在Memcached出现之前,最初的缓存做法是在线程内对对象进行缓存,但这样进程间就无法共享缓存,命中率非常低,导致缓存效率极低。后来出现了共享内存的缓存,多个进程或者线程共享同一块缓存,但毕竟还是只能局限在一台机器上,多台机器做相同的缓存同样是一种资源浪费,而且命中率也比较低。MemcachedServer和Clients共同工作,实现跨服务器分布式的全局缓存。MemcachedServer对CPU要求低,对内存要求高,通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、文件以及数据库检索的结果等。 2.2分布式缓存安全验证策略的设计法 Memcached是一种分布式的缓存系统,MemcachedServer之间没有通信机制,所以应用分区缓存模式时进行数据验证时,最重要的是选择一种高效的分布式算法。所以,需要制定分布式算法将数据散列到不同的缓存服务器上,从而实现数据在不同缓存服务器中分布存储。 一致性哈希分散算法可以保证在节点发生变化时,能够保持比较高的缓存命中率。该算法首先求出缓存服务器结点的哈希值,并将其配置到0~232的圆上。然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上,如图2所示。 图2一致性哈希算法 该算法首先求出Memcached服务器(节点)的哈希值,并将其配置到0~232的圆上。接着用同样的方法求出存储数据的键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过232仍然找不到服务器,就会保存到第一台Memcached服务器上。 这样一来对于节点的分布计算是循环的,当某个节点增加或者移出的时候,只是部分的数据需要重新缓存(如图2中增加node5的情况),如果哈希算法比较合理,理论上缓存命中率的将变化为: 其中n为当前服务器节点数,m为变化的服务器数量。 余数分散算法由于保存键的服务器会发生巨大变化而影响缓存的命中率,但一致性哈希算法中,只有在圆上增加服务器的地点逆时针方向的第一台服务器上的键会受到影响。因此,一致性哈希算法最大限度地抑制了键的重新分布。当然,如果缓存服务器的数量频繁地发生变化,对于缓存系统的效率也是有一定影响的。 本课题采用一致性哈希分散算法。下述为给定key查找缓存服务器节点算法的Java实现代码: 代码用数据结构TreeMap模拟一致性哈希分散算法中的圆,该结构中的键值是所有节点的hash值,值为节点的名字将给定的key通过hash算法算出其hash值,然后在圆中查找第一个大于该值的键,如果找到则命中,找不到返回第一个节点的名字。该算法是本课题中缓存系统的核心算法,通过查找给定key对应的缓存服务器,调用Memcached提供的API,可以实现对象的存取操作。 2.3性能分析 缓存系统的加速比是衡量缓存系统性能好坏的一个重要指标,即引入缓存技术前后检索数据的平均响应时间之比。 如果没有采用缓存技术,假设每个客户端每天平均有次执行查询请求且都能查询成功,每次服务器同时接受个来自各客户端的请求,则某一个客户机次检索后的检索数据的平均响应时间如公式3所示: 式中:假定请求在服务器中的平均排队次序为k,a是每条信息的网络传输延迟,ts是除传回时间之外的其余处理时间,如向服务器发出的请求时间,执行请求的时间,更新提示的时间。 如果采用缓存技术,假设中间缓存、数据库命中数据的概率分别为p1和p2。再假设n次执行信息都能查询成功,则某一个客户机n次检索后的检索数据的平均响应时间Tn如公式4所示: 式中,tc为中间层处理时间,m1为中间层同时处理的请求个数,m2为数据库服务器同时处理的请求个数。 引入本缓存系统前后平均数据检索时间之比,即加速比Sp
以下是本课题测试的软硬件环境: |
|
核心期刊网(www.hexinqk.com)秉承“诚以为基,信以为本”的宗旨,为广大学者老师提供投稿辅导、写作指导、核心期刊推荐等服务。 核心期刊网专业期刊发表机构,为学术研究工作者解决北大核心、CSSCI核心、统计源核心、EI核心等投稿辅导咨询与写作指导的问题。 投稿辅导咨询电话:18915033935 投稿辅导客服QQ: 投稿辅导投稿邮箱:1003158336@qq.com |

