12306高性能高并发系统特点总结
实际上,通过上述的这么热议焦点,我们可以发现,要建设一个类似于12306在线购票系统还是面临着诸多难题,从系统层面上讲,其必须必备高性能、高可扩展性以及高可靠性等特点。同时,整个系统从架构设计到网页设计,甚至每段代码的编写都必须经得起严格的考验,网页代码力求简单、实用,因为那怕一小段代码问题在面对瞬时海量高并发时都有可能引发“蝴蝶效应”。
在春运期间,对于广大的贫苦老百姓而言,火车票的超高性价比和相应的方便性,使得每张票都成为稀缺资源和紧俏商品。而在12306系统开始售票那一瞬间,必然有成千上百万的人一拥而上。尽管从铁道部发布的数据来看,其最高的一天一共卖出了188万多张票,这个数据放在一天来看的话,确实不多。但是如果是在短短几分钟之内呢?那整个系统承受的压力自然不言而喻。
尽管此次铁道部采用的是分地区分时段售票,但所售票数跟抢购人数之间是没有关系的。同时因为在最早那一时段售票时就没有解决并发所带来的压力,使得已经开始发售第二时段的票时,仍有大量的人在不停地刷新,使得访问人数再次增加,系统压力亦随着增长。那么整个系统就必须使得在第一时段内卖出所有的票,而这个时间点可能就只有短短的几分钟(开始售票那几分钟,因为火车票是远远小于想要买票的人数的)。
除了整个系统需要满足高性能需求之外,还得同时具备高可扩展性(高可伸缩性)。因为从历年来的经验来看,铁道部的并发高峰通常是在节假日发生,如五一、十一长假等,春运则是最大的一个并发高峰。而目前的情况看来,12306在线购票系统虽然不能应对春运高峰,但在平时售票却还是没有问题。这就使得这个系统必须具备高可伸缩性,在并发高峰来临之前,能够通过简单的加机器或者与新浪、淘宝、腾讯等大型互联网公司合作来共同应对这些并发高峰。
在具备上述两个特点的同时,还得具备高可靠性。这么大的并发单靠一台机器是不可能实现,必须采用集群来分散压力。而在集群中,必须防备机器故障,单台机器故障之后不能影响其他机器的正常运转,并且还必须在短时而将故障修复。
除了上述三大必备性能之外,如果想拥有更好的用户体验,那么还得具备一些其他的特点。目前移动互联网正飞速向前发展,各种智能移动终端(如智能手机、平板电脑)层出不穷,作为一个方便可行的系统,那么还应该对这些移动终端提供支持。
另外,从现今角度除外,铁道部所售出的总票数是远远小于想要买票的人数的,供小于求,必然导致投机分子的存在,如“黄牛”,那么这个系统就还得作出一些措施来防范利用脚本、程序进行刷票的行为。刷票也是增加并发的一个因素之一,防止刷票也从另一个方面减少了并发,提高整个系统的可用性。