大家讨论一下12306

zql1982000 2012-09-19 04:41:24
昨天购票发现12306那是超级的垃圾啊,慢不说,还多次买不上,今天早上花十分钟想了一下,决定按照12306工程师的水平给他们出点主意,大家讨论一下,看那种改进比较好,说不定让那帮人看到了也可以改善一下性能。
有人说这个网站没有做集群,或者是个业余做的当然都有可能,这件事虽然能难倒铁道部,但是为了我们以后买票顺利,我特地观察了一下,作为一个菜鸟,想给铁道部外包做12306的技术同仁出点主意:
改进无非就是这三点:(另外这里不讨论什么多层架构,什么的,我觉得12306的可能掌握不了那种技术)
1、前端服务器。我想服务器集群来增大抗压力他们肯定想到了,但是可能没有做,因为有原因。

2、数据库方面。数据库拆分。我想他们用的肯定是好的数据库,oracle,或者db2. 不应该用mysql,或者mssql,(别告诉我你们真用的mysql,开个玩笑)

3、语言实现,服务器性能。

首先做一些猜测,有人说淘宝啊,百度啊,什么的可以支持多少多少人在线,为啥12306就做得这么差,其实12306和淘宝、百度上需求有明显的不同。为啥这么说,打个浅显的比方,淘宝他是一个分散性的系统,登录的人确实多,交易的行为也确实在同一时间发生多次,其实他对数据库的要求小一点,因为淘宝是多对多的关系,大量的人访问大量的页面购买大量的不同的东西,这样的话他对数据库的压力要小,因为数据库事务锁或者同步不是那么麻烦,但是12306却是大量的人在极短的时间购买同样的而且还是量少的东西,所以前者淘宝只要把集群做大,把负载做平衡就ok了。但是12306不仅要做到淘宝所做的(就是集群,负载平衡)还要从业务上改善数据库事务锁的性能。(当然淘宝可能用了一些内存数据库啊,缓存什么的,这里不讨论就是说一下他们的区别)
上面说的也许有人觉得不是这样的,其实我觉得差不多这样的,大家都知道京东,苏宁一做起活动的时候网站就慢得要死,也是这个原因,但是好像相对比12306要好点,好点就在于12306的商品比苏宁,京东更少,当然可能京东技术也要好点。

所以针对以上几点
第一:12306该做集群的要做集群,该做负载平衡的要做负载平衡,别把给的钱都贪掉包二奶。
第二:因为做了集群,就意味多个Server 要同时访问一个DB(或者几个但是数量绝对不多),这样还是有瓶颈限制的,我想这点应该是他们限制很多用户同时登录的原因,并且这点才是他们的技术难点。首先我们猜测之所以他们要访问同一个DB是因为有如下几点:
a、铁道部的票源是全国联网的,所有的终端都要及时的反应出票源的变化。
b、并且终端有多种形式,总结起来就有电话终端、12306终端、车站售票处终端、代售点终端。
c、铁道部需要实时的掌握余票信息。(如果分多个db,这点就要求同步麻烦)
其实通过以上几点我们可以看出对12306我们是可以分成多个DB的。但是需要满足一下条件:
a、将电话终端、12306终端、车站售票处终端、代售点终端分离开来,根据现在的预售时间是可以的,比如 拿出一半(多少无所谓啊,只举例)的票源在12306买。
b、将各个终端之间的余票查询分开就是12306查余票就是查自己的,
c、12306提前2天开卖,电话提前1天开卖,其他终端正常
只要做到了上面几点就可以把DB分开
解决方法:
1、我们分多个DB,怎么分呢?极端情况一趟车分一个DB(当然这个根据实际情况决定),这时我们用mysql就可以了,这样就把户买票时相对同一个DB的压力分散了。DB就不存在事务锁的瓶颈了。整个网站就从订票到购票就会快很多。
2、由于分了多个DB那个12306的余票查询就会变得比较复杂,因为每趟车的数据都在一个库里面。那么这个时候我们就增加一个内存数据库,用作查询余票。中间写个缓存更新器,每3min把查询缓存数据库更新一下,这样就ok了(实际上他先择余票查询也是不准的)。
3、每个数据库和集群之间要用光纤模块直连,这个钱不能省。这样我们订票就OK了

这样在12306卖出每天的第一批狂抢的爆发点后平常的压力就非常小了,这个时候就可以走现在的购票模式了。这时就同步主数据库。实现和其它终端的共享
我只是从12306的业务特殊性分析了一下,整个的架构啊没有怎么想,大家讨论讨论,13e中国人总该能做出一个登得上去的网站吧。
...全文
2003 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
jjb877231000 2013-06-01
  • 打赏
  • 举报
回复
其实我想说很多大公司都是该mysql 比如说 淘宝,网易
饕餮123 2013-05-31
  • 打赏
  • 举报
回复
引用 3 楼 hackvipjs 的回复:
扯蛋 楼主如果让你去做也会是一样的 另外告诉你 淘宝的数据库是mysql
淘宝是直接把mysql源码该了用的,不算mysql了
rumlee 2013-05-23
  • 打赏
  • 举报
回复
铁道部是因为根本没有想办法,如果想办法肯定是能够解决的,访问量比12306大的网站应该有不少的啊。
山那頭 2013-05-23
  • 打赏
  • 举报
回复
楼主说的也挺有道理的
lovinglife 2013-05-16
  • 打赏
  • 举报
回复
楼主就一SB
zyq0413 2013-03-07
  • 打赏
  • 举报
回复
,看的我迷迷糊糊。不懂啊
xianwangkai 2013-03-01
  • 打赏
  • 举报
回复
学习才是硬道理!
xiangaylian 2013-03-01
  • 打赏
  • 举报
回复
还是要多借鉴别人好的东西,完善自己
花之舞 2013-02-18
  • 打赏
  • 举报
回复
我想了解的时候倪超的买票助手在网上已经百度不到了,这个不知道是如何实现的?
风炎楊 2013-02-17
  • 打赏
  • 举报
回复
<a href='http://baidu.com'>不错</a>
  • 打赏
  • 举报
回复
12306不只是个技术问题...还有政治那些 别想得那么简单了
Coder_Jiang 2013-02-13
  • 打赏
  • 举报
回复
再好的技术,再强的服务器,在铁道部的潜规则下,只能DOWN机吧。
zhiang75 2013-02-07
  • 打赏
  • 举报
回复
12306,一个服务器只卖一趟车的票就行,一个负载分配服务器就够了。
关於 2013-02-05
  • 打赏
  • 举报
回复
貌似12306今年还算正常吧。。就算是按去年的12306系统,撑个1.2亿访问量绝对没问题。 别去说淘宝,京东的网站有多少,他们的历史最高访问量一天才1.2亿,而12306是他们的十几倍。 我肯定如果淘宝的访问量有12306这么大,一样会挂掉。
storm_tang1986 2013-01-31
  • 打赏
  • 举报
回复
废屁嘛!菜鸟飘过
zgycsmb 2013-01-29
  • 打赏
  • 举报
回复
要重开发。、
BoJerry 2013-01-28
  • 打赏
  • 举报
回复
没用的。国家部门不能和其他的商业网站相提并论. ..
cloudtian101 2013-01-27
  • 打赏
  • 举报
回复
说了没用的。
mhs1097784509 2013-01-25
  • 打赏
  • 举报
回复
楼主想法是好的,支持一下!
boois 2013-01-23
  • 打赏
  • 举报
回复
引用 5 楼 simpkan 的回复:
每天有多少票从某种角度上是固定的。所以这就不应该是数据库做的事情。 每张票一个对象全部放在内存里足够了,面向对象的内存查询,无所谓语言该有多快呢? 我特意测试了,我的8G内存存个10亿个对象还很富裕,通过Hash在内存的对象集合查询某个对象是否Enable不容易么? 前两年一个项目我们用400M存了全中国的手机号码,固定内存空间存储,按内存地址查询,每秒你猜猜能访问查询多少次? 网站的……
simpkan仁兄,想请教一下“固定内存空间存储,按内存地址查询”这个具体操作怎么做,我现在在做一个快速响应的用户登录系统,用户登录需要的信息直接放在cache或静态类之中,我想你以上的方法脱离语言框架一定更加高效,请赐教
加载更多回复(13)
内容概要:本文研究了基于共识的捆绑算法(CBBA)在多智能体系统中的多任务分配问题,重点应用于远程太空船交会与维修的相对运动规划(RPO)任务。通过Matlab代码实现了CBBA算法,解决了多个航天器在复杂空间环境下协同执行交会、对接与维修任务时的任务分配挑战。研究突出该算法在分布式决策、冲突避免与资源优化方面的优势,详细探讨了任务打包、竞标机制与共识达成等核心环节,验证了其在无中央控制器条件下实现高效、鲁棒任务分配的有效性。; 适合人群:具备航天动力学、控制理论、多智能体系统及优化算法基础,从事航天器自主任务规划、分布式协同控制等相关领域的研究生、科研人员及工程师。; 使用场景及目标:① 实现多航天器在通信受限与信息不完整的远程空间环境下的自主任务分配;② 提升RPO任务中路径规划与资源调度的效率与安全性;③ 构建去中心化的多智能体协同框架,增强系统整体鲁棒性与可扩展性。; 阅读建议:建议结合提供的Matlab代码深入理解CBBA算法的实现逻辑,重点关注竞标权重设计、任务冲突消解与共识收敛过程,并可通过调整任务规模、通信拓扑与约束条件进行仿真实验,以全面掌握算法性能与适用边界。

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧