日期:2014-05-20  浏览次数:20709 次

【转】程序员不满订票难 自建12306开源项目组
国庆前,12306 再次站到风口浪尖上,因为系统崩溃而买不到火车票的人们纷纷在网上吐槽。当程序员也订不到火车票,后果就不止吐槽那么简单。

  27 日下午 3:02,网友@caoz 发表了一条微博(见下图),很快该微博就被转发了上万次:

 +加关注 caoz:花了3个亿,不知道什么叫SQL注入,花了3个亿,不知道数据库查询优化!花了3个亿,连SQL还都是应届生水准的(还不是优秀应届生水准的),尼玛还说没有黑幕!http://t.cn/zl49bFp 

caoz:#12306# 尼玛被注入,被爆库,也就算了,看看SQL 语句 ,like '%...%' 这就是所谓技术专家的牛B的负载系统?! 这么2的代码在我们这里都是无法容忍的!这就是12306效率底下,卡死的真相!所谓专家,你们就辩解吧。 真jb烂到家了。 

 
2012-09-27 15:02 转发(12708) | 评论(2303) 
2012-09-27 15:06 来自360安全浏览器 转发(509) | 收藏 | 评论(144)   随后,各种专业吐槽和评论,让人们从专业角度了解到 12306 在技术层面上还有很多需要改进的地方。然而,程序员的脚步不止于此。同一天晚上 10 :34,网友@大学001 发了这么一条微博:

  为了程序猿可以顺利在 12306 预订到火车票,我建议成立 12306NG 开源项目组。有兴趣参加的请转起来!我负责筹资并以一个程序猿老兵名义奉献不止…

  28 日凌晨 1:38,12306NG.org 注册成功,并接受报名。@大学001 表示:“这将是项目组自己的网站,完全公益!我们将通过此网站发布项目所有成果,包括源代码、技术方案、各类文档等。此网站也是我们项目组讨论、协作、分享的地方。”下午 5:07,12306NG 开源项目组官方微博发了第一条微博,表示项目组开始筹备。

  今天,@12306NG开源项目组 发表微博,公布项目进度。现在,项目已吸纳 10 多名程序员,涵盖数据库、大并发、高性能、分布式架构等多领域。而项目范围日益清晰,技术框架渐现眉目。

  @大学001 在新浪微博上的认证身份为京东商城副总裁李大学,但他声明:此事与京东无关,纯属个人行为。

  现在,12306NG 开源项目组论坛上《【需求分析】12306NG 的需求总汇》一帖已有44 楼,用户活跃地讨论交流对于 12306 的设想。

  李大学认为,在中国,社区力量能够挑战商业组织,中国经济已经从资源争夺转向技术驱动,属于程序员的时代来了。他希望程序员们能做到:不抱怨,去改变,从我做起。

  NG 是 Next Generation 的意思。《建设一个靠谱的火车票网上订购系统》一文写道:“如果我们能够设计建造一套,稳定而高效的铁路订票系统,不仅解决了中国老百姓的实际问题,而且在全球高科技业界,也是一大亮点,而且是贴着中国标签的前沿科技的亮点。”现实也许是,最后铁道部并没采纳项目组的方案,但我们可以看到,正是由于网络的开放性,才能聚集民间智慧,推动社会进步。至少,参与其中的程序员能将受益于彼此的想法,而铁道部技术人员也能从中借鉴。最终受益的是老百姓。

  “中国程序猿们站起来,火车上的民工们才能坐下去!”

  ——@大学001

  我想,很快,这一条将位于“找程序员当男朋友的十大好处”这一类排行榜榜首。



------解决方案--------------------
接分。。。
------解决方案--------------------
全然看不懂。
语句不通,整句重复,难道是传说中的SEO黑帽?
难怪被“转发了上万次”……
------解决方案--------------------
看了那站上面的一些文章,基本上都是从其他站搬过去的,典型的有 CTO 上的,比如这篇:

1、《铁道部新客票系统设计(一)》:http://developer.51cto.com/art/201209/357334.htm
2、《铁道部新客票系统设计(二)》:http://developer.51cto.com/art/201209/357337.htm
3、《铁道部新客票系统设计(三)》:http://developer.51cto.com/art/201209/357552.htm

第二篇中该文的作者提到每秒一两千个请求相同日期、相同车次、相同座席的车票!并发量的并不是以秒为单位计算的!不过这个太夸大了,如果真有这个数,那 12306.cn 的 PV 值将会把 Google 的 PV 远远地甩在后面!而 12306.cn 要用的服务器可不止是 Google 的上百万台了!

对于一个春节高峰时候每天的 PV 达到 15 亿的数据和事务密集的网站来说,这系统架构不可能用三篇文章,而且仅仅是什么数据库方面的东西就能搞定的!

该文竟然还能容忍丢失几分钟的数据!

有人拿 12306 和淘宝网比,但这是有本质区别的,淘宝网的商品是分布在 600 多万个卖家(专职)的商品上,而 12306 的商品全国就那么一个,大家一起抢吧!

12306 只是一个网站端的,据我所知其后台的客票系统目前能支持着每天发售 700 多万张的车票,能支持 6000 多个并发的买票请求,当然了,之前是客票预发售系统都是 C/S 结构的,如果开放了个 12306 的口,则需要在 12306 这块补好。

要做好这么一个网站,加上后端客票预发售系统的升级,3 个多亿是绝对不够的,当然了,何况做这个网站的基本上也没用到 3 亿!

另外,个人不看好这个民间组织,原因如下:

1:做技术的总会认为别人的代码写得比自己烂
3:低估了 12306 的要求,12306 的高峰时访问量每秒有上千万,看看要多少台服务器才能撑住这样的并发请求
2:加入的那些人对技术可能比较精通,但他们对于铁路客运的业务可以说是一窍不通!

要做好这个系统,需要明确这些东西:

1:12306 与电商的商品交易很不相同,12306 是数据和事务密集型的,而电商在数据上不是密集型的,在事务上的要求也没那么高
2:客票预发售的复杂性,比如:当日和预售、票种和座席繁多、座席区间复用、票额预分配、复杂的票价计算,再加上返程票、异地票、联程票,以及一些临时加开的列车等等 
3:突如其来发激增的爆发请求,这一分钟的请求数量可能是上一分钟请求数量的 1000 倍
4:保证用户在支付前选中的票,等支付好后这票应该还在,不能因为缓存的原因没有了
5:就目前国情而言,铁路是中国经济的命脉,因此对于系统的稳定性和数据的安全性高于电商的要求。电商的系统宕机了,影响的只是电商一家企业,如果铁路系统宕机了那可不是闹着玩的
------解决方案--------------------
火龙果的分析不错,这件事一直保持关注,看了网友贴出的12306的烂SQL语句……(确实像我们应届生写的哦,唉,不过我记得老师告诉我们不要这样写!),今天的这新闻我也看了,同意这句话:不抱怨,去改变,从我做起。
------解决方案--------------------
想多了吧。12306用了你们的系统,人家贪污的钱从哪儿来呢,从哪儿来呢,,,呢
------解决方案--------------------
路过...