最近在微博上对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的登录流程是一项常见的任务,尤其对于开发移动应用的工程师来说,理解这一过程至关重要。12306是中国铁路客户服务中心的官方在线购票平台,其移动客户端的登录功能涉及到一系列的技术和...
12306是中国铁路客户服务中心的官方网站,其抢票逻辑是基于复杂的系统设计和算法实现的。在深入了解12306抢票逻辑与代码实现之前,我们需要明白几个核心概念:实名制购票、余票查询、定时刷新、订单提交和验证码机制...
### 12306网站性能优化核心要点 #### 一、业务特性分析 12306作为中国铁路官方网站,承担着数亿乘客的票务服务。与一般电子商务平台不同,12306面临更为复杂的业务挑战: - **中心化数据管理**:与网络游戏和即时...
在本项目中,"Java实现12306查票"是一个使用JavaFX技术构建的桌面应用程序,其主要目标是方便用户查询12306官网上的火车票余量信息。下面将详细介绍该项目的关键知识点: 1. **Java**: 作为编程语言基础,Java是一...
购票功能 功能尚不完善 望请谅解 后期会不定时更新
在本项目中,"python实现12306抢票-2019.1.8"是一个利用Python编程语言开发的程序,旨在帮助用户自动抢购12306官网上的火车票,尤其适用于春节等高峰期。由于该程序是在2019年1月8日时仍然有效的,我们可以推测其...
虽然12306官方并未公开提供正式的开发者API,但有一些开发者通过分析网页结构和请求方式,模拟浏览器行为,实现了与12306网站的数据交互。在C#中,我们可以使用`HttpClient`类来发送HTTP请求,模拟登录并获取网页...
Python实现的12306抢票程序是一个利用编程技术自动化执行购票操作的示例,主要涉及以下几个核心知识点: 1. **网络爬虫**:抢票程序首先需要获取12306网站上的火车票信息,这涉及到网络爬虫技术。Python中的...
此外,如果需要实现可撤销操作,可以添加一个“撤销”命令,记录并管理历史命令,从而实现对购票操作的撤销。 在实际的12306系统中,可能还会涉及到多线程、并发控制、事务处理、异常处理等复杂问题,但命令模式为...
12306爬虫实现 目前仅能查询余票信息,其余待完善~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3. **实时数据抓取**:为了及时获取票务信息,源码需要实现对12306网站数据的实时抓取。这涉及网络爬虫技术,利用Python的requests库进行网页请求,然后通过解析库提取所需数据。 4. **火车票查询**:源码中会有...
【标题】"Java—Demo仿12306窗口实现购买火车票<MySQL>"是一个实践项目,旨在模拟中国铁路12306网站的购票流程,使用Java编程语言和MySQL数据库来完成。这个项目可以帮助学习者理解如何将前端用户界面与后端数据库...
标题中的“12306Bypass.zip”表明这是一个与12306网站相关的程序或工具,可能是为了绕过某些限制或者优化购票体验而设计的。12306是中国铁路客户服务中心的官方网站,主要用于火车票的查询、预订和购买。在节假日或...
在My12306系统中,Servlet可能被用来处理用户登录验证、查询车票、购票等操作,与JSP协同工作,实现前后端的交互。 HTML5是现代网页的标准,其强大的新特性如离线存储、多媒体支持和表单控件改进,为My12306系统...
本文提供了一个实用的解决方法,可以帮助我们解决谷歌 Chrome 浏览器无法访问 12306 网站购买火车票的问题,同时也提供了一些有用的知识点,例如 Chrome 浏览器的安全机制和使用方法等。 知识点: 1. 谷歌 Chrome ...
然而,值得注意的是,虽然抢票助手可以提供便利,但过度依赖这类工具可能导致系统负载增加,对其他用户造成不便,甚至可能违反12306的相关使用规定。因此,在使用抢票助手时,用户需关注12306的政策更新,并合理设置...
《rain12306-java swing实现12306客户端》是一款基于Java Swing技术开发的12306火车票预订系统,它无需依赖任何服务端组件,完全由客户端程序独立完成用户登录、余票查询及个人订单管理等功能。这款软件展示了Java ...