主题:【原创】好吧,给一个铁道部订票系统的正确答案 -- 布老虎
现在估算一下系统的响应速度。
1.假设每天发布3000次列车,分布到300个服务器,每个服务器负责10个车次,假设每个车次1000个座位,那就是每台服务器负责10000个座位,也就是10000次写操作。
2.假设所有的写操作同时涌入到新发布的一列车(订票)。
3.假设MySql可以执行1000次写操作/秒,那么10秒以后,应用端收到数据库的“座位已满”信号,剩下在queue里的所有请求以及后续到来的请求都被直接bypass到“错误信息”queue,发短信/email通知,不再连接数据库。
4. 15秒之后(假设总共5秒钟的memcache update 时间),web开始显示座位订满的html,不再有后续的订座请求。
按以上分析,最坏情况20秒到半分钟就可以知道订票情况了。
当然这是最简单的情况。一般应该提供选项比如说卧铺优先,如果没有卧铺才选择硬座之类。这个可以用stored procedure来解决,也可以简单地在应用端解决。
有同学不禁要问,怎么知道座位呢?我觉得最好还是不要同时订购座位和车次,不然的话车次/座位的组合可以搞死很多正常请求。
那就用航空公司的方法吧,开车前5天,上网挑座位就行了。
P.S.
草,忘了还有扣钱这步了,加1分钟吧,那就是最后一哥们大约2分钟可以拿到订票确认,算上email时间。
P.P.S
草,多算了一个零。最后更正:2分钟。
本帖一共被 1 帖 引用 (帖内工具实现)
- 相关回复 上下关系8
🙂Fund Checking 镐梓 字70 2012-10-01 21:52:15
🙂估算一下系统的订票响应速度
🙂"事先在铁道部的系统里存钱", 这个存钱的系统大概会死的 3 西电鲁丁 字90 2012-09-30 17:22:10
🙂这个很简单 布老虎 字167 2012-09-30 21:13:47
🙂再给点利息 PBS 字0 2012-09-30 22:10:39
🙂提前充值大部分人做不到 3 cyn 字183 2012-09-30 21:52:39