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