topics

全部话题 - 话题: 分票
1 2 3 4 5 末页 (共10页)
b*******g
发帖数: 603
1
来自主题: Programming版 - 分布式分票算法
两个cluster.
一个上随便多台机器,从cassandra读取订单。简单验证单子有效性等,然后发到分票
的cluster.
上3000台机器分票,每台机器管一个车次&车票类型(硬座,卧铺,站票)的分票。
对于联票,request并发发给两台不同机器,都成功返回后写入数据库。一个成功一个
不成功则发撤销request.
分票只需要在内存里搜索,单线程即可,1000张票,20段,简单的O(N) bruteforce算
法即可,还可以满足多票,保证满足同车厢,尽量满足连号没问题。有多少规则,支持
多少规则。分票结果无锁写入后台数据库,无冲突极快。
异步通知另外一个线程合并数据库结果,从数据库里读出分配座位信息,更新座位覆盖
状况。并定时(比如5秒)更新分票服务器内存。
对于所有可能的网络问题,硬件问题,导致分票结果不能存入数据库。不会有重票错票
,会暂时丢票。5秒后跟数据库sync恢复。
像这样的架构能达到什么样的分票速度?
如果一个单张票分票算法只能到0.1ms, 太监的单机单线程算法只能分10000张票。我这
个算网络延迟0.1ms, 一个单子2张票,0.2ms, 联票并发进行无影响... 阅读全帖
b*******g
发帖数: 603
2
来自主题: Programming版 - 数据库分票策略
我不明白我提的数据库分票策略有啥不行的。你们要质疑也要质疑个明白。
如果没有联票,那可以完美分库,这个没有疑问。现在有10%的联票,我把所有票的10%
预留到一台数据库上,所有联票的request发到这台机器上。剩下的就可以轻松一个车
次一个数据库,实际上用不了那么多,比如弄10台机器组合一下就可以基本达到负载平
衡。
很显然,每个车次只有两个数据库有票。初值其实是按照历史数据的比例分的。而运行
到一个数据库用完了之后,可以重新平衡数据库。比如预估10%,其实是20%,单车次刚
开始预分900张,联票预分100张,联票服务器用完了之后,订票发现没票了,就可以看
到另外一个数据库还有500张,然后把这500张按4:1重新分配。当低于一定阈值还一边
用完了,比如总数100,就可以把所有票合到联票数据库上。
distributed transaction 很多数据库都支持,这种策略不是为了避免,而是为了减少
而已。从上面的例子可以看到,一个线路,正常不过2-3次调整足够了。2-3次
distributed transaction, 假定比单数据库慢10倍,相比1000张票,仍然只是3%的额
... 阅读全帖
L*****e
发帖数: 8347
3
来自主题: Programming版 - 数据库分票策略
得,这又扯到我最早就提过的要根据以往数据来制定出票策略的事了,但是迄今为止没
有多少讨论是从现实情况历史出发的。
另外就是,这个10%的联票分票方案一点也不比你不分票的出错率低。因为不是你这10%
的联票都没了,你才去别的分车次数据库调用票的。这10%的联票数据库里任何一个车
次都可能先没票而要去调票,如果联票数据库里有1000个车次,就可能调1000次票。。。
b*******g
发帖数: 603
4
来自主题: Programming版 - 分布式分票算法
不需要维护distributed transaction, 订票都成功了以一个transaction发给DB并且写
入的才是成功的。每
过一段时间,用DB的数据sync 分票服务器。DB才是source of truth, 由于网络错误,
硬件错误没有写入DB而丢掉的票会重新出来。
换句话说,分票服务器保证不会错票,重票。DB sync保证不会丢票。
这不是完全公平的,比如网络丢包造成retry,有可能导致后面的人先上去拿到票。但
所有分布式排队都没有严格意义的公平。
c******3
发帖数: 296
5
来自主题: Programming版 - 分布式分票算法
》每台机器管一个车次&车票类型(硬座,卧铺,站票)的分票。
》3000机器因为有冷门车次不均匀算打个折,算1000的并发度就好。
你处理的问题是单机1000的并发?老魏考虑的是单机1000万的并发。你们是在讨论同一
问题吗?
照这样假设,几十年前的486就可以了,每台机器上一个MSAccess都嫌多,就一
flatfile好了。
其实堆机器也可以。但要考虑到热门车次上百万人抢票的。你的方按也没有把同一车次
分到不同个机器上。所以你和老魏本质上都在谈论单机。但你的假设不可行,因为热门
车次抢票的会到上百万并发。冷门车次大家都不会在这废口舌。
所以你还是应该回到本质问题:如何设计卖票系统能处理百万人次同时请求同一车次。
f******g
发帖数: 592
6
来自主题: Collectibles版 - 请帮我看一看这张大龙1分票
请各位帮我看一看刚买的这张大龙1分票,谢谢!
我对大龙等老票确实不是很懂,但就是喜欢,大家多帮帮我呀。 :-)

发帖数: 1
7
新州初选,请务必选Jack Ciattarelli 别让Steven Rogers分票!
c******3
发帖数: 296
8
来自主题: Programming版 - 分布式分票算法
你和老魏的方按相同支处就是都用单线程在单机内存里搜索分票,而且都用bitmap实现
。但你的设计里N张联票就要发给N台机器。你怎么维护distributed transaction?还是
你所有机器只用同一个数据库?
b*******g
发帖数: 603
9
来自主题: Programming版 - 分布式分票算法
这是说明怎么scale out, 具体怎么实现单线路分票,你咋实现,我也能实现呀。我有
这么高的并发,单查找慢点也没啥。
我老说过的,去jobhunting找个newgrad算法都比太监强。
b*******g
发帖数: 603
10
来自主题: Programming版 - 数据库分票策略
什么100% 原则? 总共俩数据库,单线程处理,单车次一边,联票去另一边,还有啥不
合理的问题?
你要觉得我这个分票数据库不工作,好歹来个反例。
b*******g
发帖数: 603
11
来自主题: Programming版 - 数据库分票策略
你这就是给自己弄一个完成不了的任务。你前段来两个一样的request, 一个早到web
server1ms, 但web server发给你的分票服务器网络延迟比另一个多2ms, 导致后处理,
你公平了吗?
扯蛋不是这样的。
b*******g
发帖数: 603
12
来自主题: Programming版 - 数据库分票策略
你说的非联票要求先完成了可能呀,我早就说了达不到完全的公平。但是基本上前一秒
的比后一秒的先出就不会有问题。
严格的公平本来就不可能,除非整个系统就一个机器一个线程,不服你来公平一下这个。
前段来两个一样的request, 一个早到web
server1ms, 但web server发给你的分票服务器网络延迟比另一个多2ms, 导致后处理,
你公平了吗?
扯蛋不是这样的。
g****t
发帖数: 31659
13
来自主题: Programming版 - 数据库分票策略
问题是你降低不了90%的延迟阿。除非你假设今年联票的发生情况和去年情况一样。但
这个显然是不对的。GDP每年还增长8%呢。
按你的分票方案,结果可能会很差。正确的办法是业
务人员开会定下来考虑哪个中间站怎么弄好。
全局优化也好,90%的延迟也好。都是没道理的。
M********d
发帖数: 5274
14
经国际足联公布,无论是中国国家队代理主帅傅博、还是队长郑智,抑或媒体代表
《体坛周报》的副总编辑骆明都没有准确“猜中”最终结果,不过骆明的三票的确投给
了C罗、梅西和里贝里,只是顺序完全颠倒。骆明将5分票投给了随拜仁慕尼黑夺下5冠
王的里贝里,3分票则是给了梅西,1分票归于C罗名下。
傅博和郑智的三张票都投给了C罗、梅西和蒂亚戈-席尔瓦,不过顺序并不相同,队
长郑智将5分票给了C罗,梅西得到3分票,蒂亚戈-席尔瓦则拿到1分票,在指挥上就眼
光“独到”的傅博居然将最宝贵的第一名5分票给了蒂亚戈-席尔瓦,之后才是C罗和梅
西。
实际上骆明去年就“命中”了最后的三个入围者,但同样是顺位与最后结果不符合
,当时他就表示:“金球奖投票,本来就没有标准答案。球星和球星间的比较,并不是
数学计算那么简单,尊重每一个人的看法。”
L*****e
发帖数: 8347
15
来自主题: Programming版 - 数据库分票策略
靠!这个说有票100%有票,说没票100%没票的要求不是你给老魏提的要求么?怎么成我
扯淡了?哦,还忘了问你这个分联票数据库方案怎么做实时座位优化呢?这也是你提出
来的吧?还是我记错了?如果是我记错了,就当我扯淡吧?

个。
★ 发自iPhone App: ChineseWeb 8.2.2
c********4
发帖数: 111
16
来自主题: NewJersey版 - 有关张演唱会的票
看到好多人问张信哲,其实上周就回了个帖子,想告诉大家买票的方法,不过貌似还没
有人看就沉了。
我大概上个周五,也就是8,9天前的时候,发现那个破网站的坐票就卖光了。无奈家里
有只非常想去看并且死不肯要站票的,所以就打电话问了总代理。
当时接电话的时候,对方说网站上没有就没有了,经过我一顿恳求,语气有点软,说下
周如果有票空出来的话,就给我电话。
但是我实在没有耐心,而且LD脸都黑了,情急之下 又联系了Edison的代理。接电话的
人立刻说有(我估计票额分配过去的部分都没有卖掉),上周六去那里拿了定票单,然
后今天过去拿到了票。
以我的经验来说,主办方不可能把所有的票都放网上,他们会先Hold一部分,代理那里
会有部分票,所以呢,打电话去poster上面的代理,应该可以拿到票。另外,还有一部
分票,是赌场VIP的,无论VIP们去还是不去那些票都不会拿出来卖,而是在赌场里面,
所以就算你买了站票,早点去的话,也是有可能从“黄牛”那里换成坐票。
所以一定要去的同学们就不要纠结那个网站了,打电话多问问,不太晚的话还有可能拿
到票。
L*****e
发帖数: 8347
17
来自主题: Programming版 - 数据库分票策略
你俩前两天说的: 说有票100%有票,说没票100%没票。
换句话说就是,不能有一例对前一个说了没票,后来的买上了。。。
你只要出现一次需要两个数据库互相调票的情况,就算违背这个原则了。你不能向用户
说: 我说没票,保证这个数据库里没票,另一个数据库里有没有我不管,你等我调完票
再说。。。
l*****y
发帖数: 4887
18
哪里啊,联邦党人文集第六十八篇
选举人票的目标是
避免直选,避免民众被蛊惑,避免民粹上台。。。
当初就东部十来个小州,女人,非白人,太穷的都不能投票
其实点票挺方便的。
参议院的一州两票是极端的州权平等,照顾小州
众议院的人口分票是极端的照顾大州
选举人票的两个加和相当于取了个简单折中
小州还是受到了保护的
加州按人口差不多是最后20多个州的总和
如果按人口投票,这些州加在一起都没竞争力,
但是选举人票,加州55
后面20个州八九十票呢
d***a
发帖数: 13752
19
来自主题: Programming版 - 数据库分票策略
考虑有20个区间的线路S。联票服务器最开始有100张票,买掉100张票,都是S1-S19。
最多还可以卖100张S20段的票。这里算有票还是无票呢?这些可卖的票,是放在联票数
据库,还是放在局部数据库呢?
如果你不提碎片最小化和区间最小化倒还好。提了这两个要求,你如何在联票数据库上
,不访问局部数据库,就做到最优化呢?如果对联票不做最优化,那他人的算法早就可
以做到了。
以后高铁形成网络,联票的比例会很大,你也不能假设只有10%的联票。

10%
d*****s
发帖数: 5610
20
来自主题: USANews版 - Trump最多拿264张票
http://fivethirtyeight.com/features/election-update-where-are-the-undecided-voters/?ex_cid=2016-forecast
如果undecided或者第3党里面所有票的2/3给Trump,Hillary只拿到1/3,那算下来按照http://www.270towin.com/来分票,Trump能拿到Florida,Ohio, North Carolina, Georgia, Nevada, Arizona, Utah, 还是不够270票。Hillary能拿273票。
当然如果Trump在undecided里面可以拿》2/3,那在Minnesota和Colorado里面还有希望
d*****s
发帖数: 5610
21
来自主题: USANews版 - Trump最多拿264张票
http://fivethirtyeight.com/features/election-update-where-are-the-undecided-voters/?ex_cid=2016-forecast
如果undecided或者第3党里面所有票的2/3给Trump,Hillary只拿到1/3,那算下来按照http://www.270towin.com/来分票,Trump能拿到Florida,Ohio, North Carolina, Georgia, Nevada, Arizona, Utah, 还是不够270票。Hillary能拿273票。
当然如果Trump在undecided里面可以拿》2/3,那在Minnesota和Colorado里面还有希望
h******o
发帖数: 829
22
来自主题: Collectibles版 - 这张旧票值几毛?
清票基本不懂。
在local dealer那边无意看见的。
另外顺便问问这边蟠龙票的专家,现在分票旧一张算20rmb,毛票旧一张算50rmb,还是
这个行情吗?(元票就不提了,碰到也买不起)
L*****e
发帖数: 8347
23
来自主题: Programming版 - 数据库分票策略
你调整余票需要在你的联票数据库和某车次数据库之间进行吧?调整余票的时候,你所
有的比当前等候调整结果的请求排队时间晚的请求都得停止等候吧?
如果有500个车次出现一次这种调整余票,就得这样等500次。
不单是你上面的计算时间要调整,那些在调整余票时,时间戳比那个等待的联票晚,但
又已经被分布到3000个单车次数据库上处理的请求怎么办?怎么通知它们停止?怎么
rollback?
老霸,你该休息休息了,大脑缺氧想问题是糊涂的。。。

★ 发自iPhone App: ChineseWeb 8.2.2
t*c
发帖数: 6929
24
来自主题: USANews版 - Trump最多拿264张票
你忘了indiana,trump strong hold。。。

http://www.270towin.com/来分票,Trump能拿到Florida,Ohio, North Carolina, Georgia, Nevada, Arizona, Utah, 还是不够270票。Hillary能拿273票。
t*c
发帖数: 6929
25
来自主题: USANews版 - Trump最多拿264张票
你忘了indiana,trump strong hold。。。

http://www.270towin.com/来分票,Trump能拿到Florida,Ohio, North Carolina, Georgia, Nevada, Arizona, Utah, 还是不够270票。Hillary能拿273票。
A**d
发帖数: 13310
26
来自主题: USANews版 - Trump最多拿264张票
idiot

http://www.270towin.com/来分票,Trump能拿到Florida,Ohio, North Carolina, Georgia, Nevada, Arizona, Utah, 还是不够270票。Hillary能拿273票。
L*****e
发帖数: 8347
27
来自主题: Programming版 - 数据库分票策略
如果根据以往数据,更靠谱的是中间站预留少数票,大大简化分座方案。。。
anyway,耦合数据分布处理要达到你们说的100%无错原则,不敢说将来是不是一定能做
到,
起码今天的技术做不到。。。
L*****e
发帖数: 8347
28
来自主题: Programming版 - 数据库分票策略
你是说联票数据库一旦需要调票,所有联票的请求hold等待?你联票请求的时间队列和
非联票请求的队列分别对待?如果等同对待,联票请求等待必然造成其它非联票请求等
待。如果分别排队,算不算一种“不公平”啊?买联票的低买非联票的一等?买联票的
明明早排队却要等调票结果,而他需要的其中一张票被比他后排队的买非联票的买走了
。。。

★ 发自iPhone App: ChineseWeb 8.2.2
L*****e
发帖数: 8347
29
来自主题: Programming版 - 数据库分票策略
先不说你都无法做到完全同时在两个数据库上锁一条row,也不说你判断需要调票时,
时间戳晚的有冲突非联票请求都可能已经完成了。只说我上面已经给你解释了,这个冲
突不是等待调票的第一个联票请求和非联票请求才有,排第二第三的联票请求和相应的
单票请求都可能有冲突,你都锁?
btw,我基本上没啥数据库知识,也就是在坛子上看大牛们扯,就照猫画虎,一知半解
地胡诌,别介意哈。。。

着。
★ 发自iPhone App: ChineseWeb 8.2.2

发帖数: 1
30
打错了,是都不到270票就有议会决定。也有可能有其他人分票不一定是平局。


: 数死早?只可能269平

h*s
发帖数: 2134
31
来自主题: USANews版 - 预测Trump今天拿到210-250票
我觉得光今天一天就有戏超过300票,不算以前的,原因是很多州都有threshold
很多不到20%的候选人毛也没有,这样卡森和卡萨器分票,机器人甚至有可能低于20,
这样就好玩了
t**********1
发帖数: 550
32
来自主题: Programming版 - 分布式分票算法
买了联票会reserve单张票,如果有其它单张票请求就会被拒绝。
不是还指出过我的计数器震荡问题吗?没张记性?
不是正确性一定要保证么?不是性能要按照最差的算吗?
我看,丫3000台机器,每秒能上千就不错了。
给我台96核单机,我6000万都没问题。
L*****e
发帖数: 8347
33
来自主题: Programming版 - 分布式分票算法
但是别忘了他还有个waiting list,而且出票时是异步出票。联票reserver单张票,最
后购票失败返回reserver的票时,waiting list里的就买上了。。。
当然这只是一定程度上减轻问题而已,如果waiting list里的请求也是要买联票的,然
后连锁反应。。。
L*****e
发帖数: 8347
34
来自主题: Programming版 - 分布式分票算法
那就对于被reserve的票,随后的都wait,直到这张票有结果了再说。。。当然,这样
worst case是比较糟糕,因为可能产生一连锁的wait。不过在实际中一连锁的wait机率
会非常小,不会对performance产生太大影响。。。
t**********1
发帖数: 550
35
来自主题: Programming版 - 分布式分票算法
我单机抢票,都是12核并行带调度器,每核接近1m,都不愿claim 1m的指标。
实际上,都是放票就抢的。
丫根本就没有数据依赖的概念,调度都没提。剩下的根本不用看。
他那个设计毛病多了。拿C*当messaging queue用,你们这些傻逼还捧场。这简直是一
锤走天下的。没见过这么傻逼的。
b*******g
发帖数: 603
36
来自主题: Programming版 - 数据库分票策略
So? 不妨量化,1000个车次,1000张票,单机数据库做要1M transaction。
我的联票数据库出其中的10%,两张票一个transaction, 是50K transaction, 每车次
平衡3次,产生3k个
distributed transaction, DT比较慢,相当于30k transaction的速度。一共加起来是
80K transaction. 其余单车次随便组合不是瓶颈。
所以我从1M 直接加速到80K, 加速了12倍。

10%
。。
b*******g
发帖数: 603
37
来自主题: Programming版 - 数据库分票策略
废话,单线程的,如果需要调票,就等在调票上。你有1000个线路,等的是一个线路,
能有啥问题。
你问的问题实在不合理。
b*******g
发帖数: 603
38
来自主题: Programming版 - 数据库分票策略
是排的同一个队呀。只不过没票了,不是挨个数据库查。而是调整余票直接出。
n*****t
发帖数: 22014
39
来自主题: Programming版 - 数据库分票策略
不是说时间优先吗?低优先的单票到了 A 出票了,高优先联程本机无票,到 A 一查没了
b*******g
发帖数: 603
40
来自主题: Programming版 - 数据库分票策略
这个从技术上说,就是保证90%的最优分配,提高12倍速度。3分钟延迟变成15秒,这样
就可以做成简单的在线应用。
我从来没说过能做到实时最优分配,太监也做不到不是。所以,接下来就是看那些
tradeoff可以接受了。现实中线路上本来就有很多预留票。这个无非说我预留10%的票
给联程,而且那样连distributed transaction都不用了。
n*****t
发帖数: 22014
41
来自主题: Programming版 - 数据库分票策略
订单 1 联程送 B 处理,订单 2 单票送 A,B 发现缺一张到 A 调票,订单 2 已经处
理完了

出。
L*****e
发帖数: 8347
42
来自主题: Programming版 - 数据库分票策略
我没说你这个速度问题,我是说你弄这个联票分数据库的出错率一点不比你只有分车次
数据库的出错率低。你不信你就用同一组测试数据给两种不同方案跑跑比较比较。。。
r********1
发帖数: 7345
43
来自主题: Military版 - 宋楚瑜为什么每次都要出来分票
为了政党票
s*******s
发帖数: 9926
44
本文的网路版本在这里: http://nosca5.blogspot.com/2014/02/sca5.html
反对SCA5, 不要浪费时间, 要这样做才有帮助, 请转发
从我做起, 从现在做起! 我们还来得及反对SCA5. 目前, 加州众议院的80席中, 有55席
民主党, 25席共和党. 对这个法案SCA5的支持是党派分票, 所以我们只需要保证 2个以
上民主党议员勇敢地站出来, 投票反对, 我们就可以让法案胎死腹中. 现在我们可以做
的是写信给代表我们选区的加州众议员, 去他们的网站给他们写.
Step 1: 下面网站里选Act Now有两个请愿投票, 有时间先去投票, 这样才能壮大声势.
这两个网站都需要注册, 但是Change.org和Whitehouse.gov是最常见的请愿网站, 将
来一定该还有用到的机会, 花点时间注册并不吃亏.
http://www.saynosca5.com/
美亚团结促进会的United Against SCA5 - Please click here to sign letter to
contact your elected represe... 阅读全帖
i**i
发帖数: 1500
45
来自主题: Programming版 - 分布式分票算法
联票可以有多种联法. 不断重试会产生无效请求. 影响正常出票.
另外, 如果某人买票, 不太会在意什么票, 甚至有座没座. 目前的分库分得太细了.
L*****e
发帖数: 8347
46
来自主题: Programming版 - 分布式分票算法
是失败了,然后排进了waitinglist里,等到前面联票失败了,返回reserve的票,
waitinglist里就买到了。可以说中间结果错误,但最终结果还是正确了。。。
b*******g
发帖数: 603
47
来自主题: Programming版 - 分布式分票算法
太监你又气急败坏了,弄了三个月就弄个计数器,还被我秒了30次。
我那个不会想你那样震荡,因为是异步的。如果有ABC和AB, 99.99%的订单都是ABC,而
BC卖完了。
数据库的snapshot就保证了前面那个cluster就看到BC余票为0,根本不提交订单到后面
的cluster上。
所以0.01%的订单很快就成功了。
b*******g
发帖数: 603
48
来自主题: Programming版 - 分布式分票算法
实践中,哪怕不考虑冷门车次,热门车次有10种,我就秒它10倍。当然游泳。
另外,单子无限,票子有限,都卖完了我就不用卖了。你说的只有订单过来反复出不了
票,我的才会跟它的一样。
实际上单车次,大家很快卖完了后面不找了。
L*****e
发帖数: 8347
49
来自主题: Programming版 - 数据库分票策略
10%的联票发生概率,和你预留所有票的10%给联票数据库是两个概念。联票不是在各个
车次上平均发生的,你怎么预留啊? 留多少北京到上海再从上海转广州的? 又预留多少
北京到株洲,株洲转贵阳的?

10%
b*******g
发帖数: 603
50
来自主题: Programming版 - 数据库分票策略
这有什么难理解的,去年同时候所有的票,每车次百分之多少是联票的形式,你就留多
少给那
台服务器。
1 2 3 4 5 末页 (共10页)