圖片來源: 

拓元

在張惠妹與江蕙演唱會搶票事件,購票民眾都想搶在第一時間登入售票頁面買票,售票廠商不論是拓元與寬宏都遭遇到了網站瀏覽人數瞬間爆量考驗。超過22萬人湧進寬宏售票系統,當日瀏覽人數高達35萬人次,拓元網站更是早上10點一開賣,網頁點閱數就瞬間暴衝最高峰,將近6百萬次的點閱量。諸如此類爆量的事件已非特例,拓元總經理邱光宗表示,這類網路瞬間爆量的搶票課題,未來將會更頻繁。

兩起秒殺搶票事件,但結果卻大不相同。寬宏系統一開賣就塞爆,長達數小時,許多人都無法連上售票網站。拓元網站則是在12分鐘完成12萬張售票作業,只是卡關在後續付款。如何撐過開賣瞬間近6百萬點閱量的網頁瀏覽請求?拓元靠的正是移上雲端後的分散式架構售票系統。

傳統售票系統無法直接上雲端

邱光宗表示,售票系統為了上雲端,系統架構得跟傳統作法截然不同。傳統作法大多只考慮要承受數千人同時上線訂票,因此,架構設計較單純,常見採取網頁伺服器搭配一臺後端資料庫就能解決,但是「直接將這樣的架構搬上雲端,是無法隨服務對象數量增加而輕易擴展系統,反而適得其反。」

傳統售票系統預期服務的人數較少,因此系統可擴充性有限,遇到較大流量時,業主大多是開設更多網頁伺服器,搭配負載平衡機制來分散流量。而後端資料庫則為了避免門票超賣,須維持購票資訊的一致性,而只能使用單一臺資料庫系統。

一臺後端資料庫的設計正是改將傳統售票系統直接搬上雲端的瓶頸,即使透過升級資料庫硬體或虛擬機器等級來提高系統效能,所能增加的資料庫存取能力仍有侷限,遇到江蕙或張惠妹演唱會這種,動輒數十萬人搶票的規模,前端得動員到上千臺網頁伺服器才夠滿足瀏覽需求,而千臺網頁伺服器的資料存取若都集中到一臺資料庫上,將有如DDoS攻擊一般,直接灌爆資料庫而導致服務失效。在自家機房,單一資料庫仍然可以透過硬體擴充升級效能,但所費甚鉅,對臺灣售票業者而言,這已超過可以承受的合理成本。

雖然邱光宗不願多透漏雲端購票系統的設計細節,不過,他表示,設計原則是採取多層次架構,來解決資料庫連線數過高的問題。架構上,網頁伺服器位在系統最上層,數量最多,將其所產生的資料流經過一層一層切分最後再整併,來分散大量網頁伺服器對資料庫產生的壓力。甚至,拓元系統中,還使用了分散式架構的NoSQL資料庫DynamoDB,開賣不久曾一度使用到接近20萬IOPS的承載量,來處理大量的資料流。邱光宗說,這樣的系統設計很困難,在前端完全看不出來跟以前的系統有什麼差異,但是後端做的事情完全不一樣。

另一個也用雲端架構處理搶票難題的例子是獨立音樂網Indievox。由於Indievox以服務小眾族群為主,因此系統架構較為簡單採用2層式架構,上層是網頁伺服器以及下層的資料庫,類似前述的傳統設計,但採用了讀寫分離的資料庫叢集架構,只有Master資料庫可以被寫入,搭配多份Slave副本資料庫提供讀取,解決大量網頁伺服器存取的問題。他們採用的是Amazon的RDS資料庫服務,Indievox技術長林志傑說,RDS服務能夠方便地調整資料庫等級(Scale Up)和增加讀寫分離資料庫(Scale Out),以應付他們所預估要服務的購票人數。

林志傑分享,Indievox成立之初,也是自己維護執行售票系統的實體機器,但是隨著購票人數越來越多,屢屢需要添購新機器來應付每次搶票的高峰流量,而這樣的流量又並非常態,硬體成本越來越吃不消,再加上Indievox不是單純的售票網站,同時還提供了其他的音樂服務,遇到熱門票券搶票時,無法調度部分機器專供售票之用,就會影響了其他服務的執行,這樣的窘境讓他們很困擾,直到將售票系統搬上雲端,才解決了問題。

Indievox在2013年時接下了伍佰演唱會的售票活動,而決定將系統搬上雲端。舊有系統只要同時上線人數達到數千人就會開始塞車,他們預估,伍佰演唱會的門票應該會有數萬人搶票,因此加緊趕工地把系統搬上Amazon。

但不是將系統搬上雲端,一切就沒問題了,林志傑說,那次伍佰演唱會售票,系統上雲端後還是塞爆了,他們大大地低估了搶票人潮,導致虛擬機器數量準備不夠,完全無法應付實際的訂票流量。當時,他們決定重啟系統並增加更多虛擬機器,但訂票人潮仍舊繼續湧入,林志傑只好先禁止更多人上站,等所有系統重啟完畢後再一併開放。

虛擬機器應在開賣半小時前準備好

另一家售票服務KKTIX總監薛良斌說,為了避免來不及應付,KKTIX會在門票開賣前半小時,先啟用到足夠數量的虛擬機器,「遇到爆量再開虛擬機器已經來不及了,」他解釋:「因為啟用一臺的過程需耗時15分鐘。」若以張惠妹演唱會售票的例子,後續支援的虛擬機器還未完全啟用,12萬張票早就已經賣完了。邱光宗坦言,售票這件事,如AWS這樣的雲端自動擴充機制都沒用。

拓元同KKTIX的做法,在售票開賣前半小時,就已經開啟了1,300臺虛擬機器備戰,來承載數十萬人的流量,但在1小時後,當大部份的票券都已售出,邱光宗需要虛擬機器的數量大幅減少到只剩下3臺,1小時內上下變動高達數百倍的運算資源異動,「這是過去很難做到的事」。邱光宗提到,不只能夠快速的擴展,靠雲端服務也能夠快速地收縮。

從1,300臺虛擬機器能夠快速減少3臺最大的價值是,邱光宗表示,這樣的彈性帶來成本控制的優勢。

除了要提早準備虛擬機器之外,雲端供應商對於可租用虛擬機器的數量也有預設上限值。林志傑以Amazon帳號為例來解釋,一般的帳號EC2一次只能開啟20臺EC2執行單元以及5臺資料庫,需要透過Amazon Support申請才能增加數量。他以EC2較低規格的c3.large虛擬機器來說,每臺平均約可負荷300人同時在線,如果預估有10,000人來搶票的話,就要預先開啟30臺以上的c3.large來應付。林志傑提到,由於他們服務的多數為獨立音樂團體,大部份沒有太多的資金,在售票部分不提高太多成本的前提下,他們必須把機器的數量控制得很剛好,太多浪費太少又會被塞爆。

同樣也上了雲端的KKTIX售票系統,除了用雲端架構解決系統面的問題,還從流程面著手,KKTIX總監薛良斌表示,他們採用電影票銷售作法,來賣演唱會票券,先選票種再選位。想要買演唱會門票的人,需要先選擇票種以取得選位資格。

接著再依據可銷售數量來限制可進入購票流程的人數上限,以降低系統負擔,以小巨蛋有12,000個座位為例,只有前12,000名取得選位資格的人,才能進入購票流程,其他人得等到有人放棄或離開才能取得選位資格,否則就會被擋在系統外,並看到畫面顯示售票結束的訊息。而採取這樣的售票流程設計,薛良斌表示,無論多少人來搶票,對KKTIX系統來說,都跟12,000人搶票的情況一樣。

從上述幾家售票系統業者的經驗來看,秒殺搶票產生的爆量問題不是不可解,而是難解,售票系統得採取與過去截然不同的設計才行。

 

除了採用雲端架構打造系統之外,KKTIX總監薛良斌表示,也可改用賣電影票的概念來賣演唱會的票,先選票種再選位,並用可賣票數來限制進入系統購票的人數,較能避免系統塞爆。

 

相關報導請參考:「秒殺搶票塞爆售票系統=無解?」

熱門新聞

Advertisement