主题:谈谈大型网站架构的一些关键技术 -- 季侯
先给邓老大花上,再提点不同看法。
订票系统中登陆,火车线路查询cache的做法大家都有真知灼见。俺就不添足了。 就数据库的tranaction核心探讨一下。
新闻中说火车春运3亿人次。假设春运订票为两星期,那么系统在两星期卖3亿张票。假设系统每天工作12小时。那每秒钟卖票大概500张。是个大数目,但绝对不是前所未有的。
正如邓老大文中引述的。解决方案之一是数据分割,每天每车次做一个table。整个春运订票大概要几百个tables。 每个table有各自的物理存储的空间。把每秒钟500张分散在几百个table里。每个table每秒的transaction峰值也就10-20个。达到这个目标不难。
更直接解决方案是用full ACID in-memory DB。不用做数据分割。所有的春运火车座位都放在内存里,也不过1-200 GB的空间。in-memory DB 对付每秒钟500张票是小菜一碟。 RDBMS的鼻祖老大Stonebraker现在做的VoltDB号称每秒过万的transactions on commodity hardware.
付费是个异步处理,除了credit card authorization,完全可以离线处理。用户不用在线等待。
退一万步,从项目管理来说,铁道部也有大问题。系统上线,有没有作过performance and throughput 测试? 测试通过的标准是什么?
- 相关回复 上下关系8
🙂【原创】建设一个靠谱的火车票网上订购系统 55 邓侃 字10885 2012-01-17 23:01:53
🙂不赞同,我觉得你钻牛角尖了 6 neriak 字1996 2012-02-04 10:48:55
🙂意大利铁路网 莫里奇奥 字203 2012-01-31 13:11:02
🙂真的有这么难吗?
🙂这个没做好主要原因还应该是并发量高后死锁/锁定超时太多 1 江城如画里 字162 2012-01-19 22:35:47
🙂前帖没说得很清 5 itn 字459 2012-01-20 00:44:00
🙂Sharding有用没有用 2 江城如画里 字507 2012-01-20 06:43:01
🙂长事务用异步 itn 字204 2012-01-20 21:22:41