12306买票那些事儿_12306购票全程解析

其他范文 时间:2020-02-28 05:45:39 收藏本文下载本文
【www.daodoc.com - 其他范文】

12306买票那些事儿由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“12306购票全程解析”。

让每一名学员高薪就业

www.daodoc.com

12306买票那些事儿

又到一年一度一票难求的季节了,那不得不登录一个网站叫做12306。好像这个网站一出来就广受诟病,一到节假日就得了“崩溃”病。要么提示系统繁忙,稍后再试;要么明明看着有票,抢的时候提示已售罄;连个验证码都要把眼看瞎。大家抱怨了,还能不能好好卖票?去看看人家天猫“11.11”怎么做到的?笔者也有同样的抱怨,又自认是好学宝宝,还真去研究了下阿里和12306,鉴于自己才疏学浅和有限的经验,文章不足之处还请大家一起讨论和指正。文章从以下几点来比较天猫和12306:

1.认识业务的特殊性

先让俺科普一下电商网站的技术。电商网站,按技术难度从易到难分为三种:最容易的是没有排队机制的定品系统,其次是有排队机制的定量系统,最难的是定件系统。那这些都是啥意思?

定品系统的意思是,你买东西下订单只是选定品种,并没有要求必须买某一件商品,比如,你下定单买台iphone,并不会指定买序列号是XXXXX的那台,商家发给你哪台就是哪台。这就省去了后台数据库的一系列复杂操作。天猫正是用的这种。

定量系统是在定品系统上多了个总量的限制,还另增了一个排队机制,比如民航的订票系统,要能先买先得,而且先订票再选座。

定件系统又是在定量系统上多了个具体指定。这就相当于,你在下订单买iphone的时候,指定要序列号是XXXXX的那台,商家必须发那台给你,否则你就拒收。12306也正是用的这个。

所以从这个来看,天猫使用的技术是做不了12306的。

也有好奇宝宝可能会有问题,说我不管你这些,我只知道天猫做的秒杀没崩,我可以去抢!但是,你抢到了么?小米手机火的时候,官网能登么?抢到了没?

表面上看,的确很相似,但是如果你的思考不在表面的话,你会发现这也有些不一样。火车票这个事,还有很多查询操作,查时间,查座位,查铺位,一个车次不行,又查另一个车次,其伴随着大量的查询操作,下单的时候需要对数据库操作。而秒杀,直接抢就好了。另外,关于秒杀,完全可以做成只接受前N个用户的请求(完全不操作后端的任何数据,仅仅只是对用户的下单操作log),这种业务,只要把各个服务器的时间精确同步了就可以了,无需在当时操作任何数据库。可以订单数够后,停止秒杀,然后批量写数据库。火车票这个岂止是秒杀那么简单,能不能买到票得当时告诉用户的。

2.并发访问量,去库存

铁路系统做12306的时候,估计并没有意识到他们是在解决世界性难题,做的是世界上最复杂的商务网站。铁路的票务业务很变态,其采用的是突然放票,而有的票又远远不够大家分,所以,大家才会有抢票这种有中国特色的业务的做法。于是当票放出来的时候,就会有几百万人甚至上千万人杀上去、查询、下单。几分钟内,一个网站能接受几千万上亿的并发访问量(最悲观的每人都用抢票软件),这个是很恐怖的事情,在高并发上12306并不比天猫双十一低。从2012年春运到2015年春运,12306网站从10亿的PV(Page views即综合浏览量:网站各网页被浏览的总次数。一个访客有可能创造十几个甚至更多的PAGEVIEWS)

让每一名学员高薪就业

www.daodoc.com

值增加到297亿PV值。

可能大家对数字没什么印象,那来我举个例子: 我以成都东到南京南的D2374次动车为例(这里只考虑成都东去南京南的方向,不考虑南京南到成都东的,那是另外一个车次,叫D2373),它有20个站(成都东是01号站,南京南是20号站),3种座位(商务、一等、二等)。表面看起来,这不就是3个商品吗?大部分轻易喷12306的技术人员就是在这里栽第一个跟头的。实际上,D2374有190*3=570种商品(570个SKU),怎么算来的?

请看:

如果卖成都东始发的,有19种卖法(因为后面有19个站),成都东到:遂宁、潼南、合川、重庆北、丰都、恩施„„、合肥南、南京南都是一个独立的商品,同理,遂宁上车的,有18种下车的可能,以此类推,单以上下车的站来计算,有190种票:19+18+17....+2+1=190。每种票都有3种座位,一共是570个商品。

那这就是它的复杂之处么?哈哈,太天真,来看,假如你要买张成都东到南京南的二等座(不要问我为啥拿二等座举例,因为我只买得起二等座),那成都东到南京南的库存要减一,接着成都东到遂宁,到潼南,到合川,到重庆北„„到合肥南这18个站台也要减一,再接着遂宁到潼南,到合川,到重庆北„„到南京南这17个站台也得减一,再接着潼南到合川,到重庆北„„„„„„16个站台,„„15个站台„14个站台„„„1个站台,那么去库存就是18+17+16+„„3+2+1=171个。

想象一下,几万人(一趟车的求票人数,如果每个人都用抢票软件,那么这个数是多大还真说不定)举着钱对你高喊:卖给我。你好不容易在钱堆里找到一只手,拿了他的钱,转身找171个同事,告诉他们卖出去一张,都减库存,而这171个同事也和你一样被几万人围着;也和你一样,每卖出一个商品要找几十个人减库存„„这就是12306动态库存的变态之处。比你平时买东西的任何网站的库存机制都复杂几十上百倍。

这就完了么?不,别忘了12306不是普通的电商,还有传统渠道的售票点,电话订票都与库存挂钩,还不能忘了火车除了运人,还要运货。然而,这只是全国众多火车班次中的一趟而已。所以12306是世界上最复杂的商务网站,没有之一。传统的分布式数据库、缓存、负载均衡技术并不能恰好满足12306的需求。

顺便提一下12306的验证码,验证码简单,那么抢票插件很容易暴力破解(即穷举法);太难,农民工连26个字母都认不齐,怎么填?搞动画验证码吧,也有人喷,视力不好的人怎么办?并没有一个很好的办法解决,即使现在模糊的图片验证,还是可以被绕过(有兴趣的自行百度OCR识别)。

3.投入成本

据报道称,12306的一期花费是3个亿,后续是2亿,总共5亿建站(这个不具体,笔者也只能根据多方报道),这些钱听起来很多,但是对于超大规模电商来说,这点钱根本不够看。百度一年的研发费用(不含硬件)是10亿,这个数字来自百度财报。网上能查到。2016天猫双11全球狂欢节总交易额1207亿,又拿这点钱来修高速公路的话可能平均不到5公里。

淘宝是什么技术水平呢,淘宝有至少4000技术人员,至少4万台服务器(这都是两年前的公开数据了),淘宝拥有各种自主研发团队:服务器、交换机(网上可以搜索到淘宝公开的绿色服务器开放标准);操作系统(LinuxKerneltaobao版)、Web服务器(Tengine)、Java语言虚拟机(JVMtaobao版)、数据库(MySQL内核taobao版,google和facebook也有自己的版本,HBase淘宝版、还有自己全部从头开发的OceanBase)、负载均衡器(LVS,让每一名学员高薪就业

www.daodoc.com

LVS始创人就在阿里)、Java运行容器(Jbo,其创始人之一,王文彬,也在阿里)。

淘宝还有数不清的开源项目和中间件,如高性能Java通信中间件HSF、分布式数据库中间件TDDL、异步消息系统notify等等。阿里云是当今中国第一世界数一数二的云计算服务商。

以淘宝这样的技术水平,恐怕也不能做到“11.11”时让每个用户都没有拥挤感吧!当然,无论从用户体感还是技术来说阿里确实是比12306强大很多,但是阿里现在的系统也是花了几十倍于12306的钱、时间和人才做起来的。

在网上批判12306的人,大部分还是形成了【国企=垄断+腐败+低效】的思维定势。小部分是真的轻视了它的难度。媒体人喷12306,是他们不懂技术,没有能力和耐心来分析背后的难度。技术人员喷,则是因为大部分的技术人员在短时间思考时,容易陷入过于乐观的误区,经典的例子就是估算工作量,程序员们往往容易估算出一个超短的工期,把写程序的工作乐观地想象成了打字员照稿敲键盘的工作。

4.结语

在写这篇文章之前,笔者很忐忑,因为既不是阿里工作人员也不是12306的开发者,只能从所能看到查到的数据求证分析,尽量客观的展示12306这个网站。很多内容也只能点到为止,一家之言,不足之处,多多包涵!

买票作文

“煎鸡蛋”为你分享21篇“买票作文”,经本站小编整理后发布,但愿对你的工作、学习、生活带来方便。篇1:如何“买票”? 作者:王安新外出旅行,如果乘飞机或者火车,需要提前买票。你会......

买票奇遇作文

刀豆文库小编为你整合推荐10篇买票奇遇作文,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......

买票_小学作文

刀豆文库小编为你整合推荐7篇买票_小学作文,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......

买票_小学作文

买票_小学作文在平平淡淡的学习、工作、生活中,大家总免不了要接触或使用作文吧,作文是人们把记忆中所存储的有关知识、经验和思想用书面形式表达出来的记叙方式。相信写作文......

买票小记散文

刀豆文库小编为你整合推荐6篇买票小记散文,也许这些就是您需要的文章,但愿刀豆文库能带给您一些学习、工作上的帮助。......

下载12306买票那些事儿word格式文档
下载12306买票那些事儿.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文