1,机票系统(https://flights.ctrip.com/)
项目描述:为用户提供航班查询和预订服务。
使用技术栈:SQL Server,EF,WCF,ASP.NET MVC,ASP.NET WebApi,Redis,RabbitMQ,MongoDb,Nginx
项目职责:
1) 机票业务系统架构及技术选型。
2) 性能问题分析和解决。
3) 新技术研究,验证和应用。
4) CodeReview。
遇到的问题及解决方案:
a, 航班查询慢的问题?
最慢的查询需要十多秒,严重影响用户的使用体验。
我们从前端,后端,代码层,数据库层和外部接口去分析,发现主要的性能瓶颈在调用中航信的查询接口上,结合航班查询的业务特点查询多且允许数据有延时,我们使用了redis缓存,并且结合消息队列rabbitmq异步刷新缓存,结果将查询速度控制在3秒以内。
b, 应用服务器上集群后,碰到session一致性的问题?
为了提升应用服务器的处理能力,所以上了集群,然后碰到如何解决Session一致性的问题。
这个问题的解决方案有很多,比如:Session同步法,客户端存储法,反射代理hash一致性和后端统一存储。
我们选择的是后端统一存储方案,session放到redis中,既解决了Session一致性的问题,web服务器重启Session也不会丢失。