首先有几个问题先说一下:
1 今年春节期间铁路客流量据说有31亿
2 目前12306 pv是14亿,而高峰期就在8点到10点,那么也就是有可能在这两个小时里有5亿访问量,而每秒的并发量估计在最高峰时能达到几千万
3 目前Ngix能处理在线1万,但是实际值一般是8000左右
4 一台IBM大型机要几千万美元,估计加上DB2,交易中间件,得小1亿了
5 腾讯,淘宝等拥有总在线人数4亿规模或者事务处理达到亿级别的规模耗时七八年,总投资估计上百亿 (腾讯资料:1亿在线背后的技术挑战)
6 绝对不能两个人订到同一张票,而看到有票,而点击了下订单又说没票了这种失误是可以容忍的。
假设一个车次能坐1000人,有10万个人想订这车次的这个时间的票,那么意味着这10万人要被分别负载到10台机器上,这10台机器要共同去维护这1000张票的余量。简单的分库分表大家都会,但是可能是有成千上万台机器来处理这些用户,而且这些用户还可以订全国的火车票。
我想到了一些机制来处理,或者说先简化再处理问题:
总原则:不需要所有的人
1 职责分离,将登录,订票(查询,填表,下定单),支付,查订单,查车票等都分成不同的服务,采用不同的集群去处理。
2 登录系统,只要有足够的服务器,大家都可以登录进来,这个十分简单
3 订票,总原则是 让能够进入订票流程的人,快速无障碍的进入系统,设定15分钟为一个阀值,15分钟内成功下订单,则将其踢出订票系统,用户可以拿着订单号通过电话或者登录支付系统进行支付(Apple的网上商店即这样),超过15分钟没搞定的也被踢出,提示操作超时。点击订票之后,进入前置分析机,分析机负责计算背后的机器能负载多少用户下订单。比如目前有1百万人同时点击了订票,而背后只能负载10万人,那么出现一个随机摇号程序,摇出10万人,其他人返回 “系统繁忙,稍后重试”的提示。这10万人被负载在10台机器上,可以进行查询,当点击指定车票(标记为ClickSelectedTicket)后,根据车票被分散到不同的机器上(其实是MapReduce的思想)。比如有1万人被定位到要订票T1,系统扔出900张T1票,留100张容错(随着系统逐步稳定,可减少容错票数),然后大家抢锁,采用乐观离线锁。在最终提交订单时检测
4 可以采用地铁高峰限流的方式(其实Apple购买iphone时也类似),就是增加到达ClickSelectedTicket之后的页面的路径,可以多绕几圈,最终减少并发可能性。
5 采用token机制保障页面必须从第一步点击订票开始进入,不可以绕过中间步骤。以免刷票机器人对系统造成冲击(当然还要做IP限定)
6 将票分到几台服务器上,将购买到该车次该时间车票则将身份证+车次+座位+时间作为key,这样验证是否此人已经订过该票一步搞定,然后异步统计余票。某台机器的票没有了,这台机器就被移除(类似于负载均衡原理,票没了就相当于机器挂了,目前常用的技术是心跳,还是异步统计)
还需考虑的问题是:一个座位分段卖出问题。各个铁路局分布式提供车票的问题。
http://www.linuxso.com/architecture/17006.html
分享到:
相关推荐
整篇文章论述的就是“海量事务高速处理”的经验和误区。第一部分论述“海量事务高速处理”现阶段没有通用解决方案,尝试通用解决方案就是误区。第二部分讲解算法问题、安全问题经验,以及一些误区。第三部分讲解电
12306数据库系统设计报告全文共10页,当前为第1页。12306数据库系统设计报告全文共10页,当前为第1页。 12306数据库系统设计报告全文共10页,当前为第1页。 12306数据库系统设计报告全文共10页,当前为第1页。 ...
要不是缺分 我真舍不得拿出来12306_火车票订票系统项目
实现12306火车订票系统的验证码处理操作
12306互联网售票系统的架构优化及演进.ppt
12306用户管理系统,Java
网上找的一个12306火车票查询和抢票的系统,基本的框架不错,但是有很多问题,需要再慢慢调试,可以作为简单的一个参考!
基于python的12306网站抢票与GUI展示系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于python的12306网站抢票与GUI展示系统+源码,适合毕业设计、...
12306网站自动订票系统,自动执行,快速抢订,可大大提高您订上票的概率。
12306余票查询系统C# 网上转载的,不是自己原创,仅供学习参考,希望对你开发火车票相关程序起到借鉴的作用。
仿12306 开发的汽车售票系统,一些小的细节没有完成,自己补充,里面注释详细,包含数据库,后台,你值得拥有!
12306 系统自动登录工具,免去你手动输入验证码的麻烦了
登陆注册,模拟购票,修改密码手机号,手机号码验证,支付宝沙箱支付测试,密码MD5加密,个人信息的增删该查,订单的增删该查
"秒杀12306火车票"Android应用是一款直接和12306网上订票系统进行实时同步的抢票助手,它的一切数据都是通过和12306服务器交互实时获取,然后以简洁的形式显示给用户。 该软件当前实现了自动登录,余票查询,预订...
my12306实训项目练习
运用jsp、servlet、html5、css、json、ajax、jquery等技术,但只完善了部分功能
本系统是用于余票查询的 ,主要是用C#写的系统,可用于学习
第一时间面对客户的海量请求,我们将负责将这些请求合理的分配到前端服务器上,并要保证和后端系统的稳定通信。 并没有复杂的算法,但他也不只是HTML+JS+CSS,它需要负载均衡、MVC、缓存、静态页生成、内容分发、...
TicketsHelper2 已经测试过了,可以正常使用 使用前必须安装12306官方根证书。为方便大家打包软件中已有证书点击安装即可(srca.cer)