文獻標識碼: 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.
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)