Re: [心得] 猜测拓元的系统程式

楼主: JGT (My baby-Ruth)   2016-11-07 09:34:35
有更专业的工程师来了
原作者 TwixtP(PaytonC)
======
之前有幸在AWS Summit Taipei了解到拓元的售票系统
想分享一下
1.拓元的服务器并不在台湾内
根据nslookup的结果 拓元的服务器应该是位于美国的Oregon
使用位于外国的云端服务的主要考虑 整体服务器数量和用量的弹性
毕竟不是全年所有的时候都需要用大量的服务器
而云端服务的好处就在于按需要增减机器(伏笔1)
时区差也是一个考虑 当台湾是白天 美国刚好是晚上
相对来说,总体云端服务器的用量应该会比白天少
2.拓元把整个买票流程都拆细
想一下,如果以人的角度去一个售票台买票
流程大致是:
排队->选日期数量场次->柜台查询有没有票->有:付款->出票
对于机器 每一步都是一个请求的处理
一般来说 售票的瓶颈会有两个:
a.支付结算
b.查询余票
无论ab 都会牵涉到一个死穴 数据库(伏笔2)
对于a 限制在于银行网络 这个并不可能因为拓元要买票就可以增大流量
所以 拓元采取离线支付 先把票hold住 之后再结算 结算成功再出票(应该是)
对于b 数据库是一个很神秘的东西(不要问 很可怕)
它有一个存取极限(以每秒处理多少个请求去计算)
在一个极限之内 不可能通过增加数据库的数量(横向增加)而提高这个极限
最复杂的问题在于 如何知道第一场的A区9527位置有没有被别人买了?
重点来了
拓元的做法(我想的 他们没说)
因为同一系列演唱会的场地基本上是固定的
所以 如果把同一个区域(例如 摇滚区)的座位都划分在一个数据库里
然后 9场演唱会 就开9个数据库
就可以相对地把请求压力分散在不同的数据库上
很完美对吧?
伏笔1就出来了
基本上 每一个人上去买票 都不是直接问数据库的
而是经过一系列的页面 然后转圈圈 之后收到结果
那处理这些页面的 其实是一堆Web Server
作用就相当于是 检查分流当前你要做的事情(买票)
如果在这个角色上的人/机器 挂掉了
那就晚安咯
所以 我觉得喇 这次买票的问题
是落在拓元对每秒请求数的估计太低了
Web Server承受不了
然后出现要断线重开重连的状况
平台的架构是够猛的(其实已经好猛了 如果对比香港的来算)
p.s. 补充:(技术部分 可忽略)
有人会问说AWS不是有AutoScaling吗?
- 这里并不适用 因为情况是属于突发式流量增加
- 只能通过提早增加机器去处理
- 还有ELB也是需要预热的
还有一个地方我无法解答:
为什么拓元转圈圈的部分是默认有countdown的超时机制?
而且找不到和服务器连接的js
不明白
本人背景:
在香港工作的一名工程师 曾经做AWS平台设计
也是五迷(Just Rock It 高雄场 两场都去咯)
这次也没有买到票... T.T
======
作者: kakaw (kaka)   2016-11-07 09:44:00
推专业心得文 同是没买到好哀伤
作者: livingnan (9527)   2016-11-07 09:46:00
这篇可以解释 网速不是绝对,也推数据库不要问很可怕
作者: yumao (羽毛)   2016-11-07 09:47:00
推专业 但蛮好奇最后系统订单回复的配票标准是什么 看板上很多只选张数就回复 却有配到位填名字跟进payment的歌迷最后什么都没回来
作者: book8685 (快活人生)   2016-11-07 09:48:00
所以工程师跑掉了是玩笑话吗 拓元这几次全部杠龟QQ
作者: yumao (羽毛)   2016-11-07 09:49:00
ps.单纯为后者提的两种歌迷叫屈 没有要针对选张数就订了到的歌迷
作者: bonbon0727 (阿蹦蹦)   2016-11-07 09:50:00
开卖那天我在波特兰(Oregon州)用iPhone 7 plus LTE满格也是完败!
作者: juicyiiiwww ( )   2016-11-07 09:53:00
网速不是问题 我朋友在网咖没买到 ,到七点清票那次不死心 拿他的老旧智慧手机 网络只有3G ,他买到最想要的场次的实名票
作者: yoqwqq (我是派大星)   2016-11-07 09:54:00
开卖当时我在西班牙飞回台湾的路上t___t~
作者: book8685 (快活人生)   2016-11-07 09:54:00
希望拓元有走回神坛的一天 这次真的遭不爽
作者: suba1121 (宣)   2016-11-07 09:59:00
专业推 这次拓元真的不及格~~~
作者: blueweak (暱称)   2016-11-07 10:00:00
这篇真的专业了,但还有另一个瓶颈是帐号的state
作者: yosa (存一寸光阴 换一个世纪)   2016-11-07 10:00:00
我觉得买到与否跟先进去没有直接的关系,有人可以解释吗?
作者: blueweak (暱称)   2016-11-07 10:02:00
为了防止同帐号多分页和黄牛攻击,帐号必须是statefuly大说的先进去指的是先进到转圈圈吗?原则上是这样没错
作者: janet77321 (象)   2016-11-07 10:04:00
专业推~目前感觉配票没标准 配到就是运气...
作者: cometmay555 (彗星)   2016-11-07 10:04:00
专业推 希望问题能够早日解决
作者: blueweak (暱称)   2016-11-07 10:05:00
但这是机率问题,实际上不一定,因为web server是分散的如果某台server超多人你排很后面 另一台比较少人
作者: ptlin (終於結束的起點)   2016-11-07 10:07:00
谢谢分享专业讨论...
作者: blueweak (暱称)   2016-11-07 10:07:00
那排比较少人那台就可能会比就快被处理到
作者: yumao (羽毛)   2016-11-07 10:11:00
我也有赞成先进去转圈不一定先买到 不过板上那些有填到名字跟进入payment的歌迷最终的配票起点也跟选张数的歌迷一样吗?我想说至少他们本来都应该算已经有先配到座位了说
作者: blueweak (暱称)   2016-11-07 10:13:00
应该是一样 可以进到payment基本上位子已经确定了网速在开卖0秒时还是很重要,但如果第一次没买到,之后就不重要了
作者: bobby0719 (小野郎)   2016-11-07 10:17:00
目前身边听到订单回来的朋友(约十来个)也都是只有选好位置和张数而尚未看到过结帐画面的进入结帐画面配好位置的朋友们,订单反而都没有回来@@
作者: s9250620 (在活着的每一天 跳舞吧)   2016-11-07 10:23:00
目前身边的人包括我,都是转完蓝圈被弹出来,连位置都没看到,最后却有配到位的人
作者: Elaine6669 (一一)   2016-11-07 10:27:00
买到的朋友也是跟我说,他只选场而已就得到订单了~~
作者: hsnufuji   2016-11-07 10:29:00
不专业问遗下,severs很多没错,可是系统不会自动平均分配吗?就像去银行服务台抽号码牌那样自动配到有空的台
作者: mymayday5   2016-11-07 10:38:00
推专业
作者: blueweak (暱称)   2016-11-07 11:03:00
是不是平均分配我就不知道了 但我看到的是同时间不同dns回应的server ip是不一样的 所以我猜同ip还是同一台此外 同dns server在不同时间也会回不同ip list
作者: kk2245514 (poohoo)   2016-11-07 11:05:00
进到payment订单却没回来QAQ
作者: blueweak (暱称)   2016-11-07 11:07:00
这次拓元真的很不稳 可能后端一直有人为补救吧 XD
作者: losts ( )   2016-11-07 11:29:00
的确 不是机器开多就好 db的规划跟没有开大也会延迟回应 还有我猜没有一致性写入 不然订单怎么慢慢补回来..
作者: anikihome (当然挺你到底:))   2016-11-07 11:46:00
进到payment订单没回来+1 QQ
作者: taconny (唾弃太阳的章鱼)   2016-11-07 11:52:00
这次真的挂的太夸张了!
作者: zxc70227 (第一考不上)   2016-11-07 12:01:00
啊这就跟抽票有87%像了 看你遇到那个server服务的人少机会就会变大 即使你非第一时间进去也是一样 既然如此这种买票方式就没意义啦 干脆就全面抽票实名 才不会浪费时间
作者: lumandog (鱸鰻狗)   2016-11-07 12:03:00
作者: yosa (存一寸光阴 换一个世纪)   2016-11-07 12:07:00
因为我不小心把第一个开启还在转蓝圈圈的页面关掉,再点第二次进去转蓝圈,却仍买到第一排,所以觉得不是先点先赢,完全是运气
作者: bobby0719 (小野郎)   2016-11-07 12:11:00
变相抽签制的感觉呵呵
作者: alice910265 (Alice玲子)   2016-11-07 12:16:00
根据之前拓元专访文章,阿妹购票系统最大乘载量开到20万次/秒的I/O...而相音脸书公告9点实名是29万人次有没有花钱买虚拟主机,大家自行感受一下不是新闻没报就等于没做,而用户体验不佳也是事实拓元还有改进空间...只能说这次才是真压力测试啊
作者: ca2418 (catherine)   2016-11-07 12:21:00
任何系统需要压力测试都可以找五迷喔(^_-)
作者: ptlin (終於結束的起點)   2016-11-07 12:22:00
http://www.ithome.com.tw/news/94530 ← 拓元专访文恰好也正在看这篇...
作者: cwilly876 (加厥)   2016-11-07 12:34:00
作者: blue5429 (舜)   2016-11-07 12:34:00
认同不用便利商店排队的原因,但这次跟阿妹比起来真的很糟!无法理解这次大幅调高票价服务却没跟上
作者: dadafang   2016-11-07 12:36:00
希望更多专业提供一些线索,才不会让我们死的不明不白
作者: alice910265 (Alice玲子)   2016-11-07 12:38:00
想问是哪里大幅提高票价?还有阿妹没有爆流量...当机还回溯订单...补救措施多到我都不忍再苛责了
作者: hsnufuji   2016-11-07 12:39:00
这次票价确实提高啊,尤其跨年提高不少
作者: alice910265 (Alice玲子)   2016-11-07 12:40:00
能明白没买到情绪不好,因为我也没买到...
作者: TBBT (一步又一步)   2016-11-07 12:40:00
这次是很糟,但五迷的数量真的不能跟其他人类比,原PO也说其实拓元的平台很猛了不是?
作者: alice910265 (Alice玲子)   2016-11-07 12:41:00
最高票价3880,这几年世运都如此。
作者: TBBT (一步又一步)   2016-11-07 12:42:00
场地比较小,票价区间少了几层,但除了跨年场哪有提高?
作者: alice910265 (Alice玲子)   2016-11-07 12:42:00
跨年有超时成本..可接受提高。比起其他歌手已佛心价
作者: u86u86 (牙牙牙~~)   2016-11-07 12:42:00
其实大家只是希望拓元/相音给个说法 毕竟这次真的很怪啊..
作者: maycandy (Sinny)   2016-11-07 12:43:00
那应该请拓元说明补救措施的细节,不然很多人都觉得死的不明不白的~
作者: alice910265 (Alice玲子)   2016-11-07 12:43:00
数据库黑箱求公平性,重新回溯资料要怎么说明?运算法则还要考虑防黄牛外,处理异常连线
作者: ptlin (終於結束的起點)   2016-11-07 12:45:00
#1EflmgOW (MayDay) 诺亚方舟台北场票价 跨年就是4280..
作者: emcat (貓貓)   2016-11-07 12:45:00
觉得应该要说明回复的标准..不过..可能..实现率不高 Orz
作者: tingchou909 (會找到方向的)   2016-11-07 12:45:00
还是有很多不解的地方...一个售票可以让我把书拿回
作者: alice910265 (Alice玲子)   2016-11-07 12:45:00
不过,要怎么说明才能平息众怒,还是交给拓元自己吧
作者: tingchou909 (會找到方向的)   2016-11-07 12:46:00
来念也是蛮不得了的了XD
作者: alice910265 (Alice玲子)   2016-11-07 12:46:00
*防黄牛挡外挂
作者: sillyname (sillyname)   2016-11-07 12:46:00
总有一种枉死的感觉 然后心情就很差
作者: tingchou909 (會找到方向的)   2016-11-07 12:47:00
现在觉得除非叫工程师把整个系统架构讲清楚,不然真的无法释怀
作者: blue5429 (舜)   2016-11-07 12:48:00
SORRY我记错~刚去查之前诺亚,只有$1280这个区块消失了
作者: TBBT (一步又一步)   2016-11-07 12:49:00
那是人家的商业机密,他们还要跟其他平台竞争,是怎么摊在阳光下说清楚?
作者: ptlin (終於結束的起點)   2016-11-07 12:49:00
完整说明 会不会让黄牛外挂有机可趁了...?
作者: tingchou909 (會找到方向的)   2016-11-07 12:51:00
T大,我只的不是程式部分,而是规划流程是怎么跑的,就像最后订单成立是依据什么这样
作者: alice910265 (Alice玲子)   2016-11-07 12:52:00
但其实这部分讲出细节来,外挂就知道逻辑怎么闪了
作者: TBBT (一步又一步)   2016-11-07 12:52:00
或许内行人就从那寥寥数语可以破解系统,要不要说、能不能说该说多少拓元可以自己判断,但就我工作上最常遇到的情况是工程技术人员最常说:你们以为系统程式设计很简单,光是一条线,我们就得写上好几个程式码去控制它,很多事不是我们不配合但技术上真的有困难。当然他讲完我们还是觉得他们只是不想
作者: seniorbest (再干一杯永远)   2016-11-07 12:56:00
有朋友买两张订单回复的结果是不同区不同排各1张,让
作者: TBBT (一步又一步)   2016-11-07 12:56:00
帮我们改程式,跟今天大家的怒火很像。但还是得说请大家想想
作者: TBBT (一步又一步)   2016-11-07 12:57:00
提出的要求是否合理。
作者: tmio (踢米欧)   2016-11-07 13:02:00
user都嘛没买到就是系统烂...已感恩 比年代时期好太多以前9点卖票,8点50系统可能就已经死掉了
作者: tingchou909 (會找到方向的)   2016-11-07 13:14:00
这次系统不好是事实,拓元依旧没声没息,让使用者要如何判定下次售票时该依据什么标准来买票ˊ_>ˋ
作者: acrystal (.......)   2016-11-07 13:21:00
最大原因就错估人数,到底有什么好不了解的早上9点实名开卖那时就错估了,所以花时间紧急加开serve开server要时间,所以延到1430开卖,但他们肯定又估错因为不是每个人都去抢9点最需要说明的是为何有人看到付款画面订单却没恢复没看到付款画面却有订单肯定是资料已写入,但还没回传结果就挂了
作者: MathowTS (Mathow)   2016-11-07 13:31:00
专业推 不专业的问一句 server开多少究竟是哪一端决定的?是相音跟拓元签约的时候就定了还是拓元自己决定开多少?
作者: bluewhite113 (越活越开心)   2016-11-07 13:31:00
请问是要0秒按还是过1秒按立即购买比较好?
作者: acrystal (.......)   2016-11-07 13:42:00
Server要开多少相音怎么会知道,没人回给外行人估,顶多请相音估人数吧
作者: MathowTS (Mathow)   2016-11-07 13:44:00
谢谢a大 一直有人说是相音没买server啊@@
作者: suba1121 (宣)   2016-11-07 13:49:00
恩 我是那个说相信音乐没有买服务器的人 的确没写新闻稿不表示没有多花钱 上次阿妹花了4百万多加服务器 不知道可以应付多少流量 但新闻稿写12分钟内订单几乎都成立20万的流量跟29万的流量来比 虽然多了9万 但是可以让订单需要花上这么多时间去消耗 有没有多花钱只有相信跟
作者: livingnan (9527)   2016-11-07 13:57:00
最难的就是估人数,开到最大还是有可能挂,因为不知道当天有多少人会来抢
作者: suba1121 (宣)   2016-11-07 13:57:00
拓元自己知道 只是这次应该是相信音乐自己也错估了以为会是跟世运场一样
作者: lumandog (鱸鰻狗)   2016-11-07 13:58:00
前面有人推文了,阿妹那次可应付20万,这次是瞬间涌入29万多,以阿妹那次来说,也撑不了这次
作者: acrystal (.......)   2016-11-07 13:59:00
20万跟29万怎会一样,爆了就是爆了,就算只多1人也是爆
作者: lumandog (鱸鰻狗)   2016-11-07 13:59:00
(我推文慢了XD)
作者: suba1121 (宣)   2016-11-07 14:01:00
我没有说20万跟29万一样 但是 我所不了解的是 所谓的挂是连网站都进不去还是 系统哪一个点有问题 因为我的想法是 顶多会不顺畅 消化得比较慢阿妹那次有应付了20万人次 但会不会其实可以应付更高人次 因为是真的很顺就是了 这要专业的来解答了XD
作者: acrystal (.......)   2016-11-07 14:09:00
正常来说慢慢消化是可以,问题是大家有乖乖等他消化吗不是都一直点一直点,他还没消化你又一直塞所以瞬间撑不住后面也不用想能撑下去
作者: tk930732 (吃吃不吃鱼)   2016-11-07 14:22:00
每个人都是PM这样RD只能哭哭啊改一次系统就需要压力测试 拓元怎么可能不会去测系统负载我是觉得当下在线上的没有到29万人次那么多但是系统一开放购票 瞬间人次可能还超过29万与29万相差的人数可能是挂机或是黄牛黄牛用程式应该不会挂在网站上 而是抢票了才透过程式连
作者: zeki621 (小日本)   2016-11-07 14:29:00
走到payment之后吐504回来不知道是怎样
作者: tk930732 (吃吃不吃鱼)   2016-11-07 14:30:00
黄牛的应该也不止像一般使用者只有手机+PC NB我猜低估的人数可能还是来自于黄牛的外挂吧payment 是拓元的付款方式还是信用卡结帐
作者: alice910265 (Alice玲子)   2016-11-07 14:33:00
阿妹那次是系统开到20万,实际可能没冲到20万相音说的29万就是开放的瞬间流量,应该当机了吧XD
作者: suba1121 (宣)   2016-11-07 14:35:00
阿妹那次我看新闻是写"10分钟内同时有20万人上线"没看到是写服务器可以应付20万 除非是新闻写错了
作者: acrystal (.......)   2016-11-07 14:38:00
那句话就是最大的bug,十分钟怎么会是同时
作者: tk930732 (吃吃不吃鱼)   2016-11-07 14:39:00
他可能定义成转圈圈的有20万人吧(?)
作者: alice910265 (Alice玲子)   2016-11-07 14:42:00
中间有推文拓元专访,瞬间I/O 20万次/秒从那篇来的
作者: asusfrank (frank)   2016-11-07 14:44:00
购票系统 跟 主办单位是分开的!主办单位不负责卖票!所以相信不会知道拓元购票系统架构,购票单位要自己去了解自己目前的系统是否可以承载庞大歌迷!以及是否要加开系统来分散人潮!
作者: ptlin (終於結束的起點)   2016-11-07 14:45:00
http://www.ithome.com.tw/news/94530 ← 拓元专访文帮大家拉到下面来...
作者: suba1121 (宣)   2016-11-07 14:45:00
越讨论越好奇到底这次到底开到多大XD
作者: ptlin (終於結束的起點)   2016-11-07 14:47:00
在"预估两倍用量"的主题 最后第二段...
作者: suba1121 (宣)   2016-11-07 14:48:00
恩 我知道系统跟主办是分开的 不过为何阿妹那次要多花4百万去租 这笔钱谁出?
作者: ptlin (終於結束的起點)   2016-11-07 14:52:00
新闻来看 觉得是阿妹自己+主办/经纪人陈镇川 自掏腰包...
作者: acrystal (.......)   2016-11-07 14:54:00
刚去查了一下,400万不是阿妹出的吧
作者: asusfrank (frank)   2016-11-07 14:58:00
新闻看看就好!阿妹那一场还是挂了!而且挂在金流那一块!
作者: blueweak (暱称)   2016-11-07 15:03:00
这次有遇到一分钟504 gateway timeout但学友哥那场没有是不是拓元改程式啦?如果是那真的是枉死504之后会跳payment但看到是空白 只能重抢重新转圈圈学友那场我转7分钟没遇到504 然后就买到了 唉
作者: suba1121 (宣)   2016-11-07 15:07:00
喔 看到了开到每秒20万 不过挂金流那端至少后面很快就有对策 而不是像世运跟这次是转不停看不到订单...对我来说那次购票经验真的有别以往五月天的场次都是前面就挂 真的很妙XD
作者: alice910265 (Alice玲子)   2016-11-07 15:09:00
前端就当是要怎么进到后端金流……
作者: suba1121 (宣)   2016-11-07 15:10:00
我也觉得是阿妹+主办+经纪人自己出 希望系统不要当
作者: ptlin (終於結束的起點)   2016-11-07 15:12:00
觉得这次也有承租加大流量 只是没发稿写新闻而已...以阿妹20万/五月天实名制近30万 可知就是系统无法负荷 爆了
作者: emcat (貓貓)   2016-11-07 15:14:00
觉得有加大+1..不然光进区域就转了...
作者: suba1121 (宣)   2016-11-07 15:14:00
恩 讨论下来的确有多花钱的可能性很高 我觉得这是好事为何不说 我自己是有点疑惑拉不过 经过这次的售票状况 希望拓元跟相信音乐都可以更好下次让大家更顺利购票拓元的金流每次遇到大场子一定都当的 建议以后直接说订单成立后多久去查订单 全部都ATM转帐或小七取票付款
作者: alice910265 (Alice玲子)   2016-11-07 15:26:00
不推小七付款。后续黄牛问题废票退费难处理。信用卡有信用卡的优点。为了挡黄牛已在细节做调整
作者: TBBT (一步又一步)   2016-11-07 15:29:00
http://i.imgur.com/Fb8ZFHg.jpg其实相音有说加了,只是事后编辑大家都没看到,一直说拓元没加。
作者: suba1121 (宣)   2016-11-07 15:47:00
那个声明我有看到 只是加了多少XD说真的如果今天相信音乐一开始就说多花多少钱因应售票今天讨论的面向就会有点不同了我觉得
作者: TBBT (一步又一步)   2016-11-07 15:51:00
加到史上最大应该有超过阿妹吧
作者: suba1121 (宣)   2016-11-07 15:54:00
恩 的确相信音乐应该也花了4百万甚至更多
作者: lumandog (鱸鰻狗)   2016-11-07 15:56:00
说明加多少又如何,超过负荷一样爆掉啊~没买到还是会想抒发难过的心情啊
作者: suba1121 (宣)   2016-11-07 15:56:00
ATM转帐对于没卡片可转的人比较麻烦 还有转帐成功失败有些人真的不会看说加多少 对我而言会觉得主办有努力希望让购票顺利是五迷太强大 五月天魅力太强大 至少不会有我一开始的认为主办没有多花一点钱让购票顺利一点 说起来就是错怪了
作者: acrystal (.......)   2016-11-07 16:03:00
9点就史无前例了,更何况1430肯定又再加,不要只看自己想看的
作者: suba1121 (宣)   2016-11-07 16:04:00
可能会是抒发天啊到底要怎样的系统才可以负荷五迷.....
作者: tk930732 (吃吃不吃鱼)   2016-11-07 16:41:00
我觉得不管加了多少 最后也还是都被黄牛抢走程式速度比较快应该是true没错只差在今天圈圈转几分钟告诉你没票 就可以再去try其他区
作者: muriel1984 (为什么喜欢音乐)   2016-11-07 19:29:00
作者: Faoitohins (ㄟ...)   2016-11-07 22:39:00
专业推
作者: kathysnow (天籁雪)   2016-11-07 22:43:00
专业推
作者: weer0618 (weer)   2016-11-08 01:45:00
只有人品真的不够用 唯有拥有黄牛程式才能保证每次都能买到票 好无奈的不公平竞争
作者: tzuchun0214 (沙发马铃薯)   2016-11-08 02:18:00
谢谢分享! 另推五月天票价真的很佛心 对歌迷非常好
作者: loveiu0406 (指考甯)   2016-11-08 06:46:00
专业推
作者: u850234 (France)   2016-11-08 14:40:00
推原po看最新系列的讨论突然想到,偏远地区会不会反而比较容易买到票?我是从网页进入点是分散的这个点下去想。‘这一系列’,语音输入法的笔误......比如说,新竹市使用中华电信上网的人都是由IP:H1、H2、H3连入拓元,平均每台1000人;而南投县只有N1一台,但这里想抢票的人少,只有100人,那买到机会就比较大。
作者: cycad253697   2016-11-09 02:41:00
刚好看到这个:云端系统对爆量的测试与准备https://goo.gl/BQsTSN (上传者:Modern Web)拓元执行长分享他们的运作模式,以阿妹那次售票为例

Links booklink

Contact Us: admin [ a t ] ucptt.com