2011年1月,新加坡飞往杭州的航班。飞行时间很长,大约6个小时,坐在四周的人很快熟悉了,互相攀谈起来。有一位小姑娘,16、7岁的摸样,长得很漂亮,默默地坐在座位上,当有热心的阿姨问起她的情况,她带着疲倦自我介绍起来,“我在新加坡念初三,那所学校一点都不好,我在成都是最好的初中毕业的,也考上了成都最好的高中,但是,我的父母,他们一定要我来新加坡复读初三,让我考新加坡的高中,我一点都不喜欢这里,这里的同学看不起我们这些大陆学生,经常上课找大陆来的老师麻烦,经常辱骂我们,我烦透了!!!”。对,这不是自我介绍,这是人接近奔溃边缘的歇斯底里。也就是在当时,我做出了决定,我绝不会让我的女儿这样远离我,一个人在很年幼的时候就必须独立面对生活的困难,绝不。不论她的父母出于什么原因让她去国外念书,我所看到的,是让一个不适合承受压力的人承担了巨大的压力,这就像本书我想要和大家讨论的话题—“性能优化”,我们不能随意地指出性能优化的方案,就像随意指派由那位小姑娘来完成全家的决定一样。我们必须经过严密的研究、测试及验证,明确真正的性能瓶颈原因后才能开始着手。
随着互联网业务的不断拓展、繁荣,越来越多的系统架构开始参照互联网+企业的系统架构方式。笔者认为,任何技术都离不开对业务需求的支撑,所以开始研究程序性能问题之前,我们需要先了解系统业务逻辑。
12306[1]这个网站一直被全国人民所诟病,它确实存在一些问题,但是这些看似简单的问题,其背后牵扯着复杂的系统架构设计,这些设计最终是为业务需求服务的,即12306的职责是为旅客的需求服务的,而我们设计的程序又是为12306服务的,所有的意识归到最终就是服务意识。我们来看一下12306的业务,12306需要支持海量并发查询,查时间、查车次、查座位、查铺位,同时,对应的下单过程也伴随着海量并发的数据库操作。据说,淘宝在双十一期间也只有几百万用户,而春运期间抢购火车票是全国人民的统一活动,瞬时访问数量有千万级别甚至是亿级别的,据说12306的高峰访问是10亿PV