《電子技術(shù)應用》
您所在的位置:首頁 > 其他 > 設計應用 > 基于內(nèi)存映射文件的高性能庫存緩存系統(tǒng)
基于內(nèi)存映射文件的高性能庫存緩存系統(tǒng)
2020年電子技術(shù)應用第7期
黃向平1,2,彭明田1,2,楊永凱1,2
1.中國民航信息網(wǎng)絡股份有限公司,北京101318;2.民航旅客服務智能化應用技術(shù)重點實驗室,北京101318
摘要: 傳統(tǒng)余票庫存查詢系統(tǒng)以內(nèi)存數(shù)據(jù)庫或嵌入式數(shù)據(jù)庫作為緩存系統(tǒng),在高并發(fā)與密集計算環(huán)境中,讀取性能很難滿足需求。設計一種高性能庫存緩存系統(tǒng),利用內(nèi)存映射文件技術(shù),消除進程間通信消耗,減少數(shù)據(jù)拷貝,避免讀寫操作互鎖,從而大幅提高緩存讀取性能。實驗表明,該方法在并發(fā)讀取效率上提升了兩個數(shù)量級以上。
中圖分類號: TP311.132
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.191043
中文引用格式: 黃向平,彭明田,楊永凱. 基于內(nèi)存映射文件的高性能庫存緩存系統(tǒng)[J].電子技術(shù)應用,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.
High performance inventory caching system based on memory mapping files
Huang Xiangping1,2,Peng Mingtian1,2,Yang Yongkai1,2
1.TravelSky Technology Limited,Beijing 101318,China; 2.Key Laboratory of Intelligent Passenger Service of Civil Aviation,Beijing 101318,China
Abstract: Traditional balance inventory query system uses memory database or embedded database as cache system. In high concurrent and intensive computing environment, the reading performance is difficult to meet the demand. A high-performance inventory caching system is designed, which uses memory mapping file technology to eliminate communication consumption between processes, reduce data copy and avoid interlocking between read and write operations, thus greatly improving the cache reading performance. Experiments show that this method improves the concurrent reading efficiency by more than two orders of magnitude.
Key words : inventory query;memory database;embedded database;memory mapping files;high performance caching system

0 引言

    近年來,移動互聯(lián)網(wǎng)[1]應用急劇擴大,作為一種典型的移動互聯(lián)網(wǎng)電子商務應用,票務查詢系統(tǒng)[2]向用戶隨時隨地提供余票庫存信息,幫助移動用戶做交通住宿規(guī)劃、影院演出門票預定等操作。12306鐵路票務系統(tǒng)[3]是一個典型的高并發(fā)應用,余票查詢高峰值超過了百億次/天。如此高的負載與高并發(fā)量會使應用服務訪問擁堵,容易出現(xiàn)查詢結(jié)果不穩(wěn)定等異?,F(xiàn)象。航空票務搜索[4]也同樣面臨相似的問題,中轉(zhuǎn)點選擇豐富,可搭配的航班多,單次搜索需要成千上萬次的航班座位庫存信息查詢。能夠及時準確地獲取盡量多航班座位庫存數(shù)據(jù),是搜索出經(jīng)濟快捷的航班集合的關(guān)鍵所在。

    在此類實時響應度要求比較高且性能要求比較高的查詢系統(tǒng)中,key-value結(jié)構(gòu)的NoSQL數(shù)據(jù)庫[5]作為緩存系統(tǒng)[6]得到了廣發(fā)的應用。典型的NoSQL數(shù)據(jù)庫有內(nèi)存數(shù)據(jù)庫memcached/redis[7]嵌入式數(shù)據(jù)庫Berkeley DB[8]。在進一步性能分析之后發(fā)現(xiàn),這些數(shù)據(jù)訪問方式仍存在性能瓶頸,并發(fā)訪問量大時依然會出現(xiàn)排隊延遲的現(xiàn)象。鑒于此,本文提出了一種基于內(nèi)存映射文件[9]的高性能庫存緩存系統(tǒng),主要從三方面進行改進:(1)通過內(nèi)存映射文件,緩存系統(tǒng)與應用進程同處一個進程空間,避免進程間通信,從而提高數(shù)據(jù)讀取效率;(2)緩存結(jié)果以指針方式返回,節(jié)省了內(nèi)存拷貝,從而減少內(nèi)存和CPU資源消耗;(3)數(shù)據(jù)讀寫過程采用無鎖設計,多進程或多線程無需爭搶排隊訪問,從而提高訪問并發(fā)效率。




本文詳細內(nèi)容請下載:http://theprogrammingfactory.com/resource/share/2000002915




作者信息:

黃向平1,2,彭明田1,2,楊永凱1,2

(1.中國民航信息網(wǎng)絡股份有限公司,北京101318;2.民航旅客服務智能化應用技術(shù)重點實驗室,北京101318)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。