去哪儿网机票搜索系统的高并发架构设计1Qunar成立于2005年,那时候大家还习惯打电话或者去代理商买机票
随着在线旅游快速发展,机票业务逐步来到线上
在“在线旅游”的大浪潮下,Qunar的核心业务主要是线上机票搜索和机票销售
根据2014年9月艾瑞监测数据,在旅行类网站月度独立访问量统计中,去哪儿网以4474万人名列前茅
截至2015年3月31日,去哪儿网可实时搜索约9000家旅游代理商网站,搜索范围覆盖全球范围内超过28万条国内及国际航线
Qunar由机票起家,核心产品包括机票搜索比价系统、机票销售OTA系统等
后来一度成为国内最大旅游搜索引擎,所以最开始大家知道Qunar都是从机票开始
在Qunar,我主要工作负责机票搜索系统
当时,搜索业务达到了日均十亿量级PV,月均上亿UV的规模
而整个搜索主系统设计上是比较复杂的,大概包含了七、八个子系统
那时线上服务器压力很大,时常出现一些高并发的问题
有时候为了解决线上问题,通宵达旦连续一两周是常有的事
尽管如此,我们还是对整个搜索系统做到了高可用、可扩展
为了大家了解机票搜索的具体业务,我们从用户角度看一下搜索的过程,如下图:根据上面的图片,简单解释下:首页:用户按出发城市、到达城市、出发日期开始搜索机票,进入列表页
列表页:展示第一次搜索结果,一般用户会多次搜索,直到找到适合他的航班,然后进入详情页
产品详情页:用户填入个人信息,开始准备下单支付
2从上面的介绍可以看出,过程1和2是个用户高频的入口
用户访问流量一大,必然有高并发的情况
所以在首页和列表页会做一些优化:前端做静态文件的压缩,优化Http请求连接数,以减小带宽,让页面更快加载出来
前后端做了数据分离,让搜索服务解耦,在高并发情况下更灵活做负载均衡
后端数据(航班数据)99%以上来自缓存,加载快,给用户更快的体验
而我们的缓存是异步刷新的机制,后