專案概述
提供遊戲介面讓其他平台串接,並進行後續的營運。處理 200 多萬筆資料, 使用 Redis pipelining 搭配 Laravel Queue 處理開獎以及查詢歷史紀錄。
專案類型:遊戲後端系統
開發時間:2023年3月
主要技術:Laravel, Redis, GCP
資料規模:200萬+ 筆記錄
遊戲數量:6 款遊戲
核心功能
遊戲介面與開獎系統
提供6款遊戲介面讓其他平台串接,支援即時開獎結果顯示、歷史紀錄查詢等功能。 前端介面簡潔直觀,提供流暢的遊戲體驗,確保玩家能夠快速理解遊戲規則並參與遊戲。
6款遊戲的主要介面與開獎結果顯示
後台管理系統
提供完整的後台管理功能,包含遊戲數據統計、開獎紀錄查詢、使用者管理等。 透過視覺化圖表即時監控系統運行狀況,協助營運團隊快速掌握遊戲數據與使用者行為。
遊戲後台管理與數據統計功能
開獎結果與歷史紀錄查詢介面
Swagger API 文件與測試工具
技術亮點
🚀 高效能資料處理
處理超過 200 萬筆資料,使用 Redis Pipelining 批次處理, 將多個指令打包成一個請求送出,大幅減少網路延遲。 搭配 chunk 分批處理機制,避免記憶體溢位問題,確保系統穩定運行。
使用 Redis Pipelining 批次處理大量資料
⏰ 異步背景處理
開獎計算耗時較長,使用 Laravel Queue 將任務放入佇列, 在背景異步處理。固定於半夜批次執行,避免影響白天的使用者體驗, 並透過 Queue 監控確保所有任務都能正確完成。
背景 Queue 處理開獎與資料更新
智能快取策略
預先計算並快取歷史資料到 Redis,大幅減少資料庫查詢負載,提升查詢速度
分頁優化
使用 Cursor-based Pagination 提供更穩定的大數據分頁體驗,避免傳統分頁的效能問題
後端技術細節
大數據處理
處理 2 百多萬筆的資料(在寫此篇的時候的數據),使用 Redis pipelining 搭配 Laravel 的 Queue 處理開獎以及查詢歷史紀錄。
背景處理機制
這幾款遊戲在處理開獎的時候時間會拉比較長,所以會把開獎 event 都放到 Queue 裡面, 並固定在半夜某時段去更新。
快取優化策略
而因 前端 跟 後台 都需要查詢歷史紀錄,為了避免資料庫一直被查詢, 所以預先把歷史紀錄放到 Redis 裡面。
但因為更新的歷史資料蠻大,所以使用 pipelining 加上 chunk 的方式來處理。
資料庫優化
而資料庫關於歷史紀錄查詢也使用 Cursor-based Pagination 來處理, 大幅提升查詢效能。
GCP 技術細節
此專案是我第一次使用 GCP,使用到 EC2、Static IP、Cloud SQL、Domain... 算是比較基礎的。 透過這次經驗建立了對 Google Cloud Platform 的基礎認識,為後續更複雜的雲端架構奠定基礎。
使用技術
Server
- GCP (Google Cloud Platform)
- EC2 Instance
- Static IP
- Cloud SQL
後端
- Laravel Framework
- Redis (Pipelining)
- Laravel Queue
- Cursor-based Pagination