V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
v2410117
V2EX  ›  程序员

12306 自动分配无座这个逻辑是真的合理吗?

  •  1
     
  •   v2410117 · 2018-09-27 12:54:19 +08:00 · 16140 次点击
    这是一个创建于 2009 天前的主题,其中的信息可能已经有所发展或是发生改变。

    国庆打算回家,无奈已经无二等座票(有无座票),上班无事拿着手机在 12306 客户端刷票,叮,出现 2 张二等座,我立马点进去提交订单,这是这个让人无语的逻辑出来了,提交提示我二等座无票,自动分配无座票,根本都不问我是不是要无座,自动就分配了,只有一个确定按钮,点了就生成订单让我去付款,我只能取消啊,取消又提示我一天只能取消 3 次,这是搞毛???? 然后我又继续刷,第二次又刷到一张票,点进去,尼玛,依旧跟上回一样,二等座无票,自动分配无座并生成订单,取消就只剩一次机会了。

    我就很纳闷,我就是要二等座,你自动给我分配个无座是啥意思,你可以提示我,二等座卖完了,是否需要分配到无座,你让我自个选啊,你为啥要自动给我生成个订单,取消还得给我算次数,添加一个按钮有那么难吗????

    就好比我去菜市场买牛肉,你给我说有,我给了钱,你去仓库里发现卖完了,就说一声卖完了我给你换成同等价值的猪肉,也不管我要不要,就扔给我,但这根本不是我想要的啊,这哪说理去????

    我不信这个问题没有人遇到过,我网上搜了一圈,这问题好像出现的时间也不短了,也不是现在才出现,12306 为啥就不改呢?难道就为了多拉个人多赚钱?强行卖无座票????

    第 1 条附言  ·  2018-09-28 13:06:25 +08:00
    加个附言吧,首先来 V2 问这个问题,并不是引战,因为作为技术论坛,有很多的大神,发这纯粹是为了大家各抒己见从各个方面来评判这个逻辑是否合理,是因为太难不好做,还是纯粹的垄断就是不想听取用户意见,在大家的评论中,也看到了好几位 V 友从技术角度出发分析了这个小小的需求.也很受益.感谢.
    我个人坐的这趟车次是起点到终点,全程近 15 个小时,车次早上 6 点出发,所以我当晚基本是睡不好觉的,外加自己还有一部分行李,所以自己才坚决的不想购买无座票,因为我需要在车上有座位来休息,我个人的想法是如果在出发前 2、3 天依旧无法抢到有座票,我会选择其他的交通方式,飞机、大巴等.只是在有可能抢到有座票的情况下,我肯定会优先选择购买动车票,毕竟价格相对其他交通方式要便宜一些.
    我看有 2、3 个 V 友说去投诉,去打 12306 电话,在发帖之前我就在网上搜索过相关问题,这个问题不是现在出现的,是一两年前就已经存在了,网上也有很多人吐槽这个,我相信他们其中肯定有人给 12306 进行过反馈或者说投诉,既然能一两年都没改,必然有不改的理由了,所以只是发个贴在技术圈吐槽一下看大家是何看法.
    最后由于确实也抢不到,我选择了隔天的飞机票,虽然贵点,也能舒服回家了,提前祝大家国庆快乐!
    132 条回复    2018-09-30 00:01:49 +08:00
    1  2  
    tigerstudent
        1
    tigerstudent  
       2018-09-27 12:57:02 +08:00 via Android
    支持楼主
    shijianit
        2
    shijianit  
       2018-09-27 12:58:29 +08:00
    确实挺不合理
    ccnccy
        3
    ccnccy  
       2018-09-27 12:59:29 +08:00 via iPhone
    我也经常在吐槽这个。
    dremy
        4
    dremy  
       2018-09-27 12:59:42 +08:00 via iPhone   ❤️ 8
    如果你要再自己确认一步,有可能连无座都没了
    wobushizhangsan
        5
    wobushizhangsan  
       2018-09-27 13:01:33 +08:00 via Android
    你去 12306 吧发一下帖子,保准被喷删帖。以前说了一个不合理的地方差点被喷死。
    yushiro
        6
    yushiro  
       2018-09-27 13:02:04 +08:00 via iPhone   ❤️ 1
    12306 上的剩余车票信息不准呗,我明明看到还剩余 1 张票,点进去买,无票了(不支持无座的车次),在火车站购票处,手机上查有票,窗台购买就是无票。
    sikariba
        7
    sikariba  
       2018-09-27 13:02:11 +08:00
    这个情况把 app 进程直接杀掉,应该就不会生成订单了吧(我没有杠的意思)
    v2410117
        8
    v2410117  
    OP
       2018-09-27 13:02:38 +08:00   ❤️ 1
    @dremy 关键是我不要无座啊,如果确实一直抢不到二等座,我可以坐飞机,坐大巴,还有备选项嘛
    yujincheng08
        9
    yujincheng08  
       2018-09-27 13:02:39 +08:00 via Android
    抢票还是用一些抢票软件吧,普通人根本抢不过他们
    v2410117
        10
    v2410117  
    OP
       2018-09-27 13:04:50 +08:00
    @yushiro 网上和窗口确实是不一样,有的时候窗口有,有的时候网上有,因为可能是考虑到一些打工族不会用手机这些,所以在窗口有留票
    noNOno
        11
    noNOno  
       2018-09-27 13:05:33 +08:00
    逻辑确实不合理.但是也许是合情的,比如节假日,这个比抢不到票回不了家好...
    v2410117
        12
    v2410117  
    OP
       2018-09-27 13:06:12 +08:00
    @wobushizhangsan 我这个问题难道还有人会觉得是合理的????我会吧,12306 的产品经理反人类么?
    v2410117
        13
    v2410117  
    OP
       2018-09-27 13:08:33 +08:00
    @noNOno 按你这个说法我可以理解,但是可以设置个开关吧,比如在页面上随便放个按钮,勾选上可以自动分配无座,不勾就不分配,查票的时候弹窗提醒一下说有这个功能,这不更好?这个我觉得才合情吧,而且这也没啥技术难点啊!
    Marmot
        14
    Marmot  
       2018-09-27 13:08:51 +08:00   ❤️ 2
    他们的产品不存在用户体验的问题的,因为再不好你也没有第二个选项,垄断就是可以为所欲为。
    tadtung
        15
    tadtung  
       2018-09-27 13:09:41 +08:00 via Android
    @v2410117 说白了就是为了更大限度盈利,铁路系统一直以来就这样。但是真么办法,谁让就这一家。
    imn1
        16
    imn1  
       2018-09-27 13:13:05 +08:00
    @yushiro
    线上线下两套系统,可以说合理,只是应该说明

    @v2410117
    不是反人类,只是他们不需要自己买票
    totoro625
        17
    totoro625  
       2018-09-27 13:17:20 +08:00 via Android
    是这样的
    你选择买票提交订单后会锁定一张票
    这张票别人能看见但不能买到
    10 分钟后超时释放,之后其他人就可以买了
    PureWhiteWu
        18
    PureWhiteWu  
       2018-09-27 13:18:51 +08:00
    很不合理,应该提示确认之后再锁定
    v2410117
        19
    v2410117  
    OP
       2018-09-27 13:18:56 +08:00
    @totoro625 这个我理解,别人下单了没付款,票是可以看到的,但是这也不是自动给我分无座票的理由嘛,你提示我卖完了就好了,也可以问我需不需要分配无座,但自动给我生成个无座订单这个理解不过去啊
    Muchisan
        20
    Muchisan  
       2018-09-27 13:20:52 +08:00
    因为在 12306 眼里,无坐和二等座都是同样的票价,是一样的,没必要为同等价值的东西多查询一次数据库。如果在提交二等座购买时发现无票而出现提示,再次继续操作时肯定还要在查询一次看看是否无坐也没有了。要是每个人都多增加一次查询,以 12306 的访问量和服务器的性能……厄姆……¬_¬
    wy315700
        21
    wy315700  
       2018-09-27 13:22:38 +08:00
    无座的意思其实是无预留座位票。有些车次只卖无座,上去抢到哪个座算哪个。
    kimqcn
        22
    kimqcn  
       2018-09-27 13:23:27 +08:00
    几百亿养了 12306 一群白痴
    v2410117
        23
    v2410117  
    OP
       2018-09-27 13:25:23 +08:00
    @Muchisan 你这个说法倒也是,毕竟 12306 那么大的系统多查一次确实性能上影响很大,但是我觉得哈,也不需要牺牲用户的体验来做这个事吧,按你这个说法,12306 可以做个按钮啊,勾上就自动分配,如果怕有人不知道,那就默认是勾上的,那就跟他们现在逻辑一样,对服务器没影响,如果像我这种诚心就不想买无座的,我可以主动去取消勾选,我也不会主动去查询无座,也对服务器没影响,这不很完美的解决了么,啊啊啊
    loryyang
        24
    loryyang  
       2018-09-27 13:25:51 +08:00
    主要是因为 12306 不靠用户吃饭。你觉得这个 APP 蠢,你还是只能用他。你即使生气了,不再用他,也几乎不影响铁道部的任何利益
    xinyidao
        25
    xinyidao  
       2018-09-27 13:27:55 +08:00 via iPhone
    代售点查的票准。12306 的数据有延时 可以找我帮你把那些无座票站起来 你就不会自动买无座了
    cjpjxjx
        26
    cjpjxjx  
       2018-09-27 13:31:17 +08:00
    @Muchisan 那么可以在提交之前的页面增加一个是否自动分配无座的选项,默认开启,有座没座一起查询,关闭后就只查询坐票
    Muchisan
        27
    Muchisan  
       2018-09-27 13:36:40 +08:00
    @Muchisan
    @cjpjxjx
    这样的话,虽然方便了大众,但是无座票就不好卖了不是,至少会有一部分人着急买票出行,碍于订单取消次数限制就会考虑买无座票了。
    Fulcrum
        28
    Fulcrum  
       2018-09-27 13:43:57 +08:00 via Android
    12306 的查询和买票系统是分离的,数据不是实时同步的,后面的系统太庞大了。
    v2410117
        29
    v2410117  
    OP
       2018-09-27 13:51:21 +08:00
    @Muchisan 说到底还是垄断为所欲为,为了多卖票就是不愿意加个按钮
    shijianit
        30
    shijianit  
       2018-09-27 13:55:33 +08:00
    最好应该提交之前有个可勾选的选项,提前让用户设定好是否自动选择无座
    JerryCha
        31
    JerryCha  
       2018-09-27 13:56:09 +08:00
    详细一点啊,二等座没了,一等座 /商务座还有没有。所有座位都没了的话,我觉得楼主需要的可能是询问还需不需要购买这趟车的车票。
    你的需求明显不是大多数人的需求,铁路现在该先上线的功能是指定席位 /铺位。
    ddzzhen
        32
    ddzzhen  
       2018-09-27 14:01:08 +08:00 via Android
    我也遇到并取消过,而且还触发上限了
    shenxj
        33
    shenxj  
       2018-09-27 14:06:19 +08:00
    @JerryCha 现在可以指定座位的,购票时优先选择你指定的座位,没有的话会给你分配一个别的座位。
    7654
        34
    7654  
       2018-09-27 14:06:54 +08:00
    火车票节假日是刚需产品啊
    shenxj
        35
    shenxj  
       2018-09-27 14:08:19 +08:00
    还有我说一下 铁总的意思是 火车上的无座的逻辑其实和公交车上的座位是一样的,先到先得,无座和二等座是一样的,就好像你上公交车没有座位只能站着一样。。
    qwertyer
        36
    qwertyer  
       2018-09-27 14:09:12 +08:00 via Android
    支持楼主!
    c0878
        37
    c0878  
       2018-09-27 14:09:19 +08:00
    手工是抢不过软件的
    carpediemvv
        38
    carpediemvv  
       2018-09-27 14:10:25 +08:00 via Android
    简直有病,也不知道什么人开大出来的垃圾玩意
    ioth
        39
    ioth  
       2018-09-27 14:10:41 +08:00
    这种节日,给你无座他认为已经是恩赐了。不愿意就用第 3 方。
    ddugujiujian
        40
    ddugujiujian  
       2018-09-27 14:11:04 +08:00 via iPhone
    @JerryCha 搂住的问题困扰很多人,你没体验到这个场景而已
    v2410117
        41
    v2410117  
    OP
       2018-09-27 14:13:24 +08:00
    @shenxj 老哥,这个应该不一样吧,那公交车上别人半路下了,我坐上去就没人会叫我起来,除非老弱病残孕我主动让,铁路上你买到的无座票,难道别人半路下车,我还能把那座位坐了?别人下了,马上就有人会上来坐的啊,是不
    hell0v2
        42
    hell0v2  
       2018-09-27 14:14:33 +08:00
    感觉这种做法对大部分人是可以接受的?对楼主这样的需求就忽略了?产品经理通常会做一些取舍(因为再多一步,可能就 没票了吧)?
    v2410117
        43
    v2410117  
    OP
       2018-09-27 14:17:57 +08:00   ❤️ 1
    @hell0v2 但我和楼上的 V 友也提出了一些自己的看法,可以添加个默认选项呀,默认分配,可以自己取消,这也不影响那一大部分人,也满足了我们这种小需求呀,这根本不是 2 个相冲突的功能啊
    shenmising
        44
    shenmising  
       2018-09-27 14:30:17 +08:00   ❤️ 1
    毕竟你要知道同时有很多人在抢票的 你刷不过别人 下订单的时候就是余票不足 12306 为了给你回去的路也是操碎了心 还要主动帮你预约无座 就怕你没及时看到消息 不能及时确定是否要无座 怕等你要无座的时候然后连无座都没了 为了兼顾大多数人吧 能让他们回家
    WenJimmy
        45
    WenJimmy  
       2018-09-27 14:30:35 +08:00
    对于还在刷票的我来说,无座也可以啊
    owenqibyzw
        46
    owenqibyzw  
       2018-09-27 14:34:13 +08:00   ❤️ 1
    在这里提一个与主题无关的技巧. 如果已经取消两次订单了, 可以随便下单并付款一张票(不要与目标车次冲突), 这样又有三次取消机会了. 多出来的票后面再退就行了.
    v2410117
        47
    v2410117  
    OP
       2018-09-27 14:36:14 +08:00
    @owenqibyzw 还能这样???????真的假的,不敢试啊,只有一次机会了,老铁靠谱吗?
    owenqibyzw
        48
    owenqibyzw  
       2018-09-27 14:49:13 +08:00
    @v2410117 之前发现的了. 刚刚又在安卓 APP 上操作了, 确实仍然是可行的.
    zsj950618
        49
    zsj950618  
       2018-09-27 14:51:57 +08:00 via Android
    因为很多人的情况是,你要多一个步骤,到时连无座都抢不到。你这种情况,只剩一两张票时,就不要去抢了。
    toptyloo
        50
    toptyloo  
       2018-09-27 14:55:32 +08:00 via Android
    @v2410117 无座票,有座位空着是可以坐的。
    xgfan
        51
    xgfan  
       2018-09-27 15:02:14 +08:00
    应该是系统设计的问题吧。
    为了抗流量,尽可能的把条件简化,既然无座和二等一样的价格,那就一起卖得了。
    就看后面 12306 会不会优化了。

    至于说是为了多买票,为了赚钱……
    刷票都只能刷到无座了,还需要搞什么花样来卖你一张无座?
    284716337
        52
    284716337  
       2018-09-27 15:03:54 +08:00
    @v2410117 我觉得这种设计还比较折中
    ericls
        53
    ericls  
       2018-09-27 15:04:26 +08:00
    真希望火车票价涨几倍
    dbw9580
        54
    dbw9580  
       2018-09-27 15:07:47 +08:00 via Android
    填志愿嘛,在提交订单的时候要用户填三个志愿,默认第一志愿二等座,第二志愿一等座,第三志愿无座;用户可以修改志愿或者填空志愿,按优先级匹配,遇到空志愿就立即终止生成订单。
    helionzzz
        55
    helionzzz  
       2018-09-27 15:15:51 +08:00
    你们这种小需求在几百万级的并发上可能确实算小需求,但是在 12306 这种并发上可能就不是小需求了。还是那句话,这种体量级的东西能存在那就是十多亿人的福音了。改进什么的有那是意外之喜,没有那也不需要太放在心上。
    wyaming89
        56
    wyaming89  
       2018-09-27 15:19:14 +08:00 via Android   ❤️ 2
    其实楼主没买到票的怒气消了点也意味到了,自动分配无座是目前情况下“最优”方案,不可能系统一个进程停留等你决定是不是要无座,先不考虑性能问题,这样就面临一个问题,你左思右想之后要这张无座票时,这张已经是别人的了,系统又次执行一遍查询预订的流程。至于什么默认分配选项这需求真有必要吗?因为生成订单可以取消的。另外说下,12306app 或网站显示有少量余票但订不到是缓存问题。所以结论,要么抢票软件,可以清缓存,CDN 加速,要么机票。
    swulling
        57
    swulling  
       2018-09-27 15:22:38 +08:00
    @helionzzz 12306 的并发也顶多百万量级就够了。
    RqPS6rhmP3Nyn3Tm
        58
    RqPS6rhmP3Nyn3Tm  
       2018-09-27 15:23:33 +08:00 via iPhone
    任何一个小问题放大到 12306 这个体量都是大问题
    铁总承担了太多社会责任了
    helionzzz
        59
    helionzzz  
       2018-09-27 15:28:36 +08:00
    @swulling 现在 v2 上的人都是这么敢说的嘛
    c6h6benzene
        60
    c6h6benzene  
       2018-09-27 15:31:24 +08:00 via iPhone
    @v2410117 #41 这不一定。有的车次可能原本坐的人下去之后,这个位置就没有人坐了,你可以一直坐下去,直到有人拿着票来跟你说我坐这里。

    实际操作上你是可以买了无座票上车后去餐车买东西然后一直坐到终点站的(短途的情况下)。

    我觉得国内列车差的是跟日本一样的不对号车厢…
    CloudnuY
        61
    CloudnuY  
       2018-09-27 15:37:34 +08:00
    「不服从调剂」
    swulling
        62
    swulling  
       2018-09-27 15:38:24 +08:00
    @helionzzz 如果纯订单逻辑,可能百万并发都不到。不理解的要么是不懂什么是并发,要么是不懂数学。

    alipay 去年双十一交易峰值每秒也不过 26 万笔而已
    bk201
        63
    bk201  
       2018-09-27 15:40:49 +08:00
    @v2410117 我觉得是把这 2 种票当一种了,座位随机分,当然坐与不坐也会这样分,不至于一下子坐票全光,站票没人买.
    bk201
        64
    bk201  
       2018-09-27 15:43:54 +08:00
    @swulling 这可比 alipay 复杂多了,线下代购点,火车站,还有提供给各种第三方的共用一个池.
    swulling
        65
    swulling  
       2018-09-27 15:45:04 +08:00
    铁路春运,日发送旅客峰值一亿左右,全天有 20 个左右放票时间点(不同车站不同),考虑到不均匀,单个时间点应该有 1000w 张票卖出,再考虑到票不是预售期刚开始就全部卖出,那么在预售期当天的单个时间点,卖出的票最多不过几百万张

    而 12306 现在抢票都是把请求先塞到队列中,然后顺次出票,出票时间经常长达好几分钟之久,将数百万分布在好几分钟 内,你说每秒能成交多少张。

    @helionzzz
    xuhp
        66
    xuhp  
       2018-09-27 15:45:57 +08:00
    好多人都忽略了一个情况:

    “任何一个小问题放大到 12306 这个体量都是大问题”

    在这种近乎城市迁徙的需求下,12306 没有崩溃已经是提供出十分强大的服务了

    这种吹毛求疵的需求就应该去火车站服务窗口买票
    swulling
        67
    swulling  
       2018-09-27 15:46:18 +08:00
    @bk201 复杂度是一回事,并发度是一回事

    我说的只有一句话『 12306 的并发也顶多百万量级就够了』,你不用转移这个话题
    hell0v2
        68
    hell0v2  
       2018-09-27 15:48:23 +08:00
    @v2410117 恩,都理解;我只是从产品经理(应该存在?)角度考虑了下;如果给选项,对其他用户来说会浪费时间了,肯定会引来更多抱怨;如果设置里可以设置,开发又说,这技术实现难度大等?反正最大的问题在那(人多票少),这种用户体验肯定会有取舍吧,感觉无解,只能试试其他渠道,比如携程之类?
    woyao
        69
    woyao  
       2018-09-27 15:48:51 +08:00
    无座的票,取消好像是不占每天取消 3 次名额的吧?我印象中好像是这样,但不确认哈。
    TwoDogSon
        70
    TwoDogSon  
       2018-09-27 15:51:49 +08:00
    或许产品经理也有 KPI 事出必有因 大多数看着不那么舒服的事情 多半是信息不对称性导致的(随后一说不接受反驳,溜了溜了~
    likuku
        71
    likuku  
       2018-09-27 15:56:09 +08:00
    想了 1 秒钟,猜测 12306 定义的“有票” 并不等同于 “有座”,意味着 “一票一座” 是不可能的。
    Lentin
        72
    Lentin  
       2018-09-27 15:56:54 +08:00
    买高铁就没有这个问题了……没有站票……
    xuhp
        73
    xuhp  
       2018-09-27 16:00:34 +08:00   ❤️ 1
    @Lentin

    这个问题还是有的,刚买的高铁站票。。。
    w1002258611
        74
    w1002258611  
       2018-09-27 16:08:19 +08:00
    @Lentin 高铁也有站票的
    akira
        75
    akira  
       2018-09-27 16:14:30 +08:00
    同程有你要的这个选项
    DeutschXP
        76
    DeutschXP  
       2018-09-27 16:17:08 +08:00 via iPhone
    还是因为票价太便宜,思维意识就不一样。铁路觉得我在履行社会责任,自然不会把乘客当做客户。
    先把票价翻 5 倍,跟国际接轨,大家就真的开始有选择了,铁路就会有竞争意识了。
    helionzzz
        77
    helionzzz  
       2018-09-27 16:20:12 +08:00
    @swulling 只有订单逻辑算并发? PV 算不算并发? 还有你的论据里包括黄牛刷票软件和退票改签的数据么?
    JerryCha
        78
    JerryCha  
       2018-09-27 16:29:55 +08:00
    @bk201 二等座 /硬座和无座票事实上就是一样的,座位本身是赠品。
    bk201
        79
    bk201  
       2018-09-27 16:34:17 +08:00
    @DeutschXP 你这思维...关键问题在于票价么?个人认为关键问题在于城市发展不均衡,一个长假就跟人口大迁徙一样,放到哪个国家,哪个公司都一样.
    jmk92
        80
    jmk92  
       2018-09-27 16:35:36 +08:00
    IF (扣票失败){

    }
    GavinJ
        81
    GavinJ  
       2018-09-27 16:45:08 +08:00
    因为, 无座票价 = 有座票价。 他们认为你上车了就得买票,只是先来的有座,后来的无座。

    同样是 站票 为何要跟有座的出一样的钱, 那是一个道理,找谁说理去。
    mytsing520
        82
    mytsing520  
       2018-09-27 16:47:00 +08:00
    铁路涉及到交易的部分其实比重不大,比重大的在于查询。至于交易这部分,铁路交易的逻辑和淘宝交易的根本不一样(每成交一次交易,买票也好,改签也好,退票也好,都涉及这条路线上所有关系的变化,可以说是牵一发而动全身),不然当年马云和 IBM 也不会说根本做不了这种话。
    现在 12306 自身的云平台主要负责的是交易,由阿里云承担大部分查询功能,查票这种稍微简单点的逻辑一般人还是能做的。

    核心问题是,你要求人家一夜之间满足所有人,这……
    ooee2016
        83
    ooee2016  
       2018-09-27 16:50:55 +08:00 via iPhone
    等你抢票的时候你又觉得干嘛要让我点直接分配无座不就好了
    swulling
        84
    swulling  
       2018-09-27 16:51:28 +08:00
    @helionzzz 静态页面、查询功能这种难度就太低了。从 lz 可以看到 12306 的余票不是实时的,是有 cache 的,这样别说百万并发了,亿万都没有什么难度。退票的限制太多,真正的退票请求也很少。

    最难的就是订单处理。
    Lanke0
        85
    Lanke0  
       2018-09-27 16:54:22 +08:00
    感觉你们搞错了点问题。

    你去买票,最低期望是至少能买到票,所以自动随机分配到无座是合理的。
    但是得有个选项,我不希望买到无座票。至于难度什么的,这个尽量去实现出来当然是最好的
    galikeoy
        86
    galikeoy  
       2018-09-27 16:55:23 +08:00
    @dremy 不,这是一个按钮的事,是否自动分配无座
    wolfie
        87
    wolfie  
       2018-09-27 16:57:29 +08:00
    12306 官网没什么体验。

    不过你这个提的问题,还真觉得属于正常,换你会怎么设计。
    romisanic
        88
    romisanic  
       2018-09-27 17:00:31 +08:00
    @swulling 曾经有一波人也这么觉得,在 12306 刚推出来当年春运高峰抢票崩溃之后收罗了一大波人要自己做一套秒杀 12306 的系统,结果在设计阶段就 GG 了,因为真正去做的时候才能意识到真正的复杂和面临的各种技术上的压力。
    可以去搜一下,主要发起人在项目失败之后还专门做了分析并发表出来了。
    凭想象是解决不了问题的。
    kimqcn
        89
    kimqcn  
       2018-09-27 17:00:32 +08:00
    这个按钮,需要 100 个人,2 个月,3000 万来改.改完了还要上电视:12306 体贴民情,升级系统...
    Bingbing
        90
    Bingbing  
       2018-09-27 17:06:45 +08:00
    今儿给同事抢票也遇到了,后来因为取消订单次数过多只能明天接着刷票了。。。
    ThirdFlame
        91
    ThirdFlame  
       2018-09-27 17:29:29 +08:00
    12306bypass 或者 智行 。 智行的话 不用加加速包,得到抢到了让你付款 会强行加 20,这个时候登录 12306 付款 即可,不用付 20 了。
    iPhone8
        92
    iPhone8  
       2018-09-27 17:33:33 +08:00 via iPhone
    我也怀疑为什么高铁北方就没无座票,南方一堆无座票
    passerbytiny
        93
    passerbytiny  
       2018-09-27 17:34:49 +08:00
    楼主,以及楼上提供解决方案的和分析技术原因的,你们要么是无意,要么是刻意忽略一个事实:铁路卖的是票,不是座,二等硬座票跟无座票是同一档次的票。要行政法规明示的火车票价,怎么可能出现票价相同但档次不同的票。

    既然是同一档票,那么因为并发环境出票的时候正好没有座了,自然是直接给你出无座票。你要觉得无座票不好,你有退的自由。你要是觉得别人可能会退票,你想现在不出票等一会看看,不好意思,你后面还排着队呢,你去重新排队吧,但是你排过来的时候可能无座票都没了。你要是觉得网上能够随机抢,不好意思,曾经有这想法的人太多导致资源严重浪费,所以我们屏蔽了这种手段。

    你们应该吐槽的是,无座票为什么跟二等硬座票的价格是一样的。这两者票价要不一样,12306 绝对不敢这么出票。

    楼主举得买牛肉例子就是扯淡,买菜从来是钱货同时或者先货后钱,哪个 13 回先钱后货。另外就算买牛肉先钱后货,那类比到火车票上也是没新鲜牛肉的时候,跟你换成冰箱里存的牛肉。
    ChopinWong
        94
    ChopinWong  
       2018-09-27 17:36:29 +08:00
    海外用户表示根本没办法买票。end of story。
    就不说 他没有英文界面和收据这种东西了。我们的财务也很头疼啊。
    zarte
        95
    zarte  
       2018-09-27 17:50:38 +08:00
    应该是像 93 楼说的那样,如果有这个功能很多人会一直抢有座的票导致队列很长,尤其是抢票软件。
    passerbytiny
        96
    passerbytiny  
       2018-09-27 18:04:52 +08:00
    关于楼主的这句话:“关键是我不要无座啊,如果确实一直抢不到二等座,我可以坐飞机,坐大巴,还有备选项嘛”,不支持这种操作的原因,可能只是纯技术原因,就是为了减小资源浪费。

    铁路这种大体量的系统,应该是分布式并且异步的,购票流程类似这样:
    一、购票人查询是否有二等座 /无座这一档次的票
    二、购票人确认有票后下单
    三、下单时锁票
    三 A、如果有座,锁座票,跳到四
    三 B、如果有无座票,锁无座票,跳到四
    三 C、如果无座票也没有了,跳到分支 A
    四、提示下单成功
    五、支付
    六、购票完成

    分支 A 一、提示下单失败,提示已经没有票了,高级一点的再给个哪里还有票的友情提示
    中间可能还有未支付、取消订单等其它分支,但是加上一天取消不能超过三次这种限制后所有分支加起来,一个人一天的购票过程中,能走到锁票步骤的,不会超过十次。

    如果要满足楼主的需求,那就要改锁票过程了,加一个判断:如果只有无座票,那么跳刀分支 X ——提示无座,再跳回到一,然后循环。重点是这个循环,有了这个循环,一个人一天的购票过程中,就有无数次的可能会走到锁票这个步骤。别提加循环次数限制,要是限制次数,这个功能等于没用,所以不如直接不提供功能。

    查询过程可以通过 CQRS、缓存等,压力并不大,但是锁票过程,涉及到跟票务库存之间的强一致性,压力是很大的。
    loveour
        97
    loveour  
       2018-09-27 18:13:10 +08:00
    @passerbytiny #96 感觉有个出发点的问题,就是铁路部门会默认用户更希望买到票,它自己也更倾向售出票。因为其实如果从更人性化角度来看,不需要复杂的逻辑,只需要用户提前选择没有座位的时候是否买无座就好了,不需要改锁票流程。选了就是不要无座的没有有座票就直接跳到失败就行了。
    jmk92
        98
    jmk92  
       2018-09-27 18:36:57 +08:00
    1、加一个选项,到底要不要无座,根据每个用户自定义设置,这并没有那么复杂,直接的跳出,并不会影响强一致性。
    2、复杂的在于,如果区分了无座和有座,那么整体的结构要改动的比较多,比如:
    查票的时候就要区分,避免用户再次进入订单逻辑
    进入订单逻辑的时候,也要把二等座和硬座的情况单独处理,分成两种情况
    最终扣票的时候,如果没有有座的票了,也要分两种情况
    3、这个需求,相较于整体来说,算是比较小的一个功能了,但是往往牵一发而动全身,这也是必然。
    4、你说这个功能超级复杂,根本实现不了,这个我不信,拿出来对付抢票软件的五分之一的精力也实现了。
    关键还是在于想不想做,很多用户才不会关心这些事,他们只关心为何总是无座,无座一次也就罢了,无座了 3 次今天连票都买不了了,能不吐槽吗?继续无视,那这个矛盾只会继续下去,咱们讨论有意义吗?
    当然,这换做是阿里、腾讯,任何一个私企,我相信被骂个几次,早就改了,不会留到现在。
    rocketman13
        99
    rocketman13  
       2018-09-27 18:40:42 +08:00
    因为价钱是一样的,被看成是同一款产品了
    passerbytiny
        100
    passerbytiny  
       2018-09-27 18:44:42 +08:00 via Android
    @loveour 你的出发点可不是只买一次并且只买有座票,而是尝试多次并且只买有座票。
    如果是前者,现在已经实现了,给了你三次取消订单的机会。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1368 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 17:38 · PVG 01:38 · LAX 10:38 · JFK 13:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.