先拿12306和google做个对比
google在全世界大概有百万台服务器,每天的访问量大概是50亿多。(更新下数据,之前的数据有误,参考http://www.statisticbrain.com/google-searches/)
12306在春运这2个月的访问量是多少呢?按运输36亿人次算,肯定是不对的,因为每天有大量的刷票,5秒一次,毫无意义的刷票,2个月下来,12306肯定是这个世界上最繁忙的网站了,12306负载了天量毫无意义的请求,这和ddos攻击很类似的,最奇葩的是12306居然对此支持!
软件优化最好的办法是在满足需求的同时,让计算机做最少的事情。防止用户刷票,同时又能让用户买票,才是最根本的解决办法。
用户为什么刷票?
买不到票,查了一次没票,在刷一次,看看是否有退票的。我们可以换一种思路,让服务器推送通知呢?
比如,我想买2014-01-28日K111的火车票,一查,没有。好,我预订那些退回的票,当有人退票时,服务器通过一种随机算法(也就是摇号),把票卖给预订票的人,再通过短信、邮件、app或者客户端软件通知他,让他付款(或者他已经把预付款交了)。
这样就没有人刷票,服务器的压力可以减到最小,比神马优化效果都好。