还有一个月就是春节了,而买一张车票回家团圆,是咱们中国的最大的心愿,因此12306也迎来购票高峰。 铁路部门预计,2020年1月22日(腊月二十八)、1月23日(腊月二十九)为出行高峰期,火车票购票日的12月24日和25日也将迎来抢票最高峰。根据今年来春运人数胡统计情况来看,2020年春运出行的人数估计在30亿左右。

年份

铁路

公路

水路

航空

 

2011

2.3亿

26.4亿

3260

4000万估

30亿

2012

2.35亿

28.47

3488万

4245.1万

31亿

2013

2.40亿

31亿

3810万

4250万

34亿

2014

2.66亿

32.8亿

4200万估

4344.8万

36亿

2015

2.95亿

24.22亿

4914万

4284万

28.09亿

2016

3.25亿

24.95亿

5140万

4260万

29.1亿

2017

3.57亿

25.21亿

5854.8万

4397.6

29.81亿

虽然收自驾拼车等新兴方式影响,春运总人数在呈下降趋势,不过乘坐铁路的人数却还是稳步上升,今年乘坐铁路回家探亲的人数估计会在4亿左右。

不过12月23日的第一给抢票高峰,12306又崩溃了,在查询回家车票的时候总是出现车次加载失败。

12306太难了

虽然12306与阿里云合作以后已经很少再见到崩溃现象了,具体这段历史笔者在《神龙飞天,国士王坚》中已经介绍过了这里不再赘述,谈到高并发问题,我们总是想到在“鹿晗公布恋情”的时候系统没抗住,微博在经过架构改进后表示今后可以同时支持 8 位明星并发出轨,然而在“赵丽颖、冯绍峰官宣结婚”事件上,还是没撑住。一般来说,典型的秒杀系统都会使用分布式的技术给每个服务节点分配一定的本地库存,再通过消息队列及缓存等技术对全局库存进行减少,具体见下图。

不过12306和一般的商城、社交类的秒杀系统有很大不同,还要解决分布式、缓存、负载均衡问题。主要有以下两个效应影响最大:

1. 分布式架构不完全适合火车票: 2015 年春运售票量就已经超过600万,达到 636 万 / 天,而在2019年的1月4日日页面PV量达 1310.6 亿次,全天发售车票 1282 万张。虽然这个量与双十一的动辙十亿的天量相比不算什么,但是由于火车票与普通商品不同,他是分站发售的,举个例子北京到广州有24站,当我买下这一张全程票时,需要将将区间所有的票全部下架,共计24!=300。所以12306很难将库存分给每个server本地库存,据笔者所知只能是将全程票分一部分给本地,其实的区间票还是要中心化,而如何把区间化的车票也进行合理分布本身是个问题,而且受区间售票的杠杆效应影响,1200多万的日发售量,实际对应的普通商品销量的10倍甚至更多。

2.查询/下单数比过高:目前12306的查询交易占比超过90%,虽然阿里未公布相关数据,不过从笔者实际经验看,“双十一”笔者不再会再浏览商品或者比价了,只是直接参与活动罢了,所以查询交易量应该不会达到90%的占比。而频繁的查询请求也会增加12306的压力。

12306如何应对

正如上文所述,12306做到不崩溃的难度真的很大,而且笔者也没有这种大型秒杀系统的项目经验,这里抖胆提出以下建议:

将订票方式变为预定订票:我们知道秒杀的场景的设计,其初衷是电商为了提升用户参与度,增加用户投入的一种营销手段。而12306似乎没必要使用这种方式来进行销售,比如某些重点路线给予5分钟的预定窗口,再汇总各服务节点记录用户订单,按照先到先得的方式集中处理,将实时订单处理变为批量订单处理,这种方式在笔者一直工作的银行当中是屡试不爽的缓释系统压力的有效方式。

给程序员们的推荐购票方案

咱们程序员群体真的没必要再使用什么12306网站进行订票了,笔者在这里也推荐一下之前的一篇博客《Github上的开源工具帮助你实现“十一”回家的愿望》提到的购票工具(https://github.com/testerSunshine/12306),它完全可以满足这个目标。当然由于此类工具全部依赖于tensorflow进行验证码的自动输入,所以为了快人一步还是有个比较快的显卡更为妥当。因为这个软件完全是基于人工模拟点击的方式风险不大,只要不进行大规模使用应该没什么问题。

不过笔者也发现在Github上还有一些软件做了多线程、集群化抢票的功能,因为这种使用方式很可能会触及《数据安全管理办法》中所规定“不得通过恶意爬虫危及网络安全”的规定,所以这里并不推荐大家使用集群化秒杀的软件进行火车票的抢购。

12306又崩溃,买张车票怎么就这么难相关推荐

  1. 12306 又崩溃,买张车票怎么就这么难

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 作者 | beyondma blog.csdn.net/BEYONDMA/article/details/103689222 还有一个月就是 ...

  2. “一张车票,万般无奈”上网购票频频崩溃!12306再次排队等待中...还是技术惹的祸....

    12306 排队:线上订票万般无奈 "一张车票,万般无奈",这是如今许多订票人的悲叹.例如,国庆长假抢票大战,铁道部的12306订票网站又被推上了舆论的风口浪尖.为了缓解网站高峰压 ...

  3. 12306 Bug:一张身份证,竟买了同一趟车的两张票

    (点击上方公号,快速关注我们) 转自:现代快报 两张订单 薛先生提供 10月2日,南京市民薛先生通过某App,给家里两个长辈购买了两张从成都到商丘的火车票.过了两天他才发现,妻子也帮着买了一份,并且是 ...

  4. 茶卡盐湖重新开放,你和天空之境就差一张车票

    想象一下 海天交接,连成一片 一时恍惚之间,分不清楚界限 还以为身在梦境 世界上真的有这样的地方吗? 有! 不仅有,还就在国内! 不仅在国内,还能当天就到! 图虫丨冷香远 爱旅行的宝宝们 一定都知道 ...

  5. OSChina 周日乱弹 —— 恨不得给你买张飞机挂票

    2019独角兽企业重金招聘Python工程师标准>>> Osc乱弹歌单(2018)请戳(这里) [今日歌曲] @开源中国首席灵魂师:分享张希/曹方的单曲<认真地老去> 来 ...

  6. 12306 Bug:同一张身份证,买了同一车次的两张票

    (点击上方公号,快速关注我们) 原创整理:程序员的那些事(id:iProgrammer) 现代快报报道了今年国庆期间 12306 系统又出现一起「同一个身份证,买了同一趟车的两张票」的 Bug. 10 ...

  7. 【...】12306官网购买指定铺位的车票

    写在最前: 如果你想买的铺位没票,系统会默认分配至其他铺位.. 转至百度经验. 1.下载并安装360极速浏览器(其实很多浏览器都可以的,我用的这款而已),登录12306网站. 2.登录你的12306官 ...

  8. 天下无贼是假的,天下无票倒是真的;如来神掌是假功夫,能买到车票才是真功夫。

    从上周开始一直到昨天,一直都在为买回家火车票的事儿奔波,闹心坏了. 心情一直都不是很好,身体也不是很舒服. 昨天总算高价买到一张,不过是硬座,坐回去又要累个半死了 ! 郁闷! 不过想一想还有那么多人没 ...

  9. 致:视频监控、车载导航的用户,听说你想买张流量卡?

    视频监控.车载导航少不了使用流量,很多朋友购买的方法也大多是在头条.抖音.快手中购买,现在这些APP里面的流量卡广告太多的,而且各种花式宣传,其实,你真的了解这些流量卡吗? 经过小编几天的研究,这些A ...

最新文章

  1. 麦肯锡报告:传统车企正面临出行的数字化颠覆
  2. wchar_t * 与 char * 互相转换小记
  3. SharePoint 2007有性能问题? 先试试这篇.
  4. 怎么把代码放图片里面进行注入_揭秘代码分层后的新世界
  5. mysql连接池cp_BeeCP
  6. String转为byte[] ,byte[]转为String,byte[]与String的相互转换
  7. 广义平稳随机过程定义_广义平稳随机过程介绍.ppt
  8. 四川大学计算机专业调剂,2019四川大学计算机学院考研调剂信息(第二批)
  9. 用c语言求定积分实验报告,C语言用六种方法求定积分.doc
  10. 静心的全部秘密:你是观照者
  11. 面试:MRO问题 (理解笔记)
  12. 微信小程序订阅消息wx.requestSubscribeMessage使用要点和requestSubscribeMessage:can only be invoked by userTAPgestur
  13. ubuntu16.04+Titan Xp的驱动官网上找不到
  14. (BT)工作笔记(1)
  15. 多系统折腾记录(老电脑MBR分区)
  16. visdom image显示图像(四)
  17. 虚拟机安装pycharm
  18. 我的世界java下载慢怎么办_MC国际版的下载教程
  19. JS逆向-常见反调试之“无限Debugger”,怎么解决?
  20. JAVA如何添加日志文件

热门文章

  1. mysql远程3306不通_mysql服务器3306端口不能远程连接的解决
  2. python进程间通信时间开销_python 进程间的通信
  3. 清华大学python_清的解释|清的意思|汉典“清”字的基本解释
  4. 成为认知高手,要避免这9个认知思维陷阱!
  5. Python开发培训怎么样?
  6. 第一回 网管是个苦差事
  7. 台式计算机有不有蓝牙,台式机没有蓝牙怎么办
  8. 基于Java毕业设计智友少儿编程学习平台源码+系统+mysql+lw文档+部署软件
  9. 苹果开发者账号购买流程
  10. Minecraft 从安装到入门