1. 程式人生 > >雙十一高併發場景背後的資料庫RDS技術揭祕

雙十一高併發場景背後的資料庫RDS技術揭祕

【戰報】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
雙十一高併發場景背後的資料庫RDS技術揭祕
是“秒殺”場景開始的時候,可以看到連線數成指數級變化,瞬間增加了10倍
雙十一高併發場景背後的資料庫RDS技術揭祕

調整引數之前,可以看到RUN數量非常高,會導致資料庫報警
雙十一高併發場景背後的資料庫RDS技術揭祕

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

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

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

目前,資料庫代理支援如下功能:資料庫代理支援以下功能:
• 透明切換:RDS例項在發生故障、規格升級或降級時,資料庫代理可以使例項切換更加柔和,降低對應用的影響。
• 讀寫分離:提供透明的讀寫分離功能,應用層無需修改程式碼,查詢分發到RDS只讀例項,降低主庫的負載。

雙十一高併發場景背後的資料庫RDS技術揭祕

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

彈性擴容
在擴容升級的過程中,主要分為兩種情況:本機升級和跨機升級
雙十一高併發場景背後的資料庫RDS技術揭祕
本機升級
雙十一高併發場景背後的資料庫RDS技術揭祕
跨機升級,還要做備份資料和日誌的遷移工作

擴容升級的常見問題

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

雙十一高併發場景背後的資料庫RDS技術揭祕
RDS自帶的讀寫分離,讓使用者使用更方便:

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

雙十一高併發場景背後的資料庫RDS技術揭祕

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