日期:2014-05-16  浏览次数:20554 次

从12306的余票查询谈数据库的承载问题


开始一直不明白,为什么12306的很多功能要分开,例如:12306的余票查询功能和购票功能是分开的,实际上用一般的思维去考虑,我直接点击购票就能告诉我还有多少张余票。还有票价查询,也可以集成到上述两个功能里去。

但是为什么还是把这些功能分开了?个人觉得是有原因的。我们知道购票实际上是读数据库的读写操作,而余票查询和票价查询实际上是对数据库的读操作。在这里我们可以明确知道读和写两者对数据库来说,代价是完全不同的。

那么面对如此大的压力,最好的办法无外乎提高单点数据库的性能和采用分布式系统。但是无论是单点数据库还是分布式系统,都无法承载整个中国的压力。那么很好的一个办法就是采用分布式性质的功能划分。

那么12306很有可能的做法,就是采用了分布式数据库,同时也不是每个单点都具有同样的读写功能,因为在如此集中的访问,要保证数据库的一致性非常困难。一个好的办法就是采用镜像,一个可读可写服务器,剩余的都是只读服务器,也就是说,把查询功能转移到只读的服务器来降低服务器的访问压力。这样相当大程度上把压力转移到了其他服务器。也就是MySQL里面的master和slave两种概念。

12306无疑是大数据分布式的一个集中问题体现者,要研究的问题还有很多。


本文来自IT部落格,转载请注明,http://www.itbuluoge.com,~致力于编程、算法、数据库技术的分享