设计应用

基于内存映射文件的高性能库存缓存系统

作者:黄向平1,2,彭明田1,2,杨永凯1,2
发布日期:2020-08-03
来源:2020年电子技术应用第7期

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.chinaaet.com/resource/share/2000002915




作者信息:

黄向平1,2,彭明田1,2,杨永凯1,2

(1.中国民航信息网络股份有限公司,北京101318;2.民航旅客服务智能化应用技术重点实验室,北京101318)

此内容为AET网站原创,未经授权禁止转载。
库存查询 内存数据库 嵌入式数据库 内存映射文件 高性能缓存系统