12306 技术难点大探讨

前言

时间回退到2010年的12306官网,大家还记得多少,又卡又慢时常崩溃,服务器经常宕机的12306,和今天稳定运行的12306,就纯技术角度而言,抛出一些问题,一起分享讨论背后的技术变革

问题点1 【动态库存】

小编想买一张春节,“深圳–武汉”的高铁票,中途经过8个站点,中途售罄如何保证这趟车次的车票,在多站点库存数据的实时同步,12306app与车站售票系统的数据一致性问题,多站点下数据行锁开销、大事务处理
12306 技术难点大探讨

问题点2【灰色流量】

春运、节假日应对超高并发和超高流量冲击,智行火车票等一些抢票软件,抢占资源带宽,服务器如何响应并处理

解决思路

1.技术角度,2010年上线服务器经常宕机,2012年进行了重构(解决了大流量请求查询,读多写少),由redis 切换至 pivotal gemfire 分布式系统的CAP,服务器改为云计算弹性扩容(分钟级),爬虫与反爬虫
2.产品角度,分时段售票(分散流量冲击),后补车票(异步处理,队列消费),验证码拦截(放弃部分用户体验)

参考资料

CAP的问题 tanzu.vmware.com/content/blog/acid...
Pivotal Gemfire blog.verysu.com/sharearticle/1444

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6
自由与温暖是遥不可及的梦想

评论 不会找不到路

我之前好像 在哪里看到过这个问题

3年前 评论
PHPer技术栈 (楼主) 3年前
自由与温暖是遥不可及的梦想 (作者) 3年前

mack 还有后续嘛

3年前 评论

第一个问题,动态库存,目前12306是做了一些改进的,比如说按照车厢进行分拆,这样,买同一个位置的,就可以去秒杀这个车厢的,实现的难度比最开始的方式要简单了很多。 第二个问题,我觉得安全可以搞一份各种云的IP库,然后对这些IP全部进行降级。这个没有什么参考,全是我瞎蒙。

3年前 评论
pndx

Mark,等待大佬的回答

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!