文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.191043
中文引用格式: 黃向平,彭明田,楊永凱. 基于內(nèi)存映射文件的高性能庫(kù)存緩存系統(tǒng)[J].電子技術(shù)應(yīng)用,2020,46(7):113-117,126.
英文引用格式: Huang Xiangping,Peng Mingtian,Yang Yongkai. High performance inventory caching system based on memory mapping files[J]. Application of Electronic Technique,2020,46(7):113-117,126.
0 引言
近年來(lái),移動(dòng)互聯(lián)網(wǎng)[1]應(yīng)用急劇擴(kuò)大,作為一種典型的移動(dòng)互聯(lián)網(wǎng)電子商務(wù)應(yīng)用,票務(wù)查詢系統(tǒng)[2]向用戶隨時(shí)隨地提供余票庫(kù)存信息,幫助移動(dòng)用戶做交通住宿規(guī)劃、影院演出門票預(yù)定等操作。12306鐵路票務(wù)系統(tǒng)[3]是一個(gè)典型的高并發(fā)應(yīng)用,余票查詢高峰值超過(guò)了百億次/天。如此高的負(fù)載與高并發(fā)量會(huì)使應(yīng)用服務(wù)訪問(wèn)擁堵,容易出現(xiàn)查詢結(jié)果不穩(wěn)定等異?,F(xiàn)象。航空票務(wù)搜索[4]也同樣面臨相似的問(wèn)題,中轉(zhuǎn)點(diǎn)選擇豐富,可搭配的航班多,單次搜索需要成千上萬(wàn)次的航班座位庫(kù)存信息查詢。能夠及時(shí)準(zhǔn)確地獲取盡量多航班座位庫(kù)存數(shù)據(jù),是搜索出經(jīng)濟(jì)快捷的航班集合的關(guān)鍵所在。
在此類實(shí)時(shí)響應(yīng)度要求比較高且性能要求比較高的查詢系統(tǒng)中,key-value結(jié)構(gòu)的NoSQL數(shù)據(jù)庫(kù)[5]作為緩存系統(tǒng)[6]得到了廣發(fā)的應(yīng)用。典型的NoSQL數(shù)據(jù)庫(kù)有內(nèi)存數(shù)據(jù)庫(kù)memcached/redis[7]和嵌入式數(shù)據(jù)庫(kù)Berkeley DB[8]。在進(jìn)一步性能分析之后發(fā)現(xiàn),這些數(shù)據(jù)訪問(wèn)方式仍存在性能瓶頸,并發(fā)訪問(wèn)量大時(shí)依然會(huì)出現(xiàn)排隊(duì)延遲的現(xiàn)象。鑒于此,本文提出了一種基于內(nèi)存映射文件[9]的高性能庫(kù)存緩存系統(tǒng),主要從三方面進(jìn)行改進(jìn):(1)通過(guò)內(nèi)存映射文件,緩存系統(tǒng)與應(yīng)用進(jìn)程同處一個(gè)進(jìn)程空間,避免進(jìn)程間通信,從而提高數(shù)據(jù)讀取效率;(2)緩存結(jié)果以指針?lè)绞椒祷?,?jié)省了內(nèi)存拷貝,從而減少內(nèi)存和CPU資源消耗;(3)數(shù)據(jù)讀寫過(guò)程采用無(wú)鎖設(shè)計(jì),多進(jìn)程或多線程無(wú)需爭(zhēng)搶排隊(duì)訪問(wèn),從而提高訪問(wèn)并發(fā)效率。
本文詳細(xì)內(nèi)容請(qǐng)下載:http://ihrv.cn/resource/share/2000002915
作者信息:
黃向平1,2,彭明田1,2,楊永凱1,2
(1.中國(guó)民航信息網(wǎng)絡(luò)股份有限公司,北京101318;2.民航旅客服務(wù)智能化應(yīng)用技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京101318)