方志杰,卿粼波,吴晓红,张余强
(1.四川大学电子信息学院,成都610064;2.成都西图科技有限公司,成都610065)
基于分布式Memcached缓存技术的油田信息查询系统
方志杰1,卿粼波1,吴晓红1,张余强2
(1.四川大学电子信息学院,成都610064;2.成都西图科技有限公司,成都610065)
网络化在油田信息系统中的普遍应用,大大地提高油田的生产效率,方便油田工作者随时、及时地查阅最新的油田生产信息,降低信息获取的成本,提高从事油田开发的人员的工作效率。但随着时间的迁移,每年都有大量的数据录入油田信息系统的数据库之中,久而久之,数据量逐渐变地庞大,在海量数据的前提下,频繁的查询操作导致数据库面临的压力越来越大。为了缓解数据库的压力,增加数据的查询速度,采用分布式Memcached缓存技术实现油田信息查询系统。通过把在数据库中检索出的结果存储在缓存服务器内存中,减轻数据库负担,加快查询速度,提高访问并发量。
随着互联网的发展以及油田从业者对高效工作的追求,大量的以B/S(Brower/Server)或C/S(Client/Serv⁃er)为模型的软件系统在油田得到广泛的应用,旨在提高人们的工作效率,增加生产力。杨涵夫采用客户端、应用服务器、数据库服务器三层体系架构的油田信息查询系统为油田工作者查询数据提供了方便[1]。李瑞芳等基于SVG开发的油田故障查询系统实现了油田井位直观展示和故障信息的动态查询[2]。随着技术的进步和发展,油田工作者对工作效率、操作便捷性以及功能上有了新的追求,但在目前已有的油田信息查询系统中,大多存在一些系统兼容性不好和查询数据慢的问题。由于传统的关系型数据库面临大规模的数据访问时,磁盘I/O往往成为性能瓶颈,尤其是当查询数据库需要进行多表关联查询时,需要大量的处理时间,这将直接导致系统的性能和体验急剧下降。当系统的访问量大时,由于不能及时从数据库获取到信息会导致超时错误,当较严重时会使应用服务器直接崩溃。
高速缓存的使用,可以使服务器具有良好的响应速度并承受较大的负载量[3]。为此,本文实现了一种基于Memcached缓存技术的油田信息查询系统,利用Memcached能够有效减轻数据库服务器负载压力,提高Web应用系统响应速度,增强用户体验效果[4]。同时为了适应大量数据对象存储的需求,以及减少缓存服务器宕机之后对系统的影响,采用分布式Mem⁃cached缓存的技术方案。应用程序通过路由算法选择目标缓存服务器远程读写缓存数据,减轻油田数据库的负载,充分利用多台计算机的资源,提高系统的可用性[5],实现缓存服务器的可扩展性,通过动态增加或减少节点应对数据访问负载,最大限度的提高资源利用率。
由于C/S模型的软件需要安装才可以使用服务,对操作系统环境的依赖较大,软件安装和更新为油田工作从事者带来了很大的不方便,同时也增加了运维工作。因而采用了B/S的结构,以HTTP协议进行通信,借助浏览器实现访问,无需安装,仅在服务器端就可以进行更新,实现了原来客户端拥有的功能,在各大主流浏览器上均做到了很好的兼容性。本系统包括应用服务器、缓存服务器和数据库服务器三大部分,当用户选择将访问的页面后,浏览器经网络向应用服务器发起请求,应用服务器解析浏览器的请求信息后在油田数据库中查询数据,为了提高查询速度,本系统增加了分布式Memcached缓存服务器集群。将从数据库中检索到的结果存储在缓存服务器中,下次查询时可以直接在缓存服务器中读取,同时应用服务器将检索到的数据以JSON(JavaScript Object Notation)字符串的格式返回给浏览器进行渲染展示。系统的架构图如图1所示。
图1 系统架构图
系统使用Java语言开发,前端页面采用JSP(Java Server Pages)开发,以表格和图件的形式对油田生产成果信息进行直观的展示。
对于表格而言,目前常用的表格展示框架有Easy UI、jQuery UI、jqGrid等。其中Easy UI组件丰富,但性能较差;jQuery轻便便捷、美观多变,但控件较少;jqGrid轻量、功能丰富,但使用不够简便。考虑到系统中有表格列拖动的功能需求,而jqGrid可以满足系统的需求,且具有较好的浏览器兼容性,因此采用了jqGrid实现表格的绘制。结合后端代码,将前端页面的筛选条件作为数据库SQL语句的查询条件来检索数据,实现了筛选查询的功能。图件绘制采用Highcharts框架,HighCharts支持主流浏览器、配置简单、功能强大。系统中以HighCharts实现了曲线图、柱状图、散点图、3D图形等形式丰富的数据展示功能。
当前端页面加载后,采用AJAX(Asynchronous Ja⁃vaScript And XML)异步请求来获取待绘制的数据,Ajax请求为局部刷新页面,与后台服务器进行少量数据交换,可以减少通信量,有效节约带宽,增加系统的速度及用户体验。
基于B/S模型的应用系统常用的开发框架有Spring MVC和ASP.NET MVC框架。MVC三层模型具有高内聚低耦合的特点,各层之间相互独立,彼此协同工作,易于开发和维护。其中Spring MVC框架基于Java实现,具有跨平台的特性,框架的搭建需要较多的配置工作;ASP.NET MVC框架基于C#实现,仅可以运行在Windows操作系统平台,但无需配置。鉴于Spring MVC不受运行平台的限制,可以适用油田公司服务器不同的操作系统环境要求,因此采用Spring MVC框架开发。
在代码设计上采用Spring软件框架,Spring是轻量级的IoC(控制反转)和AOP(面向切面)的容器框架。本系统通过Spring IoC达到松耦合的目的,软件各个模块之间以接口的形式对外提供服务,有利于开发和维护工作。
目前,很多大型Web应用系统通过使用Mem⁃cached缓存服务来实现高并发页面访问[6]。Mem⁃cached中所有缓存的内容都在服务器的内存中[7],计算机中的内存读写速度是远远快于磁盘的,通过缓存的方式减少数据库的磁盘I/O操作,使系统可以有很好的响应速度和高并发量。鉴于此,为了适应油田大数据检索的需求,采用了Memcached缓存技术来提升响应速度和系统访问并发量。为解决系统中随着模块的增加以及用户量的上升,单个缓存服务器缓存的数据量有限的问题。设计了分布式Memcached缓存系统,采用集群的方式提供缓存服务,具有良好的伸缩性,在理论上做到不受内存容量限制。本文系统中使用两台Memcached缓存服务器来实现分布式缓存服务,其中Memcached版本为memcached-1.4.33,运行在Linux操作系统环境下。
油田工作者时常需要查询油田生产成果信息,这些数据具有高频访问和变化小的特点。在现有系统中每次数据获取操作都需要在数据库中检索,之后在应用服务器将检索结果封装为JSON字符串,查询同样的数据时需要重复检索,数据库压力大、检索慢,系统时常出现请求超时情况。采用将处理好的JSON字符串以
将Memcached以守护进程的方式运行在服务器中,其默认监听的端口号为11211,随时接受客户端的连接和操作。将缓存服务器集群和应用服务器配置同一个局域网中,应用服务器使用memcached client for java经IP地址实现对缓存服务器的读写访问。当用户访问系统中不同的页面时URL信息不同,因此应用服务器将当前访问的URL作为key,当前页面的JSON数据作为value存储在缓存服务器中,在数据有效时间内,下次不经数据库直接在缓存服务器中读取数据。
系统软件流程图如图2所示。访问图表时首先由浏览器向应用服务器发起请求,由控制层调用逻辑层,在逻辑层将得到的key值对缓存服务器个数进行取余操作得到缓存服务器的地址,查询此数据是否存在于该服务器中,如果存在于此缓存服务器中,则在对应的缓存服务器中读取数据,然后直接返回请求,否则调用数据访问层,和数据库建立连接,从数据库中检索数据,获取数据成功之后,将JSON字符串存储于相应的Memcached缓存服务器之中以供下次查询使用,再返回请求。
图2 软件流程图
系统实现了表格的展示以及图件的绘制功能,为油田从业者提供直观的信息表现形式。对于表格,在展现形式上采用分页的形式展示数据,分页查询通过减少检索的数据量有效的减轻了数据库的负担,具有查询速度快、占用带宽小的优点;在功能上提供了数据的筛选查询、排序、隐藏列、拖动列等功能。对于图件的绘制,在展现形式上,通过柱状图、饼状图、折线图等来展示数据,具有简洁、美观的特点;在功能上,可以选择性的隐藏或显示特定的图例、显示3D图形等。图表功能均能可靠运行,表格和图件绘制功能测试如图3所示。
图3 表格和图件展示数据
本实验主要对比本文实现的基于分布式Mem⁃cached缓存的油田信息查询系统和现有的油田信息查询系统在系统数据的获取时间上的变化。本系统两台Memcahced缓存服务器的处理器均为Intel Core i5-4460M,内存为8G DDR3 1600MHz,操作系统为Ubun⁃tu-16.04。单用户情况下访问系统的图表页面,系统响应时间对比如图4所示。
图4 两种系统响应时间对比
图5 高并发下系统错误率对比
图6 高并发下系统响应时间对比
在高并发的访问环境下,本实验使用Apache Jme⁃ter软件对系统进行压力测试,用户模拟线程均在1s内启动,线程数由10个开始逐渐递增,对系统图表访问进行测试。当并发量达到30时现有服务器开始出现超时错误,在并发量持续升高的情况下,现有系统错误率达到100%。系统的错误率如图5所示,系统对用户请求的平均响应时间如图6所示。
本文针对油田的工作需求,采用轻量级的B/S架构,无插件开发,仅依赖操作系统的浏览器即可使用本系统,在界面的设计上遵循简约、美观、易用、快速的特点,对当前主流的浏览器做到了很好的兼容性,实现了生产成果等信息的查询。由于将分布式缓存技术应用到了油田信息查询系统中,解决了之前油田信息数字系统普遍存在的数据库查询速度慢、难以承受高并发的问题。本系统在很大程度上减轻了数据库的负载,增加并发量,节约油田地质工作者的时间,更进一步提升工作效率,增加用户体验。目前该系统已经在油田投入使用,可以高效稳定地运行,也得到油田工作者的肯定。
[1]杨涵夫.油田开发数据模糊智能查询系统[J].油气田地面工程,2013(01):79.
[2]李瑞芳,于晓红,孙永东.基于SVG的油田故障查询系统[J].科学技术与工程,2010(22):5548-5550.
[3]王心妍.Memcached和Redis在高速缓存方面的应用[J].无线互联科技,2012(09):8-9.
[4]刘亮,徐步东,谭艳艳.基于Memcached内存对象缓存技术应用研究[J]。计算机技术与发展,2015(11):204-208.
[5]周淦淼,谭石强.基于Memcached的MySQL查询优化[J].现代计算机(专业版),2009(05):137-140.
[6]郭栋,王伟,曾国荪.基于Memcached的缓存资源集中管理方法[J].计算机技术与发展,2013(12):62-65.
[7]宗小忠.基于Memcached构建Web缓存服务器[J].电脑知识与技术,2011(05):1044-1045.
Oilfield Information Query System Based on Distributed Memcached Caching Technology
FANG Zhi-jie1,QING Lin-bo1,WU Xiao-hong1,ZHANG Yu-qiang2
(1.College of Electronic and Information,Sichuan University,Chengdu 610064;2.Chengdu Xitu Technology Co.Ltd.,Chengdu 610065)
The network is widely used in the field of information system,greatly improves the efficiency of oil production.Oil workers not only can timely access to the latest production information of the oil at any time and reduce the cost of collecting information,but also improve the work efficiency of personnel engaged in oilfield development.But with the passage of time,there are a lot of Oilfield Information System da⁃ta which entry the database every year.As time passes,the amount of data becomes very huge,and frequently querying database faces more pressure under the premise of massive data.In order to alleviate the pressure of database and increase the speed of data querying,this paper achieves the oil information query system based on Memcached cache technology,relying on the retrieval results in the database stored in the cache memory,this system can reduce the burden of the database,increase the querying speed and improve access concur⁃rency.
1007-1423(2017)27-0029-05
10.3969/j.issn.1007-1423.2017.27.007
Memcached;MVC;油田信息查询系统;分布式集群
方志杰(1993-),男,河北邯郸人,在读研究生,研究方向为智能系统与设计
卿粼波,男,副教授,研究方向为图像处理、图像/视频编码通信、嵌入式系统及机电一体化等方面的理论及应用研究,Email:qing_lb@scu.edu.cn
吴晓红,女,四川成都人,博士,副教授,研究方向为图像处理与模式识别、计算机视觉、无线通信等
张余强,男,四川成都人,硕士,成都西图科技有限公司,硕士,研究方向为软件工程
2017-07-13
2017-09-20
Memcached;MVC;Oilfield Information Query System;Distributed Cluster