由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 锁票是12306 的重要组成部分
相关主题
讨论一下12306的架构?node.js使用感受 献800题大牛
12306 妙杀关于node的讨论进这里吧
用一个C++面试题challenge一下大家Go 有人知道吗?
谁能说说同步/异步IO和阻塞/非阻塞IO的区别?请问多线程怎么准备
EMAIL is the WORST WAY to find HR请问牛人,应该怎样学JMS?
异步写文件的问题问一个F的设计题
异步电路master找工作求建议现在网站登录一次,每个新tab都能识别,是怎么做的?
响应800题大牛的号召设计一个类似dropbox的web server
相关话题的讨论汇总
话题: 锁票话题: 联票话题: 12306话题: 支付话题: 实时
进入JobHunting版参与讨论
1 (共1页)
s**x
发帖数: 7506
1
锁票跟票卖不出去了差不多,只是还没真正卖出去,锁票应该有合理的时间限制,比如
10 分钟,差不多是支付交割完成的两三倍吧。
锁票是实时响应的关键,买票必须锁票,一旦锁票,票就相当于卖出了,万一用户支付
失败,就把票解锁,释放票源。
有了锁票,联票问题应刃而解,100 张联票,就并行发100个锁票请求,有一个失败,
就告诉用户失败,成功了,就进入支付交割,完成购票,支付失败,就把所有先前锁住
的票解锁。
整个购票时间应该取决于支付交割,支付交割期间不应该影响别人的买票过程。
有什么问题吗?
s**x
发帖数: 7506
2
联票问题很简单,也可以看成一个nice to have feature, not a must to have.
借口联票很难,把系统做成批处理要求用戸等一小时,更是愚不可及。
有了实时的非联票系统,用户可以自己顶联票,有几段没票,就全部退票,这有点笨,
也证明联票其实是可有可无的feature. 一个实时系统才是关键。
购团体票,联票一个道理。
g*****g
发帖数: 34805
3
LOL, 联票是 12306现有的 feature,你丫说 nice to have, 老板同意了吗?

【在 s**x 的大作中提到】
: 联票问题很简单,也可以看成一个nice to have feature, not a must to have.
: 借口联票很难,把系统做成批处理要求用戸等一小时,更是愚不可及。
: 有了实时的非联票系统,用户可以自己顶联票,有几段没票,就全部退票,这有点笨,
: 也证明联票其实是可有可无的feature. 一个实时系统才是关键。
: 购团体票,联票一个道理。

s**x
发帖数: 7506
4

你的阅读理解小学没毕业吧?请不要参与讨论。我是想分享给能理解的人。

【在 g*****g 的大作中提到】
: LOL, 联票是 12306现有的 feature,你丫说 nice to have, 老板同意了吗?
g*****g
发帖数: 34805
5
就你这个锁票过程,你觉得能每秒20万?你丫就没写过啥高并发系统,别出来现了。

【在 s**x 的大作中提到】
:
: 你的阅读理解小学没毕业吧?请不要参与讨论。我是想分享给能理解的人。

s**x
发帖数: 7506
6

我们讨论的是每秒上千万的情况。每秒20万可以雇20万民工,一人一个马扎手工办理。

【在 g*****g 的大作中提到】
: 就你这个锁票过程,你觉得能每秒20万?你丫就没写过啥高并发系统,别出来现了。
s*****r
发帖数: 43070
7
你这是pessimistic locking,在大并发的情况根本无可能使用

【在 s**x 的大作中提到】
: 锁票跟票卖不出去了差不多,只是还没真正卖出去,锁票应该有合理的时间限制,比如
: 10 分钟,差不多是支付交割完成的两三倍吧。
: 锁票是实时响应的关键,买票必须锁票,一旦锁票,票就相当于卖出了,万一用户支付
: 失败,就把票解锁,释放票源。
: 有了锁票,联票问题应刃而解,100 张联票,就并行发100个锁票请求,有一个失败,
: 就告诉用户失败,成功了,就进入支付交割,完成购票,支付失败,就把所有先前锁住
: 的票解锁。
: 整个购票时间应该取决于支付交割,支付交割期间不应该影响别人的买票过程。
: 有什么问题吗?

b*******s
发帖数: 5216
8
I have a better idea on this

【在 s**x 的大作中提到】
: 联票问题很简单,也可以看成一个nice to have feature, not a must to have.
: 借口联票很难,把系统做成批处理要求用戸等一小时,更是愚不可及。
: 有了实时的非联票系统,用户可以自己顶联票,有几段没票,就全部退票,这有点笨,
: 也证明联票其实是可有可无的feature. 一个实时系统才是关键。
: 购团体票,联票一个道理。

s**x
发帖数: 7506
9

Why?

【在 s*****r 的大作中提到】
: 你这是pessimistic locking,在大并发的情况根本无可能使用
s**x
发帖数: 7506
10

My is the best, simple, efficient, and just works

【在 b*******s 的大作中提到】
: I have a better idea on this
相关主题
异步写文件的问题node.js使用感受 献800题大牛
异步电路master找工作求建议关于node的讨论进这里吧
响应800题大牛的号召Go 有人知道吗?
进入JobHunting版参与讨论
g*****g
发帖数: 34805
11
Everybody says that before their code is put in test.

【在 s**x 的大作中提到】
:
: My is the best, simple, efficient, and just works

s**x
发帖数: 7506
12

I am pretty I donot even test your code. Let user wait for one hour to buy a
ticket? Come on.

【在 g*****g 的大作中提到】
: Everybody says that before their code is put in test.
y******u
发帖数: 804
13
“一个小时才能决定能不能上厕所”的方案就不要拿出来现了...

【在 g*****g 的大作中提到】
: Everybody says that before their code is put in test.
g*****g
发帖数: 34805
14
LOL, 你提出一个更好的,丢单叫实时。先学点基本概念好不好?

【在 y******u 的大作中提到】
: “一个小时才能决定能不能上厕所”的方案就不要拿出来现了...
y******u
发帖数: 804
15
i'm with sdlx on this.
不要忘了支付跟银行或支付宝打一个来回,也是秒级的。再高并发,你也得cope with
这个事实。各位,请去12306买一张票再喷吧

【在 s**x 的大作中提到】
: 锁票跟票卖不出去了差不多,只是还没真正卖出去,锁票应该有合理的时间限制,比如
: 10 分钟,差不多是支付交割完成的两三倍吧。
: 锁票是实时响应的关键,买票必须锁票,一旦锁票,票就相当于卖出了,万一用户支付
: 失败,就把票解锁,释放票源。
: 有了锁票,联票问题应刃而解,100 张联票,就并行发100个锁票请求,有一个失败,
: 就告诉用户失败,成功了,就进入支付交割,完成购票,支付失败,就把所有先前锁住
: 的票解锁。
: 整个购票时间应该取决于支付交割,支付交割期间不应该影响别人的买票过程。
: 有什么问题吗?

g*****g
发帖数: 34805
16
就数据库里建个表,随机做点加减法。测试一下能有多少并发你就知道这事有多难了。
几个没经验的菜鸟就会装逼。
y******u
发帖数: 804
17
请定义下我的“丢票”好吗?(中文确实不够精确)
只要用户开始支付行为,肯定要锁票了,直到支付成功,finalize出票,或者支付失败
,rollback票。涉及钱的不能瞎来。
在此之前票卖完了没了,你做好前端交互解释清楚就行了。

【在 g*****g 的大作中提到】
: LOL, 你提出一个更好的,丢单叫实时。先学点基本概念好不好?
y******u
发帖数: 804
18
请精确定义或举例说明你的随机加减法
我看看是有多难,或者跟我们的问题relevant

【在 g*****g 的大作中提到】
: 就数据库里建个表,随机做点加减法。测试一下能有多少并发你就知道这事有多难了。
: 几个没经验的菜鸟就会装逼。

y******u
发帖数: 804
19
想继续讨论的,请认真看完参与的阿里工程师的说明(高票回答)
http://www.zhihu.com/question/27321479
g*****g
发帖数: 34805
20
实时系统,请求必须处理。每秒进来20万请求,数据库只能处理10万,另外10万扔掉,
不叫实时系统。12306现在就是这么做的。
都没响应还要死撑叫实时。

【在 y******u 的大作中提到】
: 请定义下我的“丢票”好吗?(中文确实不够精确)
: 只要用户开始支付行为,肯定要锁票了,直到支付成功,finalize出票,或者支付失败
: ,rollback票。涉及钱的不能瞎来。
: 在此之前票卖完了没了,你做好前端交互解释清楚就行了。

相关主题
请问多线程怎么准备现在网站登录一次,每个新tab都能识别,是怎么做的?
请问牛人,应该怎样学JMS?设计一个类似dropbox的web server
问一个F的设计题REST API的基础怎么准备?design怎么准备?
进入JobHunting版参与讨论
g*****g
发帖数: 34805
21
很好,13年初讨论这个系统的时候。我就提了解决方案,读写分离,异步出票,云计算
。当时阿里还没参与进来。你要是看看讨论就发现我说得这几条都做了,不是什么计数
器。嘲笑我用异步的直接被打脸了。

【在 y******u 的大作中提到】
: 想继续讨论的,请认真看完参与的阿里工程师的说明(高票回答)
: http://www.zhihu.com/question/27321479

y******u
发帖数: 804
22
发现你很喜欢模糊概念而从中获利
你那个“一小时才能决定能不能上厕所”的“异步”,跟异步中间件是一回事吗?

【在 g*****g 的大作中提到】
: 很好,13年初讨论这个系统的时候。我就提了解决方案,读写分离,异步出票,云计算
: 。当时阿里还没参与进来。你要是看看讨论就发现我说得这几条都做了,不是什么计数
: 器。嘲笑我用异步的直接被打脸了。

y******u
发帖数: 804
23
你就说说你handle过的最高qps是多少吧?说一下领域(搜索、广告、社交、游戏,etc
),让懂行的看看数字靠不靠谱吧
是,我确实没啥值得说道的~

【在 g*****g 的大作中提到】
: 就数据库里建个表,随机做点加减法。测试一下能有多少并发你就知道这事有多难了。
: 几个没经验的菜鸟就会装逼。

g*****g
发帖数: 34805
24
异步队列,前后分离是一种架构。至于是实时还是一个小时完全取决于流量和处理能力
。不就是一个水坝吗,你连这个都不能理解还出来现。

【在 y******u 的大作中提到】
: 发现你很喜欢模糊概念而从中获利
: 你那个“一小时才能决定能不能上厕所”的“异步”,跟异步中间件是一回事吗?

y******u
发帖数: 804
25
哦,你现在不发email跟短信了啦。抱着mq转进喽~你高兴就好!

【在 g*****g 的大作中提到】
: 异步队列,前后分离是一种架构。至于是实时还是一个小时完全取决于流量和处理能力
: 。不就是一个水坝吗,你连这个都不能理解还出来现。

g*****g
发帖数: 34805
26
它如果没有那么多订单,而且数据库快,自然不需要异步通知。所有这种实现都是设定
一个时限,比如30秒,超过了还没结果就只返回订单信息。否则直接页面返回订票确认
。email, 短信还是要发的。
这就是常见的设计,多新鲜呀。如果持续20万单,10万处理能力,你让前台转呀转转一
个小时处理了,就叫做实时了?有的常识好不好。

【在 y******u 的大作中提到】
: 哦,你现在不发email跟短信了啦。抱着mq转进喽~你高兴就好!
s**x
发帖数: 7506
27

你连什么是分布式都不知道,一个车次,算一台机器,一万张票,算10秒订完好了,后
来的全是read only, 全部并发。
我说你还是去实现我那个简化版吧,联票你脑子不够使。

【在 g*****g 的大作中提到】
: 就数据库里建个表,随机做点加减法。测试一下能有多少并发你就知道这事有多难了。
: 几个没经验的菜鸟就会装逼。

s**x
发帖数: 7506
28

你连什么是分布式都不知道,一个车次,算一台机器,一万张票,算10秒订完好了,后
来的全是read only, 全部并发。
我说你还是去实现我那个简化版吧,联票你脑子不够使。

【在 g*****g 的大作中提到】
: 就数据库里建个表,随机做点加减法。测试一下能有多少并发你就知道这事有多难了。
: 几个没经验的菜鸟就会装逼。

g*****g
发帖数: 34805
29
你就别装逼了,这个论坛上敢说分布式比我懂的,应该不超过5个人。

【在 s**x 的大作中提到】
:
: 你连什么是分布式都不知道,一个车次,算一台机器,一万张票,算10秒订完好了,后
: 来的全是read only, 全部并发。
: 我说你还是去实现我那个简化版吧,联票你脑子不够使。

s**x
发帖数: 7506
30

你拉倒吧,老兄。你的idea 基本是最弱智的做法。

【在 g*****g 的大作中提到】
: 你就别装逼了,这个论坛上敢说分布式比我懂的,应该不超过5个人。
相关主题
12306最基本的一个问题,用什么数据結構存票?12306 妙杀
12306 的简化版用一个C++面试题challenge一下大家
讨论一下12306的架构?谁能说说同步/异步IO和阻塞/非阻塞IO的区别?
进入JobHunting版参与讨论
g*****g
发帖数: 34805
31
阿里的工程师明显不同意呀。

【在 s**x 的大作中提到】
:
: 你拉倒吧,老兄。你的idea 基本是最弱智的做法。

s**x
发帖数: 7506
32

阿里的什么系统一个小时才有响应?本版五个比你水平差的找一个小时倒有可能。

【在 g*****g 的大作中提到】
: 阿里的工程师明显不同意呀。
g*****g
发帖数: 34805
33
俩菜鸟还死撑。我说得一个小时就是个上限,撑死这么久票也卖光了。12306为啥要分
时抢票呀,不就是为了把票数下一个数量级。本来最多一个小时处理完,立马变成5分
钟,再弄个高大上的内存数据库,你要的实时出来了。
我老人家不喜欢这个设计。早上起来下个单子,出门的时候就知道买没买着多省事。你
还让我跟钟摆似的每个小时去刷一次。但内部异步队列,前后分离还是一样的,这些都
看不出来也别出来丢人现眼了。
s**x
发帖数: 7506
34

etc
Goodbug 看这阵式连个read write lock 都没见过,拿普通数据库去测performance.
订票系统除了总数,每个车厢都可以丷分开并行写,一个车次的所有车票,排着写,不
用flash 估计也用不了10秒。
这么简单的问题丫竟能想出一小时。真是佩服。

【在 y******u 的大作中提到】
: 你就说说你handle过的最高qps是多少吧?说一下领域(搜索、广告、社交、游戏,etc
: ),让懂行的看看数字靠不靠谱吧
: 是,我确实没啥值得说道的~

y******u
发帖数: 804
35
你就说说你handle过的最高qps是多少吧?说一下领域(搜索、广告、社交、游戏,etc
),让懂行的看看数字靠不靠谱吧
是,我确实没啥值得说道的~( ˉ □ ˉ )

【在 g*****g 的大作中提到】
: 俩菜鸟还死撑。我说得一个小时就是个上限,撑死这么久票也卖光了。12306为啥要分
: 时抢票呀,不就是为了把票数下一个数量级。本来最多一个小时处理完,立马变成5分
: 钟,再弄个高大上的内存数据库,你要的实时出来了。
: 我老人家不喜欢这个设计。早上起来下个单子,出门的时候就知道买没买着多省事。你
: 还让我跟钟摆似的每个小时去刷一次。但内部异步队列,前后分离还是一样的,这些都
: 看不出来也别出来丢人现眼了。

g*****g
发帖数: 34805
36
还分着写,你有没有考虑过一个车次几十段,中间不能换座位。有没有考虑过联票。有
没有考虑一单几张票要尽量一个车厢里。我老就不说这种调度系统都是 legacy稳定测
试了
几十年大家都不敢动。
尼玛刷了几道题懂个 lock就不知天高地厚了。我老人家好歹 title是 architect, 你
不服怎地?

【在 s**x 的大作中提到】
:
: etc
: Goodbug 看这阵式连个read write lock 都没见过,拿普通数据库去测performance.
: 订票系统除了总数,每个车厢都可以丷分开并行写,一个车次的所有车票,排着写,不
: 用flash 估计也用不了10秒。
: 这么简单的问题丫竟能想出一小时。真是佩服。

s**x
发帖数: 7506
37

Title 有个屁用. Title 高水平低的人多去了。

【在 g*****g 的大作中提到】
: 还分着写,你有没有考虑过一个车次几十段,中间不能换座位。有没有考虑过联票。有
: 没有考虑一单几张票要尽量一个车厢里。我老就不说这种调度系统都是 legacy稳定测
: 试了
: 几十年大家都不敢动。
: 尼玛刷了几道题懂个 lock就不知天高地厚了。我老人家好歹 title是 architect, 你
: 不服怎地?

g*****g
发帖数: 34805
38
尼玛就事论事你不行,出来瞎叫板。这下又要玩莫须有了?

【在 s**x 的大作中提到】
:
: Title 有个屁用. Title 高水平低的人多去了。

y******u
发帖数: 804
39
你就说说你handle过的最高qps是多少吧?说一下领域(搜索、广告、社交、游戏,etc
),让懂行的看看数字靠不靠谱吧

【在 g*****g 的大作中提到】
: 还分着写,你有没有考虑过一个车次几十段,中间不能换座位。有没有考虑过联票。有
: 没有考虑一单几张票要尽量一个车厢里。我老就不说这种调度系统都是 legacy稳定测
: 试了
: 几十年大家都不敢动。
: 尼玛刷了几道题懂个 lock就不知天高地厚了。我老人家好歹 title是 architect, 你
: 不服怎地?

g*****g
发帖数: 34805
40
我老就没有必要自我人肉了。就事论事而已,我老从来没想拿资历压谁。说我连 lock
都没用过的就是不知天高地厚了。

etc

【在 y******u 的大作中提到】
: 你就说说你handle过的最高qps是多少吧?说一下领域(搜索、广告、社交、游戏,etc
: ),让懂行的看看数字靠不靠谱吧

相关主题
谁能说说同步/异步IO和阻塞/非阻塞IO的区别?异步电路master找工作求建议
EMAIL is the WORST WAY to find HR响应800题大牛的号召
异步写文件的问题node.js使用感受 献800题大牛
进入JobHunting版参与讨论
y******u
发帖数: 804
41
就事论事,不拿资历压人,就不用言必称菜鸟了吧~谢了
那我们言归正传吧

lock

【在 g*****g 的大作中提到】
: 我老就没有必要自我人肉了。就事论事而已,我老从来没想拿资历压谁。说我连 lock
: 都没用过的就是不知天高地厚了。
:
: etc

s*****r
发帖数: 43070
42
还有种伪同步的折中方案
顾客在网页上下单后,后台立刻返回成功。网页上面会隔几秒钟一个ajax call,返回
订单的当前状态
顾客在网页上面看到一个表示等待的图案,就是常见的圆圈,感觉后台在进行实时处理
。后台系统之间都是异步的,通过event被激发
后台处理订单成功后,网页得到成功的信息,会显示订单已经完成。如果订单无法被处
理,网页上会显示失败信息

【在 g*****g 的大作中提到】
: 异步队列,前后分离是一种架构。至于是实时还是一个小时完全取决于流量和处理能力
: 。不就是一个水坝吗,你连这个都不能理解还出来现。

y******u
发帖数: 804
43
你非要干pm的差事,那我就再提一个:提前一年预售更分流,在一年周期里分布购票的
冲动。

【在 g*****g 的大作中提到】
: 俩菜鸟还死撑。我说得一个小时就是个上限,撑死这么久票也卖光了。12306为啥要分
: 时抢票呀,不就是为了把票数下一个数量级。本来最多一个小时处理完,立马变成5分
: 钟,再弄个高大上的内存数据库,你要的实时出来了。
: 我老人家不喜欢这个设计。早上起来下个单子,出门的时候就知道买没买着多省事。你
: 还让我跟钟摆似的每个小时去刷一次。但内部异步队列,前后分离还是一样的,这些都
: 看不出来也别出来丢人现眼了。

g*****g
发帖数: 34805
44
这当然可以,今年12306也在提前预售期。我老人家无非讨论一下峰值超过处理能力该
怎么做而已。事实就是12306如果能真做到实时,又何必做分时抢票这种脱裤子放屁的
事情。前两年没内存数据库的时候,下单更是丢得一塌糊涂。

【在 y******u 的大作中提到】
: 你非要干pm的差事,那我就再提一个:提前一年预售更分流,在一年周期里分布购票的
: 冲动。

x*******1
发帖数: 28835
45
这个问题用eventual consistent不就行了。 又不是银行数据,要那么准确。 每个车
留点buffer,最后解决很少的几个冲突。 dynamo 应该可以秒杀。
x*******1
发帖数: 28835
46
肯定要设throttle, ask client 指数backoff。
w**z
发帖数: 8232
47
这版大部分都是找工作的,还是去隔壁吵
好玩一点。

lock

【在 g*****g 的大作中提到】
: 我老就没有必要自我人肉了。就事论事而已,我老从来没想拿资历压谁。说我连 lock
: 都没用过的就是不知天高地厚了。
:
: etc

m********s
发帖数: 55301
48
不如去家居版,讨论怎么多买几套买10/10/10学区的新房子问题。

【在 w**z 的大作中提到】
: 这版大部分都是找工作的,还是去隔壁吵
: 好玩一点。
:
: lock

s*****r
发帖数: 43070
49
那里都是些见识短的大妈,哪有在这里玩舌战爽

【在 m********s 的大作中提到】
: 不如去家居版,讨论怎么多买几套买10/10/10学区的新房子问题。
1 (共1页)
进入JobHunting版参与讨论
相关主题
设计一个类似dropbox的web serverEMAIL is the WORST WAY to find HR
REST API的基础怎么准备?design怎么准备?异步写文件的问题
12306最基本的一个问题,用什么数据結構存票?异步电路master找工作求建议
12306 的简化版响应800题大牛的号召
讨论一下12306的架构?node.js使用感受 献800题大牛
12306 妙杀关于node的讨论进这里吧
用一个C++面试题challenge一下大家Go 有人知道吗?
谁能说说同步/异步IO和阻塞/非阻塞IO的区别?请问多线程怎么准备
相关话题的讨论汇总
话题: 锁票话题: 联票话题: 12306话题: 支付话题: 实时