1. 程式人生 > >雙十一高並發場景背後的數據庫RDS技術揭秘

雙十一高並發場景背後的數據庫RDS技術揭秘

database 自動 最長 引擎 -- 一個數據庫 數據 resp 為什麽

【戰報】11月11日聚石塔(阿裏雲數據庫RDS產品形態)峰值QPS突破X00w,Proxy 峰值QPS超過X00w。

雙十一就要來了,全世界都為其瘋狂,但是在雙十一搶購中經常會出現幾萬人搶一個紅包或者很多人共同購買一個商品的情況,這就引發了一個數據庫比較擔心的場景----高並發。作為歷屆雙十一重要保障之一的雲數據庫RDS部門,從參數優化、鏈路訪問、彈性擴容、架構設計等方面應對高並發場景(如秒殺、百萬人搶單等),保障雙十一順利進行。那麽背後的技術是如何實現的呢?本文,將帶您展開雙十一阿裏雲RDS數據庫背後技術的小秘密。

參數優化
在處理“高並發”場景的時候,一些特定的數據庫參數就成為能否保障數據快速響應和平順處理“高並發”問題,就成了關鍵,如下列出了幾個特別重要的參數:

?loose_rds_max_tmp_disk_space:控制MySQL能夠使用的臨時文件的大小;
?loose_rds_threads_running_high_watermark:控制MySQL並發的查詢數目,常用於秒殺
?loose_tokudb_buffer_pool_ratio:控制TokuDB引擎能夠使用的buffer內存大小
?loose_max_statement_time:控制查詢在MySQL的最長執行時間

舉例說明,秒殺場景下的參數設置與影響:
loose_rds_threads_running_high_watermark
技術分享圖片
是“秒殺”場景開始的時候,可以看到連接數成指數級變化,瞬間增加了10倍

技術分享圖片

調整參數之前,可以看到RUN數量非常高,會導致數據庫報警
技術分享圖片

調整參數之後,update數值與run數值承更好的方向變化

鏈路訪問
在鏈路訪問方面,我們提供更高安全性的數據庫代理訪問模式,用戶可以根據需要隨時開啟或關閉。數據庫代理的規格大小由RDS系統自動管理,可以在保證租戶間資源隔離的前提下,根據負載大小自適應調節。數據庫代理對應用透明無感知,也無需人工幹預,大大降低了運維成本。
如下圖所示
技術分享圖片

數據庫代理位於應用程序(Client)和數據庫引擎(Database Engine)中間,由RDS系統自動進行維護,所有的數據庫請求(Request)和響應(Response)均從代理層經過和處理。

目前,數據庫代理支持如下功能:數據庫代理支持以下功能:

? 透明切換:RDS實例在發生故障、規格升級或降級時,數據庫代理可以使實例切換更加柔和,降低對應用的影響。
? 讀寫分離:提供透明的讀寫分離功能,應用層無需修改代碼,查詢分發到RDS只讀實例,降低主庫的負載。

技術分享圖片

? 短連接優化:突發高並發的短連接(常見於PHP應用)在代理層進行緩沖,減輕對DB層的沖擊,降低RDS的CPU負載和CPS(每秒新建連接數),保障數據庫運行穩定。
? 防暴力破解:保護RDS實例賬號密碼,規避賬號密碼被暴力破解。

彈性擴容
在擴容升級的過程中,主要分為兩種情況:本機升級和跨機升級
技術分享圖片
本機升級
技術分享圖片
跨機升級,還要做備份數據和日誌的遷移工作

擴容升級的常見問題

為什麽有時候升級需要很長時間?
可能發生了跨機遷移,遷移時間受限於數據庫大小以及系統壓力
可用區遷移,數據庫版本升級為什麽耗時較長?
這兩者遷移都會發生跨機遷移
空間升級為什麽非常快?
空間升級不用重啟遷移數據庫
選擇彈性擴容的時間
建議在業務低峰期,最近一次備份任務完成後進行升級
架構設計
為了應對日漸增長的雙十一購買數據量和倉儲數據量,RDS也對各個支持的數據庫進行了新的架構設計。
如下表,引擎選擇方面:ApsaraDB for RDS,當前支持4款關系型引擎,提供容災、備份、恢復、監控等方面的全套解決方案

技術分享圖片
RDS自帶的讀寫分離,讓用戶使用更方便:

另外,安全問題也一直是商家和用戶最關心的問題,在瘋狂的‘剁手’中,您一定不想您的商品信息或者購買信息有安全披露,對於這個問題,RDS在安全方面也做了多重保護和設計:

技術分享圖片

除了以上幾點,RDS團隊還對數據庫的性能等進行了重新的優化,讓商家和購買者在搶購中完全不用擔心數據庫的性能和安全問題,無憂無慮的‘剁手’,盡情享受雙十一盛會!

雙十一高並發場景背後的數據庫RDS技術揭秘