文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.191043
中文引用格式: 黃向平,彭明田,楊永凱. 基于內存映射文件的高性能庫存緩存系統[J].電子技術應用,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 引言
近年來,移動互聯網[1]應用急劇擴大,作為一種典型的移動互聯網電子商務應用,票務查詢系統[2]向用戶隨時隨地提供余票庫存信息,幫助移動用戶做交通住宿規劃、影院演出門票預定等操作。12306鐵路票務系統[3]是一個典型的高并發應用,余票查詢高峰值超過了百億次/天。如此高的負載與高并發量會使應用服務訪問擁堵,容易出現查詢結果不穩定等異常現象。航空票務搜索[4]也同樣面臨相似的問題,中轉點選擇豐富,可搭配的航班多,單次搜索需要成千上萬次的航班座位庫存信息查詢。能夠及時準確地獲取盡量多航班座位庫存數據,是搜索出經濟快捷的航班集合的關鍵所在。
在此類實時響應度要求比較高且性能要求比較高的查詢系統中,key-value結構的NoSQL數據庫[5]作為緩存系統[6]得到了廣發的應用。典型的NoSQL數據庫有內存數據庫memcached/redis[7]和嵌入式數據庫Berkeley DB[8]。在進一步性能分析之后發現,這些數據訪問方式仍存在性能瓶頸,并發訪問量大時依然會出現排隊延遲的現象。鑒于此,本文提出了一種基于內存映射文件[9]的高性能庫存緩存系統,主要從三方面進行改進:(1)通過內存映射文件,緩存系統與應用進程同處一個進程空間,避免進程間通信,從而提高數據讀取效率;(2)緩存結果以指針方式返回,節省了內存拷貝,從而減少內存和CPU資源消耗;(3)數據讀寫過程采用無鎖設計,多進程或多線程無需爭搶排隊訪問,從而提高訪問并發效率。
本文詳細內容請下載:http://www.rjjo.cn/resource/share/2000002915
作者信息:
黃向平1,2,彭明田1,2,楊永凱1,2
(1.中國民航信息網絡股份有限公司,北京101318;2.民航旅客服務智能化應用技術重點實驗室,北京101318)