方志杰,卿粼波,吳曉紅,張余強
(1.四川大學電子信息學院,成都610064;2.成都西圖科技有限公司,成都610065)
基于分布式Memcached緩存技術的油田信息查詢系統(tǒng)
方志杰1,卿粼波1,吳曉紅1,張余強2
(1.四川大學電子信息學院,成都610064;2.成都西圖科技有限公司,成都610065)
網絡化在油田信息系統(tǒng)中的普遍應用,大大地提高油田的生產效率,方便油田工作者隨時、及時地查閱最新的油田生產信息,降低信息獲取的成本,提高從事油田開發(fā)的人員的工作效率。但隨著時間的遷移,每年都有大量的數據錄入油田信息系統(tǒng)的數據庫之中,久而久之,數據量逐漸變地龐大,在海量數據的前提下,頻繁的查詢操作導致數據庫面臨的壓力越來越大。為了緩解數據庫的壓力,增加數據的查詢速度,采用分布式Memcached緩存技術實現油田信息查詢系統(tǒng)。通過把在數據庫中檢索出的結果存儲在緩存服務器內存中,減輕數據庫負擔,加快查詢速度,提高訪問并發(fā)量。
隨著互聯網的發(fā)展以及油田從業(yè)者對高效工作的追求,大量的以B/S(Brower/Server)或C/S(Client/Serv?er)為模型的軟件系統(tǒng)在油田得到廣泛的應用,旨在提高人們的工作效率,增加生產力。楊涵夫采用客戶端、應用服務器、數據庫服務器三層體系架構的油田信息查詢系統(tǒng)為油田工作者查詢數據提供了方便[1]。李瑞芳等基于SVG開發(fā)的油田故障查詢系統(tǒng)實現了油田井位直觀展示和故障信息的動態(tài)查詢[2]。隨著技術的進步和發(fā)展,油田工作者對工作效率、操作便捷性以及功能上有了新的追求,但在目前已有的油田信息查詢系統(tǒng)中,大多存在一些系統(tǒng)兼容性不好和查詢數據慢的問題。由于傳統(tǒng)的關系型數據庫面臨大規(guī)模的數據訪問時,磁盤I/O往往成為性能瓶頸,尤其是當查詢數據庫需要進行多表關聯查詢時,需要大量的處理時間,這將直接導致系統(tǒng)的性能和體驗急劇下降。當系統(tǒng)的訪問量大時,由于不能及時從數據庫獲取到信息會導致超時錯誤,當較嚴重時會使應用服務器直接崩潰。
高速緩存的使用,可以使服務器具有良好的響應速度并承受較大的負載量[3]。為此,本文實現了一種基于Memcached緩存技術的油田信息查詢系統(tǒng),利用Memcached能夠有效減輕數據庫服務器負載壓力,提高Web應用系統(tǒng)響應速度,增強用戶體驗效果[4]。同時為了適應大量數據對象存儲的需求,以及減少緩存服務器宕機之后對系統(tǒng)的影響,采用分布式Mem?cached緩存的技術方案。應用程序通過路由算法選擇目標緩存服務器遠程讀寫緩存數據,減輕油田數據庫的負載,充分利用多臺計算機的資源,提高系統(tǒng)的可用性[5],實現緩存服務器的可擴展性,通過動態(tài)增加或減少節(jié)點應對數據訪問負載,最大限度的提高資源利用率。
由于C/S模型的軟件需要安裝才可以使用服務,對操作系統(tǒng)環(huán)境的依賴較大,軟件安裝和更新為油田工作從事者帶來了很大的不方便,同時也增加了運維工作。因而采用了B/S的結構,以HTTP協議進行通信,借助瀏覽器實現訪問,無需安裝,僅在服務器端就可以進行更新,實現了原來客戶端擁有的功能,在各大主流瀏覽器上均做到了很好的兼容性。本系統(tǒng)包括應用服務器、緩存服務器和數據庫服務器三大部分,當用戶選擇將訪問的頁面后,瀏覽器經網絡向應用服務器發(fā)起請求,應用服務器解析瀏覽器的請求信息后在油田數據庫中查詢數據,為了提高查詢速度,本系統(tǒng)增加了分布式Memcached緩存服務器集群。將從數據庫中檢索到的結果存儲在緩存服務器中,下次查詢時可以直接在緩存服務器中讀取,同時應用服務器將檢索到的數據以JSON(JavaScript Object Notation)字符串的格式返回給瀏覽器進行渲染展示。系統(tǒng)的架構圖如圖1所示。
圖1 系統(tǒng)架構圖
系統(tǒng)使用Java語言開發(fā),前端頁面采用JSP(Java Server Pages)開發(fā),以表格和圖件的形式對油田生產成果信息進行直觀的展示。
對于表格而言,目前常用的表格展示框架有Easy UI、jQuery UI、jqGrid等。其中Easy UI組件豐富,但性能較差;jQuery輕便便捷、美觀多變,但控件較少;jqGrid輕量、功能豐富,但使用不夠簡便??紤]到系統(tǒng)中有表格列拖動的功能需求,而jqGrid可以滿足系統(tǒng)的需求,且具有較好的瀏覽器兼容性,因此采用了jqGrid實現表格的繪制。結合后端代碼,將前端頁面的篩選條件作為數據庫SQL語句的查詢條件來檢索數據,實現了篩選查詢的功能。圖件繪制采用Highcharts框架,HighCharts支持主流瀏覽器、配置簡單、功能強大。系統(tǒng)中以HighCharts實現了曲線圖、柱狀圖、散點圖、3D圖形等形式豐富的數據展示功能。
當前端頁面加載后,采用AJAX(Asynchronous Ja?vaScript And XML)異步請求來獲取待繪制的數據,Ajax請求為局部刷新頁面,與后臺服務器進行少量數據交換,可以減少通信量,有效節(jié)約帶寬,增加系統(tǒng)的速度及用戶體驗。
基于B/S模型的應用系統(tǒng)常用的開發(fā)框架有Spring MVC和ASP.NET MVC框架。MVC三層模型具有高內聚低耦合的特點,各層之間相互獨立,彼此協同工作,易于開發(fā)和維護。其中Spring MVC框架基于Java實現,具有跨平臺的特性,框架的搭建需要較多的配置工作;ASP.NET MVC框架基于C#實現,僅可以運行在Windows操作系統(tǒng)平臺,但無需配置。鑒于Spring MVC不受運行平臺的限制,可以適用油田公司服務器不同的操作系統(tǒng)環(huán)境要求,因此采用Spring MVC框架開發(fā)。
在代碼設計上采用Spring軟件框架,Spring是輕量級的IoC(控制反轉)和AOP(面向切面)的容器框架。本系統(tǒng)通過Spring IoC達到松耦合的目的,軟件各個模塊之間以接口的形式對外提供服務,有利于開發(fā)和維護工作。
目前,很多大型Web應用系統(tǒng)通過使用Mem?cached緩存服務來實現高并發(fā)頁面訪問[6]。Mem?cached中所有緩存的內容都在服務器的內存中[7],計算機中的內存讀寫速度是遠遠快于磁盤的,通過緩存的方式減少數據庫的磁盤I/O操作,使系統(tǒng)可以有很好的響應速度和高并發(fā)量。鑒于此,為了適應油田大數據檢索的需求,采用了Memcached緩存技術來提升響應速度和系統(tǒng)訪問并發(fā)量。為解決系統(tǒng)中隨著模塊的增加以及用戶量的上升,單個緩存服務器緩存的數據量有限的問題。設計了分布式Memcached緩存系統(tǒng),采用集群的方式提供緩存服務,具有良好的伸縮性,在理論上做到不受內存容量限制。本文系統(tǒng)中使用兩臺Memcached緩存服務器來實現分布式緩存服務,其中Memcached版本為memcached-1.4.33,運行在Linux操作系統(tǒng)環(huán)境下。
油田工作者時常需要查詢油田生產成果信息,這些數據具有高頻訪問和變化小的特點。在現有系統(tǒng)中每次數據獲取操作都需要在數據庫中檢索,之后在應用服務器將檢索結果封裝為JSON字符串,查詢同樣的數據時需要重復檢索,數據庫壓力大、檢索慢,系統(tǒng)時常出現請求超時情況。采用將處理好的JSON字符串以
將Memcached以守護進程的方式運行在服務器中,其默認監(jiān)聽的端口號為11211,隨時接受客戶端的連接和操作。將緩存服務器集群和應用服務器配置同一個局域網中,應用服務器使用memcached client for java經IP地址實現對緩存服務器的讀寫訪問。當用戶訪問系統(tǒng)中不同的頁面時URL信息不同,因此應用服務器將當前訪問的URL作為key,當前頁面的JSON數據作為value存儲在緩存服務器中,在數據有效時間內,下次不經數據庫直接在緩存服務器中讀取數據。
系統(tǒng)軟件流程圖如圖2所示。訪問圖表時首先由瀏覽器向應用服務器發(fā)起請求,由控制層調用邏輯層,在邏輯層將得到的key值對緩存服務器個數進行取余操作得到緩存服務器的地址,查詢此數據是否存在于該服務器中,如果存在于此緩存服務器中,則在對應的緩存服務器中讀取數據,然后直接返回請求,否則調用數據訪問層,和數據庫建立連接,從數據庫中檢索數據,獲取數據成功之后,將JSON字符串存儲于相應的Memcached緩存服務器之中以供下次查詢使用,再返回請求。
圖2 軟件流程圖
系統(tǒng)實現了表格的展示以及圖件的繪制功能,為油田從業(yè)者提供直觀的信息表現形式。對于表格,在展現形式上采用分頁的形式展示數據,分頁查詢通過減少檢索的數據量有效的減輕了數據庫的負擔,具有查詢速度快、占用帶寬小的優(yōu)點;在功能上提供了數據的篩選查詢、排序、隱藏列、拖動列等功能。對于圖件的繪制,在展現形式上,通過柱狀圖、餅狀圖、折線圖等來展示數據,具有簡潔、美觀的特點;在功能上,可以選擇性的隱藏或顯示特定的圖例、顯示3D圖形等。圖表功能均能可靠運行,表格和圖件繪制功能測試如圖3所示。
圖3 表格和圖件展示數據
本實驗主要對比本文實現的基于分布式Mem?cached緩存的油田信息查詢系統(tǒng)和現有的油田信息查詢系統(tǒng)在系統(tǒng)數據的獲取時間上的變化。本系統(tǒng)兩臺Memcahced緩存服務器的處理器均為Intel Core i5-4460M,內存為8G DDR3 1600MHz,操作系統(tǒng)為Ubun?tu-16.04。單用戶情況下訪問系統(tǒng)的圖表頁面,系統(tǒng)響應時間對比如圖4所示。
圖4 兩種系統(tǒng)響應時間對比
圖5 高并發(fā)下系統(tǒng)錯誤率對比
圖6 高并發(fā)下系統(tǒng)響應時間對比
在高并發(fā)的訪問環(huán)境下,本實驗使用Apache Jme?ter軟件對系統(tǒng)進行壓力測試,用戶模擬線程均在1s內啟動,線程數由10個開始逐漸遞增,對系統(tǒng)圖表訪問進行測試。當并發(fā)量達到30時現有服務器開始出現超時錯誤,在并發(fā)量持續(xù)升高的情況下,現有系統(tǒng)錯誤率達到100%。系統(tǒng)的錯誤率如圖5所示,系統(tǒng)對用戶請求的平均響應時間如圖6所示。
本文針對油田的工作需求,采用輕量級的B/S架構,無插件開發(fā),僅依賴操作系統(tǒng)的瀏覽器即可使用本系統(tǒng),在界面的設計上遵循簡約、美觀、易用、快速的特點,對當前主流的瀏覽器做到了很好的兼容性,實現了生產成果等信息的查詢。由于將分布式緩存技術應用到了油田信息查詢系統(tǒng)中,解決了之前油田信息數字系統(tǒng)普遍存在的數據庫查詢速度慢、難以承受高并發(fā)的問題。本系統(tǒng)在很大程度上減輕了數據庫的負載,增加并發(fā)量,節(jié)約油田地質工作者的時間,更進一步提升工作效率,增加用戶體驗。目前該系統(tǒng)已經在油田投入使用,可以高效穩(wěn)定地運行,也得到油田工作者的肯定。
[1]楊涵夫.油田開發(fā)數據模糊智能查詢系統(tǒng)[J].油氣田地面工程,2013(01):79.
[2]李瑞芳,于曉紅,孫永東.基于SVG的油田故障查詢系統(tǒng)[J].科學技術與工程,2010(22):5548-5550.
[3]王心妍.Memcached和Redis在高速緩存方面的應用[J].無線互聯科技,2012(09):8-9.
[4]劉亮,徐步東,譚艷艷.基于Memcached內存對象緩存技術應用研究[J]。計算機技術與發(fā)展,2015(11):204-208.
[5]周淦淼,譚石強.基于Memcached的MySQL查詢優(yōu)化[J].現代計算機(專業(yè)版),2009(05):137-140.
[6]郭棟,王偉,曾國蓀.基于Memcached的緩存資源集中管理方法[J].計算機技術與發(fā)展,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;油田信息查詢系統(tǒng);分布式集群
方志杰(1993-),男,河北邯鄲人,在讀研究生,研究方向為智能系統(tǒng)與設計
卿粼波,男,副教授,研究方向為圖像處理、圖像/視頻編碼通信、嵌入式系統(tǒng)及機電一體化等方面的理論及應用研究,Email:qing_lb@scu.edu.cn
吳曉紅,女,四川成都人,博士,副教授,研究方向為圖像處理與模式識別、計算機視覺、無線通信等
張余強,男,四川成都人,碩士,成都西圖科技有限公司,碩士,研究方向為軟件工程
2017-07-13
2017-09-20
Memcached;MVC;Oilfield Information Query System;Distributed Cluster