崑崙萬維 X TiDB | 從 MySQL Cluster 到 TiDB 的升級之路

崑崙萬維是全球領先、業內前沿的綜合性互聯網集團,業務涵蓋崑崙遊戲(GameArk)、信息資訊(Opera)等多個業務板塊。其中,崑崙遊戲(GameArk)憑藉研發及運營的核心優勢,面向全球進行遊戲的研發、發行與運營,形成多樣性的產品矩陣。截止 2020 年底,月活用戶達到上億規模。

面臨挑戰

遊戲業務在運營過程中會產生大量數據,比如道具產生消耗、貨幣產生消耗、玩家等級分佈、任務完成情況、各地圖玩家分佈、玩家戰鬥數據等等。隨着業務深入發展和精細化運營的不斷加深,市場投放和運營所需的數據維度越來越多,越來越細,開始呈現爆發式的增長態勢,如何存放及分析這些數據成爲迫切需要解決的問題。在複雜的場景下,崑崙遊戲開始使用多種數據庫支撐業務,從傳統關係型數據庫到 NoSQL、NewSQL,以及各類分析數據的系統和工具,這爲運維與管理層面帶來了嚴峻挑戰。

從 MySQL Cluster 到 TiDB 的升級

崑崙遊戲從 2008 年拓展業務開始,技術的傳承既帶來了經驗的積累,也導致了技術債的產生。崑崙遊戲的數據分析系統,爲業務提供實時的遊戲彙總數據,例如金幣消耗、道具購買分佈等。遊戲業務實時將產生的信息按照指定格式發送到指定接口,MySQL 數據庫接到彙報過來的數據進行存儲。初期在數據量不大的情況下,數據庫運行比較穩定。隨着業務的快速發展,MySQL 單表的數據突破 5000 萬條之後, 數據的入庫與實時查詢都開始變慢,從而無法適應業務需求。

崑崙遊戲在綜合考量後決定:在儘量不重構現有業務端代碼的基礎上,對現有 MySQL 方案進行平滑過渡和升級改造。最開始是優化 SQL 查詢語句,查找慢查詢的原因。隨着單表數據量的增多,崑崙遊戲發現 SQL 執行效率的提升並不明顯。如果按時間對 MySQL 進行分庫分表,隨之而來的是跨節點查詢 Join 、跨節點分頁、排序、函數等一系列問題,方案過於複雜,並且需要改寫業務端代碼。從本質上來講,這是以“打補丁”的方式來實現橫向擴展。

爲了更好地解決單點故障問題,崑崙遊戲的數據庫形態從最初的 MySQL 單庫,MySQL 主從、一主多從,升級到了 MySQL Cluster。MySQL Cluster 是 Oracle 官方提供的企業級數據庫方案,採用了 Shared Nothing 的架構設計,該方案的優點是解決了以前的 MySQL 單點故障,提供自動失效切換,相較來說有更好的可擴展性與更高的處理性能。

但MySQL Cluster 方案也存在明顯缺點:首先是成本高昂,原有版本的 MySQL Cluster 的數據節點把數據都存放在內存裏,單一節點的內存通常需要配置到 512GB ,甚至更高。可以預料的結果是,當隨着海量數據的增長,所需節點也會越來越多,硬件成本的提升也將很迅速;其次,MySQL Cluster 存在諸多限制,例如不支持外鍵,數據行不能超過 8K等;第三,該方案的備份和恢復並不方便,恢復數據需要IT人員到每個數據節點上以敲指令的形式執行,且無法備份到如 S3 等雲端存儲;此外,整套系統的部署、管理、配置相對比較複雜,無法與現有基於雲的 IT 架構完美匹配。

崑崙遊戲希望採用雲原生 NewSQL 數據庫來匹配性能、擴展性以及雲端部署與運維等方面的需求。經過對市場上主流的 NewSQL 數據庫進行調研與真實業務場景測試對比之後,崑崙遊戲決定選用 TiDB 擴展數據架構體系的能力版圖。

TiDB 解決之道

崑崙遊戲基於公有云構建起一套支持高併發、高可用、可橫向擴展的 TiDB 分佈式數據庫集羣,實現遊戲類業務數據的集中管理,同時爲報表、監控、運營、用戶畫像與大數據計算等業務提供數據服務。

通過使用 TiDB Data Migration (DM) 工具,崑崙遊戲將多個 MySQL 庫的數據同步到 TiDB 集羣,並藉助 TiDB 的水平擴展能力提供理論上容量無上限的存儲能力。目前,崑崙遊戲的TiDB 集羣數據規模已達到幾十 TB 。未來,崑崙遊戲還將會結合自身的業務需求以及 TiDB 的新特性,探索更多業務場景。

邏輯架構圖

爲什麼選擇 TiDB?

崑崙遊戲通過構建 TiDB 數據服務平臺,解決了原有數據庫系統在性能、擴展性以及雲端部署與運維等方面的問題,提升了面向業務的數據服務能力。其主要優勢集中體現在以下幾方面:

  • TiDB 與 MySQL 高度兼容,原有業務代碼基本不用改動,實現了業務的平滑切換;

  • 在架構與性能方面,TiDB 存儲計算分離的架構設計,打破了單機數據庫的容量和性能瓶頸,可

  • 以實現性能與容量的彈性伸縮,讀寫 QPS 與平均延時完全滿足業務要求;

  • 在生態方面,TiDB 具備強大的生態體系,支持連接 Spark、Flink、Kafka 等數據應用生態,爲業務打造全場景的數字化服務平臺;

  • 在成本方面,TiDB 支持雲端部署與運維,並且可與 S3 無縫對接。將整套數據分析系統搬到雲端部署以後,硬件成本下降 50% 以上。

「我們的目標是把數據服務變得更加敏捷:一是通過分佈式架構提升數據庫的服務效率,讓數據庫更好地滿足業務的需求;二是讓數據庫應用層與底層 IT 技術進行解耦, 減少上層應用對底層技術的依賴,降低整體的 IT 建設與運維成本。」——崑崙遊戲 IT 運維總監 劉晗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章