b*i
2 楼
我也是去了加勒比海溜达了一圈,错过了这个赌局。
略看了一下,一共两个文件,请问哪个函数写了查询?哪个是搜索联票?
现在还晕船,看不太懂。
能否用300字以内的文字,说说关键内容和目的?这样我们检查的时候可以省些精力去
猜。
略看了一下,一共两个文件,请问哪个函数写了查询?哪个是搜索联票?
现在还晕船,看不太懂。
能否用300字以内的文字,说说关键内容和目的?这样我们检查的时候可以省些精力去
猜。
T*i
4 楼
实在对不起,我代码已经开源了。我说过了,不解释,看个人的悟性,和机缘了。
n*t
10 楼
http://www.mitbbs.com/article_t1/Programming/31462913_0_1.html
【在 b***i 的大作中提到】
: 是吗?goodbug同意了?
: 没有联程我理解,老魏是客户端来查询,比如javascript,完成联程的搜索。然后用户
: 点击买票,才发送一个请求到最后面的那个抢票线程来完成。
: 有没有查询,估计差不多。我估计老魏这个思路,搜索联程票也许经过几毫秒的延时,
: 最后信息变了,但是只要最后买票是否正确不出错就行。这个在票卖差不多的时候用户
: 多点几次不同线路。
: 这个就是这个赌约和老魏的解决方案?那么,怎么保存结果到文件,讨论了吗?效率足
: 够吗?
【在 b***i 的大作中提到】
: 是吗?goodbug同意了?
: 没有联程我理解,老魏是客户端来查询,比如javascript,完成联程的搜索。然后用户
: 点击买票,才发送一个请求到最后面的那个抢票线程来完成。
: 有没有查询,估计差不多。我估计老魏这个思路,搜索联程票也许经过几毫秒的延时,
: 最后信息变了,但是只要最后买票是否正确不出错就行。这个在票卖差不多的时候用户
: 多点几次不同线路。
: 这个就是这个赌约和老魏的解决方案?那么,怎么保存结果到文件,讨论了吗?效率足
: 够吗?
m*e
11 楼
参考matrix的Neo
m*5
12 楼
根本没同意,赵老师和古老师在魏老师写code之前就说清楚了,就算魏老师实现了赌约
,也是白搭,因为他们已经论证了好多次了,就算实现了也不能证明魏老师的系统在实
际卖票中有用。
只有魏老师这一派傻不拉基埋头写code, 这赌还没打,魏老师就已经输定了。
【在 b***i 的大作中提到】
: 是吗?goodbug同意了?
: 没有联程我理解,老魏是客户端来查询,比如javascript,完成联程的搜索。然后用户
: 点击买票,才发送一个请求到最后面的那个抢票线程来完成。
: 有没有查询,估计差不多。我估计老魏这个思路,搜索联程票也许经过几毫秒的延时,
: 最后信息变了,但是只要最后买票是否正确不出错就行。这个在票卖差不多的时候用户
: 多点几次不同线路。
: 这个就是这个赌约和老魏的解决方案?那么,怎么保存结果到文件,讨论了吗?效率足
: 够吗?
,也是白搭,因为他们已经论证了好多次了,就算实现了也不能证明魏老师的系统在实
际卖票中有用。
只有魏老师这一派傻不拉基埋头写code, 这赌还没打,魏老师就已经输定了。
【在 b***i 的大作中提到】
: 是吗?goodbug同意了?
: 没有联程我理解,老魏是客户端来查询,比如javascript,完成联程的搜索。然后用户
: 点击买票,才发送一个请求到最后面的那个抢票线程来完成。
: 有没有查询,估计差不多。我估计老魏这个思路,搜索联程票也许经过几毫秒的延时,
: 最后信息变了,但是只要最后买票是否正确不出错就行。这个在票卖差不多的时候用户
: 多点几次不同线路。
: 这个就是这个赌约和老魏的解决方案?那么,怎么保存结果到文件,讨论了吗?效率足
: 够吗?
T*c
15 楼
我攒了几天没看了,刚看到骑士挂
b*i
16 楼
reserve(int start, int length, TicketPool *tp, Ticket *t)
里面这个t干啥的?
141 int startDelta = start - t->_start;
142 if (startDelta > 0) {
这个干啥?
我突然deja vu了,最近这个版有人提到吗,很多人争吵Micro Kernel, 还是
monolithic kernel好,整不出个所以然来,只有做出来看一看能不能用才行。
【在 n*****t 的大作中提到】
: http://www.mitbbs.com/article_t1/Programming/31462913_0_1.html
里面这个t干啥的?
141 int startDelta = start - t->_start;
142 if (startDelta > 0) {
这个干啥?
我突然deja vu了,最近这个版有人提到吗,很多人争吵Micro Kernel, 还是
monolithic kernel好,整不出个所以然来,只有做出来看一看能不能用才行。
【在 n*****t 的大作中提到】
: http://www.mitbbs.com/article_t1/Programming/31462913_0_1.html
T*e
17 楼
写得真是很燃
你以为洋洋得意站在那里就能打倒我们吗?我们可是在血、火和悲伤里成长起来的干草
叉小队啊混蛋
你以为洋洋得意站在那里就能打倒我们吗?我们可是在血、火和悲伤里成长起来的干草
叉小队啊混蛋
n*t
18 楼
其实我没细看,刚才匆匆搂了一眼,应该是先 allocate 再 reserve,大概就是找到票
了,然后锁定,t 就是找到的票了吧。感觉两个要结合起来看。
【在 b***i 的大作中提到】
: reserve(int start, int length, TicketPool *tp, Ticket *t)
: 里面这个t干啥的?
: 141 int startDelta = start - t->_start;
: 142 if (startDelta > 0) {
: 这个干啥?
: 我突然deja vu了,最近这个版有人提到吗,很多人争吵Micro Kernel, 还是
: monolithic kernel好,整不出个所以然来,只有做出来看一看能不能用才行。
了,然后锁定,t 就是找到的票了吧。感觉两个要结合起来看。
【在 b***i 的大作中提到】
: reserve(int start, int length, TicketPool *tp, Ticket *t)
: 里面这个t干啥的?
: 141 int startDelta = start - t->_start;
: 142 if (startDelta > 0) {
: 这个干啥?
: 我突然deja vu了,最近这个版有人提到吗,很多人争吵Micro Kernel, 还是
: monolithic kernel好,整不出个所以然来,只有做出来看一看能不能用才行。
w*w
20 楼
开始有3000张空票,都是从第一站到最后一站。allocate()是找空票,找到后reserve(
)是把空票分成3张空票,中间那张填好返回,剩下的空票放回去以后用.
allocate()用的是实时OS scheduler实现常用的lookup的手段,这是关键一。关键二是
IO用poll不陷入内核,只有开关socket凋用系统。
)是把空票分成3张空票,中间那张填好返回,剩下的空票放回去以后用.
allocate()用的是实时OS scheduler实现常用的lookup的手段,这是关键一。关键二是
IO用poll不陷入内核,只有开关socket凋用系统。
T*c
25 楼
唉我感觉我攒了很久了,结果也才4章,瞬间读完,灰常不过瘾
b*7
28 楼
老魏这个方案看到:
1. 把本来的long transaction 切割,分解为前期只读的查询,中期的可以失败的单点
抢票机,和后期带transaction的出票部分,最大限度的缩短了transaction; 巧妙利用
了抢票机出错不影响persistent 数据的设计。
2. 前期,后期容易scale或者partition,因为面对是分解过的问题。
3. 单点抢票无需数据同步。
带来的问题可能有:
1.查到不一定抢到,因为persistent数据和i抢票机数据有延迟;这个用户体验可能会
不好。
2.复杂的联程票等等算法被推到前期部分,这个程序真的和计数器差不多,不过设计理
念还是可取的,起码是一种可以尝试的设计。
1. 把本来的long transaction 切割,分解为前期只读的查询,中期的可以失败的单点
抢票机,和后期带transaction的出票部分,最大限度的缩短了transaction; 巧妙利用
了抢票机出错不影响persistent 数据的设计。
2. 前期,后期容易scale或者partition,因为面对是分解过的问题。
3. 单点抢票无需数据同步。
带来的问题可能有:
1.查到不一定抢到,因为persistent数据和i抢票机数据有延迟;这个用户体验可能会
不好。
2.复杂的联程票等等算法被推到前期部分,这个程序真的和计数器差不多,不过设计理
念还是可取的,起码是一种可以尝试的设计。
z*e
29 楼
re这个
【在 b******7 的大作中提到】
: 老魏这个方案看到:
: 1. 把本来的long transaction 切割,分解为前期只读的查询,中期的可以失败的单点
: 抢票机,和后期带transaction的出票部分,最大限度的缩短了transaction; 巧妙利用
: 了抢票机出错不影响persistent 数据的设计。
: 2. 前期,后期容易scale或者partition,因为面对是分解过的问题。
: 3. 单点抢票无需数据同步。
: 带来的问题可能有:
: 1.查到不一定抢到,因为persistent数据和i抢票机数据有延迟;这个用户体验可能会
: 不好。
: 2.复杂的联程票等等算法被推到前期部分,这个程序真的和计数器差不多,不过设计理
n*t
30 楼
问题一不存在,这个不同步即使有也是 usec 级的,现实中票的动态变化决定查到抢不
到是常态。实际现在的吞吐也足够应付查询,看业务需要了。
【在 b******7 的大作中提到】
: 老魏这个方案看到:
: 1. 把本来的long transaction 切割,分解为前期只读的查询,中期的可以失败的单点
: 抢票机,和后期带transaction的出票部分,最大限度的缩短了transaction; 巧妙利用
: 了抢票机出错不影响persistent 数据的设计。
: 2. 前期,后期容易scale或者partition,因为面对是分解过的问题。
: 3. 单点抢票无需数据同步。
: 带来的问题可能有:
: 1.查到不一定抢到,因为persistent数据和i抢票机数据有延迟;这个用户体验可能会
: 不好。
: 2.复杂的联程票等等算法被推到前期部分,这个程序真的和计数器差不多,不过设计理
到是常态。实际现在的吞吐也足够应付查询,看业务需要了。
【在 b******7 的大作中提到】
: 老魏这个方案看到:
: 1. 把本来的long transaction 切割,分解为前期只读的查询,中期的可以失败的单点
: 抢票机,和后期带transaction的出票部分,最大限度的缩短了transaction; 巧妙利用
: 了抢票机出错不影响persistent 数据的设计。
: 2. 前期,后期容易scale或者partition,因为面对是分解过的问题。
: 3. 单点抢票无需数据同步。
: 带来的问题可能有:
: 1.查到不一定抢到,因为persistent数据和i抢票机数据有延迟;这个用户体验可能会
: 不好。
: 2.复杂的联程票等等算法被推到前期部分,这个程序真的和计数器差不多,不过设计理
p*y
35 楼
你说的问题如果你经常买飞机票都会遇到。 航空公司都这么做有两个愿意, 第一是实
际上只有很少一部分人会遇到这样的情况, 通常是在最后大部分票都卖光且路径非常
fragmental的情况下。 第二对航空公司最有利。 商业行为, 不一定都是用户至上的
。
这种情况基本用户是接受的。
【在 b******7 的大作中提到】
: 老魏这个方案看到:
: 1. 把本来的long transaction 切割,分解为前期只读的查询,中期的可以失败的单点
: 抢票机,和后期带transaction的出票部分,最大限度的缩短了transaction; 巧妙利用
: 了抢票机出错不影响persistent 数据的设计。
: 2. 前期,后期容易scale或者partition,因为面对是分解过的问题。
: 3. 单点抢票无需数据同步。
: 带来的问题可能有:
: 1.查到不一定抢到,因为persistent数据和i抢票机数据有延迟;这个用户体验可能会
: 不好。
: 2.复杂的联程票等等算法被推到前期部分,这个程序真的和计数器差不多,不过设计理
际上只有很少一部分人会遇到这样的情况, 通常是在最后大部分票都卖光且路径非常
fragmental的情况下。 第二对航空公司最有利。 商业行为, 不一定都是用户至上的
。
这种情况基本用户是接受的。
【在 b******7 的大作中提到】
: 老魏这个方案看到:
: 1. 把本来的long transaction 切割,分解为前期只读的查询,中期的可以失败的单点
: 抢票机,和后期带transaction的出票部分,最大限度的缩短了transaction; 巧妙利用
: 了抢票机出错不影响persistent 数据的设计。
: 2. 前期,后期容易scale或者partition,因为面对是分解过的问题。
: 3. 单点抢票无需数据同步。
: 带来的问题可能有:
: 1.查到不一定抢到,因为persistent数据和i抢票机数据有延迟;这个用户体验可能会
: 不好。
: 2.复杂的联程票等等算法被推到前期部分,这个程序真的和计数器差不多,不过设计理
T*i
44 楼
其实大家讨论技术本来就应该切中肯綮。不应该故意纠缠细枝末节。
T*i
50 楼
其实很多都是业务逻辑,跟技术没有任何关系。
比如,外围机报有票,给了用户几条路线,用户选了说没票了。这不是很正常?美国网
上抢deal也是这样。
再有就是支付部分。支付可以无限scale这个我想无需争论。大家问到下行支付系统的
latency问题。我说了,下行放一个ACID Message Queue。我暂定1M/s。也就是下行保
证1M/s的下单率。
进了ACID MQ就是进了保险箱了。还可以随意反向查询。保证反向查询>10M/s。每天
1000万票10秒,1亿票100秒出完。够不够?
谁要打一个1M/s ACID MQ的赌?
【在 w****w 的大作中提到】
: 系统崩溃,丢掉的是client送出去没得到结果的,拿到rain check没付钱的很多。
比如,外围机报有票,给了用户几条路线,用户选了说没票了。这不是很正常?美国网
上抢deal也是这样。
再有就是支付部分。支付可以无限scale这个我想无需争论。大家问到下行支付系统的
latency问题。我说了,下行放一个ACID Message Queue。我暂定1M/s。也就是下行保
证1M/s的下单率。
进了ACID MQ就是进了保险箱了。还可以随意反向查询。保证反向查询>10M/s。每天
1000万票10秒,1亿票100秒出完。够不够?
谁要打一个1M/s ACID MQ的赌?
【在 w****w 的大作中提到】
: 系统崩溃,丢掉的是client送出去没得到结果的,拿到rain check没付钱的很多。
w*w
55 楼
只能感叹现在的硬件。当年我写程序的时候,ram只有几十个bytes, code要switch ROM
bank, 大点应用还要multitasking,那才是真正的上世纪老古董。
【在 T********i 的大作中提到】
: 其实很多都是业务逻辑,跟技术没有任何关系。
: 比如,外围机报有票,给了用户几条路线,用户选了说没票了。这不是很正常?美国网
: 上抢deal也是这样。
: 再有就是支付部分。支付可以无限scale这个我想无需争论。大家问到下行支付系统的
: latency问题。我说了,下行放一个ACID Message Queue。我暂定1M/s。也就是下行保
: 证1M/s的下单率。
: 进了ACID MQ就是进了保险箱了。还可以随意反向查询。保证反向查询>10M/s。每天
: 1000万票10秒,1亿票100秒出完。够不够?
: 谁要打一个1M/s ACID MQ的赌?
bank, 大点应用还要multitasking,那才是真正的上世纪老古董。
【在 T********i 的大作中提到】
: 其实很多都是业务逻辑,跟技术没有任何关系。
: 比如,外围机报有票,给了用户几条路线,用户选了说没票了。这不是很正常?美国网
: 上抢deal也是这样。
: 再有就是支付部分。支付可以无限scale这个我想无需争论。大家问到下行支付系统的
: latency问题。我说了,下行放一个ACID Message Queue。我暂定1M/s。也就是下行保
: 证1M/s的下单率。
: 进了ACID MQ就是进了保险箱了。还可以随意反向查询。保证反向查询>10M/s。每天
: 1000万票10秒,1亿票100秒出完。够不够?
: 谁要打一个1M/s ACID MQ的赌?
b*7
64 楼
"谁要打一个1M/s ACID MQ的赌?"
这个比较感兴趣,能大概说说思路吗?找轮子还是自己做?单机的还是分布的?
这个比较感兴趣,能大概说说思路吗?找轮子还是自己做?单机的还是分布的?
b*7
65 楼
同车次出票呢?小概率也还是会发生的,应该还是要锁吧。而且这个transaction要和
支付包在一起,和同一个请求的其它车次包在一起。就成了跨db的transaction提交了。
后端可以一个车次一个 DB、不需要锁记录了。抢票节点保证了不会冲突、没有重票,
也没有数据耦合。抢票节点就是解决加锁和耦合问题的。付款本身没有耦合问题,每个
订单、用户都是独立的,........
【在 n*****t 的大作中提到】
: 后端可以一个车次一个 DB、不需要锁记录了。抢票节点保证了不会冲突、没有重票,
: 也没有数据耦合。抢票节点就是解决加锁和耦合问题的。
: 付款本身没有耦合问题,每个订单、用户都是独立的,当然付款失败需要返回票源。
:
: transaction
支付包在一起,和同一个请求的其它车次包在一起。就成了跨db的transaction提交了。
后端可以一个车次一个 DB、不需要锁记录了。抢票节点保证了不会冲突、没有重票,
也没有数据耦合。抢票节点就是解决加锁和耦合问题的。付款本身没有耦合问题,每个
订单、用户都是独立的,........
【在 n*****t 的大作中提到】
: 后端可以一个车次一个 DB、不需要锁记录了。抢票节点保证了不会冲突、没有重票,
: 也没有数据耦合。抢票节点就是解决加锁和耦合问题的。
: 付款本身没有耦合问题,每个订单、用户都是独立的,当然付款失败需要返回票源。
:
: transaction
T*i
74 楼
外围机是前端,抢票服务器居中,支付ACID MQ是后端。
抢票机抢到票,放到一个memory queue里面,往后端ACID MQ送。
假定ACID MQ throughput 1M/s。抢票机memory queue搞1B大总行吧?
ACID MQ给抢票机ACK,抢票机给外围机。或者抢票机给外围机一个pending,外围机每
10秒轮询poll一个redis都好。有unique ReqID都好办。
抢票机死掉了,前端外围机根据ReqID直接查询ACID MQ好了。
其实有问题你应该自己先想办法解决。如果自己能解决还要故意问,那是故意难为人家
,有意思么?
【在 b******7 的大作中提到】
: 我指的是后期的persistent。
:
: 你有没有读我的code?现在抢票请求都是单线程处理的。锁啥?每秒
抢票机抢到票,放到一个memory queue里面,往后端ACID MQ送。
假定ACID MQ throughput 1M/s。抢票机memory queue搞1B大总行吧?
ACID MQ给抢票机ACK,抢票机给外围机。或者抢票机给外围机一个pending,外围机每
10秒轮询poll一个redis都好。有unique ReqID都好办。
抢票机死掉了,前端外围机根据ReqID直接查询ACID MQ好了。
其实有问题你应该自己先想办法解决。如果自己能解决还要故意问,那是故意难为人家
,有意思么?
【在 b******7 的大作中提到】
: 我指的是后期的persistent。
:
: 你有没有读我的code?现在抢票请求都是单线程处理的。锁啥?每秒
T*i
75 楼
其实ACID MQ也能无限scale。对性能没要求,只要ACID就好。
【在 T********i 的大作中提到】
: 外围机是前端,抢票服务器居中,支付ACID MQ是后端。
: 抢票机抢到票,放到一个memory queue里面,往后端ACID MQ送。
: 假定ACID MQ throughput 1M/s。抢票机memory queue搞1B大总行吧?
: ACID MQ给抢票机ACK,抢票机给外围机。或者抢票机给外围机一个pending,外围机每
: 10秒轮询poll一个redis都好。有unique ReqID都好办。
: 抢票机死掉了,前端外围机根据ReqID直接查询ACID MQ好了。
: 其实有问题你应该自己先想办法解决。如果自己能解决还要故意问,那是故意难为人家
: ,有意思么?
【在 T********i 的大作中提到】
: 外围机是前端,抢票服务器居中,支付ACID MQ是后端。
: 抢票机抢到票,放到一个memory queue里面,往后端ACID MQ送。
: 假定ACID MQ throughput 1M/s。抢票机memory queue搞1B大总行吧?
: ACID MQ给抢票机ACK,抢票机给外围机。或者抢票机给外围机一个pending,外围机每
: 10秒轮询poll一个redis都好。有unique ReqID都好办。
: 抢票机死掉了,前端外围机根据ReqID直接查询ACID MQ好了。
: 其实有问题你应该自己先想办法解决。如果自己能解决还要故意问,那是故意难为人家
: ,有意思么?
b*7
76 楼
对性能有整体要求啊,不然抢票机堵塞了。
其实ACID MQ也能无限scale。对性能没要求,只要ACID就好。
其实ACID MQ也能无限scale。对性能没要求,只要ACID就好。
z*e
77 楼
哈哈哈,老姜的电商怎么样了?
连个支付宝都不去做,去搞这个?傻逼了不是?
老姜,看这个新闻,傻蛋,你不做,别人已经行动了
http://www.cnr.cn/jingji/gs/20151218/t20151218_520846846.shtml
【在 f******2 的大作中提到】
: 老魏你还狠年轻啊,任正非在你这个年纪还住着农民房,拎着皮包到处转呢。
: 我被好虫赵策二人转忽悠的以为你都奔五了呢。
: 好好干,争取把老姜拉入伙,真心看好你们。美国安全领域当年出了一批华人企业,你
: 们在iot再杀出条血路。
: 别的不说,赵策来美的事情至少解决了
相关阅读
akka能和C++程序通信吗?python代码写成这样,什么鬼阿。fp适合小孩学报告大家一个好消息是用ssh action好还是用mapreduce action好?用react的试过中文么?求面试用的c#,java复习材料一个较难的pythpn输出函数运行信息的project.如何快速学习R或Python这类开源类语言的加盟包?听说n家99%的代码都是java请教大牛, 大家为什么不用jsp了angular 2怎么跑?test据说TS要开始支持ES6了Node.js 为什么升级这么快请教个git的问题ruby还有市场么?除了rails, chef。看CRDT又想到了火车票对PyCharm屈服了……html input如果处理非常大的数怎么搞?