最近在微博上对12306亿元招标的议论很多,技术类帐号很多都认为用那么多钱做出如此访问速度和操作效果的站点实在不应该。很多人提出了各种各样的解决方案,而这些方案大多来自互联网电商的实现架构,例如淘宝应对双11或京东商城与苏宁价格战中对海量访问支持方案等。但是似乎大家忽略了一个问题,铁道部的互联网订票系统是在已有车票票务系统基础上发展起来的。从铁道部的新闻稿中可以看出,目前的车票票务订票系统已经开发了尽10年时间。在系统开发的大部分时间里,都是以满足各车站订票窗口和分布在大中城市里的订票点使用作为目标。这样一套系统的访问终端数量可控,访问终端的刷新频率可控。如果这套终端系统是C/S结构,客户端只需要从票务数据库服务器中获取少量数据就可以进行大部分查询操作,然后在最终订票时对数据锁定做写操作就可以。这套系统的成功应用使我们可以在全国任何一个售票窗口买到任何车次任何城市出发的车票,然而也正是这套系统的存在使得12306在实现互联网订票上变得举步维艰。
首先12306的功能实现一定不能影响到现有车票票务系统的使用,如果12306与现有票务系统的数据分离存储,这两部分数据之间的同步,实时大并发下两部分数据写操作锁的实现都会成为难点。所以不妨大胆猜测一下,12306系统订票写操作与现有票务系统订票写操作访问的是同一中央数据库,而为了保证现有票务系统对数据库访问速度,来自12306系统的链接数是有最大值限制的,而且此最大值是远远低于安全阀值的。如此一来如果中央数据库的处理能力得不到提升,12306在WEB端做的任何努力都是无意义的。
如果以上前提成立,那么为了中央数据库的安全考虑,12306的主服务器应该就在铁通的网络里,国内网络运营商之间的互连互通做的如何,大家都是有目共睹的。所以网络原因也会大致很多用户在访问12306时反应缓慢。
这种状况下最简单的处理方式可能就是下血本去更换高处理能力的数据库服务器,提高数据库存储和操作的计算能力,以满足海量高并发访问请求。但是这样投入的资金可能会是天文数字但是却收效甚微。而另外的做法就是从数据库的结构上做调整,满足海量并发请求操作,但是如此底层修改可能会牵扯到现有票务系统的修改,12306与现有票务系统是否为同一家企业开发实现不得而知,对现在已经正常运行并且已经通过某某验收奖励的系统做出重大更改,可能也是铁道部所不愿意的。
所以如果一定要下一个结论的话,那就是12306这个海量事务高速处理系统并不如大部分人设想的那样很容易就可以实现。即使铁道部真的如大家希望的那样公开招标,引入其他有经验的开发企业,当这些企业进驻时会发现,有些并不仅仅是技术实现的问题。
分享到:
相关推荐
抢票软件的12306java实现,抢票软件的12306java实现,抢票软件的12306java实现,抢票软件的12306java实现,抢票软件的12306java实现,抢票软件的12306java实现,
12306 android实现登录流程
新12306网站实现自动抢票功能.docx
使用机器学习算法完成对12306验证码的自动识别使用机器学习算法完成对12306验证码的自动识别使用机器学习算法完成对12306验证码的自动识别使用机器学习算法完成对12306验证码的自动识别使用机器学习算法完成对12306...
12306抢票逻辑与代码实现
购票功能 功能尚不完善 望请谅解 后期会不定时更新
rain12306-java swing实现12306客户端 无任何服务端依赖.zip。实现用户登录,余票查询,个人订单
查询12306网站剩余火车票的数量。通过JavaFX实现,具有记忆功能。这几天写的项目和大家分享。(需要配置Java环境)
12306爬虫实现 目前仅能查询余票信息,其余待完善~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Java—Demo仿12306窗口实现购买火车票<MySQL>
Summarize the core points which needs consider if you want to design high concurrent websites.
Python3.x实现的12306自动抢票程序
使用Python中的requests库实现12306网站的自动化抢票下单
c++命令模式实现12306购票系统 详见博客:http://blog.csdn.net/caoshangpa/article/details/52912355
python实现的12306抢票程序,内含讲义、资料、代码等,代码注释比较全,有需要可自行阅读。
Excel2007 VBA使用WebBrowser控件登录12306网站,推荐IE8,IE9也可以登录,但后继不能查询车票,是脑残的12306的问题。 程序涉及计时器、表单提交、页面加载完成判定、页面文字判断等多个方面。 代码来自网上若干人...
12306 抢票助手 - Java版
有完整的JavaSwing实现的界面,目前能够实现登录和查票以及获取联系人功能,通过手动获取RAIL_DEVICEID和RAIL_EXPIRATION两个参数解决登录时提示重定向到https://www.12306.cn/mormhweb/logFiles/error.html...
云计算和12306网站.pdf云计算和12306网站.pdf
基于12306的本地识别模型下载