网上买火车票技术

来源:互联网 发布:军用bkt开山刀数据 编辑:程序博客网 时间:2024/03/28 20:49

每逢佳节倍思亲,在外工作的人买到一张回家的票,就成了一件重要的事情,而12306网站的订票系统一直都是各种技术人最为诟病的网站,慢、宕机、买不到……基本成了这个网站的代名词了。对于慢来讲,初级的工程师容易犯的问题就是找HTTP的服务器,更快的HTTP服务器。最近Tengine-2.0.0正式发布,从HTTP来说是比较新的选择之一,毕竟经过淘宝验证,这个版本中包括了对SPDY v3协议的实现,其中最重要的是支持了SPDY流控。还增强了DSO模块,编译动态模块不再依赖原始编译环境了。另外,这个版本基于的Nginx核心也迁移到了1.44。但12306这种纯动态页面,用的是Java开发,有人分析说用的是WebLogic做HTTP服务器,速度的瓶颈卡在后台的数据库。这种最新的SPDY协议,其实能解决的仅仅是通过压缩、多路复用来降低对于整个带宽的要求。可如果是带宽不够,加带宽大概对于12306来讲是最容易解决的,也是最快能够看到的,可惜问题不在这方面。所以新技术仅仅是他们解决数据库问题后一个锦上添花的东西而已,而且我相信,财大气粗的铁路是不会在乎这点改进的,这其中有很多让人很不舒服的细节。

首先就是验证码。作为防止SPAM的技术屏障,我一直对这种技术极为不舒服,很多的验证码已经扭曲到了人都很难看清楚的地步。当年有很多类似的网站,SPAM的问题实在是让人头疼,大量的垃圾信息充斥其中,而对于一般的HTTP网站来说,分辨SPAM实在无能为力,毕竟HTTP的公开的协议和加密,让协议的模拟非常容易。所以解决这个问题,想来想去也只有这个方法,也才会有各种奇葩的认证方式。比如现在最新的就是计算数字的方式,一个认证里是让你算一个简单的加法,然后填入这个数字,还有通过音频的方式,点击一个音频,放一个单词,让你写出来,听起来有没有当年单词听写的感觉,加上各种扭曲的汉字、英文、数字……在这里一点不考虑用户的使用感受,所谓用我的地盘我做主,这里除了产品人员外,技术也确实需要思考这个问题。希望能够看到一些较好的解决方案出来,毕竟防到最后,都是大量的初级用户被挡在互联网之外,和技术带来方便的初衷实在相差太远。也看到铁路技术人员的辩驳,说自己如何努力,但我想说,结果才是大家需要的,在没有好的结果之前,任何努力都没什么好说的。

除了验证码问题,还有因为购票系统的庞大而带来的各种Bug,其实对于公开的系统来言,很多的问题都是由于思维的局限引起的。例如常见的SQL注入,第一次和工程师讲的时候,我还记得工程师听的眼睛都瞪圆了,第一句话就是,还能这样啊,所谓经验是所好学校,就是学费贵点,而对于购票来说,这个漏洞的问题,就是票贩子们的狂欢了,而这种漏洞,都集中在时间上面,黄牛们利用时间上出现的漏洞,控制了大量的票,注意,是控制,一点成本就没有,这种Bug,也只有在业务实战中才能发现,毕竟这么多复杂的规则同时在运行。而这种漏洞是最考验工程师水平的时候。第一,这种漏洞没有任何经验可以借鉴,前面还有现成的解决方案,就看你怎么操作而已,现在是没有任何经验可以补这种漏洞,需要工程师想自己想办法,并且时间很少,春运就这么半个月,你需要在这么短的时间,既保证现有的业务流程不收影响,还要及时的把漏洞补上,而且还要保证不出新的漏洞,最后说一个,就是所谓集思广益,这种政客喜欢玩的把戏,工程师还是不要了,毕竟要了解现有结构,还有现有的运行业务逻辑,还有人员运营方式,才能提出方案出来,完全脱离于现有的结构之外,提出新的解决方案,只能说儿戏了,所以看了很多的人提出各种解决方案,只能说叫脑力的激荡一下,但真正的难点,我想只有当事人才最清楚,才能解决。

谈到这里,我想很多人应该可以理解,为什么互联网的工程师的平均工资要比写传统软件的工程师多一些。以一个笑话结尾吧,一个摩托修理工帮一个心脏外科医生修发动机,发牢骚说,同样都是修理心脏,你的收入怎么比我高这么多,心脏外科大夫说:嗯,不停车修发动机是吗?

0 0