基于哈希算法的缓存安全验证策略在电网系统中的应用
【摘 要】为了解决电网分布式系统中由于数据增长造成的数据处理瓶颈问题,尤其数据的验证问题,本文提出基于一致性哈希分散算法设计分布式缓存安全验证策略用于解决电网分布式缓存系统的数据同步策略,以保证系统数据一致性访问,实验结果表明,在提高电力业务系统业务处理能力的同时,能够高效的完成数据验证和校验工作,从而保障电网分布式业务系统安全可靠的运行。
【关键词】分布式缓存;哈希算法;安全;验证
近年来随着电力设备系统互联的进一步普及,电力网络中应用系统的规模逐步扩大,不单是应用系统本身在扩大,使用系统的人也在不断扩大。这对分布式应用系统的安全可靠性、可扩展性和可维护性提出了更高的要求。其中,数据访问问题是影响分布式系统性能的一个关键问题,分布式应用系统一般将数据保存到数据库中,应用服务器从数据库中读取数据并显示。但随着数据量的增大、访问的集中,就会出现数据库的负担加重、数据库响应恶化、显示延迟等重大影响。现已提出多种技术和方案来解决这个问题。一种高性价比的解决方案是缓存技术,它正越来越受到人们的关注并越来越多的被考虑应用在实际分布式系统中。
本文提出基于一致性哈希算法设计分布式缓存安全验证策略用于解决电网中分布式缓存系统的数据同步策略,以保证系统数据一致性访问,最终能够满足系统能够持续稳定、安全运行的要求。
1.缓存技术
缓存技术是指使用对象后并不立即释放该对象,而是存储在内存或硬盘中并被后来的客户端请求重用,避免重新获得对象的昂贵成本。集是为客户提供统一服务的松散连接的一组服务器。它利用高速通用网络将一组服务器按某种结构连接起来,利用消息传递方式实现各服务器间的通信,作为一个整体为用户提供服务。集为分布式应用提供了所需高可用性、高扩展性及负载均衡的功能。可以通过集策略来解决企业级应用中遇到并发访问瓶颈,负载均衡,服务器单点故障等问题。将缓存技术与集技术结合起来使用,就是分布式缓存[2]。在数据库和应用服务器之间增加分布式缓存,将数据缓存起来,使应用服务器无需频繁访问数据库,而是直接从缓存中读取数据,减少了潜在的访问时间。不仅大大提高了应用程序的速度,也减少了数据库服务器的负载,使数据库服务器的访问性能大大提高。
2.基于Memcached框架设计分布式缓存安全验证系统
在对等分布式缓存的写更新同步模式中写数据时,需要进行大量的校验工作,除了要校验本地数据外,还要将数据复制到所有其他的远程组成员结点与该节点上存储的数据进行校验,以保证数据的真实性、一致性,这个校验过程相当于需要大量的数据复制和数据传输操作。尤其是当成员数量过多时,校验过程必定会造成较大的网络数据传输的开销,从而影响系统的整体性能。
2.1分布式缓存安全验证系统结构
因此本文采用分区的数据复制方式来构建分布式缓存安全验证模块。其中分区的数据复制方式在数据复制时并不将数据复制到所有的成员结点上,而只是将数据复制到其中一个结点上,即每个数据只有一份拷贝。用户总是访问主结点上的数据,只有主结点出现故障或移除时才会访问备份结点的数据,即该模式不支持数据在多结点的并行访问,只提供了高可用性。分区复制的模式减少了复制过程中的网络数据传输的开销,提高了系统的整体性能,但相应的数据备份结点的减少,降低了分布式缓存的可靠性,当具有数据备份的两个结点同时出现故障时,就会出现数据不命中的情况,用户可以根据具体的应用场景选择是否使用这种数据复制模式。其体系结构如图1所示。
1 分布式缓存体系结构
该体系结构的具体组件包括:客户端组件,前端组件及缓存服务器组件。客户端的请求先由被称为前端的组件处理。前端具有数据的散列能力,通过制定的分布式算法将数据散列到不同的缓存服务器上,从而实现数据在不同缓存服务器中的分布存储。缓存服务器两两之间都建立了连接,多个缓存服务器形成一个缓存服务器组。当组内某个缓存服务器上有数据更新的时候,数据会同步的更新到另一个备份缓存服务器中,这样就实现了数据的单点备份。
本文选择的缓存框架是MemcachedMemcached是高性能的,分布式的内存对象缓存框架,有多种语言支持的API进程间通信效率最高的方式是可用,用于在动态应用中减少数据库负载,提升访问速度。
Memcached由服务器端和客户端两个基本组成部分。它是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端API包括 Perl/PHP/Python/Ruby/Java/C#/C等等。当客户端与Memcached服务建立连接后,每个被存取的对象都有一个唯一的标识符key,存取操作均通过这个key进行,保存到Memcached中的对象实际上是放置内存中的,并不是保存在cache文件中的,这也是为什么Memcached能够如此高效快速的原因。但这些对象并不是持久的,服务停止之后,里边的
数据就会丢失。
Memcached出现之前,最初的缓存做法是在线程内对对象进行缓存,但这样进程间就无法共享缓存,命中率非常低,导致缓存效率极低。后来出现了共享内存的缓存,多个进程或者线程共享同一块缓存,但毕竟还是只能局限在一台机器上,多台机器做相同的缓存同样是一种资源浪费,而且命中率也比较低。Memcached ServerClients共同工作,实现跨服务器分布式的全局缓存。Memcached ServerCPU要求低,对内存要求高,通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、文件以及数据库检索的结果等。
2.2分布式缓存安全验证策略的设计法
Memcached是一种分布式的缓存系统,Memcached Server之间没有通信机制,所以应用分区缓存模式时进行数据验证时,最重要的是选择一种高效的分布式算法。所以,需要制定分布式算法将数据散列到不同的缓存服务器上,从而实现数据在不同缓存服务器中分布存储。一致性哈希分散算法可以保证在节点发生变化时,能够保持比较高的缓存命中率。该算法首先求出缓存服务器结点的哈希值,并将其配置到0232的圆上。然后用同样的方法求出存储
数据的键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查,将数据保存到到的第一个服务器上,如图2所示。
2 一致性哈希算法
该算法首先求出Memcached服务器(节点)的哈希值,并将其配置到0232的圆上。接着用同样的方法求出存储数据的键的哈希值,并映射到圆上。然后从数据映射到的位置开始顺时针查,将数据保存到到的第一个服务器上。如果超过232仍然不到服务器,就会保存到第一台Memcached服务器上。
这样一来对于节点的分布计算是循环的,当某个节点增加或者移出的时候,只是部分的数据需要重新缓存(如图2中增加node5的情况),如果哈希算法比较合理,理论上缓存命中率的将变化为:
其中n为当前服务器节点数,m为变化的服务器数量。
余数分散算法由于保存键的服务器会发生巨大变化而影响缓存的命中率,但一致性哈希算法中,只有在圆上增加服务器的地点逆时针方向的第一台服务器上的键会受到影响。因此,一
致性哈希算法最大限度地抑制了键的重新分布。当然,如果缓存服务器的数量频繁地发生变化,对于缓存系统的效率也是有一定影响的。
本课题采用一致性哈希分散算法。下述为给定key查缓存服务器节点算法的Java实现代码:
代码用数据结构TreeMap模拟一致性哈希分散算法中的圆,该结构中的键值是所有节点的hash值,值为节点的名字将给定的key通过hash算法算出其hash值,然后在圆中查第一个大于该值的键,如果到则命中,不到返回第一个节点的名字。该算法是本课题中缓存系统的核心算法,通过查给定key对应的缓存服务器,调用Memcached提供的API,可以实现对象的存取操作。
2.3性能分析
缓存系统的加速比是衡量缓存系统性能好坏的一个重要指标,即引入缓存技术前后检索数据的平均响应时间之比。
如果没有采用缓存技术,假设每个客户端每天平均有 次执行查询请求且都能查询成功,每次
服务器同时接受 个来自各客户端的请求,则某一个客户机 次检索后的检索数据的平均响应时间如公式3所示:
式中:假定请求在服务器中的平均排队次序为ka是每条信息的网络传输延迟,ts是除传回时间之外的其余处理时间,如向服务器发出的请求时间,执行请求的时间,更新提示的时间。
如果采用缓存技术,假设中间缓存、数据库命中数据的概率分别为p1p2。再假设n次执行信息都能查询成功,则某一个客户机n次检索后的检索数据的平均响应时间Tn如公式4所示:
式中,tc为中间层处理时间,m1为中间层同时处理的请求个数,m2为数据库服务器同时处理的请求个数。
引入本缓存系统前后平均数据检索时间之比,即加速比Sp
以下是本课题测试的软硬件环境:
1)软件环境:操作系统:LinuxAS4U8Java环境:JDK1.5Memcached1.2.1
2)硬件环境:CPUIntelRCoreTM21.86GHz;内存:4GB*2DDR;硬盘:320GB;局域网:最大带宽100Mbps
在数据交换客户端的局域网内,应用四台服务器,分别为:一台数据Switch服务器,三台缓存服务器和一台数据库服务器。模拟实际业务过程进行测试。测试数据参见表1
将上述参数带入公式中进行计算,其中m1=m2=1,由于数据库服务器、缓存服务器和应用服务器同处于一个带宽为100M的局域网内,所以a可以忽略不计,请求是顺序到达,平均排队次序为1,缓存的平均访问时间是3秒,可得Sp=2.27,即对数据在存取验证中组件应用了缓存优化策略后,一次数据交换的加速比约为:2.27,即为原先的2.27倍。
3.结论
根据本文提出并设计的基于哈希算法的缓存安全策略可以很好地解决电网分布式系统中由于数据增长造成的数据处理瓶颈问题,尤其数据验证的问题,大大提高了电网系统的安全性。实验结果表明,在提高业务系统业务处理能力的同时,能够高效的完成数据验证和校验工作,能够保证数据的真实性、一致性、可靠性和安全性。
【参考文献】
[1]顾荣庆,杨开杰,徐汀荣.分布式数据缓存技术研究.计算机应用与软件,2011.
[2]廖爽爽.分布式对象缓存框架设计研究[J].信息技术,2006,(12):54-59.
[3]姜大光,奚加鹏.分布式存储系统(OceanStore)的复制策略.计算机工程与科学,2008308):144-149.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。