<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>雲端架構 - 東東 GCP 教學 - GCP 實戰講師</title>
	<atom:link href="https://dongdonggcp.com/category/%E9%9B%B2%E7%AB%AF%E6%9E%B6%E6%A7%8B/feed/" rel="self" type="application/rss+xml" />
	<link>https://dongdonggcp.com</link>
	<description>助你考取證照，轉職成功</description>
	<lastBuildDate>Tue, 08 Apr 2025 08:16:04 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://dongdonggcp.com/wp-content/uploads/2025/04/cropped-340838097_121391010914395_5443948698124160121_n-32x32.jpg</url>
	<title>雲端架構 - 東東 GCP 教學 - GCP 實戰講師</title>
	<link>https://dongdonggcp.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">243235092</site>	<item>
		<title>為什麼看魷魚遊戲都不會卡？Netflix 的影片處理技術解析</title>
		<link>https://dongdonggcp.com/2025/01/22/netflix-video-processing-technology/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=netflix-video-processing-technology</link>
					<comments>https://dongdonggcp.com/2025/01/22/netflix-video-processing-technology/#respond</comments>
		
		<dc:creator><![CDATA[東東]]></dc:creator>
		<pubDate>Wed, 22 Jan 2025 07:56:23 +0000</pubDate>
				<category><![CDATA[雲端架構]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[netflix]]></category>
		<category><![CDATA[video]]></category>
		<guid isPermaLink="false">https://dongdonggcp.com/?p=8371</guid>

					<description><![CDATA[<p>1. 自適應串流技術 (Adaptive [&#8230;]</p>
<p>The post <a href="https://dongdonggcp.com/2025/01/22/netflix-video-processing-technology/">為什麼看魷魚遊戲都不會卡？Netflix 的影片處理技術解析</a> first appeared on <a href="https://dongdonggcp.com">東東 GCP 教學 - GCP 實戰講師</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="687" height="823" src="https://dongdonggcp.com/wp-content/uploads/2025/01/e688aae59c96-2025-01-22-e4b88be58d882.00.02-1.png" alt="" class="wp-image-10419" srcset="https://dongdonggcp.com/wp-content/uploads/2025/01/e688aae59c96-2025-01-22-e4b88be58d882.00.02-1.png 687w, https://dongdonggcp.com/wp-content/uploads/2025/01/e688aae59c96-2025-01-22-e4b88be58d882.00.02-1-250x300.png 250w" sizes="(max-width: 687px) 100vw, 687px" /></figure>



<p>1. 自適應串流技術 (Adaptive Streaming)</p>



<p>你手機或家裡的 Netflix App，如果發現你網路突然變慢，它會立刻幫你把影片畫質調低一點，讓你可以繼續追劇不中斷。等網路速度恢復後，畫質也會自動變回高清，完全不用你操心。</p>



<p>2. 內容分發網路 (CDN)</p>



<p>當你想看魷魚遊戲時，影片不是從韓國或美國傳過來，而是從離你最近的「倉庫」傳送，就像是從你家附近叫外送一樣快速方便。</p>



<p>技術一點來講，他們與世界各地的網路服務商合作，在不同地理位置部署內容伺服器，會先把最近觀眾看過的內容「暫存」在 CDN 節點上，這樣就不用大老遠從美國傳影片到你家，</p>



<p>3. 高效影片編碼</p>



<p>Netflix 採用如 VP9 和 HEVC/H.265 影片編碼技術，比上一代 H.264 減少約 40-50% 的檔案大小，甚至 H.265 需要的頻寬 (15-25 Mbps) 還比 H.264 小 (25-35 Mbps)，特別適合 4K 內容，所以你在家用超大螢幕觀看都不會模糊。</p>



<p>4. 預測性快取</p>



<p>Netflix 會分析你的觀看習慣，猜你接下來想看什麼。比如說你在追「單身即地獄」或「殺手安西教練」(?)，它就會偷偷先把下一集存在附近的伺服器，這樣你要看的時候就超級快。</p>



<p>5. 智慧播放緩衝</p>



<p>它會提前載入一段內容，確保你的觀看體驗順暢。如果網路不穩，它會多存一點；網路很順的時候，就少存一點，在確保流暢播放和節省頻寬之間取得平衡。</p>



<p>祝大家追劇愉快！</p><p>The post <a href="https://dongdonggcp.com/2025/01/22/netflix-video-processing-technology/">為什麼看魷魚遊戲都不會卡？Netflix 的影片處理技術解析</a> first appeared on <a href="https://dongdonggcp.com">東東 GCP 教學 - GCP 實戰講師</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://dongdonggcp.com/2025/01/22/netflix-video-processing-technology/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">10181</post-id>	</item>
		<item>
		<title>[GCP 教學] 周杰倫演唱會 AWS 售票系統架構解析 &#8211; 系統穩和 vs 使用者體驗，哪個重要？</title>
		<link>https://dongdonggcp.com/2024/12/05/concert-ticketing-system-architecture-analyzing-and-improvement/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=concert-ticketing-system-architecture-analyzing-and-improvement</link>
					<comments>https://dongdonggcp.com/2024/12/05/concert-ticketing-system-architecture-analyzing-and-improvement/#respond</comments>
		
		<dc:creator><![CDATA[東東]]></dc:creator>
		<pubDate>Thu, 05 Dec 2024 14:57:16 +0000</pubDate>
				<category><![CDATA[雲端架構]]></category>
		<category><![CDATA[Autoscale]]></category>
		<category><![CDATA[GCP]]></category>
		<category><![CDATA[售票系統]]></category>
		<category><![CDATA[排隊]]></category>
		<category><![CDATA[搶票]]></category>
		<category><![CDATA[擴充]]></category>
		<category><![CDATA[負載平衡]]></category>
		<category><![CDATA[資料庫]]></category>
		<guid isPermaLink="false">https://dongdonggcp.com/?p=8135</guid>

					<description><![CDATA[<p>前言 前陣子周杰倫演唱會售票系統面對超過 [&#8230;]</p>
<p>The post <a href="https://dongdonggcp.com/2024/12/05/concert-ticketing-system-architecture-analyzing-and-improvement/">[GCP 教學] 周杰倫演唱會 AWS 售票系統架構解析 – 系統穩和 vs 使用者體驗，哪個重要？</a> first appeared on <a href="https://dongdonggcp.com">東東 GCP 教學 - GCP 實戰講師</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">前言</h2>



<p>前陣子周杰倫演唱會售票系統面對超過 89 萬人同時搶票的情況，售票系統方很自豪地說，系統能夠承載如此大的流量，不會掛掉的同時，還能順利地把票賣完。</p>



<p>雖然能夠推持住系統不會崩潰，但該系統的售票頁面不斷出現「轉圈圈」的狀況，讓許多歌迷無法順利購票，關於使用者體驗這一點，似乎還有可以再優化的空間。</p>



<p>本文將從技術角度深入分析售票系統架構，並探討各種可能的優化方案。</p>



<h2 class="wp-block-heading">一、現有AWS架構的問題分析</h2>



<p>根據 <a href="https://aws.amazon.com/tw/solutions/case-studies/tixcraft/">AWS 官方指出</a>，售票系統就是架設在 AWS 雲端上。不過啊，這張圖是2020年的，現在的架構應該優化更多了，但目前只找到這張，我們就以這架構來分析看看吧！</p>



<p>首先來看一下售票系統的架構圖：</p>



<figure class="wp-block-image aligncenter size-large"><a href="https://aws.amazon.com/tw/solutions/case-studies/tixcraft/"><img decoding="async" width="1477" height="1080" src="https://dongdonggcp.com/wp-content/uploads/2024/11/tixcraft-architecture.7a778b4552369cd27214bcd6bd83770533e130f2.png?w=1024" alt="" class="wp-image-8175" srcset="https://dongdonggcp.com/wp-content/uploads/2024/11/tixcraft-architecture.7a778b4552369cd27214bcd6bd83770533e130f2.png 1477w, https://dongdonggcp.com/wp-content/uploads/2024/11/tixcraft-architecture.7a778b4552369cd27214bcd6bd83770533e130f2-300x219.png 300w, https://dongdonggcp.com/wp-content/uploads/2024/11/tixcraft-architecture.7a778b4552369cd27214bcd6bd83770533e130f2-1024x749.png 1024w, https://dongdonggcp.com/wp-content/uploads/2024/11/tixcraft-architecture.7a778b4552369cd27214bcd6bd83770533e130f2-768x562.png 768w" sizes="(max-width: 1477px) 100vw, 1477px" /></a><figcaption class="wp-element-caption">售票系統架構圖<br>資料來源：<a href="https://aws.amazon.com/tw/solutions/case-studies/tixcraft/">AWS 官網</a></figcaption></figure>



<p>接下來以個人淺見來看看該架構是否有可以更好的地方：</p>



<h3 class="wp-block-heading">(一) 系統架構層面</h3>



<h4 class="wp-block-heading">1. 負載平衡</h4>



<p>想像一下，就像是一個只有三個服務窗口的車站，突然間來了九十萬人要買票。即使每個窗口再怎麼快，也無法應付這麼多人。</p>



<p>雖然有基本的負載平衡器 (Elastic Load Balancing) 來分配人流，但就像是交通指揮只會把人平均分配到三個窗口，沒有更聰明的疏導方式。系統需要的是更像春節期間的車站管理，有預約、分流、排隊等多重措施。</p>



<h4 class="wp-block-heading">2. 資料庫設計問題</h4>



<p>現在的資料庫就像是一本大帳本，所有人都要搶著在同一本帳本上記錄。當九十萬人同時要在這本帳本上寫東西，自然會打架。</p>



<p>DynamoDB 雖然很強大，但難以處理高併發，如果只用一個資料庫來處理所有請求，就像是再厲害的收銀員，同時間也只能服務有限的客人。</p>



<p>我們需要的是資料分片策略，就像是多個專門的小帳本，分別處理不同的資料，就像大賣場會開很多收銀台一樣。</p>



<h4 class="wp-block-heading">3. 擴展性限制</h4>



<p>EC2 主機的擴充速度可能趕不上需求，等擴展完成可能大部分客人已經等得不耐煩走人了。這就需要更智慧的預測和更快的擴充機制，就像餐廳會預先觀察訂位情況來準備桌位。</p>



<h3 class="wp-block-heading">(二) 使用者體驗問題</h3>



<p>1. 缺乏透明度</p>



<p>目前的系統就像是把用戶關在一個黑盒子裡，只能看到一個永遠轉不完的圈圈，不知道自己排在第幾位，還要等多久。</p>



<p>這種體驗就像是排隊但看不到前面有多少人，也不知道隊伍有沒有在動。這會造成用戶焦慮，也容易讓人懷疑系統是否還在正常運作。</p>



<figure class="wp-block-image aligncenter size-large"><img decoding="async" width="819" height="450" src="https://dongdonggcp.com/wp-content/uploads/2024/11/circle.png?w=819" alt="" class="wp-image-8182" srcset="https://dongdonggcp.com/wp-content/uploads/2024/11/circle.png 819w, https://dongdonggcp.com/wp-content/uploads/2024/11/circle-300x165.png 300w, https://dongdonggcp.com/wp-content/uploads/2024/11/circle-768x422.png 768w" sizes="(max-width: 819px) 100vw, 819px" /><figcaption class="wp-element-caption">售票系統轉圈圈<br>資料來源 <a href="https://tixcraft.com/">售票系統</a></figcaption></figure>



<p>2. 系統響應問題</p>



<p>當系統過載時，用戶看到的就是無止盡的載入畫面，不知道到底是成功了還是失敗了。這就像是在自動販賣機投錢後，機器既不出貨也不退錢，讓人不知所措。</p>



<p>系統需要明確告訴用戶當前的狀態，即使是失敗也要讓用戶知道原因和下一步該怎麼做。</p>



<p>也就是說，買票的粉絲可能太晚買票了，至少讓他們知道前面還有多少人在買，大概要等多久，當他們看到人數太多，也有可能乾脆就不買了，讓真正死忠的粉絲繼續排隊買票。</p>



<h2 class="wp-block-heading">二、改進方案分析</h2>



<h3 class="wp-block-heading">(一) 資料庫架構優化</h3>



<h4 class="wp-block-heading">1. 為什麼需要改進資料庫架構？</h4>



<p>現有的單一資料庫架構就像是一個超大的倉庫，所有人都要從同一個門進出。當人太多時，自然會造成擁擠。</p>



<p>改進的方案就像是把一個大倉庫分成多個小倉庫，每個倉庫負責不同的區域或功能，這樣就能更有效率地服務更多人。</p>



<p>如果使用多個不同資料庫，把一個大資料庫切分成多個小資料庫，就像是一個服務櫃台變成多個服務櫃台，自然能夠服務更多人，也降低了某個櫃台故障時影響所有人的風險。</p>



<p>2. 可能會有的缺點</p>



<p>想像一下，如果今天有個客人要同時買 A 區和 B 區的票，但這兩個區域是分別由不同資料庫管理的。這時系統就必須同時和兩個資料庫溝通，確保兩邊都要成功購票，才算交易完成。</p>



<p>這種跨資料庫的交易變得很複雜，就像是要同時在不同櫃台辦理業務。而且每個資料庫的資料都要保持同步，比如說座位狀態、購票紀錄等，</p>



<p>這會讓系統變得很複雜，也需要投入更多資源來維護這些資料庫。</p>



<p>3. 推薦做法</p>



<p>與其完全切分成獨立的資料庫，不如採用「分片」的方式。分片就像是同一個大資料庫的不同分部，它們共用相同的管理方式，但各自負責不同的資料。</p>



<p>再搭配分散式的快取系統，可以先把熱門的資料（例如座位狀態）存在記憶體中，這樣就不用每次都去資料庫查詢。</p>



<p>最後，對於跨區域的購票需求，可以使用訊息佇列來處理，讓系統能夠更有條理地處理這些複雜的交易。這樣的設計既保持了系統的簡單性，又能應付大量的購票需求。</p>



<h3 class="wp-block-heading">(二) 實名制驗證機制</h3>



<h4 class="wp-block-heading">1. 實名驗證的好處</h4>



<p>實名制最直接的好處就是能大幅降低黃牛票的問題，因為每張票都綁定實際觀眾的身分證，黃牛就無法大量囤票轉售。</p>



<p>這也讓整個交易變得更有保障，因為買票的人就是要進場看表演的人，票券的來源更有保障。</p>



<p>另外，當有人需要退票或換票時，主辦單位也能很容易確認這個要求是來自原始購票者，不會有人冒用他人身分來退票，整個售後服務變得更好管理。</p>



<p>當然，這點所有的人都理解，但並不是那麼容易做到。</p>



<h4 class="wp-block-heading">2. 實名驗證的缺點</h4>



<p>實名制最明顯的缺點是會拉長整個購票流程。想像一下，除了選位置、付款之外，還要額外填寫身分證字號、姓名等資料，而且可能還需要系統和政府資料庫做驗證，這些都會增加購票時間。</p>



<p>對售票系統來說，也需要建立更複雜的程式邏輯，要處理身分驗證、確認真實性、處理例外狀況等。</p>



<p>最重要的是，系統現在要處理大量的個人資料，不只要符合個資法的規範，還要有足夠的資安防護，以免發生資料外洩，這些都是很大的挑戰。</p>



<h4 class="wp-block-heading">3. 建議做法</h4>



<p>最理想的做法是讓使用者「提前」完成身分驗證。就像是網路銀行開戶，先在平常時間完成所有驗證程序，到真正要搶票時就不用再重新驗證，可以大幅縮短購票時間。</p>



<p>建議採用分散式的身分驗證服務，這樣就不會所有驗證請求都擠在同一個地方。系統可以同時使用多種驗證方式，例如身分證字號、手機號碼認證、金融卡驗證等，讓使用者可以選擇最方便的方式。</p>



<p>重要的是要在便利性和安全性之間取得平衡，既不能讓驗證程序太複雜而影響購票體驗，又要確保身分驗證的真實性。這樣的設計才能真正發揮實名制的優點，同時降低它帶來的負面影響。</p>



<p>4. 和<a href="https://www.nownews.com/news/6505267?srsltid=AfmBOoqKszBuDqYFQ2VCSp1wQsHp18ANxWSX3wBWzuR-yqNEyUG5afDS">劉德華演唱會實名制的做法</a>比較</p>



<p>(1) 採用「登記抽選制」而非即時搶票</p>



<p>這完全避免了系統崩潰的風險。因為在15天的時間窗口內（8/25-8/30），人們可以從容地登記資料，系統負載被分散到更長的時間。</p>



<p>(2) 有清楚的分流機制</p>



<p>卡友優先購票時段（11:28-13:28）和一般民眾登記時段（15:28後），這樣的設計可以有效管理系統負載。</p>



<p>身分資料修改機制很人性化：給予5天的時間（8/25-8/30）供人們修正資料錯誤，而且提供了明確的修改介面（「查看詳情」修正資料）。</p>



<p>(3) 對特殊情況有完整的配套</p>



<p>・生僻字可以用護照英文名稱取代<br>・身心障礙者和陪同者必須同時登記<br>・明確區分本地居民和海外人士的證件要求</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1164" height="850" src="https://dongdonggcp.com/wp-content/uploads/2024/11/e688aae59c96-2024-11-27-e4b88be58d885.25.28.png?w=1024" alt="" class="wp-image-8193" srcset="https://dongdonggcp.com/wp-content/uploads/2024/11/e688aae59c96-2024-11-27-e4b88be58d885.25.28.png 1164w, https://dongdonggcp.com/wp-content/uploads/2024/11/e688aae59c96-2024-11-27-e4b88be58d885.25.28-300x219.png 300w, https://dongdonggcp.com/wp-content/uploads/2024/11/e688aae59c96-2024-11-27-e4b88be58d885.25.28-1024x748.png 1024w, https://dongdonggcp.com/wp-content/uploads/2024/11/e688aae59c96-2024-11-27-e4b88be58d885.25.28-768x561.png 768w" sizes="(max-width: 1164px) 100vw, 1164px" /></figure>



<p>與我們原本建議方案的主要差異：</p>



<p>我們建議的「預先驗證」機制著重在搶票前就完成身分驗證，但劉德華演唱會採用的是「登記後慢慢驗證」的方式。這種方式雖然較不即時，但因為有抽選機制，所以時間不是那麼關鍵。</p>



<p>我們建議的分散式驗證服務主要是為了處理高併發的即時驗證需求，但在登記抽選制下，這種複雜的架構反而顯得多餘。</p>



<p>所以劉德華演唱會的做法其實更優秀，因為它徹底改變了遊戲規則 &#8211; 從「比快」變成「抽籤」。這種方式有幾個關鍵優勢：</p>



<p>・完全消除了系統崩潰的風險<br>・給予購票者更多時間確認和修正資料<br>・降低了黃牛票的投機空間（因為無法透過技術手段提高中籤機會）<br>・整體成本更低（不需要建置複雜的高併發架構）</p>



<p>這個案例告訴我們，有時候與其用技術解決問題，不如從商業邏輯層面改變遊戲規則。這種「登記抽選」的方式，既解決了技術問題，又提供了更好的使用者體驗，是一個值得借鑑的範例。</p>



<h3 class="wp-block-heading">(三) 智慧排隊系統</h3>



<h4 class="wp-block-heading">1. 排隊機制的運作原理</h4>



<p>想像一下，就像是遊樂園的快速通關系統，每個人進入隊伍時會拿到一個號碼，系統會告訴你大概什麼時候可以入場，你不用一直站在那裡等。在線上售票系統中，這表示用戶可以知道自己的位置，預估等待時間，甚至可以做其他事情同時等待。</p>



<h4 class="wp-block-heading">2. 具體實做方式描述</h4>



<p>(1) 即時狀態顯示</p>



<p>我們使用 API Gateway 的 WebSocket API 來建立與使用者的即時連線，這個連線資訊會被存放在 DynamoDB 中。</p>



<p>當使用者的排隊狀態有任何更新時，系統就會立即透過這個 WebSocket 連線推送最新狀態給使用者，讓他們能即時看到自己在隊伍中的位置和預估等待時間。</p>



<p>說到這個，我想到我用手機買郭富城演唱會門票時，至少它有告訴我要等多久。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1170" height="2015" src="https://dongdonggcp.com/wp-content/uploads/2024/11/img_2051.jpg?w=595" alt="" class="wp-image-8196" srcset="https://dongdonggcp.com/wp-content/uploads/2024/11/img_2051.jpg 1170w, https://dongdonggcp.com/wp-content/uploads/2024/11/img_2051-174x300.jpg 174w, https://dongdonggcp.com/wp-content/uploads/2024/11/img_2051-595x1024.jpg 595w, https://dongdonggcp.com/wp-content/uploads/2024/11/img_2051-768x1323.jpg 768w, https://dongdonggcp.com/wp-content/uploads/2024/11/img_2051-892x1536.jpg 892w" sizes="(max-width: 1170px) 100vw, 1170px" /><figcaption class="wp-element-caption">郭富城演唱會售票系統顯示等待提示<br>資料來源：自己買票的<a href="https://tickets.udnfunlife.com/application/utk01/utk0101_.aspx">系統截圖</a></figcaption></figure>



<p>(2) 排隊機制</p>



<p>排隊機制的實現則依賴於 DynamoDB 的分散式計數器功能。當使用者加入隊伍時，系統會在 DynamoDB 中建立一筆排隊記錄，並使用計數器來取得這位使用者在隊伍中的確切位置。</p>



<p>這些排隊資訊會被送入 SQS 佇列中等待處理，確保系統能夠有序地處理每一個排隊請求，不會因為大量湧入的請求而崩潰。</p>



<p>(3) 分批放行</p>



<p>分批放行的處理是透過 Lambda 函數來完成的。系統會定期觸發 Lambda 來處理一定數量的排隊用戶，這個數量是根據系統當前的負載狀況和處理能力來決定的。</p>



<p>當一批用戶被選中可以進入購票流程時，系統會同時通知這批用戶，讓他們開始選位和付款的流程。這種分批處理的方式可以有效控制系統負載，避免所有人同時湧入造成系統癱瘓。</p>



<p>(4) 超時處理</p>



<p>為了處理逾時的情況，我們使用 CloudWatch Events 來定期觸發檢查機制。</p>



<p>如果有用戶在規定時間內沒有完成購票流程，系統會自動將他們標記為逾時，釋放相關的資源（如暫時保留的座位），並通知後面的使用者前進。</p>



<p>這個機制確保了隊伍能夠持續流動，不會因為個別用戶的延遲而影響整體效率。</p>



<p>(5) 防欺詐機制</p>



<p>防欺詐機制則是整個系統的安全防護網。系統會檢查是否有重複排隊的情況，驗證每個用戶的身份，並且限制單一用戶在特定時間內能夠進行的操作次數。</p>



<p>這些機制共同確保了排隊過程的公平性，防止有人利用技術手段破壞正常的排隊秩序。</p>



<p>這整套系統需要多個 AWS 服務的配合才能順利運作。API Gateway 處理所有的即時通訊需求，DynamoDB 負責資料的儲存，SQS 確保訊息的可靠傳遞，Lambda 處理各種業務邏輯，CloudWatch Events 負責定時任務的觸發，而 ElastiCache 則用於提供快取服務以提升系統效能。</p>



<p>這些服務相互配合，打造出一個可擴展、可靠且高效的智能排隊系統。</p>



<p>這樣的架構設計不僅能夠處理大量的並發連接，還能確保整個購票過程的公平性，同時為使用者提供即時的狀態更新，並能自動處理各種異常情況。</p>



<p>最重要的是，它提供了良好的使用者體驗，讓使用者清楚知道自己的排隊狀態，不會因為系統的不透明而感到焦慮。</p>



<h3 class="wp-block-heading">(四) 概念示意圖</h3>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1664" height="947" src="https://dongdonggcp.com/wp-content/uploads/2024/12/e688aae59c96-2024-12-04-e4b88be58d887.01.20.png?w=1024" alt="" class="wp-image-8261" srcset="https://dongdonggcp.com/wp-content/uploads/2024/12/e688aae59c96-2024-12-04-e4b88be58d887.01.20.png 1664w, https://dongdonggcp.com/wp-content/uploads/2024/12/e688aae59c96-2024-12-04-e4b88be58d887.01.20-300x171.png 300w, https://dongdonggcp.com/wp-content/uploads/2024/12/e688aae59c96-2024-12-04-e4b88be58d887.01.20-1024x583.png 1024w, https://dongdonggcp.com/wp-content/uploads/2024/12/e688aae59c96-2024-12-04-e4b88be58d887.01.20-768x437.png 768w, https://dongdonggcp.com/wp-content/uploads/2024/12/e688aae59c96-2024-12-04-e4b88be58d887.01.20-1536x874.png 1536w" sizes="(max-width: 1664px) 100vw, 1664px" /><figcaption class="wp-element-caption">演唱會售票系統 AWS 概念示意圖</figcaption></figure>



<h4 class="wp-block-heading">1.入口層</h4>



<p>系統的第一道防線是 CloudFront 全球內容分發網路（CDN）。它負責將靜態內容快取在全球各節點，大幅降低使用者的存取延遲。</p>



<p>當大量用戶同時湧入時，CDN 可以有效分散流量，避免直接衝擊後端伺服器。</p>



<p>在 CDN 之後，應用程式負載平衡器（ALB）進一步分配流量到不同的前端服務節點。</p>



<h4 class="wp-block-heading">2.前端層</h4>



<p>使用 ECS Fargate 運行前端應用程式，採用無伺服器架構可以根據實際流量自動擴展。這層主要處理使用者介面渲染和基本的業務邏輯，像是表單驗證、頁面導航等。</p>



<p>由於使用容器化技術，可以快速部署和擴展，且無需管理底層基礎設施。</p>



<h4 class="wp-block-heading">3.排隊層</h4>



<p>當用戶進入系統後，首先進入排隊層。這層使用 API Gateway 的 WebSocket 服務維持與用戶的即時連線，讓系統能夠即時推送排隊狀態更新。</p>



<p>排隊狀態存儲在 DynamoDB 中，確保高併發存取性能。使用 SQS 訊息佇列來管理排隊隊伍，確保公平性和系統穩定性。</p>



<h4 class="wp-block-heading">4.身分驗證層</h4>



<p>輪到用戶時，進入身分驗證層。REST API 接收驗證請求，Lambda 函數執行實際的驗證邏輯。</p>



<p>用戶資料存儲在 DynamoDB，而驗證結果快取在 ElastiCache 中以提升效能。</p>



<p>這層的設計重點是安全性和效能的平衡，確保驗證過程既安全又快速。</p>



<h4 class="wp-block-heading">5.訂票層</h4>



<p>通過身分驗證後，用戶進入實際的訂票流程。ECS Fargate 運行訂票服務，處理座位選擇和訂單創建。</p>



<p>座位狀態快取在 ElastiCache 中，確保快速響應。最終的訂單資料寫入 Aurora 資料庫，提供強大的交易保證和數據一致性。</p>



<h4 class="wp-block-heading">6.資料流向</h4>



<p>用戶從 CloudFront 進入系統，經過排隊系統獲得順序號，通過身分驗證後進入訂票流程，最後完成訂單創建。</p>



<p>每一步驟都有相應的快取和備份機制，確保系統的可靠性和效能。</p>



<p>這種分層的架構設計，不僅讓系統容易擴展和維護，也提供了良好的用戶體驗。</p>



<h2 class="wp-block-heading">三、GCP優化架構方案</h2>



<p>接下來，我們來看看，售票系統在 GCP上可以怎麼做。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="2705" height="1542" src="https://dongdonggcp.com/wp-content/uploads/2024/12/e6bc94e594b1e69c83e594aee7a5a8e7b3bbe7b5b1-gcp-e6a682e5bfb5e7a4bae6848fe59c96.png?w=1024" alt="" class="wp-image-8276" srcset="https://dongdonggcp.com/wp-content/uploads/2024/12/e6bc94e594b1e69c83e594aee7a5a8e7b3bbe7b5b1-gcp-e6a682e5bfb5e7a4bae6848fe59c96.png 2705w, https://dongdonggcp.com/wp-content/uploads/2024/12/e6bc94e594b1e69c83e594aee7a5a8e7b3bbe7b5b1-gcp-e6a682e5bfb5e7a4bae6848fe59c96-300x171.png 300w, https://dongdonggcp.com/wp-content/uploads/2024/12/e6bc94e594b1e69c83e594aee7a5a8e7b3bbe7b5b1-gcp-e6a682e5bfb5e7a4bae6848fe59c96-1024x584.png 1024w, https://dongdonggcp.com/wp-content/uploads/2024/12/e6bc94e594b1e69c83e594aee7a5a8e7b3bbe7b5b1-gcp-e6a682e5bfb5e7a4bae6848fe59c96-768x438.png 768w, https://dongdonggcp.com/wp-content/uploads/2024/12/e6bc94e594b1e69c83e594aee7a5a8e7b3bbe7b5b1-gcp-e6a682e5bfb5e7a4bae6848fe59c96-1536x876.png 1536w, https://dongdonggcp.com/wp-content/uploads/2024/12/e6bc94e594b1e69c83e594aee7a5a8e7b3bbe7b5b1-gcp-e6a682e5bfb5e7a4bae6848fe59c96-2048x1167.png 2048w" sizes="(max-width: 2705px) 100vw, 2705px" /><figcaption class="wp-element-caption">演唱會售票系統 GCP 概念示意圖</figcaption></figure>



<h3 class="wp-block-heading">(一) 核心服務</h3>



<p>我們的售票系統核心架構是建立在六個關鍵的 GCP 服務上。</p>



<h4 class="wp-block-heading">1. Cloud CDN 負責處理所有靜態資源的分發</h4>



<p>包括網站的 JavaScript、CSS 文件、圖片等。這些資源會被快取在全球各地的節點上，大幅降低延遲時間，讓世界各地的用戶都能快速載入網頁。</p>



<p>系統會自動偵測使用者位置，連接到最近的 CDN 節點，確保最佳效能。</p>



<h4 class="wp-block-heading">2. Global Load Balancer 扮演著全球流量調度的角色。</h4>



<p>它能夠智慧地判斷使用者的地理位置和網路狀況，自動將請求導向最適合的資料中心。</p>



<p>尤其它跟 AWS 的 ALB 比起來，還不用預熱 Pre-Warm。</p>



<p>當某個區域的負載較高時，可以自動將流量導向其他區域，確保系統的穩定性。</p>



<p>而且它還具備智慧路由功能，可以根據後端服務的健康狀況來分配流量。</p>



<h4 class="wp-block-heading">3. Cloud Run 用於部署前端應用</h4>



<p>這個無伺服器的平台能根據流量自動擴展，當訪問量突然增加時，系統會自動建立更多的容器實例來處理請求。</p>



<p>閒置時則會自動縮減資源，既確保了效能又能節省成本。</p>



<h4 class="wp-block-heading">4. GKE（Google Kubernetes Engine）處理核心業務邏輯。</h4>



<p>我們將不同的功能（如訂單處理、座位管理、付款服務等）拆分成獨立的微服務，部署在 GKE Cluster 中。</p>



<p>這種微服務架構讓我們能夠獨立擴展每個服務，也讓系統更容易維護和更新。</p>



<h4 class="wp-block-heading">5. Cloud Spanner 資料庫保證資料的一致性</h4>



<p>這對於處理座位預訂這類需要精確性的操作特別重要。</p>



<p>它能夠在全球範圍內保持資料同步，同時支援大規模的並發操作，完全滿足大型演唱會售票的需求。</p>



<h4 class="wp-block-heading">6. Pub/Sub 訊息佇列系統用於處理非同步任務</h4>



<p>例如當用戶提交訂單時，系統會發送消息到 Pub/Sub，由後端服務依序處理，避免系統過載。</p>



<p>它也用於服務間的通訊，確保訊息能可靠傳遞。</p>



<h3 class="wp-block-heading">(二) 高可用性設計 (High Availability)</h3>



<h4 class="wp-block-heading">1. 多區域部署</h4>



<p>系統同時部署在多個地理位置的資料中心，即使某個區域發生故障，其他區域仍能繼續提供服務。</p>



<p>每個區域都配置了完整的服務架構，並通過 Global Load Balancer 進行流量分配。</p>



<h4 class="wp-block-heading">2. Autoscale</h4>



<p>Autoscale 機制是建立在 GKE 和 Cloud Run 的基礎上。系統會根據 CPU 使用率、記憶體使用量、請求數等指標自動調整資源配置。</p>



<p>例如，當檢測到存取量增加時，會自動增加容器主機數量；當負載降低時，則會自動縮減資源以節省成本。</p>



<h4 class="wp-block-heading">3. 故障自動轉移</h4>



<p>故障自動轉移機制確保了系統的穩定性。</p>



<p>當檢測到某個服務主機故障時，系統會自動將流量導向健康的主機，同時啟動新的主機來替補。這個過程對使用者來說是完全透明的。</p>



<h4 class="wp-block-heading">4. 分散式快取</h4>



<p>分散式快取系統使用了多層次的策略，包括瀏覽器快取、CDN 快取、應用層快取等。</p>



<p>我們使用 Memorystore 來儲存熱門資料，如座位狀態、活動資訊等，大幅減少資料庫的存取壓力。</p>



<h3 class="wp-block-heading">(三) 監控與維運</h3>



<h4 class="wp-block-heading">1. Cloud Monitoring</h4>



<p>負責收集各種系統指標，包括伺服器效能、網絡流量、API 回應時間等。</p>



<p>這些資料會以直觀的儀表板呈現出來，幫助維運團隊快速掌握系統狀態。</p>



<h4 class="wp-block-heading">2. Cloud Logging</h4>



<p>集中管理所有服務的 Log，支援複雜的查詢和分析。維運人員可以輕鬆追蹤問題，了解系統行為。</p>



<p>而且它還支援長期儲存，有助於後續的分析和稽核。</p>



<h4 class="wp-block-heading">3. Cloud Trace</h4>



<p>提供了詳細的 Request 追蹤功能。它可以追蹤一個 Request 在不同服務之間的傳遞過程，幫助我們找出效能瓶頸，就是看出 Latency 高到底是卡在哪裡。</p>



<p>特別是在微服務架構中，這個功能對於問題診斷極為重要。</p>



<h4 class="wp-block-heading">4. 即時警報系統</h4>



<p>當系統出現異常時（如錯誤率升高、回應時間變長），會立即通過 Email、簡訊等方式通知相關人員。不同層級的問題有不同的通知策略，確保運維團隊能及時處理各種情況。這個警報系統也與事件處理流程整合，能夠自動創建工單 (Ticket)，追踪問題解決過程。</p>



<h2 class="wp-block-heading">四、結論</h2>



<p>打造一個優秀的售票系統不僅需要穩定的技術架構，更需要良好的使用者體驗設計。關鍵改進點總結如下：</p>



<h3 class="wp-block-heading">(一) 系統架構層面</h3>



<ul class="wp-block-list">
<li>1. 多層次快取策略</li>



<li>2. 智慧負載平衡</li>



<li>3. 資料分片處理</li>



<li>4. 異步處理機制</li>
</ul>



<h3 class="wp-block-heading">(二) 使用者體驗層面</h3>



<ul class="wp-block-list">
<li>1. 透明的排隊機制</li>



<li>2. 即時狀態更新</li>



<li>3. 清晰的錯誤提示</li>



<li>4. 合理的重試機制</li>
</ul>



<h3 class="wp-block-heading">(三) 運營管理層面</h3>



<ul class="wp-block-list">
<li>1. 完善的監控系統</li>



<li>2. 靈活的擴展策略</li>



<li>3. 有效的成本控制</li>



<li>4. 安全防護機制</li>
</ul>



<p>這些層面的改進點環環相扣，缺一不可。好的系統架構是基礎，但如果沒有良好的使用者體驗設計，用戶仍然會感到挫折。</p>



<p>同樣，沒有完善的運營管理機制，再好的系統也可能因為無法及時發現和處理問題而導致服務中斷。只有將這三個層面都做好，才能打造出真正優秀的售票系統。</p>



<p></p><p>The post <a href="https://dongdonggcp.com/2024/12/05/concert-ticketing-system-architecture-analyzing-and-improvement/">[GCP 教學] 周杰倫演唱會 AWS 售票系統架構解析 – 系統穩和 vs 使用者體驗，哪個重要？</a> first appeared on <a href="https://dongdonggcp.com">東東 GCP 教學 - GCP 實戰講師</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://dongdonggcp.com/2024/12/05/concert-ticketing-system-architecture-analyzing-and-improvement/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8135</post-id>	</item>
	</channel>
</rss>
