西西河

主题:【原创】无责任推测12306网站遇到的麻烦 -- 代码ABC

共:💬135 🌺246
分页树展主题 · 全看首页 上页
/ 9
下页 末页
            • 家园 真是纸上谈兵啊!

              你提出系统瓶颈是查询量太大,这点是基本正确的,但是你的解决方法完全是拍脑袋的,南辕北辙,没有经过实践检验的。

              其实业界对于这种问题是有成熟解决方案的,河里的西电鲁丁就发了不少大型网站的架构分析,你可以参考一下。

              ipad输入不方便,回头我再说说为什么用cache能降低数据库负荷,以及怎么用。

              • 家园 我们都是纸上谈兵

                除非12306是你参与做的,那我道歉。

                不管是从头设计也好,优化也好。总要有一些基本的数据、假定和约束。不然就真是纸上谈兵了。Cache当然可以降低数据库的负荷,但是搞清楚付出的代价才是更重要的事情。

                另外,做了一两年网站设计的人的想法不一定靠谱,除非他这一两年就做一个网站,看着一个网站从小到大地增长。

                • 家园 你没有网站开发经验,在凭直觉判断,所以你是纸上谈兵

                  我一直在大型网站开发和云计算一线工作,现在的工作就是使用一些成熟技术搭建平台帮助中小网站成长。

                  从你的回答中提到数据库缓存操作系统缓存可以知道,你没明白我说的cache指的是memcached/redis之类的成熟集中式缓存,所谓隔行如隔山就是如此。很多业界已经成熟的东西,一定要拍脑袋自己想是没啥价值的,多参考参考现有的成熟案例没有错的。

              • 家园 其实这个网上售票外包给淘宝不就结了

                上次光棍节可是不比春运卖火车票轻松啊。

    • 家园 铁路订票之集群设计初步

      今日得闲,做一集群初步设计图,发上来抛砖引玉。。

      关乎大家的订票系统,让大家也都来设计设计,凑凑趣。

      感觉关键是做好应用逻辑分析,将整个系统有条理的切分成多个集群,应该是能够应对大访问量的。不要迷信所谓软件公司既有系统,没有针对性的既有系统,就是个噱头罢了。

      另外,俺的思路主要是要做成分布式,包括分布式数据库、分布式商业逻辑,以及分布式WEB展现。一旦合理展开,可以减少很多复杂性。当然,代价是要高质量的管理和维护一个分布式系统,但总的来说,这是较优选择。

      图中的方案,核心是车次-车站-车票子系统。作图时考虑不周,其实最小单位是:日期-车次-车站-车票子系统更好。另外,子系统中的数据库服务器和商业逻辑服务器也可分开为独立硬件服务器。分流到这一步,每个服务器的负载是很低的,普通入门级服务器即可负担。

      点看全图

      外链图片需谨慎,可能会被源头改

    • 家园 铁路售票与航空售票及电子商务网站的主要区别

      铁路售票与航空售票及电子商务网站的主要区别:

      航空售票:一人一个座位。没有中途下飞机的。

      电子商务:每次买一个商品。商品基本是固定的。就是一个数量而已。买一个少一个。

      这两个主要的难点在与定价及优惠的灵活性。大部分的时候大家不用抢同一个资源。

      拍卖之类的交易行为只占网站很少一部分。

      铁路售票有一个比较不同的地方:最后时候大家都在抢统一资源并且资源的数量比较少。

      另外铁路还有一个公用复用的问题。

      以复用为例:假设北京到上海中间经停10个站,以A-Z代替。

      起始时刻,每个站都可以卖。假设有多个售票渠道的话,例如从电话卖了一张B-D的票。

      那么其他的售票终端例如互联网上就应该可以买A-B,及D-Z的票。但假如说要想买一张

      A-C的票,对不起,没有。从这个方面来说,A-Z中任意一个节点都会影响到其他节点。

      在实际中为了降低冲突,可能预先生成相应的区段车票。如果是这样的话则系统中实际

      产生的电子票的数量可能比实际的车票多个量级。

      前面提到了,全国日均588万人次。意思是至少有大约600万实际的车票,则大

      约每天至少生产大约6000万票(假设每列车有10个停靠站)。

      还有一个实际的预售期的问题,一般的预售期例如10天的话,意思是10天内产生的车票

      都可以卖。这样的话,实际上可能就是6000万*10张车票。所以实际的数据量应该还是挺

      大的。

      从这种情况来说,票并不是固定的。因此余票信息也不是固定的。大家其实抢的可能不是

      同一张票,而是同一个座位在不同区间所产生的不同的票。

      这种信息在电子商务网站上比较少见。

      从开发的角度来说,如果不确定票的准确性的话,系统的压力会大为降低。目前所有的售

      票终端当锁票的阶段,座位号就已经固定了。假如说系统此时不固定座位号,只提供余票

      信息,当实际支付的时候在锁固定座位(此时有可能锁票不成功),如果这样的话,系统的

      压力降低的不是一点半点。但实际情况是如果这样做的话,会被骂的更狠。

      从我自身的经历来看,这种需求还是比较变态的。与淘宝之类的压力还是应该不太一样的。

      假如说淘宝上大家向春运这样都在买同一件东西或几件东西,也是比较够呛的。

    • 家园 现在网上好多刷登陆的脚本
    • 家园 送花花

      送花成功。有效送花赞扬。感谢:作者获得通宝一枚。

      参数变化,作者,声望:1;铢钱:16。你,乐善:1;铢钱:-1。本帖花:1

      这样的帖子才是应该提倡的 而非神马放着十八摸不用的NC宣传软文 要说回扣党09/10年十八摸的紫色风暴就是例子。。。

    • 家园 从目前的信息看,是EAI没有做做好。瓶颈在这儿。
    • 家园 我也无责任的推测一下。

      订票数据库应该是和窗口共用的,这个没有什么太大的压力

      在没有网络订票之前,所有售票点+车站窗口已经是一个非常大的流量访问了,要考虑到窗口专业人员和专用软件的输入速度远远超过网站输入,这个系统是经受过时间考验的,应该不会有问题。

      一个证明是你也提到过的,登录难,但是登录之后查票并不难。

      估计是将用户数据这一块独立存放,毕竟窗口订票根本无需这个用户登录,为了保证与窗口联动的订票系统的稳定,控制了并发的用户登录数,毕竟窗口的稳定性和速度是要优先保证的。

      余票查询系统是非实时的,这个应该是题中应有之义。

      貌似一趟车1000人的标准似乎有点低啊,7.23的两趟D车,一趟定员1299人,一趟定员810人,考虑到春节期间多少都要超员,D车宽大的座椅,车均1500人应该更靠谱些。

      7000万人应该是700万人的笔误?新华网的消息是预计588万。

    • 家园 有些没有你想的复杂

      “举个例子:有一趟车从广州开往北京,经停南昌、株洲(铁路知识一片空白,地名乱填的,别拍砖哈)有10张卧铺票。甲买了一张广州到株洲的,这时株洲到北京还剩10张,广州到北京就剩下9张了。实际还需要扩展一下,如果有人查南昌到株洲呢?还是9张,广州到株洲呢——9张。经停站越多,起始站和终点站的组合就越多,这个算法复杂性就在这里。”

      长、短途客票的分配应该是客运计划部门早就做好了。

      就是说铁路内网push给12306车票数据库的每一条记录对应一张车票,一张“发站&&到站&&车次&&日期&&座号”已经确定的车票

      12306没有动态生成车票的能力

      • 家园 我也无责任推测一下,代码ABC分析比较靠谱

        虽然我做的不是这种业务,面对一堆各种来源数据做统计,还是很考验数据库设计的,这种设计和教科书教的既有关也无关。

        BTW:稍微晚点,避开高峰,刷一下,还是能买到的,我每周都在买往返票,确实方便啊

      • 家园 如果是已经规划好的话会简单很多

        我真不知道具体情况。如果是这样,那么数据其实已经简化到我最后介绍的设计了。而且具下面的回复,我的估计还大了一个数量级。应该不会出现那么严重的问题,难道他们余票查询还需要去汇总售票记录?

分页树展主题 · 全看首页 上页
/ 9
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河