由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 乱砍两句火车订票
相关主题
古德霸啊古德霸,不打你脸是不行了在讨论12306前
关于计数器,我有一个疑问魏公公,赌局我接了,你把500万/秒的订票系统做出来
100%和必需出票属于没戏了老魏号称100%出票,现在的算法有碎片化问题吧。
春运票务,淘宝,Cassandra还有一个问题
春运问题的根本是运力不足,不说明网上售票没有用有人看懂赵老师的 100% 出票什么概念没有?
我说老 bug,给个数据库模型大家学习学习赵老师那个pool更好做
12306仍然一塌糊涂出票正确率的定义,赵,姜请进。
goodbug看过来,欠你的一个道歉这5000车次是一天的票吗?
相关话题的讨论汇总
话题: 出票话题: 火车话题: 旅客话题: 车次话题: 优化
进入Programming版参与讨论
1 (共1页)
B****D
发帖数: 132
1
先声明, 不清楚目前系统的问题. 只看了两眼讨论.
我觉得, 从THINK OUT OF BOX 角度来说, 火车订票不一定需要跟飞机定票一样的下单
出票. 做几个假设.
1. 假设运力小于需求量.
在这个前提下, 火车出票还需要做到尽可能地把每辆车塞满. 因此, 它还是个座位优化
问题. 我坐高铁注意到这个问题. 起发站坐满了. 中间人下去了, 很长时间内空着, 到
了个大站又上满了.
2. 火车可以有一定数量的站票. 这跟飞机不一样. 事实上, 飞机定票在高峰期一般也
是略微过订的, 否则也不会有在机场喇叭广播谁愿意晚一班, 白给200元的事情了.
3. 春运的人, 一般时间上有弹性. 早一天, 晚一天, 只要不过了大年三十, 很多人不
在乎. 同样, 是早上十点, 还是下午两点的火车, 大多数人不在乎.
4. 春运期间, 可以临时加火车.
我觉得一种可行的办法是:
1. 每天12小时让旅客下单. 当场不出票, 第二天出. 这样, 只有前台有压力, 后台只
需要记录需求, 不需要加锁查看资源.
2. 每个旅客只能下两单, 春节前一单, 之后一单. 多下的单自动被取消. (或者让旅客
自己选择取消).
3. 旅客需要给出时间选择. 必须当天的加10%车费, 灵活的不加. 必须某车次的加10%
车费, 灵活的不加. 假设有10,000个车站, 那么总共有1亿种可能的旅行请求. 这个可
以事先预处理, 对每种请求给出三到五种选择, 让旅客选择排序.
4. 当每天的所有单都下完后, MAP REDUCE 查看每车次每站的需求. 然后根据现有车票
情况进行优化调整. 每车次可以上浮2% 的站票. 如果某车段严重超载, 可以考虑加一
车次.
5. 第二天统一对前一天请求出票.
s*****e
发帖数: 16824
2
你这个假设有问题,回去过年的人不是对时间不敏感,而是非常敏感。第一,假期有限
,早一天回家就多享受一天假。第二,很多人下了火车还要转汽车,点对不上很麻烦。
第三,很多活动比如年夜饭都是很早就订好的。所以买票人必须实时知道票买到了没有
。如果拖到第二天才知道那可能整个行程就毁了。而且不实时的系统容易被怀疑有人为
做手脚。

【在 B****D 的大作中提到】
: 先声明, 不清楚目前系统的问题. 只看了两眼讨论.
: 我觉得, 从THINK OUT OF BOX 角度来说, 火车订票不一定需要跟飞机定票一样的下单
: 出票. 做几个假设.
: 1. 假设运力小于需求量.
: 在这个前提下, 火车出票还需要做到尽可能地把每辆车塞满. 因此, 它还是个座位优化
: 问题. 我坐高铁注意到这个问题. 起发站坐满了. 中间人下去了, 很长时间内空着, 到
: 了个大站又上满了.
: 2. 火车可以有一定数量的站票. 这跟飞机不一样. 事实上, 飞机定票在高峰期一般也
: 是略微过订的, 否则也不会有在机场喇叭广播谁愿意晚一班, 白给200元的事情了.
: 3. 春运的人, 一般时间上有弹性. 早一天, 晚一天, 只要不过了大年三十, 很多人不

s*****r
发帖数: 43070
3
铁路长途车会有区间限售,春运期间基本都是点到点销售,不会只卖一小段车票。优化
原则就是,从起点开始,离终点越近越好。不少人买不到中间站的票,就只能买到终点
的。

【在 B****D 的大作中提到】
: 先声明, 不清楚目前系统的问题. 只看了两眼讨论.
: 我觉得, 从THINK OUT OF BOX 角度来说, 火车订票不一定需要跟飞机定票一样的下单
: 出票. 做几个假设.
: 1. 假设运力小于需求量.
: 在这个前提下, 火车出票还需要做到尽可能地把每辆车塞满. 因此, 它还是个座位优化
: 问题. 我坐高铁注意到这个问题. 起发站坐满了. 中间人下去了, 很长时间内空着, 到
: 了个大站又上满了.
: 2. 火车可以有一定数量的站票. 这跟飞机不一样. 事实上, 飞机定票在高峰期一般也
: 是略微过订的, 否则也不会有在机场喇叭广播谁愿意晚一班, 白给200元的事情了.
: 3. 春运的人, 一般时间上有弹性. 早一天, 晚一天, 只要不过了大年三十, 很多人不

g*****g
发帖数: 34805
4
优化啥呀,每天1000趟车,一趟车3种座位,20个区段,就当作6万种商品,每种商品有
个计数器。
下单就是把所有的跑的段-1。 RDBMS transaction保证integrity, 前面都算过,每天
放票10次,每次
最多4分钟也处理完了。
B****D
发帖数: 132
5
这么说吧, 有些人对时间敏感, 有些人不敏感. 如果对时间要求高, 多交钱就好了.
也可以实时出票, 加一倍钱就好了. 等大家发现等一天出票也很可靠后, 想实时出票的
人就少了.
对系统的怀疑不是问题. 开源,请多家公司联合鉴定都可以.

【在 s*****e 的大作中提到】
: 你这个假设有问题,回去过年的人不是对时间不敏感,而是非常敏感。第一,假期有限
: ,早一天回家就多享受一天假。第二,很多人下了火车还要转汽车,点对不上很麻烦。
: 第三,很多活动比如年夜饭都是很早就订好的。所以买票人必须实时知道票买到了没有
: 。如果拖到第二天才知道那可能整个行程就毁了。而且不实时的系统容易被怀疑有人为
: 做手脚。

B****D
发帖数: 132
6
想简单了. 你如果在AMAZON做过, 就明白BUNDLE做起来是很不一样的.
举个例子. 两班车, 都从A->B->C->D. 顾客有要求A->B的. 有要求C->D的. 也有A->C的
, B->D的. 如果最大满足, 是个优化问题.
即使最后你剩了第一班车的 A->B, 第二班车的B->C. 如果来个顾客要A->C, 你让他中
间在B换车, 他愿意么?

【在 g*****g 的大作中提到】
: 优化啥呀,每天1000趟车,一趟车3种座位,20个区段,就当作6万种商品,每种商品有
: 个计数器。
: 下单就是把所有的跑的段-1。 RDBMS transaction保证integrity, 前面都算过,每天
: 放票10次,每次
: 最多4分钟也处理完了。

g*****g
发帖数: 34805
7
没啥不合理的,先来后到而已,你也可以预设多少张票必须从某个站始发,多少张票必
须跑全程之类的,这个无非就
是细分商品种类而已,游戏规则是开发者定的。
我刚才说的商品数目只有几万种,你细分100倍,到几百万种也不多。数据库的性能主
要是由交易数目和锁row conflict多少决定的,你分的越细,conflict越少,性能反而
提高。

【在 B****D 的大作中提到】
: 想简单了. 你如果在AMAZON做过, 就明白BUNDLE做起来是很不一样的.
: 举个例子. 两班车, 都从A->B->C->D. 顾客有要求A->B的. 有要求C->D的. 也有A->C的
: , B->D的. 如果最大满足, 是个优化问题.
: 即使最后你剩了第一班车的 A->B, 第二班车的B->C. 如果来个顾客要A->C, 你让他中
: 间在B换车, 他愿意么?

B****D
发帖数: 132
8
为什么一定要加锁呢? 不加, 性能才最佳.

【在 g*****g 的大作中提到】
: 没啥不合理的,先来后到而已,你也可以预设多少张票必须从某个站始发,多少张票必
: 须跑全程之类的,这个无非就
: 是细分商品种类而已,游戏规则是开发者定的。
: 我刚才说的商品数目只有几万种,你细分100倍,到几百万种也不多。数据库的性能主
: 要是由交易数目和锁row conflict多少决定的,你分的越细,conflict越少,性能反而
: 提高。

g*****g
发帖数: 34805
9
不锁就不能保证integrity, 票可以重卖少卖。

【在 B****D 的大作中提到】
: 为什么一定要加锁呢? 不加, 性能才最佳.
L******f
发帖数: 5368
10
可以不加锁,但是数据库必须自己开发。
用shared memory。几百个数据库
机器共享。Integrity Check由
每个机器自己做,在share memory
上写的时候,只锁要写得部分。
这样,几百个机器就可以同步
实时更新数据库。
这里有一个问题。万一死机的话,
shared memory就要全部丢失。
为了解决这个问题,必须有一个
master machine, 不停地
把shared memory写到硬盘。
万一死机,把master machine
上硬盘数据恢复到shared memory.

【在 g*****g 的大作中提到】
: 不锁就不能保证integrity, 票可以重卖少卖。
相关主题
我说老 bug,给个数据库模型大家学习学习在讨论12306前
12306仍然一塌糊涂魏公公,赌局我接了,你把500万/秒的订票系统做出来
goodbug看过来,欠你的一个道歉老魏号称100%出票,现在的算法有碎片化问题吧。
进入Programming版参与讨论
g*****g
发帖数: 34805
11
有成熟方案,非要自己做轮子的,项目基本以失败结束。

【在 L******f 的大作中提到】
: 可以不加锁,但是数据库必须自己开发。
: 用shared memory。几百个数据库
: 机器共享。Integrity Check由
: 每个机器自己做,在share memory
: 上写的时候,只锁要写得部分。
: 这样,几百个机器就可以同步
: 实时更新数据库。
: 这里有一个问题。万一死机的话,
: shared memory就要全部丢失。
: 为了解决这个问题,必须有一个

s******a
发帖数: 527
12
我觉得12306刚出的时候就是用你这样的方案,然后发现,抢票的时候所有人的页面就
是等几分钟没响应,终于有响应的时候告诉你没票。于是纷纷上网狂骂。。。

【在 g*****g 的大作中提到】
: 优化啥呀,每天1000趟车,一趟车3种座位,20个区段,就当作6万种商品,每种商品有
: 个计数器。
: 下单就是把所有的跑的段-1。 RDBMS transaction保证integrity, 前面都算过,每天
: 放票10次,每次
: 最多4分钟也处理完了。

k**i
发帖数: 10191
13
如果你是对的,这个脸打的厉害。关键是半桶水响叮当,做这个项目的人和公司经验知
识储备都不够。

【在 s******a 的大作中提到】
: 我觉得12306刚出的时候就是用你这样的方案,然后发现,抢票的时候所有人的页面就
: 是等几分钟没响应,终于有响应的时候告诉你没票。于是纷纷上网狂骂。。。

N********d
发帖数: 298
14
你这个第二天出票会被活活骂死,所有没拿到票的人都会说这一晚上是暗箱操作的时间

【在 B****D 的大作中提到】
: 先声明, 不清楚目前系统的问题. 只看了两眼讨论.
: 我觉得, 从THINK OUT OF BOX 角度来说, 火车订票不一定需要跟飞机定票一样的下单
: 出票. 做几个假设.
: 1. 假设运力小于需求量.
: 在这个前提下, 火车出票还需要做到尽可能地把每辆车塞满. 因此, 它还是个座位优化
: 问题. 我坐高铁注意到这个问题. 起发站坐满了. 中间人下去了, 很长时间内空着, 到
: 了个大站又上满了.
: 2. 火车可以有一定数量的站票. 这跟飞机不一样. 事实上, 飞机定票在高峰期一般也
: 是略微过订的, 否则也不会有在机场喇叭广播谁愿意晚一班, 白给200元的事情了.
: 3. 春运的人, 一般时间上有弹性. 早一天, 晚一天, 只要不过了大年三十, 很多人不

g*****g
发帖数: 34805
15
为啥会几分钟没响应,当然是立刻响应跟你说会发短信邮件通知结果。还给个确认号。
你看都现在的现象就是都排着呢,没等排到处理,timeout了。不懂瞎说的还挺多。

【在 s******a 的大作中提到】
: 我觉得12306刚出的时候就是用你这样的方案,然后发现,抢票的时候所有人的页面就
: 是等几分钟没响应,终于有响应的时候告诉你没票。于是纷纷上网狂骂。。。

w*********m
发帖数: 4740
16
先来后到就是greedy algo, 不是最大化整体运力
交通学科了已经用博弈论研究过这类问题几十年了
cs某年acm最佳phd disertation搞self routing就是从交通工程里借用了其idea

【在 g*****g 的大作中提到】
: 没啥不合理的,先来后到而已,你也可以预设多少张票必须从某个站始发,多少张票必
: 须跑全程之类的,这个无非就
: 是细分商品种类而已,游戏规则是开发者定的。
: 我刚才说的商品数目只有几万种,你细分100倍,到几百万种也不多。数据库的性能主
: 要是由交易数目和锁row conflict多少决定的,你分的越细,conflict越少,性能反而
: 提高。

g*****g
发帖数: 34805
17
优化可以有,比如按照历史数据各站预留票,这样不会中间站的上不了,一直都是这么
做的。
但公平才是最重要的,反正热门票怎么都是卖光。

【在 w*********m 的大作中提到】
: 先来后到就是greedy algo, 不是最大化整体运力
: 交通学科了已经用博弈论研究过这类问题几十年了
: cs某年acm最佳phd disertation搞self routing就是从交通工程里借用了其idea

l*****9
发帖数: 9501
18
全程票历来是优先的,但是中间客站也会留些票。网上订票一大好处是计划临客,如果
有waiting list的话,可惜做12306的技术团队比较废物

【在 g*****g 的大作中提到】
: 优化可以有,比如按照历史数据各站预留票,这样不会中间站的上不了,一直都是这么
: 做的。
: 但公平才是最重要的,反正热门票怎么都是卖光。

p********5
发帖数: 49
19
僧多粥少一直是国内资源和运力的诟病。除了人口总数下降,或者年青一代努力改变。
其实大家也习惯了这种环境,有时候想想日本人这些方面做得很好,日本人口密度不比
中国小。车站,住房更加拥挤。但是一直有一种好的秩序。
还是要把争抢的风气逐渐淡化,社会资源才能更好的分配。
b*****g
发帖数: 2322
20
其实系统应该跟Kayak,或者expedia学习,这跟回国买飞机票差不多,早定比晚定便宜
,立刻走你想要得班次就要天价,转乘要比直达便宜。
系统根据库存情况自动optimize价格。
m**********j
发帖数: 8645
21
这话说的真烂。
春运买票回家,买到了就能回,买不到就回不了。
跟你去年回国似的。你假请好了,就是买不到票,或者比你计划要晚半个月才有票。

【在 p********5 的大作中提到】
: 僧多粥少一直是国内资源和运力的诟病。除了人口总数下降,或者年青一代努力改变。
: 其实大家也习惯了这种环境,有时候想想日本人这些方面做得很好,日本人口密度不比
: 中国小。车站,住房更加拥挤。但是一直有一种好的秩序。
: 还是要把争抢的风气逐渐淡化,社会资源才能更好的分配。

m**********j
发帖数: 8645
22
kayak或者expedia面对过几千万人要在同一天南北大搬家吗?

【在 b*****g 的大作中提到】
: 其实系统应该跟Kayak,或者expedia学习,这跟回国买飞机票差不多,早定比晚定便宜
: ,立刻走你想要得班次就要天价,转乘要比直达便宜。
: 系统根据库存情况自动optimize价格。

1 (共1页)
进入Programming版参与讨论
相关主题
这5000车次是一天的票吗?春运问题的根本是运力不足,不说明网上售票没有用
问个Hadoop Word Count的简单问题我说老 bug,给个数据库模型大家学习学习
Please recommend embedded RDBMS for .Net 2.0 (转载)12306仍然一塌糊涂
现在飞机票比火车票贵不了多少了吧goodbug看过来,欠你的一个道歉
古德霸啊古德霸,不打你脸是不行了在讨论12306前
关于计数器,我有一个疑问魏公公,赌局我接了,你把500万/秒的订票系统做出来
100%和必需出票属于没戏了老魏号称100%出票,现在的算法有碎片化问题吧。
春运票务,淘宝,Cassandra还有一个问题
相关话题的讨论汇总
话题: 出票话题: 火车话题: 旅客话题: 车次话题: 优化