V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
avastms
V2EX  ›  全球工单系统

12306 的排队机制是谁设计的,怎么想的

  •  
  •   avastms · 73 天前 · 7019 次点击
    这是一个创建于 73 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一旦排队,就不能尝试其他车次的票。

    然而当前排的队,并不保证能买到票。

    等排完队,告诉我没票?

    这时候别的车次也卖光了。

    咋想的? 就不想我买上个票了是吧?

    我线下火车站买票,我排完队,一个车没票了,让我回到队尾重新排是吗? 你看火车站给不给你掀喽?

    你那叫排队吗?那叫赌博好吧,你把那个提示换一下,正在进行轮盘赌

    你没票归你没票,你以没票为借口,巧立名目故意不卖我票,这性质可不一样啊

    我正想跟 12306 说道一下这个事,无论我是拨打电话,还是网上投诉渠道, 我感觉都没办法投诉到你呢,排队机制的设计者,好的不学,把网络平台推卸责任这一套都学会了

    第 1 条附言  ·  73 天前
    不是候补,是实时购票的排队。

    同一时间只能在一个车上排队; 排队并不保证最后有票。
    排队需要较长时间;

    已知只有 100 个座位,但放了 200 人进入排队。
    同一时间不能排多个队。
    排队需要时间才能知道结果。

    只要排队人数超出票数,而排队时间大于其他车次票被抢光的时间,这部分人就一定没法买到票。

    这个机制等同于按照 12306 的偏好,决定一批人不能买到票。
    你可以说你票卖光了,但你怎么能设计一套黑箱机制,故意造成一部分人买不到票,然后用没票搪塞?


    另外我不明白了,这帮觉得 12306 业务复杂度世界第一的,谁非得让你火车票玩秒杀了?
    运力不足以人手一张票可以,大家全走候补模式,提交出行需求,抽签,公平决出不能满足出行需求的人,被迫没法满足出行需求的人,下次抽签的时候加权重;即便决定我买不上票,我也心服口服,就算是履行社会义务。

    你这倒好,按照现在这种蹩脚机制决定一批人买不上票,能不让人骂娘?
    第 2 条附言  ·  72 天前
    我的印象没错,之前的 12306 排队是会提示前面的人数和超过票数的,这样做是没问题的。
    哪年开始被谁给优化掉了,匪夷所思。

    还加入了啥慢速排队功能,就是故意不卖票,
    https://k.sina.cn/article_6421928541_17ec6da5d0010039wl.html
    我踏马真人手动手机 4G 买票好吗,给我排队十分钟

    你工资一半可是我税款里来的
    我信任你,你故意坑我,这是人干的事吗

    另外这系统都 10 年了,10 年人家火箭都自己造出来了,但却不足以你 12306 圆满地解决一个买票问题
    109 条回复    2021-09-26 02:55:45 +08:00
    1  2  
    xieqiqiang00
        1
    xieqiqiang00  
       73 天前
    防黄牛吧
    kiritoxf
        2
    kiritoxf  
       73 天前
    是那个候补吗?我候补了好几天了,还没候到 TAT
    Jooooooooo
        3
    Jooooooooo  
       73 天前   ❤️ 4
    候补是个非常好的东西.
    shpkng
        4
    shpkng  
       73 天前   ❤️ 22
    "巧立名目故意不卖我票".....
    12306 有必要吗
    阴阳怪气看得怪恶心的
    看标题以为是什么了不起的漏洞, 结果是稍微思考一下就知道是什么原因的问题
    Maboroshii
        5
    Maboroshii  
       73 天前 via Android
    不候补,自己刷票,是不是和火车站排队一样
    ylsc633
        6
    ylsc633  
       73 天前
    感觉一股特别大的火气...

    楼主说的应该不是候补

    是某个时间点 正在放票

    然后楼主选了某个车次, 因为抢的人多, 然后进行排队了..

    排完了,发现票没了, 然后楼主退出去其他的车次, 发现其他车次也没了


    应该是这个情景吧

    给几个建议
    1. 下次选个特殊的时间段, 比如早上或者晚上的车
    2. 候补吧, 我之前候补几次都有票了
    3. 其他渠道吧
    4. 其他平台帮抢功能
    statement
        7
    statement  
       73 天前
    现实里排队不就是这样 现在同一天可以排两趟车 可以排两天四趟车。反正现在候补没有以前机器刷的时候好买
    Light3
        8
    Light3  
       73 天前
    好像所有点购票后 显示排队 票量充足的 都会有票把
    其次 买票你自己选的时间节点 肯定有好卖的不好卖的 这也要怪 12306 吗? 完全自己选择
    再说候补 候补现在完全是为了更多的普通人 要不然 挂软件天天刷票? 不会挂的咋办? 找黄牛?
    wolfie
        9
    wolfie  
       73 天前   ❤️ 2
    > 一旦排队,就不能尝试其他车次的票。
    自己去官方查规则

    我即是世界系列
    kop1989
        10
    kop1989  
       73 天前
    理解楼主的心情,但不太理解楼主的诉求。
    从楼主的表达来看,楼主不懂技术,所以以下只是逻辑讨论,不涉及技术问题。

    你在火车站排队买票,不也该卖光卖光么?
    假设 12306 是一个车次一个队,那火车站就是所有人一起排队,你该买不到还是买不到。
    leavic
        11
    leavic  
       73 天前   ❤️ 1
    你们教张小龙写代码也就算了,教 12306 我就只能呵呵了。
    FaceBug
        12
    FaceBug  
       73 天前
    @ylsc633 是的,他说的就是你这个排队场景,并不候补

    ————————分割线——————————

    候补和排队业务场景上虽然相似,但是有区别

    排队实时性要求更高

    一般都是刚放票,排完队马上就知道结果

    不可能像候补那样,同时排多个,还要去判断只要成功候补一个,其他全部放弃候补

    这样一来资源消耗极大

    二来会花更多的时间去处理,造成所有用户都在这个界面等待非常长的时间

    如果也为逻辑改为同时排队多趟列车,只要能排上,就成功购票

    结果就是用户同时买下同一时段的多趟列车

    又会造成客户买多退款、黄牛多买占票等等问题

    另外,我个人觉得,现阶段 12306 这个系统肯定是有什么瓶颈,才无法做到很多细节上的问题

    比如目前候补,两个账号(或者同一个账号分多次)给同一个人买两趟时间冲突的车票的互斥都还做不到

    那么排队场景下的互斥,就更加不可能做到
    FaceBug
        13
    FaceBug  
       73 天前   ❤️ 2
    另外,从火车站的例子来说

    的确不会要求楼主重新从队尾排队

    但是楼主也没法同时在多个窗口同时排队不是
    cansiny0320
        14
    cansiny0320  
       73 天前
    所以我一般🚶‍
    sagaxu
        15
    sagaxu  
       73 天前 via Android
    100 张票卖给 200 个人,无论怎么个玩法,总有 100 个人买不到。有没有可能搞个特别的玩法,让这 100 个买不到的人也很满意?
    suzic
        16
    suzic  
       73 天前 via Android
    今天候补到了一张票,大概花了不到一周的时间
    ch940621
        17
    ch940621  
       73 天前
    12306 是一个复杂度比淘宝双 11 还麻烦的秒杀系统,SKU 直接相互关联,你去帮他们做技术选型吧。
    avastms
        18
    avastms  
    OP
       73 天前
    @ylsc633 就是你说的这个场景

    @wolfie 我排队期间点别的预定都告诉我已有订单,您这话给您自己

    @kop1989 火车站买票,排到我之后,如果售票员跟我讲没票了,我会尝试另一趟车,这时他需要优先我购票,而不是让我重新排队。

    @leavic 呵呵

    @FaceBug 这里面是有问题的,同一时间只能排一个队问题不大,但问题是我一旦排了一个队,竟然不能保证有票,这两者同时出现,必然会导致一部分人买不上票。
    dianedii
        19
    dianedii  
       73 天前
    你没抢到票不能说 12306 不行。
    Illusionary
        20
    Illusionary  
       73 天前
    同一身份证,同一天的冲突行程,即使你先提交了候补订单,后面依然可以提交正常订单,候补订单会在出票时刻才判断你是否有冲突行程决定是否出票成功,提交正常订单的时候不会判断你是否有冲突行程的后补订单。 所以我看不懂你在说啥。
    FaceBug
        21
    FaceBug  
       73 天前
    @avastms

    这里面是有问题的,同一时间只能排一个队问题不大,但问题是我一旦排了一个队,竟然不能保证有票,这两者同时出现,必然会导致一部分人买不上票。
    ————————————————————

    现实生活中去车站买票,窗口轮到我,原车次无票,我换一趟新车次,如果新的车次有票,那我就能买上,如果没有票就买不上

    换到 12306 的逻辑来,如果原车次无票,你去其他车次,如果有票,必然就能买上,如果无票,就买不上,如果其他车次也在排队,其实等同于无票(你可以理解为其他窗口的人也在买这趟新车次,你得等他们先办完)
    FaceBug
        22
    FaceBug  
       73 天前
    @avastms

    你的逻辑是,有 A 、B 两趟车

    你买的 A,排完队发现 A 没票了,想换 B,所以想直接插队 B 排队的人,而不是排队到 B 的队尾

    行,就算你这个业务逻辑没毛病

    那你有没想过,如果可以这么玩,那么有可能 B 、C 、D 排队更短,他们队尾的人更快知道结果

    然后优先插队 A,导致你更难排上 A 呢
    xinbaqiu
        23
    xinbaqiu  
       73 天前 via iPhone
    第二张票的时间跟第一张票的时间有重叠吗?如果有的话,万一第一张票抢到了,第二张票也买到了,那就回出现同一时间同一人出现在两趟列车上的情况,这对系统来说是不允许的。
    我之前买上了第一张票,想再买跟第一张有时间交集的其他票就不被允许,可能也是担心黄牛批量提交吧,与个人实际情况不符。
    supermoonie
        24
    supermoonie  
       73 天前 via iPhone
    确实恶心
    FaceBug
        25
    FaceBug  
       73 天前
    @avastms

    为什么能排队,但是到后来发现缺货,可能的原因有:

    1 、余票字段扣减为 0 之前,存在并发读取(共享锁),导致多个人读到余票>0,但是实际票数不够

    2 、进入队列的人并不一定只购买 1 张票,可能原计划是按照座位数量 1:1 的比例放进来的,但是在你前面的人都是买 2 、3 、4 张的,导致后面的人缺票
    avastms
        26
    avastms  
    OP
       73 天前
    @FaceBug 我明白你的意思了。

    所以这个地方根本的问题是排队的延时和超售, 而不在于排他。
    avastms
        27
    avastms  
    OP
       73 天前
    @FaceBug 这个原因不重要,当想杜绝超售的时候有很多办法,可以先放 90%逐步放完防止你的问题 1 。买票的时候是选完乘车人才提交订单的所以不存在你的问题 2.
    aheadlead
        28
    aheadlead  
       73 天前
    你怎么能保证 12306 的抽签是公平的呢?那这不和你的目前的“黑箱”陈述一样吗?
    aheadlead
        29
    aheadlead  
       73 天前
    12306 还有一个恶心的特性:区间限售。。楼主可以研究一会一块喷
    avastms
        30
    avastms  
    OP
       73 天前
    @aheadlead 区间限售我知道,这个没问题,这恰恰是公平机制,小站乘客也需要保障出行权利。

    抽签公平性参考彩票和买车指标摇号,都说是抽签了,基本的信任还是要有。

    主要得明着来,比如我是老赖所以不卖我票,原因要合理且清楚,不能不明不白的。
    xgfan
        31
    xgfan  
       73 天前 via iPhone
    你选一个排队,本质不就是一种抽签吗(刚好你排的没卖完)。
    你能选 N 个排队,别人也能选 N 个排队,最终结果是一致的。
    Huozy
        32
    Huozy  
       73 天前
    @avastms #18 你一旦排了一个队,竟然不能保证有票

    你排队就得有票?

    逻辑感人
    avastms
        33
    avastms  
    OP
       73 天前
    @xgfan 那不是吧,结果和你点按钮的时间节点很相关啊,在某个时间点,不同按钮的概率是和余票之类的因素相关的,不是全随机,如果说他弄成一小时之内订票全随机,我觉得也没毛病。


    @Huozy 我觉得可能你没遇到过这场景,下次你遇到你就明白了,到时候好好体会一下
    FaceBug
        34
    FaceBug  
       73 天前   ❤️ 2
    @avastms

    问题 2 是存在的,你到达选乘车人这个界面的前提是,外面显示还有票,否则是灰色的,根本进不来

    之所以你能进来,正是因为前面的人还在处理,票还没处理完

    但是处理中的这些订单,每个单到底是几张票,完全是未知的

    简单的举个例子,1000 张票,现在队列中处理了 900 张票,系统中有 50 个订单待处理

    这个时候余票是 100 张,A 、B 、C 、D……Z 都进来选乘车人了

    5 秒后,50 个订单处理完了,卖掉 90 张票,这个时候还剩下 10 张

    A 要了 4 张,B 要了 4 张,C 要 4 张的时候就不能满足了,排队失败,D 要 2 张能满足

    然后 E……Z 全部排队失败,当 D 处理的那一刹那,还没有到乘车人选择界面的甲、乙、丙、丁,看到的都是无票

    压根就不会到选择乘车人这个界面

    这个场景在电商里面也很常见

    很多时候秒杀活动,1000 件商品,每人限购 2 件,有 1000 人能进入到结算界面

    剩下的压根连结算页面都进入不到,购买按钮直接灰色

    进入结算界面的人,也不保证买到,有一部分人手速慢或者排队排在后面

    点击付款的时候,被告知已售罄




    再回头说问题 1

    这是一个公平性的问题,买票就是先到先得,顺便也能回答你为什么不抽奖的问题

    公共性的服务和抽奖、抽鞋、抽盲盒不一样的



    当然,你可以说,我先放出来 90%,第二天再放出来 10%

    但是并没有什么用,因为需远远大于求,不然也不会出现超卖排队的情况

    孤立的看这两次放票,90 的那一次还是会有人进入排队买不到,10 的那一次也是会有人进入但是买不到

    你拆成 100 次、1000 次,买票的人大于票数,就一定会出现有人在后面等位,且不一定买到

    而且从公平的角度来说,明明我来的更早,明明也还有票,只是你保留了没有放出来

    凭什么我还要参加第二轮,跟比我晚来的人重新抢一次呢

    你之所以觉得这个方案更好,是因为你假定了你是那个排队靠后,导致根本买不上的第 1001+号

    但你完全有可能是那个原来能排队买上的 901 号,但是按你的新规则,你就可能是被砍单的人

    另外,你这个规则其实和高考录取有些类似

    有的时候明明你的分数更高,但是你选错了学校、选错了专业,就会名落孙山

    那么反过来想想,国家为什么不按照分数从高到低,让所有考试按照序列化的形式从高到低选学校、选专业好了

    这样是“绝对”的公平

    12306 也可以让所有人都按照打开 app 的时间,让所有人都按照这个顺序选车次、选区间、选坐席

    做一个完全没有“并发”的系统

    我个人认为显然从效率的角度来说,很不现实。。。
    FaceBug
        35
    FaceBug  
       73 天前
    纠正:

    但是并没有什么用,因为需远远大于求 [改为:供] ,不然也不会出现超卖排队的情况
    FaceBug
        36
    FaceBug  
       73 天前   ❤️ 2
    另外,我不否认 12306 确实有很多改进的地方,甚至有点烂

    但是从我 [个人] 的角度上来说

    楼主上面提的一些方案

    从公平、效率、体验的维度,还不如 12306 现在的模式
    la9998372
        37
    la9998372  
       73 天前   ❤️ 4
    所以以后 12306 订票要设计一个报志愿系统是吗?还要整个平行志愿?
    mazyi
        38
    mazyi  
       72 天前 via iPhone
    你完全没有理解公平 hhhhh
    avastms
        39
    avastms  
    OP
       72 天前 via Android
    @mazyi 此话怎讲,我有点在意啊
    iseki
        40
    iseki  
       72 天前 via Android
    歪个楼,12306 的排队到底是在等啥,是在等之前的人付款吗,那我记得订单过期是 10min,是不是太久了点…可如果不是等付款那是等啥呢,总不能是真的系统不够快吧
    avastms
        41
    avastms  
    OP
       72 天前
    @FaceBug 你这一大段我觉得说得都挺没道理的。。

    我问题的核心是超售和延时,不是点进来被告知没票。
    技术上有些障碍可以理解,但你不能故意夸大这些障碍,然后实质上执行随意处理。



    具体到你先讲的问题 2,我觉得你肯定不是 12306 的人,如果说队是按订单排的话,那这系统问题更大了。

    排队这个事,IT 系统难道不能实时刷新队尾吗,你发现没法保障队尾一部分人能买上票了,实时告诉他们不太行了,赶紧去别的队,这难道不行吗,非得拖个十来分钟?
    或者把余票数和剩余人数都实时放出来,让排队的人自己决定还继续排不排了,这不都没问题么。

    顺带一说秒杀本来就是非常愚蠢的事情,只是因为商家想实现利益最大化,采取了这种不利买方的恶劣的销售策略。

    有些人纠结秒杀的时候怎么实现真正的请求排序,真正的先到先得,觉得那非常有价值,是工程上的明珠,实际根本就是无稽之谈,网络环境,地理分布,时间同步,太多东西影响那个排序了,即便排序公平整体也不会公平,真正的公平只能来自真随机,这才是程序公平。


    然后讨论问题 1,我说的想要防止超售方法有很多,举得那个方案,这个时间粒度不会是天啊,IT 系统的反应速度是非常快的,只是在处理队尾的时候 IT 系统之间有个往复信息交换,对你人来讲就几十上百个毫秒,感受不出来,也来不及进行别的操作,对人的公平是无影响的。

    先到先得的问题上面说过了,在人类活动的尺度上可以先到先得,最多精确到秒,在计算机的尺度上那个东西没意义。


    然后我提的那个报志愿方案,报志愿这个机制之所以能够用在报志愿这么重要的事上,就是因为它比较好地实现了公平,这要是有谁觉得不服了,肯定都会死磕到底的。
    报志愿的时候就不会考虑提交志愿的时间了,公平不是基于先到先得的。

    基于随机主要实现程序公平,再结合之前抽签结果调权重,这补偿实现历史公平。


    考虑到 IT 系统的效率,和某天任意两个市之间的人口流动数量级,这个总体效率应当是不低的,一小时内决定完毕绰绰有余。
    alfchin
        42
    alfchin  
       72 天前 via iPhone
    根据经验,出现长时间排队的情况一般是你的 ip 被 12306 拉黑了。这时候要果断取消订单
    avastms
        43
    avastms  
    OP
       72 天前
    @alfchin 我用的是 4G, 你看看,就是故意不卖给我,这事我非捅到国务院去。
    murmur
        44
    murmur  
       72 天前
    候补,加钱,这两个都不行才真的没票
    ugly
        45
    ugly  
       72 天前
    12306 官方只有候补,没有抢票,抢票是第三方 app 机制
    fyxtc
        46
    fyxtc  
       72 天前
    我觉得需要考虑到排队的时候有人取消了订单退出了排队,这样理论上余票 200 票排 300 人是可以存在第 300 位用户买到票的,而这个票显然不能出现让第 301 用户先于第 300 用户取到,所以严格的排队还是有意义的。其实没楼主想的那么复杂,就是简单的窗口排队一个道理。

    同理所谓的”秒杀“一样,放票必然有个固定的时间,放以前,就是大家半夜拼早排队,现在就是拼手速排队,没什么好黑的
    avastms
        47
    avastms  
    OP
       72 天前
    @fyxtc 不显然,我买了票也可以 1 分钟内退票或改签,这种情况我 301 号用户的优先权怎么就没保障,退出排队同理,队尾应该设在能够确保有票的点上,退出排队等同退票,让出来的余额实时增加票数也好加入候补也好,不能让队里的人买不到票

    另外传统的排队是排队满足出行需要,一趟车没票要买另一趟车票的,不会重新排队;
    12306 的排队是排队买某个车次的票,他俩内涵不一样。
    1harry1
        48
    1harry1  
       72 天前   ❤️ 1
    建议去中铁面试,好好教教他们怎么做产品。
    meetyuan
        49
    meetyuan  
       72 天前 via iPhone   ❤️ 1
    主要问题在于,如果我选了 A 车次,在排队过程中,发现 B 车次有票,我这时候就只能继续排队不能退出,眼睁睁看着 B 车次的票卖完,A 车次也没买到,这个机制让人很恼火。
    crisrock
        50
    crisrock  
       72 天前
    12306 不要用排队了,换个提示,像某些客服电话一样,现在话务繁忙继续等待请按 1,你一个电话号码也没法同时打两个客服电话对吧,等着吧,等到一定时间自动挂断,这样楼主会不会好接受一点。
    bruce0
        51
    bruce0  
       72 天前
    12306 还有个很恶心人的地方 同一班车, 从上海到 A 城市没有票, 到 B 城市(这条线路的终点站)就有票, 而且必须是这个城市的,这班车的终点站, 比如 B 西站是终点站, 买到 B 西站才有票. 这就导致我每次节假日抢票 多买几站票,多花 100 块钱左右, 不知道 12306 是出于什么目的
    kop1989
        52
    kop1989  
       72 天前   ❤️ 1
    @avastms #18 “我会尝试另一趟车,这时他需要优先我购票,而不是让我重新排队。”

    但是你忽略了买票窗口也有多个,换句话说,你在选择买票窗口的时候依然是赌博。而且也是不排到你不知道结果。

    换句话说,现在线上 12306 的业务,其实我个人认为非常接近于线下购买。只是掺杂了不同的放票策略以应对黄牛而已。

    至于说超量排队,这是必然的。

    1 、在排到你之前,他无法判断当前车次的准确存量。
    2 、他没法在排到你之前,锁定车次的互斥关系。

    “候补”因为是异步操作,所以不存在以上问题。
    dinghmcn
        53
    dinghmcn  
       72 天前
    根本原因是火车的运输能力不足无法应付节假日爆发的需求量,不管什么机制总是有人抢不到票的,只是这次没抢票的人里有你而以
    javen73
        54
    javen73  
       72 天前
    换其他方式就好了呗,打个顺风车
    Constantine1
        55
    Constantine1  
       72 天前
    确实特别恶心,排队了买不了别的票,纯傻卵功能。而且排队大概率买不到票,你只能眼睁睁看着有票的被人买完。一旦排队不要犹豫直接退出队列,抢有票的。
    avastms
        56
    avastms  
    OP
       72 天前
    @dinghmcn 决定谁买不到票的机制需要是公平公正公开,比如不能按照身份证颜值决定,同理也不能 12306 私相授受,更不能由设计程序机制的工程师随意处理,毕竟铁道部除了票款花的是税款
    DesperadoJ
        57
    DesperadoJ  
       72 天前
    @bruce0 保证每个站下车的都有一部分人能买到票,很正常的设计啊。A 地分配一部分票,B 地分配一部分票,只不过有时候去 A 的人稍多,票就早早卖完了,去 B 地的人少一点,还有冗余
    running17
        58
    running17  
       72 天前
    虽然是长假的月经贴了,但大佬们的讨论还是让人受益匪浅哈哈
    www5070504
        59
    www5070504  
       72 天前
    确实无语 需要买两趟车的人很无奈
    lshero
        60
    lshero  
       72 天前
    票款和货运收入比算是九牛一毛,能随便花税款的公司干嘛还要找银行贷款?
    ily433664
        61
    ily433664  
       72 天前
    而且现在中间车站基本不放票了,想要票就去买全程,是真提莫恶心
    LeeSeoung
        62
    LeeSeoung  
       72 天前
    排队、区间限售 不是稍微思考下就能想明白的问题么,我想来想去大概猜到为啥有些人看不懂这些机制,原因在于这些人只考虑自己,没考虑过整条铁路线路车票的统筹安排
    l502008310
        63
    l502008310  
       72 天前
    我教别人做产品系列
    mosfet
        64
    mosfet  
       72 天前
    反正每次都是候补到的,人数都是中等
    抢是抢不过各种脚本的
    l502008310
        65
    l502008310  
       72 天前
    举个简单例子,想象成一个车一个窗口。你在这边排着还想去插其他队伍?不给同时多排几个队伍才是最大的公平,你取消排队了,去其他队伍重新排不是很正常?。至于排队有无票的问题,你前面排队的人一定会买票?排着队,到了想换个时间,再差点就直接不想买了,这不是很正常嘛。按照票和人头决定队列,而不是实际购买和队列的话,等会儿又会出现其他问题了。
    encro
        66
    encro  
       72 天前
    楼主可以接受一个范围选择的排队,
    而 12306 之提供了一个精准选择排队,
    现实中应该很多和楼主一样的,
    这就是 12306 排队机制的不合理之处,
    play78
        67
    play78  
       72 天前
    主要矛盾:人民日益增长的物质文化需要同落后的社会生产之间的矛盾。
    200 个人,100 个座位,总有一半的人坐不上。
    现在这种方式,至少是相对公平的。
    不然跟飞机一样,过节涨价?找黄牛加价?找关系内部购票?
    encro
        68
    encro  
       72 天前
    我在深圳,我要 10.1 去长沙:

    现实排队:
    售票员告诉我哪几躺还有车,我选择一趟;

    12306 网站排队:
    那趟有车不知道,我只能赌一趟最接近我需求的。

    既然论坛写程序的比较多,不妨考虑下如果楼主这种需求怎么高效合理实现?
    labulaka521
        69
    labulaka521  
       72 天前
    俩手机买票
    qq2511296
        70
    qq2511296  
       72 天前
    在 12306 看来,只需要把票卖出去,至于是卖给你还是卖个他,无所谓
    我已经好多次没抢到过票了,唉 逢年过节抢票还是这么难
    avastms
        71
    avastms  
    OP
       72 天前
    @shpkng
    @dianedii
    @1harry1
    @LeeSeoung
    @l502008310
    这么多人没理解,我觉得我也不指望能给所有人解释清楚这里面不合理的地方在哪了,
    等你们遇上的时候再自己体会吧,
    前十年我也没真正遇上这个问题,现在我才发帖,看啥时候轮到你们
    kop1989
        72
    kop1989  
       72 天前
    @encro #68 但是现实是有多个窗口同时在卖票。而且你在排队途中你并不知道你的备选方案是否均售罄。依然也是一个赌博问题。

    而且因为一个窗口可以买所有票,那么必然这个“队”,就比一车次一队排的更长。

    你随机选一趟车没排到,同样的人流量,同样的选择,到线下模式你依然买不到。
    winglight2016
        73
    winglight2016  
       72 天前
    12306 的排队机制肯定是可以优化的,技术上不好说,业务流程上是有很多可以改进的,比如,完全可以参考高考报志愿那样,选择好一二三志愿的车次和乘客,然后一键下单,行不行马上知道。

    但是,lz 想要让排队中的订单保证能够完成,这个就不现实了。之所以排队就是因为不确定性,都确定了参考上面的方法自然就马上知道结果,所以排队这个方法本身就无法支持这个“确定”的特性,并不是技术或者业务的原因。
    felixcode
        74
    felixcode  
       72 天前 via Android
    现实中的排队到了窗口就可以查询所有能买的票了,跟网上排队很不一样吧
    kop1989
        75
    kop1989  
       72 天前
    @felixcode #74 但别人也是这样。所以这就导致

    1 、队伍长,排的时间长。
    2 、多窗口,你无法判断你前面的人是否和你的旅途意愿成竞争关系。

    综上,虽然体验不同,但概率上的结果是一样的。
    palxie
        76
    palxie  
       72 天前
    有段时间没有做火车了, 怎么现在还有排队这东西, 不是只有候补吗
    avastms
        77
    avastms  
    OP
       72 天前   ❤️ 1
    @kop1989 没有,两个城市之间想要流动的人口是稳定且确定的,现实中的队不会更长,而且排队之前人可以选择一个更短的队,这样每队就会均衡,风险是相对可控的,机制上是公平的,不能称之为赌博,而且窗口我可以全家总动员去排队。
    但如果换成一车一队就会成为赌博,因为任何一个看起来均衡的队随时都有可能因为票卖光而崩溃,所有人挤到其他队去,从而产生严重的踩踏,火车站不可能一个窗口就卖一个车的票,。

    总的来讲 12306 对于排队这个事是偷换了概念,增加了很多隐含假设,这些规则都没有对外公开明确。


    @winglight2016 这涉及到排队的根本原因具体是什么,现在有 系统处理不过来 说,觉得你是黄牛或者脚本之类就私相授受故意找借口不卖你票 说, 还有 没法确定有没有票 说。
    bestie
        78
    bestie  
       72 天前
    @avastms 根本原因肯定是处理不过来呗,放票一瞬间涌入大量请求,系统处理能力有限,只能放到队列里一个一个处理。在处理到你的请求之前不知道你想买的票还有没有余票。
    mywaiting
        79
    mywaiting  
       72 天前
    我觉得楼主是为了喷而喷,理由如下

    1 、去车站窗口买票,排队到你了,你询问的第一趟车没有票,那要求售票员更换其他车次,这是很自然实现的,但是在 12306 APP 上如何实现?

    2 、如果在 12306 APP 上,没有限制排队时间,比如说我从北京到上海,我同时在北京到上海的各个车次每个都排队一次,以保证自己最大的抢票效率,抢到高铁 1 张、特快 3 张、普快 5 张依次排列,假设都能抢到票,也假设非黄牛会老实退票,那么我留下高铁票,依次退票特快、普快。这合理?这样抢票的人都会老实退票?

    3 、为了检测步骤 2 中的退票,防止黄牛囤票,需要实时扫描当前同一身份的人员所有的乘车区间,如何同时检测如此多的区间?

    4 、春节五一国庆这样的爆发性的人流,购票需求如此疯狂的情况下,如何限制当前排队一旦出现超额的情况就立刻通知到对应的人员换车次?

    明显

    没有什么完美的排队方法,我觉得目前 APP 里的一刀切排队就挺好

    PS 大家都在 APP 买票的时候,去车站排队反而是个轻松的方法,我是提前到点一边车站排队一边 APP 购票,不用 APP 排队而是用候补,未试过买不到车票的,个人经验,仅供参考
    aino
        80
    aino  
       72 天前
    只要涉及到抢的东西,其实本就无法满足每个人,系统要尽量公平,拦截黄牛恶意请求等,又要让真实用户有好的体验感,挺难。
    avastms
        81
    avastms  
    OP
       72 天前
    @bestie 你知道排队的排他性的实现方式是给你创建一个订单,而已有订单的乘客不能排新队吗。
    m1nm13
        82
    m1nm13  
       72 天前
    的确,狗都做不出这么烂的系统。什么垃圾后台排队能 10 分钟才告诉我排队失败,关键是就 500 张票而已。而且排队的时候,其他票也买不了。最搞笑的是,并不防抢票软件,抢票软件除了需要 IP 代理外,并没有什么门槛,就算来个验证码都好。最后结果就是,手抢不如狗。还是那句话,魔法才能打败魔法
    neptuno
        83
    neptuno  
       72 天前
    如果抽签的话黄牛更容易了吧,弄一堆身份证就行了,都不用抢。这样的话你基本不用买票了
    encro
        84
    encro  
       72 天前
    @kop1989
    @avastms

    现在的 12306 排队:指定车次排队;

    楼主期望的:可以允许指定多辆车次的排队。

    从需求上来说是合理的,甚至可能有一种比现有方案更好更高效的方式:

    支持楼主,是因为原理上来说,可能更加节省资源和时间:一个人可能只需要排队等待一次;
    kop1989
        85
    kop1989  
       72 天前
    @encro #84 但是你只考虑自己,当所有人都是“指定多辆车次”之后,你认为你的排队逻辑还存在么?怎么并发处理多个人意愿之间的互斥关系?还是说你的抢票系统整个生命周期只有一个线程在工作?(难道让你抢完之后先支付,然后 7 天之后告诉你结果么?)这还是最简单的并行意愿,如果是意愿有权重呢?


    @avastms #77 同意你说的 12306 和线下业务有所区别,但不能忽略线上和线下业务本身特质上的不同。

    1 、比如你说你可以发动全家老小多窗口排队,线上你依然可以这么做。
    2 、黄牛可以以超低成本的代价用手指驱动成千上万的小号去抢票。线下黄牛的成本要高不知道多少数量级。所以线上比线下更需要防黄牛。
    3 、在统计学上讲,选择窗口和你选择车次,买票的概率其实没有区别,只是心理层面的体验上有区别。(让你看似好像没有“白排队”)

    所以,我觉得目前 12306 的抢票(不聊候补,因为是异步,业务无从考证),是相对接近线下业务,也保证线下线上业务公平性的方案。
    youxiachai
        86
    youxiachai  
       72 天前
    为啥不用候补..慢慢轮算了..反正这个点有票就好了.,.还要求这么多
    zxcslove
        87
    zxcslove  
       72 天前
    12306 系统的核心问题是库存产品是不确定的,和一般网购有根本区别。
    ch940621
        88
    ch940621  
       72 天前
    楼主居然还杠起来了
    这种供需不平衡的东西只能秒杀 或者摇号。是客观规律决定了 12306 是一个秒杀系统。
    慢排队不是一个功能,是处理批请求需要这么长的时间,然后前端给你这个显示,这不是一个功能。
    从第一条附言得知,楼主对秒杀系统不是很了解,也对这社会运行规律一无所知。

    楼主想支持弄一个平行志愿的秒杀系统,复杂度会变得更高的,候补是离线算不一样。
    manami
        89
    manami  
       72 天前
    现实中买东西也是这样排队的吧,难道还想同时排多个队
    ch940621
        90
    ch940621  
       72 天前
    仔细看看#34 楼的发言吧,别把别人当做傻子,从你#41 楼的回复上看,根本没有认真看别人的回答,盲目归因到这是系统实现上是不对,你得先了解什么是秒杀系统,系统为什么要做出这样。这是技术层面你认知的局限性。另外别说直接有排队余数了,之前显示的排队数很可能是不对的,如果你要杠,建议别想当然。

    至于为什么是秒杀系统,,,楼主的意思可能是留出一部分票作为预定票?大家按需预定?之前没做应该是怕黄牛,如果火车站强推刷身份证,并且继续保持余票先给候补,是可以这样做的,如果楼主的意思是这种方案不错,那我建议楼主建言。买东西先付先得的规则楼主是要改吗?按照地域?或者我翻译翻译你的话,就是你自己优先?感觉开了一个思考问题的贴子,楼主没有思考问题的态度。

    楼主对计算机系统的认知还是比较局限,建议虚心一点,建议不要过于想当然。楼主发言还算挺友善的,但是杠人的回复还是让人觉得无语。
    life4me
        91
    life4me  
       72 天前
    @manami 现实中买东西,排到了,可以买 A 也可以买 B
    ch940621
        92
    ch940621  
       72 天前
    好奇一下楼主到底是否懂技术?感觉都是逻辑层面的讨论。有些场景复杂到了一定程度确实是很麻烦的,12306 的复杂度阿里之前都没接。不懂技术建议保持敬畏,别张口就来。如果懂的话,你用你的发言说法大家。
    ch940621
        93
    ch940621  
       72 天前
    能冒昧问一下楼主的职业吗
    binux
        94
    binux  
       72 天前 via Android   ❤️ 1
    我会尝试另一趟车,这时他需要优先我购票,而不是让我重新排队。

    并不会让你买到票,因为在允许你尝试另一趟车的同时,另一趟车的没买到票的别人也会尝试买走你的车票。
    lichdkimba
        95
    lichdkimba  
       72 天前
    票比需求少 怎么搞都没法让人满意额
    binux
        96
    binux  
       72 天前 via Android
    @encro 然而这样解决不了任何问题,楼主依旧买不到票。最多就是一次性让你放弃罢了。
    palxie
        97
    palxie  
       72 天前
    @1harry1 #47 哈哈, 去错地方了, 中铁是搬砖的
    ch940621
        98
    ch940621  
       72 天前
    不过从实现的角度上看 现在如果还出现排队超过 30 分钟的情况,应该是瞬时机器资源又不够了运维方面的锅,或者拦截机器 DDOS 式刷票的机制失效了,可以算系统 BUG 。排队这个没办法呀楼主,这个超复杂秒杀系统实时性确实是一个很大的难题。
    yolee599
        99
    yolee599  
       72 天前
    @manami #89
    现实中:排到了,看看哪个车次有票就买哪个车次的,都没有就不买;
    12306:只能排一个车次,能不能买到未知,排到了告诉你没票了,去另一个车次最后面重新排队吧,另一个车次能不能买到又是未知,循环往复
    iisky1121
        100
    iisky1121  
       72 天前
    @yolee599 现实中会存在,你走了,票就有了这个情况,因为有退票和改签的情况
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1153 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:09 · PVG 02:09 · LAX 10:09 · JFK 13:09
    ♥ Do have faith in what you're doing.