天天看點

百萬級活躍使用者、十億級資料,揭秘PolarDB-X如何提升小打卡性能和穩定性

“PolarDB-X産品解決了我們社交場景中的圈子日記查詢功能,每天使用者在小打卡數十萬的興趣圈子中活躍,釋出數百萬條打卡日記,非常适合PolarDB-X的分庫分表場景,降低了響應時間,提高了并發查詢能力,利用異構索引表滿足了我們多元度查詢的需求,最近的全局二級索引解決了異構索引表資料延遲的問題。”這是來自小打卡的客戶感言。

“再小的愛好都有同好”

小打卡是國内知名的興趣社群平台,在這裡,能快速發現你感興趣的圈子;加入圈子,有達人帶你玩轉各種興趣,有同好一起分享,一起成長。2017年8月公司成立至今,小打卡上已服務六千多萬使用者,聚集繪畫、瑜伽、健身、手帳、攝影、親子、閱讀、潮玩等數百萬個興趣圈子,每天有數百萬使用者活躍在小打卡上,圍繞各類興趣和學習産生數百萬條内容和數百萬次互動。

百萬級活躍使用者、十億級資料,揭秘PolarDB-X如何提升小打卡性能和穩定性

業務挑戰

基于小打卡的業務場景,面臨着三個主要挑戰:

  • 數百萬個圈子的打卡日記資料量大,客戶有十億級資料的高性能存儲訴求。
  • 百萬級活躍使用者,有高并發讀寫訴求,同時需要在十億級資料存儲情況下讀寫性能平穩。
  • 圈子打卡日記業務在根據圈子做水準拆分表之後有多元度查詢訴求,通過使用者次元查詢打卡日記。

PolarDB-X+RDS MySQL的分布式資料庫解決方案

針對上述業務痛點,我們通過PolarDB-X+RDS MySQL的分布式資料庫解決方案支援客戶核心業務圈子打卡日記,采用PolarDB-X的水準拆分給客戶提供海量資料存儲能力,利用平滑擴容能力提供計算和存儲的平滑擴充,可支援到百億級資料存儲和讀寫。

通過PolarDB-X水準拆分後,資料庫業務由多個RDS MySQL承載,單個RDS業務讀寫壓力大幅度下降,出現性能異常的時候,隻影響部分使用者使用,同時由于單個實體表資料量小,性能異常對系統可用性影響較小。PolarDB-X通過多個RDS MySQL承載高并發寫,可支撐百億級資料10萬TPS、百萬QPS的穩定讀寫承載。

資料庫表拆分後多元度查詢訴求是分布式資料庫中間件的一個痛點,不按拆分鍵查詢的SQL不能下推導緻查詢出現全表掃描,PolarDB-X支援全局索引,通過全局索引可以完美解決多元查詢的痛點。

百萬級活躍使用者、十億級資料,揭秘PolarDB-X如何提升小打卡性能和穩定性

小打卡技術架構圖

海量資料存儲和擴充能力,保障核心業務穩定性與高性能

小打卡目前圈子打卡日記有10億以上資料,每年億級增量,基于PolarDB-X+RDS的分布式資料庫解決方案給客戶提供了海量資料存儲和資料存儲擴充能力,解決了客戶的10億級資料在單機資料庫的存儲瓶頸。

小打卡有幾百萬活躍使用者,業務發展較快,高并發讀是小打卡的資料庫強需求,在單機RDS的情況下由于單表資料量大,會出現讀性能瓶頸導緻APP卡頓或者崩潰。基于PolarDB-X+RDS的分布式資料庫解決方案在将表拆分成小的實體表後能提供海量資料平穩高并發讀能力,保證了客戶核心業務的穩定性和高性能。

小打卡的圈子打卡日記通過圈子做拆分,同時使用者有看自己圈子日記的訴求,全局索引能力給小打卡客戶提供了基于圈子和使用者兩個次元的高性能查詢能力,解決了多元查詢的需求。