论坛首页 Java企业应用论坛

批判下最近关于12306架构方案的“排队思路”

浏览 32689 次
精华帖 (6) :: 良好帖 (5) :: 新手帖 (0) :: 隐藏帖 (15)
作者 正文
   发表时间:2012-01-14   最后修改:2012-01-14
晨星★~雨泪 写道
第一种排队:售票厅为了加快速度,这能加快速度吗,感觉YY出来。
第二种排队:

1,注意提前搜好是没多大意义?
当然有意义,谁不是在完全可以购票前,就查询好,车次,路线图。

2,很多人不熟悉操作,得给更长时间。

别忘了,很多人熟悉,大家为了买票,早就提前预演过了,不熟悉,票早就被抢光了。

你的假设感觉都不成立,感觉你没去买过票。


这是两种排队操作方案,既然你也说第一种方案不能加快,那我们意见一样,这样排队行不通。

第二种,你似乎不太做互联网需求,把用户想得太过理想化了,很多用户对网站操作上手之差不是我们所能想象的,很多做网站的人都会抱怨用户太傻,这么简单的事都不会操作。
你觉得现在12306上有几成用户曾预演过?他想预演时已经根本登不上去了。难道排队时还专开一个插队功能让他去“预演”?
最后就是,即使只有30%的用户不熟悉操作,你依然要为这30%的用户留下一定的操作时间,否则你的网站就违背了公平服务的原则,12306不是淘宝卖家,不能说你不会用就别来
0 请登录后投票
   发表时间:2012-01-14  
ahyyxx222 写道
chunquedong 写道

查询用缓存就行了呀,本来12306的信息就不是实时的,延时好长时间呢。

如果嫌前面的用户操作太慢了,那也只能怪自己排队都后面,总现在的破东西强。

排队又没说要一个个放,只要每个批次人数在服务器可接受的范围内就行。


查询用缓存的意义确实是有限的,一方面,因为能查,抑制不了用户不断刷新的欲望,连接数依然居高不下。另一方面,查出来不准确,最后按查的结果下不了单,无形中增加了用户的操作时间,导致队伍等待时间更长,以及招致黑幕、查着有票卖着无票这样的骂名。
现在的东西的确破,我没说他不破,我只是说,很多人所想的一个队列就解决的思想是不对的,我原文已经说了排队的两个问题。
不是一个个放,按批次放人,这不和现在的12306一个思想吗?一批放多了,继续响应不了,放少了,你可能现在排队,明天都未必到你。
能达到火车站售票窗口的队伍前进速度恐怕也是这网站最好情况了。在队伍规则严格按车站窗口执行的前提下可以达到


缓存可以使用其他服务器呀,数据延时几分钟还是可以接受的。实时查询根本很难实现。

按批次发,人数是可以控制的,不是一拥而上的思想,怎么会响应不了。而且用户前半小时排不上队就会放弃的,因为基本上票半小时就卖光了。

窗口人工售票是一个用户独占一个服务,网上售票的时候一个服务器能同时给多个人服务,只有点击鼠标的时候才和服务器交互一次。我不觉得会比人工售票慢。

总之,我真没看出来排队有什么不对的。而且有秩序的排队是会比相互挤快,服务器超过负荷才更慢。
0 请登录后投票
   发表时间:2012-01-14   最后修改:2012-01-14
ahyyxx222 写道
晨星★~雨泪 写道
第一种排队:售票厅为了加快速度,这能加快速度吗,感觉YY出来。
第二种排队:

1,注意提前搜好是没多大意义?
当然有意义,谁不是在完全可以购票前,就查询好,车次,路线图。

2,很多人不熟悉操作,得给更长时间。

别忘了,很多人熟悉,大家为了买票,早就提前预演过了,不熟悉,票早就被抢光了。

你的假设感觉都不成立,感觉你没去买过票。


这是两种排队操作方案,既然你也说第一种方案不能加快,那我们意见一样,这样排队行不通。

第二种,你似乎不太做互联网需求,把用户想得太过理想化了,很多用户对网站操作上手之差不是我们所能想象的,很多做网站的人都会抱怨用户太傻,这么简单的事都不会操作。
你觉得现在12306上有几成用户曾预演过?他想预演时已经根本登不上去了。难道排队时还专开一个插队功能让他去“预演”?
最后就是,即使只有30%的用户不熟悉操作,你依然要为这30%的用户留下一定的操作时间,否则你的网站就违背了公平服务的原则,12306不是淘宝卖家,不能说你不会用就别来



自己不做功课,你怪考试不公平?

你非要在放票时去熟悉?

普通网站操作,和关系自己订票的网站。用户心理能一样吗?
0 请登录后投票
   发表时间:2012-01-14  
ahyyxx222 写道
linliangyi2007 写道
楼主的思路充分说明楼主对计算机建模的无知,本质上很多文件操作都是序列化的,你以为oracle数据写磁盘的时候就是并发的!?

序列化就是排队,这个可以追溯到CPU的指令队列,还唧唧歪歪说了一堆歪理论,建议你改行了得了!
如果你是明知原理,只是为了反对而反对,我表示无语。。


你是大牛,你的序列化和CPU指令队列天下无敌,世上无并发好了吧?
我完全看不懂你在回复和我的主题思想有什么关系,您是高手,这里水浅,免回


你確實無知者無畏。。。

你們說的所謂架構只是UI上不希望看到排隊過程,根本談不上什麽“架構”。

就說UI不排隊吧,UI不排隊,系統還是要排隊吧?

系統排到你了就叫號。考慮到排到你的時候你已經不看網頁了,睡覺去了,打球去了,誰來叫你?BS 不過是一張網頁,從電腦里爬出來叫你?給你發短信通知你上網選購?這個選購權給你保留多久?怎麼防止光訂票不付款的類DOS攻擊?

有人又說了,排到我了就自動成交。你票都不看願意成交嗎?給你特等座,給你凌晨 3 點到的車,你樂意?選,是購物的必須體驗。
0 请登录后投票
   发表时间:2012-01-14  
chunquedong 写道
ahyyxx222 写道
chunquedong 写道

查询用缓存就行了呀,本来12306的信息就不是实时的,延时好长时间呢。

如果嫌前面的用户操作太慢了,那也只能怪自己排队都后面,总现在的破东西强。

排队又没说要一个个放,只要每个批次人数在服务器可接受的范围内就行。


查询用缓存的意义确实是有限的,一方面,因为能查,抑制不了用户不断刷新的欲望,连接数依然居高不下。另一方面,查出来不准确,最后按查的结果下不了单,无形中增加了用户的操作时间,导致队伍等待时间更长,以及招致黑幕、查着有票卖着无票这样的骂名。
现在的东西的确破,我没说他不破,我只是说,很多人所想的一个队列就解决的思想是不对的,我原文已经说了排队的两个问题。
不是一个个放,按批次放人,这不和现在的12306一个思想吗?一批放多了,继续响应不了,放少了,你可能现在排队,明天都未必到你。
能达到火车站售票窗口的队伍前进速度恐怕也是这网站最好情况了。在队伍规则严格按车站窗口执行的前提下可以达到


缓存可以使用其他服务器呀,数据延时几分钟还是可以接受的。实时查询根本很难实现。

按批次发,人数是可以控制的,不是一拥而上的思想,怎么会响应不了。而且用户前半小时排不上队就会放弃的,因为基本上票半小时就卖光了。

窗口人工售票是一个用户独占一个服务,网上售票的时候一个服务器能同时给多个人服务,只有点击鼠标的时候才和服务器交互一次。我不觉得会比人工售票慢。

总之,我真没看出来排队有什么不对的。而且有秩序的排队是会比相互挤快,服务器超过负荷才更慢。


不是排队不对,是说排队方案上的缺陷。
一个服务器同时给多个人服务的本质,相当于一个售票厅有多个售票窗口,在同时给多个人售票,依然相当于一个用户独占一个窗口,网站的“窗口”开得太多,也就变成了争夺,不是排队了,“窗口”依然是有数量限制的。
至于每个窗口是比人工快,还是比人工慢,其实我认为是差不多的,售票窗:口头告诉售票员,他帮你输入,查询。网站:你自己输。
当然售票员由于操作熟悉,所以肯定比网民的平均操作要快。整个流程下来,网络队伍的前进速度不会比售票窗口要快。
我之前回贴有得出一个结论:网络售票能达到的最优效率,恐怕就是全盘照搬售票厅的操作细节,同时前进速度也会和售票厅差不多
0 请登录后投票
   发表时间:2012-01-15  
inshua 写道
ahyyxx222 写道
linliangyi2007 写道
楼主的思路充分说明楼主对计算机建模的无知,本质上很多文件操作都是序列化的,你以为oracle数据写磁盘的时候就是并发的!?

序列化就是排队,这个可以追溯到CPU的指令队列,还唧唧歪歪说了一堆歪理论,建议你改行了得了!
如果你是明知原理,只是为了反对而反对,我表示无语。。


你是大牛,你的序列化和CPU指令队列天下无敌,世上无并发好了吧?
我完全看不懂你在回复和我的主题思想有什么关系,您是高手,这里水浅,免回


你確實無知者無畏。。。

你們說的所謂架構只是UI上不希望看到排隊過程,根本談不上什麽“架構”。

就說UI不排隊吧,UI不排隊,系統還是要排隊吧?

系統排到你了就叫號。考慮到排到你的時候你已經不看網頁了,睡覺去了,打球去了,誰來叫你?BS 不過是一張網頁,從電腦里爬出來叫你?給你發短信通知你上網選購?這個選購權給你保留多久?怎麼防止光訂票不付款的類DOS攻擊?

有人又說了,排到我了就自動成交。你票都不看願意成交嗎?給你特等座,給你凌晨 3 點到的車,你樂意?選,是購物的必須體驗。


说的在理。

我觉得前面niko7提的方案最好,排队前先选好票,允许几种可能,选票的功能可以轻易的分摊到不同服务器,压力大了增加服务器即可,甚至可以动态租用。票的方案选好了就不能更改,在排到的时候你只能是从满足条件的票中选择一个,这个选择你要在1分钟内作出决定要还是不要。如果选择不要,则系统继续对剩余的选票方案进行查询并给出结果供选择,同样,这个选择也是1分钟内有效。

总选择设定时间为10分钟,也就是说10分钟内如果都没有你满意的票(或者你的所有预定方案都没有余票),那么强行结束服务。

这个方案的好处是大大减少核心资源的锁定时间。

排队前的选票,可以不需要提供非常精确的余票信息,用户可以根据自己的行程安排和余票信息来设定自己的选票方案与优先级。一旦排到队,用户就不会做无谓的查询,而且票可以比较快地被售出。系统可以根据所能够提供的查询能力来决定放入多少人来服务。

当然任何方案都无法解决人多票少的问题,排队能带来更好的用户体验(系统响应更及时,而不是目前的501错误;能够知道大概多久能排到,能够知道所要求的票的大概实时余票数等),以及让核心系统能够更有效的工作。


0 请登录后投票
   发表时间:2012-01-15  
排队方案确实该批判。
0 请登录后投票
   发表时间:2012-01-16  
ahyyxx222 写道

不是排队不对,是说排队方案上的缺陷。
一个服务器同时给多个人服务的本质,相当于一个售票厅有多个售票窗口,在同时给多个人售票,依然相当于一个用户独占一个窗口,网站的“窗口”开得太多,也就变成了争夺,不是排队了,“窗口”依然是有数量限制的。
至于每个窗口是比人工快,还是比人工慢,其实我认为是差不多的,售票窗:口头告诉售票员,他帮你输入,查询。网站:你自己输。
当然售票员由于操作熟悉,所以肯定比网民的平均操作要快。整个流程下来,网络队伍的前进速度不会比售票窗口要快。
我之前回贴有得出一个结论:网络售票能达到的最优效率,恐怕就是全盘照搬售票厅的操作细节,同时前进速度也会和售票厅差不多


系统本身的意义就是跟增加一批售票窗口一样,形式不一样而已。在实际买票前都可以先查好买什么车次。

而且时间上面逼迫用户尽早下单,耗不起,一耗可能没票了。
0 请登录后投票
   发表时间:2012-01-16  
而且这个是可以量化的

铁道部一天大概600W张车票,分4批发放,平均每批150W。网络售票占30%左右,算50W好了。

假设用户能承受的等待时间为30分钟,那么12306每秒能出300张车票就行了。

如果保证有秩序的买票,完全没有问题
0 请登录后投票
   发表时间:2012-01-16  
可以考虑整个随机+排队+超时。。。哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics