後端 2023年3月

6 款遊戲

提供遊戲介面讓其他平台串接,處理200多萬筆資料,使用Redis pipelining搭配Laravel Queue

6 款遊戲

專案概述

提供遊戲介面讓其他平台串接,並進行後續的營運。處理 200 多萬筆資料, 使用 Redis pipelining 搭配 Laravel Queue 處理開獎以及查詢歷史紀錄。

專案類型:遊戲後端系統

開發時間:2023年3月

主要技術:Laravel, Redis, GCP

資料規模:200萬+ 筆記錄

遊戲數量:6 款遊戲

核心功能

遊戲介面與開獎系統

提供6款遊戲介面讓其他平台串接,支援即時開獎結果顯示、歷史紀錄查詢等功能。 前端介面簡潔直觀,提供流暢的遊戲體驗,確保玩家能夠快速理解遊戲規則並參與遊戲。

遊戲介面展示

6款遊戲的主要介面與開獎結果顯示

後台管理系統

提供完整的後台管理功能,包含遊戲數據統計、開獎紀錄查詢、使用者管理等。 透過視覺化圖表即時監控系統運行狀況,協助營運團隊快速掌握遊戲數據與使用者行為。

後台管理系統

遊戲後台管理與數據統計功能

歷史紀錄

開獎結果與歷史紀錄查詢介面

API 文件

Swagger API 文件與測試工具

技術亮點

🚀 高效能資料處理

處理超過 200 萬筆資料,使用 Redis Pipelining 批次處理, 將多個指令打包成一個請求送出,大幅減少網路延遲。 搭配 chunk 分批處理機制,避免記憶體溢位問題,確保系統穩定運行。

Redis Pipelining 處理流程

使用 Redis Pipelining 批次處理大量資料

⏰ 異步背景處理

開獎計算耗時較長,使用 Laravel Queue 將任務放入佇列, 在背景異步處理。固定於半夜批次執行,避免影響白天的使用者體驗, 並透過 Queue 監控確保所有任務都能正確完成。

Laravel 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

API 文檔