电力企业信息管理网站高速缓存机制

2018-01-27 16:08候协舟
科学与财富 2017年34期
关键词:研发电力企业

候协舟

摘 要:在电力企业信息化高速发展的大背景下,服务于各个机构的管理软件如雨后春笋般应运而生,且逐步向集中化统一部署的模式发展。原本一套应用系统只服务于一个公司或地市级单位,如今已逐步由国家电网公司统一研制,统一部署。由此带来了管理规范、数据融通、节约成本等诸多好处,可随着用户基数的增大对应用服务器及数据库的访问压力也随之骤增,因此在性能上如何优化,如何改善用户体验成为急需解决的一道难题。本人在经历了多套系统的研制后,发现在网站项目中引入一种高效的缓存机制可以极大地提高数据访问效率,有效分散对数据库的访问压力,满足大用户并行使用的要求。

关键词:高速缓存;电力企业;信息管理网站;研发

目前,大多数应用类管理网站多是采用数据库来记录和访问数据,并且数据库往往独立架设通过网络与应用服务器相连。因此,对数据的访问将受到数据库性能、网络带宽与质量、磁盘访问速度等诸多因素的影响。当某些时效性较强的数据被多次频繁访问时,将大大降低系统性能,无法满足大用户量的使用需要。因此考虑在Web应用服务器端引入一种高效的缓存机制,将时效性强的数据进行缓存能有效解决这一困难。

1总体思路

数据库将数据存于硬盘,读取时需多次向硬盘发出访问请求,众所周知磁盘的访问效率普遍较低,如果能将经常性使用的数据在内存中加以缓存,将大大提高数据的提取速度,与传统相比不可同日而语。然而,内存也存在空间容量有限、掉电数据丢失、价格昂贵等缺陷,如何取长补短,在设计高速缓存时应考虑如下因素:

1) Web应用服务在处理用户数据请求时应先查找高速缓存中是否存在该数据,一旦发现数据直接返回以避免访问数据库,否则才向数据库请求数据并纳入缓存。

2)内存中的数据在掉电或服务重启时会丢失,内存中的数据应从数据库中加载。当数据库中的数据发生改变时应同步更新缓存中的信息,因此在设计时应考虑内存数据与数据库数据同步的问题。

3)高速缓存不宜对于大量数据进行加载,只在数据被访问到时认为该条数据为热点访问信息且将会继续多次被调用,因此将其纳入缓存中。如果缓存中的部分数据多次被访问,系统将提高其热度以延长其在缓存中的驻留时间。

4)考虑到内存的容量有限、价格昂贵且无法像硬盘般扩容增长,因此,在高速缓存中应加入数据过期机制,去除长时间不用或已过期的数据以腾出足够的空间。

5)当系统发生运行时错误时,由于数据库有回滚机制,为了保持数据同步,还应考虑缓存数据回滚问题。

2缓存载体

缓存可在设计Web应用时,以全局静态变量作为其载体。全局静态变量是应用程序在内存中开辟的一个临时缓冲区,在程序启动时被初始化,可在服务启动到停止的全周期内有效。该对象以Key-Value数据字典的形式进行数据存储,以散链内存寻址方式获取数据,对于已知key值并采取getValue(key)这种方式获取数据的效率非常高;但如果以遍历的形式查找除key值以外的某些数据列时效率低下,特别是对大量数据进行筛选时,性能远不如直接从数据库查找。

在设计缓存时,应考虑适应多个数据库表的记录需求,因此应采取二级数据字典记录信息。一级key值以数据库表的名称为索引;二级key值则以该表的主键为索引;将数据库中的数据性息序列化后以字符串的形式记录在Value中,在读取数据时将其反序列化成所需对象。

3缓存的啟动与刷新

缓存应在Web应用程序启动时被初始化。

缓存的刷新是指在应用程序设置一个计时器用以对缓存进行刷新。计时器可根据实际需要进行设计,例如定每日凌晨3:00开始刷新,以避开使用高峰期。至于刷新操作有清除过期数据,重新计算信息热度,重置计时器等在后面章节中将会详细描述。

4缓存数据载入与读取

当用户向Web服务器发出某条数据的读取请求时,系统将先查找缓存中是否存在该数据,如果不存在,系统向数据库获取信息后载入缓存,再从缓存中读取数据。在数据首次载入的同时维护该数据的访问热度计数器,并初始化1,即被访问1次;当缓存中的数据被多次访问时,热度值不断增加直至缓存刷新时将其减去一个固定值。

5缓存数据过期

数据过期是高速缓存的一个重要机制,它限制了缓存的无限制增长,仿佛人类睡眠一般为有限的内存腾出空间并保留最有价值的信息。上文中提到的访问热度计数器,当某条数据被访问到时该记录的计数器会自动加1,在过期刷新时间到来时,计数器会被减去一个固定值,如果结果为负数则说明该条记录在某个时间段内被访问的次数有限,不具备继续缓存的价值,最终将该条记录从缓存中清除。

6缓存数据同步

用户在对表单数据进行增加、修改、删除等操作时,对数据库的数据进行了修改,但高速缓存中的数据并未被改变,当用户再次查阅变动后的数据时无法得到及时更新,因此在对数据库操作时应及时同步缓存中的数据。

7事务处理

事务是数据库为了解决异常情况保持数据完整性的一种技术手段,即在某个过程中需要对数据库进行多次操作,如果在一系列操作过程中发生错误,数据库将回滚到过程发生前的状态,以保证数据正确完整。当遇到数据库发生回滚操作时,缓存也应相应回滚。

在设计缓存事务时,考虑加入事务缓存器,配合缓存数据同步时记录某个过程中所有的数据变化,并在数据库完成提交后再将事务缓存器中的内容同步到高速缓存中去。

8分布式系统应用

在分布式系统场景中使用高速缓存时,还应考虑到不同服务器之间的缓存同步问题。该问题有多种解决方案,总体思路都是围绕同步请求分发模式,可采用Redis分发、WebService分发等多种技术手段。

9结束语

随着信息化建设的不断扩展与深入,使越来越多人参与到高效的组织生产活动中。为了解决性能问题,除了更换高档的设备外,高速缓存机制是解决大用户访问量的一个有效手段,该技术的使用不仅在电力系统内部Web应用上取得了显著的成效,还可应用于如移动互联网、企业信息平台、广告新闻网站等多个场景。

参考文献:

[1]Jon Galloway, Brad Wilson. ASP.NET MVC5高级编程(第5版)

[2] 唐学忠 . SQL Server 2000数据库教程第1版 (2005年5月1日)endprint

猜你喜欢
研发电力企业
基于新形势下电力企业人力资源的开发与管理
电力企业物资管理模式探讨
中国电力企业的海外投资热潮
小水电高周高压保护装置研发
直流系统绝缘监测装置试验仪探讨与实践
浅谈供电企业工签证审计系统研发的必要性
幼儿园童趣打击乐活动的研发
关于电力企业生产管理信息系统的设计与实现应用
对电力企业管理信息化的探讨
关于电力企业档案管理之创新探讨