• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于MongoDB的分布式緩存①

      2016-06-15 03:50:42王勝楊超崔蔚黃高攀張明明國網(wǎng)信息通信產(chǎn)業(yè)集團有限公司北京0009國網(wǎng)江蘇省電力公司信息通信分公司南京009
      計算機系統(tǒng)應用 2016年4期

      王勝,楊超,崔蔚,黃高攀,張明明(國網(wǎng)信息通信產(chǎn)業(yè)集團有限公司,北京 0009)(國網(wǎng)江蘇省電力公司信息通信分公司,南京 009)

      ?

      基于MongoDB的分布式緩存①

      王勝1,楊超1,崔蔚1,黃高攀2,張明明2
      1(國網(wǎng)信息通信產(chǎn)業(yè)集團有限公司,北京 100029)
      2(國網(wǎng)江蘇省電力公司信息通信分公司,南京 210029)

      摘 要:電力信息化的發(fā)展對傳統(tǒng)電力信息系統(tǒng)的數(shù)據(jù)處理、并發(fā)請求及響應能力提出諸多挑戰(zhàn).針對電力信息系統(tǒng)數(shù)據(jù)處理的特點,提出一種基于MongoDB數(shù)據(jù)庫的分布式緩存,并對該分布式緩存的運行機制、服務端架構(gòu)和客戶端功能模塊的設計進行了分析與闡述.基于MongoDB的分布式緩存能夠有效地降低電力信息系統(tǒng)數(shù)據(jù)庫層的訪問負載量,提高系統(tǒng)的整體性能,它采用分布式文件存儲緩存數(shù)據(jù),支持數(shù)據(jù)冗余備份和故障恢復功能,具有較高的可靠性和擴展性.基于MongoDB的分布式緩存已成功應用到電力某企業(yè)的項目管理系統(tǒng)中.

      關鍵詞:數(shù)據(jù)緩存; MongoDB; 分布式緩存; 電力信息系統(tǒng); NoSQL

      隨著云計算技術(shù)的發(fā)展和電力企業(yè)信息化程度的不斷提高,電力信息系統(tǒng)的規(guī)模越來越龐大,積累的數(shù)據(jù)越來越多,系統(tǒng)面對海量數(shù)據(jù)的并發(fā)處理能力越來越重要,在信息系統(tǒng)架構(gòu)中,數(shù)據(jù)庫層的訪問速度逐漸成為一大瓶頸.數(shù)據(jù)緩存是解決這一問題的關鍵技術(shù),它能夠有效地降低數(shù)據(jù)庫的訪問負載,提高系統(tǒng)性能.但面對著海量的數(shù)據(jù),簡單的數(shù)據(jù)緩存已無法滿足要求,這就需要使用分布式緩存技術(shù),讓服務器更快地響應用戶的需求.分布式緩存技術(shù)伴隨著互聯(lián)網(wǎng)、云計算的發(fā)展浪潮出現(xiàn)了不少優(yōu)秀的產(chǎn)品,如Memcached、JBoss Cache、OSCache、Ehcache、Redis等,覆蓋了數(shù)據(jù)存儲方面的各個方面,包含普通關系數(shù)據(jù)庫、非關系數(shù)據(jù)庫,內(nèi)存數(shù)據(jù)庫,內(nèi)存cache等多種實現(xiàn)方案.但這些產(chǎn)品在數(shù)據(jù)分布式存儲、冗余備份及故障恢復方面存在有一定的不足[1].Memcached不支持冗余備份,某一節(jié)點出現(xiàn)故障,則該節(jié)點上的數(shù)據(jù)將全部丟失,因此Memcached存在單點失效的問題.JBoss Cache支持兩種冗余策略:全局復制和Buddy復制,全局復制將數(shù)據(jù)復制給集群中所有節(jié)點,這樣能夠確保數(shù)據(jù)完整性,但它限制了系統(tǒng)的伸縮性; Buddy復制則挑選特定節(jié)點擔當備份數(shù)據(jù)節(jié)點,在備份節(jié)點失效時,無法啟動新的節(jié)點來替代.OSCache提供的集群功能比較局限,無法讓緩存中數(shù)據(jù)在各個節(jié)點間復制.Ehcache是一個Java語言開發(fā)的緩存系統(tǒng),沒有提供冗余備份和故障恢復功能.Redis只使用單核,擴展性有限.

      本文基于這一現(xiàn)狀研究并設計一種能夠支持數(shù)據(jù)分布式存儲、冗余備份及故障恢復的分布式緩存.

      1 MongoDB簡介

      MongoDB是NoSQL數(shù)據(jù)庫的典型代表.它是一個高性能、可擴展、模式自由、面向文檔、基于分布式文件存儲的開源數(shù)據(jù)庫,采用C++語言編寫,旨在為Web應用提供可擴展的高性能數(shù)據(jù)存儲解決方案.

      1.1MongoDB的主要特性

      MongoDB的特點是高性能、易部署、易使用,存儲數(shù)據(jù)非常方便,它的主要特性有: 面向文檔存儲、支持完全索引、快速就地更新、支持動態(tài)查詢及查詢記錄分析、具備數(shù)據(jù)自動分片功能以支持云級擴展性、具備數(shù)據(jù)復制與故障切換功能以支撐高可靠性.除此之外,MongoDB還具有模式自由、支持Map/Reduce、提供分布式文件系統(tǒng)GridFS、支持多種編程語言、使用高效的二進制數(shù)據(jù)存儲、文件存儲格式為BSON[2].

      1.2MongoDB的適用場景

      MongoDB在鍵/值存儲與RDBMS系統(tǒng)間架起了一座橋梁,集兩者優(yōu)勢于一身.MongoDB適合用于處理網(wǎng)站數(shù)據(jù): 它支持數(shù)據(jù)的實時插入、更新與查詢,并具備實時數(shù)據(jù)存儲所需的可靠復制及高度伸縮性; MongoDB適合用于數(shù)據(jù)緩存: 它具有極高的數(shù)據(jù)處理性能,適合作為信息基礎設施的緩存層,由于數(shù)據(jù)持久化存儲在分布式文件中,在系統(tǒng)重啟之后可以避免底層數(shù)據(jù)源的過載訪問; MongoDB適合用于高伸縮性的場景,支持由數(shù)十臺、數(shù)百臺甚至更多的服務器來架構(gòu)數(shù)據(jù)存儲服務,MongoDB內(nèi)置MapReduce[3]引擎,可以將大批量數(shù)據(jù)分解,然后通過大量機器進行并行計算處理.

      MongoDB的使用也存在一些限制,它并不適合用于高度事務性的場景,例如電力調(diào)度控制、電費在線繳納等.傳統(tǒng)的關系型數(shù)據(jù)庫更適用于需要大量原子性復雜事務的應用系統(tǒng).MongoDB不適用于傳統(tǒng)的商業(yè)智能應用,針對特定問題的BI數(shù)據(jù)庫會產(chǎn)生高度優(yōu)化的查詢方式,對于此類應用,數(shù)據(jù)倉庫可能是更合適的選擇.

      2 基于MongoDB的分布式緩存

      當文件系統(tǒng)遭遇大規(guī)模數(shù)據(jù)訪問時,IO讀取往往成為性能瓶頸,導致過高的數(shù)據(jù)延遲.分布式緩存通過一定的規(guī)則及策略,采用鍵/值方式將數(shù)據(jù)分散存儲于不同的物理機器上,它是云存儲技術(shù)的一種,滿足云計算技術(shù)的高性能、大容量、高可靠及可擴展的特點,可以通過動態(tài)增加或者減少節(jié)點應對變化的數(shù)據(jù)負載,提供可預測的性能.分布式緩存的目標是降低數(shù)據(jù)源訪問次數(shù),減免數(shù)據(jù)源訪問瓶頸的發(fā)生,進而提高應用系統(tǒng)的性能,同時用以支撐云環(huán)境下的海量數(shù)據(jù)緩存.

      傳統(tǒng)基于內(nèi)存數(shù)據(jù)庫的緩存組件通常只支持簡單的鍵值存儲,對緩存文件的類型、文件之間的關系的存儲和查詢不夠方便.MongoDB作為文檔數(shù)據(jù)庫,其自動分片機制對大規(guī)模分布式存儲的支持較好,尤其適合作為大規(guī)模非結(jié)構(gòu)化文件的存儲緩存.

      本文研究的分布式緩存采用MongoDB數(shù)據(jù)庫作為底層存儲,并結(jié)合數(shù)據(jù)緩存的特性擴展MongoDB驅(qū)動設計實現(xiàn)一套分布式緩存套件.

      2.1分布式緩存運行機制

      圖1 分布式緩存運行機制

      首次請求應用數(shù)據(jù)時,應用系統(tǒng)調(diào)用數(shù)據(jù)源訪問模塊獲取數(shù)據(jù),同時通過緩存客戶端將數(shù)據(jù)包裝并存儲至分布式緩存集群; 之后再請求同一應用數(shù)據(jù)時,應用系統(tǒng)直接通過緩存客戶端快速地查找分布式緩存集群中對應的數(shù)據(jù)并返回,而不必再請求數(shù)據(jù)源,從而緩解數(shù)據(jù)源訪問壓力,提高數(shù)據(jù)訪問性能.

      2.2分布式緩存服務端架構(gòu)

      本文研究的分布式緩存服務端采用MongoDB數(shù)據(jù)庫的自動分片機制結(jié)合副本集部署[4]方式進行架構(gòu),以提高擴展性與可靠性.分布式緩存服務端架構(gòu)見圖2.

      圖2 分布式緩存服務端架構(gòu)

      2.2.1緩存數(shù)據(jù)分片機制

      一個數(shù)據(jù)分片副本集由多個數(shù)據(jù)分片服務器構(gòu)成,一個數(shù)據(jù)分片服務器對應一個mongod進程.mongod 是MongoDB的核心進程,它對應MongoDB的一個具體實例,用于緩存數(shù)據(jù)的存儲與處理,完成緩存數(shù)據(jù)的持久化[5].一個mongod實例可以承載多個數(shù)據(jù)庫,每個數(shù)據(jù)庫之間是完全獨立的,一個數(shù)據(jù)庫下包含有多個數(shù)據(jù)集合,數(shù)據(jù)集合下存放著具體的緩存數(shù)據(jù).在自動分片機制下,緩存數(shù)據(jù)以chunk為單位進行存儲[6].可通過動態(tài)刪除和增加服務器節(jié)點來提升緩存的數(shù)目和效率.

      2.2.2數(shù)據(jù)分片策略配置

      配置服務器用于存儲分布式緩存集群中的元數(shù)據(jù),包括每個數(shù)據(jù)分片服務器的信息及每個數(shù)據(jù)塊(chunk)的信息.集群中每一個配置服務器節(jié)點都保存了分布式緩存上所有的元數(shù)據(jù)信息[7].

      2.2.3緩存一致性策略

      該組件采用路由服務器作為連接應用集群與分布式緩存集群的門戶,它對用戶屏蔽了分布式緩存集群的內(nèi)部細節(jié),使分布式緩存集群看起來像是一個單一的應用,使得系統(tǒng)無需考慮緩存一致性問題.

      2.2.4用戶認證

      用戶認證用于確??蛻舳伺c服務器端的數(shù)據(jù)安全訪問,它支持簡單的用戶/密碼認證方式,避免系統(tǒng)外用戶非法獲取緩存服務器數(shù)據(jù),從而提高緩存服務器的安全性.

      2.3分布式緩存客戶端設計

      本文研究的分布式緩存客戶端采用模塊化思想和面向接口的方式設計,具有較好的可擴展性,主要功能是接收并包裝應用系統(tǒng)的緩存請求,將包裝后的緩存請求命令(包含應用數(shù)據(jù)等)發(fā)送至分布式緩存集群以處理,同時對應用數(shù)據(jù)的生命周期進行統(tǒng)一管理.分布式緩存客戶端由以下三大模塊構(gòu)成: 緩存管理模塊、緩存模塊、緩存注解模塊.

      圖3 分布式緩存客戶端功能模塊

      2.3.1緩存管理模塊

      緩存管理模塊負責初始化客戶端配置信息,建立、管理緩存對象以及協(xié)調(diào)各模塊間的工作.緩存管理模塊抽象一個統(tǒng)一的緩存管理接口CacheManager,在該接口中定義配置信息初始化、緩存對象加載、添加、移除等方法.分布式緩存管理器實現(xiàn)統(tǒng)一緩存管理接口,封裝MongoDB數(shù)據(jù)庫的DB對象,采用工廠模式實現(xiàn)一個分布式緩存管理器創(chuàng)建工廠,該工廠負責管理分布式緩存管理器對象的實例化過程,具有較高的可擴展性.

      2.3.2緩存模塊

      緩存模塊是整個分布式緩存客戶端的核心,它負責將業(yè)務應用數(shù)據(jù)包裝成緩存數(shù)據(jù),并往分布式緩存集群發(fā)送緩存數(shù)據(jù)添加、移除、清空等操作指令,同時管理緩存數(shù)據(jù)的生命周期.緩存模塊針對各應用系統(tǒng)關注點的不同抽象出兩個接口: 緩存數(shù)據(jù)存取接口CacheAccess、緩存運行監(jiān)視接口CacheMonitor,同時擴展這兩個接口提供一個統(tǒng)一緩存接口Cache.分布式緩存實現(xiàn)統(tǒng)一緩存接口,封裝MongoDB數(shù)據(jù)庫的數(shù)據(jù)集對象,借助該數(shù)據(jù)集對象完成緩存數(shù)據(jù)的管理功能.

      分布式緩存數(shù)據(jù)包裝了業(yè)務應用數(shù)據(jù),同時賦予該應用數(shù)據(jù)一定的生命期限,其生命周期管理結(jié)合了TTI(Time To Idle)與TTL(Time To Live)兩種機制[8],以滿足緩存數(shù)據(jù)與數(shù)據(jù)源數(shù)據(jù)的一致性要求[9].緩存數(shù)據(jù)生命周期管理采用客戶端延遲失效模式: 當分布式緩存客戶端獲取到緩存數(shù)據(jù)后,立即判斷該數(shù)據(jù)是否過期,如果已經(jīng)過期,則刪除緩存數(shù)據(jù)并發(fā)布數(shù)據(jù)過期事件,如果未過期,則將緩存數(shù)據(jù)返回給用戶.通過該模式可以避免分布式緩存服務端上失效檢測線程的開銷,提高整個分布式緩存集群的運行性能.

      2.3.3緩存注解模塊

      分布式緩存客戶端基于AOP(Aspect Oriented Programming)思想提供一套緩存注解功能[10].通過該功能可以使開發(fā)人員更專注于業(yè)務邏輯處理,當需要緩存功能時,僅需配置一個攔截器并在業(yè)務方法上配置緩存注解即可.緩存注解包括兩個: 緩存數(shù)據(jù)加載@CacheFetch、緩存數(shù)據(jù)刷新@CacheRefresh.

      (1)@CacheFetch標注在獲取業(yè)務數(shù)據(jù)的方法上.當應用系統(tǒng)調(diào)用具有此注解的業(yè)務方法時,會自動先從分布式緩存中獲取數(shù)據(jù),如果取到數(shù)據(jù)就直接返回,如果未取到數(shù)據(jù)則執(zhí)行業(yè)務方法,把執(zhí)行結(jié)果返回,同時放入緩存.

      (2)@CacheRefresh標注在業(yè)務數(shù)據(jù)更新的方法上.當應用系統(tǒng)調(diào)用具有此注解的業(yè)務方法時,會自動根據(jù)緩存注解配置信息刷新緩存中相應的數(shù)據(jù).

      3 應用案例

      基于MongoDB的分布式緩存方案已在電力某企業(yè)的EIC(Electricity Infrastructure of Common)公共平臺中實現(xiàn),并應用于該企業(yè)的項目管理系統(tǒng)(基于EIC公共平臺開發(fā))當中.EIC公共平臺在系統(tǒng)啟動時將運行時相對不易變動的數(shù)據(jù)庫數(shù)據(jù)放入分布式緩存中,以提高系統(tǒng)響應能力,這些數(shù)據(jù)包括數(shù)據(jù)字典、組織機構(gòu)信息、用戶信息、模型配置信息等.項目管理系統(tǒng)的分布式緩存服務器使用2個數(shù)據(jù)分片節(jié)點來緩存數(shù)據(jù),每個分片節(jié)點對應一個副本集,每個副本集由3臺數(shù)據(jù)分片服務器組成,目前該系統(tǒng)運行良好.

      項目管理系統(tǒng)的"項目"模型關聯(lián)較多的配置信息,此處以該模型信息的獲取作為驗證點,使用Apache的JMeter2.9軟件進行多用戶并發(fā)訪問的性能測試.分別在不使用分布式緩存和使用分布式緩存兩種情況下對系統(tǒng)響應時間進行測試,針對每一種情況對應某一指定用戶數(shù)進行10次重復測試,取其平均時間作為系統(tǒng)響應時間,得到如圖4所示的驗證結(jié)果.

      圖4 不同情況下項目管理系統(tǒng)響應時間對比

      通過對上述的驗證結(jié)果分析,可以發(fā)現(xiàn)在相同并發(fā)用戶數(shù)條件下,使用分布式緩存比不使用分布式緩存系統(tǒng)響應時間明顯減少,而且當并發(fā)用戶數(shù)增加時,使用分布式緩存的系統(tǒng)響應時間曲線增長較為平緩.這說明基于MongoDB的分布式緩存對于項目管理系統(tǒng)的多用戶并發(fā)訪問系統(tǒng)性能的提高有較為顯著的作用.

      同時,在上述驗證測試過程中發(fā)現(xiàn),當緩存數(shù)據(jù)量較為龐大(超過分片節(jié)點間數(shù)據(jù)量差異閾值)時,緩存服務器能夠自動根據(jù)指定規(guī)則將數(shù)據(jù)分散存儲于兩個分片節(jié)點中,當分片節(jié)點數(shù)據(jù)量差異達到指定閾值時,緩存服務器能夠自動重新均衡數(shù)據(jù)分布; 驗證過程中嘗試手動停止副本集中的主節(jié)點,發(fā)現(xiàn)緩存服務器能夠自動選擇出一臺副節(jié)點接管主節(jié)點工作.這說明基于MongoDB的分布式緩存能夠有效地支持數(shù)據(jù)分布式存儲、冗余備份及故障恢復功能.

      4 結(jié)語

      本文研究并設計了一種基于MongoDB的分布式緩存,簡要地介紹了MongoDB數(shù)據(jù)庫,從分布式緩存的運行機制、服務端架構(gòu)、客戶端功能設計等方面進行了闡述.基于MongoDB的分布式緩存具有極高的數(shù)據(jù)存取速度,支持數(shù)據(jù)復制與故障切換功能,支持數(shù)據(jù)自動分片功能,能夠支撐海量數(shù)據(jù)緩存,有效地降低數(shù)據(jù)庫的訪問負載,提高系統(tǒng)性能.本文所提出的分布式緩存可以為電力企業(yè)中需要海量數(shù)據(jù)高性能并發(fā)訪問的信息化系統(tǒng)的緩存層設計提供參考.

      參考文獻

      1戚偉強.分布式緩存模式研究及其在金融系統(tǒng)中的應用[碩士學位論文].杭州:浙江大學,2008.

      2王光磊.MongoDB數(shù)據(jù)庫的應用研究和方案優(yōu)化.中國科技信息,2011,(20):93–94,96.

      3Dean J,Ghemawat S.MapReduce: Simplified Data Processing on Large Clusters.Communications of The ACM,2008,51(1):107–113.

      4紅丸.MongoDB管理與開發(fā)精要.北京:機械工業(yè)出版社,2012.

      5李文逍,楊小虎.基于分布式緩存的消息中間件存儲模型.計算機工程,2010,36(13):93–95.

      6 詹道楠.統(tǒng)一數(shù)據(jù)服務層框架緩存模塊的設計和實現(xiàn)[碩士學位論文].南京:南京大學,2012.

      7李文中,陳道蓄,陸桑璐.分布式緩存系統(tǒng)中一種優(yōu)化緩存部署的圖算法.軟件學報2010,21(7):1524–1535.

      8黃世能,奚建清.分布訪問環(huán)境中的數(shù)據(jù)緩存體系研究.計算機工程與科學,2000,22(6):88–91.

      9Gwertzman J,Seltzer M.World wide web cache consistency.USENIX 1996 Annual Technical Conference,1996.California: Harvard University,1996: 22–26.

      10Pawlak R,Retaillé J,Seinturier L.Foundations of AOP for J2EE Development.New York: A Press,2005: 53–60.

      Distributed Cache Based on MongoDB

      WANG Sheng1,YANG Chao1,CUI Wei1,HUANG Gao-Pan2,ZHANG Ming-Ming21(State Grid Information Communication Industry Group Co.Ltd.,Beijing 100029,China)
      2(State Grid Jiangsu Electric Power Company Information &Telecommunication branch,Nanjing 210029,China)

      Abstract:With the development of State Grid’s information technology,new challenges are presented to the data processing,concurrent requests and responsiveness of conventional power information systems.According to the characteristics of power information system’s data processing,a distributed cache based on MongoDB is proposed in this paper.The operational mechanism,server-side architecture and the design of client’s function modules in distributed cache are analyzed and discussed.The distributed cache based on MongoDB can effectively reduce the payload on access to the database layer of power information system,and then improve the performance of power system as a whole.It adopts the distributed files to store the cache data with good reliability and scalability to support the function of data redundancy backup and failure recovery.Now the distributed cache based on MongoDB has been successfully applied to the Project Management System of one power corporation.

      Key words:data cache; MongoDB; distributed cache; power information system; NoSQL

      基金項目:①國家電網(wǎng)公司科技項目(SGJSXT00YWJS1400072)

      收稿時間:2015-07-27;收到修改稿時間:2015-10-22

      资兴市| 大新县| 连云港市| 张家口市| 长宁县| 宁远县| 马尔康县| 江孜县| 华安县| 大关县| 黄浦区| 盐源县| 临朐县| 静宁县| 河北省| 普宁市| 库车县| 克拉玛依市| 革吉县| 铜鼓县| 女性| 商丘市| 苍溪县| 秀山| 大新县| 石阡县| 乐陵市| 拜城县| 土默特右旗| 武汉市| 塔河县| 岱山县| 新民市| 勃利县| 海安县| 榆社县| 肇源县| 松潘县| 邓州市| 盐津县| 雅江县|