主题:【讨论】回应对12306.cn网站的技术质疑 -- 忘情
因为这个网站的业务的原因,所有的操作都是对那么很少量的数据的大量处理从而导致的问题。无论用云计算还是增加更多的服务器,如果不解决这个核心问题,都是白搭。解决数据处理过于集中,我能想到最简单的办法是两条措施,大家看看有没有什么启发:
1、分散数据。
把票务数据按照不同车次、不同时间,分散到不同的表、数据库或服务器中。比如,可以按照某种规则,一张表里只保存几个(比如,5个,具体数值就需要统计以往记录进行分析)车次的几天(比如,2天,那么,预售期10天,就会分散到5个表里。当然,具体几天,还是需要分析以往数据的)的车票数据。这样的话,在数据操作时,影响到的范围将大幅度减小,这将大幅度提高并发度。
2、二级数据管理
可以把数据分布在2个级别上管理,一个级别记录完整数据,在第二级上按某种机制记录部分数据,第二级可以由很多个服务器组成,也就是,1:n的情况。而Web服务器只访问二级数据库,并不访问一级数据库,二级数据库访问一级数据库。
比如,某次车的某天的数据,这个车次的所有票务情况完整保存在第一级数据库中,每个二级数据库需要从一级数据库申请自己可以分销的票的数量,二级数据库的票销售完毕之后,把销售结果同步到一级数据库,并再次申请自己分销的票的数量。这样的话,一级数据库的访问次数将大幅度减少,而同时也保证了数据的一致性,不会出现把票卖超了的情况。
- 相关回复 上下关系8
🙂我一直有个疑问,这些系统没法做压力测试么 2 muilho 字463 2012-09-24 14:46:11
🙂大型系统设计要从用户体验逆推。 4 三力思 字1403 2012-09-24 14:09:54
🙂还是觉的njyd的方法最简单 2 加糖的白开水 字188 2012-09-24 12:44:19
🙂核心的瓶颈是数据处理过于集中
🙂一语中的,我有同样的想法。 喜欢辣椒 字182 2012-10-27 12:49:51
🙂还是这样比较靠谱,应该分到各个大的铁路局服务器上。 木头人 字0 2012-09-30 09:45:33
🙂分到各个铁路局的服务器上只会使事情更糟糕 一路向前 字176 2012-09-30 12:17:03
🙂分散是指大分散小集中, njyd 字382 2012-09-30 16:10:14