支撐日均百億次護航,數據庫自治服務DAS在雙11護航中焰煉昇華 引言 數據庫自治服務DAS DAS核心自治技術 結束語

引言

每年一度的雙11購物狂歡節,數據庫自治服務DAS以持續的創新爲之保駕護航, 同時也在延續它一次次華美的蛻變。 從最初面向DBA的工具化輔助診斷,到2017年Self-driving Platform理念提出,開始孵化和錘鍊數據庫自治能力,2018年DAS自治能力逐步覆蓋集團全網數據庫實例,如自動SQL優化、自動空間、自動異常修復等, 2019年11月,爲更好服務客戶,混合雲數據庫管理HDM+ CloudDBA+自治能力,正式升級爲數據庫自治服務DAS,將鍛煉出來的技術,通過雲這樣的開放平臺匯聚起來,不僅服務自己,還可以服務我們的客戶,又一次完成了蛻變。

唯有擔當,才能蛻變出生命的華美。 2020年的雙11,DAS以更加穩定、完備的自治能力,護航範圍兼顧集團和雲上客戶。在集團,依託全網覆蓋的數據庫自治能力,自動SQL優化已累計實現超4900萬慢SQL自動優化,自動空間優化累計優化超4.6P,自動異常修復覆蓋電商等多場景數十萬實例,自動處理異常覆蓋超90%,實現“1-5-10”異常自愈能力, 即1分鐘發現,5分鐘定位,10分鐘恢復 ,爲雙11大促數據庫穩定性提供了強有力的保障,同時也帶來大量人力投入成本節省。同時,DAS爲數十萬的雲上客戶提供了大促全生命週期護航,從大促前的健康巡檢、風險識別、問題修復、SQL優化等,從到大促中的自動SQL限流、自動擴容、護航大盤,到大促後的現場保存、大促總結,大促期間共產生了上百萬份的巡檢報告、每天進行數百億次異常檢測,爲近萬的實例提前發現異常、並完成自動修復和優化,實現故障自動消除,幫助客戶平穩度過雙11。

數據庫自治服務DAS

DAS核心理念本身也是來源於過往雙11對數據庫智能化技術趨勢的思考,阿里擁有業界最富有經驗的DBA,海量的性能診斷數據, 如何把阿里巴巴豐富數據庫領域知識、經驗、大數據以及機器智能技術結合起來,爲數據庫加上“自動駕駛”引擎,在數據庫穩定性、效率、成本上實現最大化。 在雲原生時代,更是如此,應用開發者期望能夠專注於自身的業務創新,而徹底擺脫數據庫運維負擔,讓數據庫高度自治。工業界和學術界在自治數據庫方向達成了高度的一致,如CMU創建自治數據項目Peloton,旨在實現混合負載下的全自治。數據庫自治服務DAS,就是以數據庫自動駕駛爲理念,基於數據驅動、專家經驗和機器學習的智能化驅動,讓數據庫具備自感知,自恢復,自優化、自安全能力,就如同汽車被賦予自動駕駛能力。

上圖是數據庫自治服務(DAS)核心理念示意圖, 這些也是它在整個設計、研發、落地過程中,被始終如一地遵循和貫徹的理念:

• 數據驅動,通過海量實時數據收集,如性能指標,負載SQL的請求日誌、運維變更日誌等等, 以此爲基礎,構建探測能力,具備環境、態勢的實時感知、異常實時發現能力;
• 機器學習和數據庫領域專家經驗的深度融合,可以根據業務場景自己做出決策,具備自我決策能力;
• 自動執行能力,根據自治中心決策,自動進行任務編排,自動完成決策的執行;

最後通過打造閉環能力來實現它們之間的協調, 最終實現自治能力,如從異常發現,到基於根因分析的全局決策,再到修復、優化的決策執行,最後到持續的效果跟蹤評估,反饋與回滾等,整個閉環,實現了無人工參與的自治場景支持。同時,數據庫自治服務系統自身具備不斷構建自學習能力,例如異常的自動標註、案例系統、異常模擬、量化反饋評估等,依託線上業務場景的豐富性積累,沉澱大量案例,以案例爲驅動,加速自我進化,不斷提升自治的有效性。

基於以上理念,數據庫自治服務(DAS)已擁有 6大核心自治特性:7 x 24實時異常檢測、故障自愈、自動優化、智能調參、自動彈性、智能壓測。下面逐一展開,並輔以雙11期間的實際案例,來看看它們的具體表現。

DAS核心自治技術

7 x 24實時異常檢測

DAS的7X24實時異常檢測通過機器學習算法,實時對數據庫的Workload進行異常檢測,相比傳統基於閾值的告警方式,能夠更及時的發現數據庫的異常,而不是靠故障驅動。數據指標採集鏈路實現上百項數據庫性能指標、以及負載SQL請求日誌等,海量數據的離在線處理與存儲,基於機器學習和數據庫領域預測算法,實現各業務數據庫實例的持續模型訓練,結合流式和大數據分析計算框架,進行實時模型預測和實時的異常檢測分析。相比傳統基於規則和基於預值的方式,實時異常檢測具備以下優勢:

• 檢測範圍更廣,例如不僅限監控指標, 還包括SQL、日誌、鎖等;
• 實現準實時的檢測,大大超前傳統方式發現異常;
• 基於AI和異常驅動的檢測技術,而非故障驅動的檢測;
• 具備週期性識別能力,自適應業務特徵,擁有提前預測能力等

如上表,現實中常見的workload場景,如毛刺特徵、週期性特徵、趨勢性特徵、均值偏移特徵等, 異常檢測服務都能夠準確自動識別,並支持多種時序特徵疊加識別,識別出異常後, 會觸發基於根因的全局診斷分析,以及後續的異常恢復、優化自治場景。

故障自愈

通過7 x 24實時異常檢測, 數據庫實例異常完成實時檢測發現,DAS自動進行根因分析,自動執行相關止損/修復操作,幫助數據庫自動恢復,減少對企業業務的影響。例如,自動SQL限流就是其中典型自治場景。如下圖是雙11期間自動SQL限流一個實際案例:

某自治服務接入實例,於2020年11月5日12點31分,活躍會話數和CPU開始驟然飆升,DAS異常檢測中心於12點33分確定此次飆升爲一次數據庫異常而非抖動尖刺,觸發SQL自動限流根因診斷,12點34分診斷完成,共發現兩條導致該次異常的問題SQL,發現問題SQL後隨即發起自動限流,活躍會話數開始降低,存量已提交問題SQL執行結束後,活躍會話數開始急速恢復,CPU使用率同時也恢復到正常。整個過程滿足“1-5-10”異常自愈能力, 即1分鐘發現,5分鐘定位,10分鐘恢復。

外置式SQL自動優化

數據庫自治服務(DAS) 基於全局workload和真實的業務場景,持續對數據庫進行SQL Review和優化,就像有一個不知疲倦的專業DBA一直在守護着您的數據庫。

按照經驗,約80%的數據庫性問題可通過SQL優化手段解決,但SQL優化一直以來都是一個非常複雜的過程,需要多方面的數據庫領域專家知識和經驗,另外,由於SQL工作負載不斷變化,SQL優化還是一項非常耗時繁重的任務,這些都決定了SQL優化是一項高門檻,高投入且非常專業的工作。數據庫自治服務(DAS) 基於全局workload和真實的業務場景,持續對數據庫進行SQL Review和優化,就像有一個不知疲倦的專業DBA一直在守護着您的數據庫,將SQL優化推向了更高的境界。同時,DAS的SQL診斷能力本身又有與傳統與衆不同的技術特徵,如:

• 它採用外置式的,基於代價模型方式,實現索引、語句改寫推薦,以及性能瓶頸問題識別和推薦,避免傳統規則式的,過於機械化,推薦質量無法保證,無法量化性能提升收益等問題;
• 測試用例形式化特徵庫,線上案例的自動反饋提取技術,以及阿里巴巴的應用場景多樣性, 我們構建了足夠覆蓋度的;
• 基於全局的Workload優化,基於Workload特徵,例如SQL執行頻率,讀寫比等進行優化,最大限度地,消除局部優化的片面性弊端;

下面是雙11期間自動SQL優化一個實際案例:某自治服務接入實例, DAS於11月7日通過負載異常檢測到因慢SQL引起的負載異常,自動觸發SQL優化閉環,優化上線後,經過持續24小時優化效果跟蹤完成優化收益評估,優化效果顯著,如優化之前後的平均RT及掃描行數如下圖所示:

據統計,在優化之前,被優化SQL的平均掃秒行數爲148889.198,平均RT爲505.561毫秒。而優化之後,平均掃描行數爲12.132,大約降爲優化前的萬分之一,而平均RT降至0.471毫秒,也大約降低到優化前的千分之一。

自動彈性

雲上數據庫提供基於計算規格的選項以及存儲容量供用戶選擇,當用戶業務Workload規模變化時可適當進行彈性擴縮容,但對於雲原生應用而言,數據庫能夠根據業務Workload的變化自動決定最合適的規格,使用最小的資源完成業務所需的數據庫容量,是用戶所期望的,這也是數據庫“自治”能力的體現。DAS基於AI的時序列預測,能夠自動對數據庫的業務模型、容量水位進行計算和預測,實現及時按需(或先知先覺式)自動擴縮容。

DAS的自動彈性實現了一套完整的數據閉環,包含性能採集、決策中心、算法模型、規格建議模塊、管控執行以及任務跟蹤評估等。性能採集負責對實例進行實時性能數據採集,涉及數據庫的多項性能指標信息、規格配置信息、實例運行會話信息等;決策中心模塊則會根據當前性能數據、實例會話列表數據等信息進行全局判斷,以基於根因的全局自治,例如可通過SQL限流來解決當前計算資源不足的問題則會採取限流處理;若確實爲突增的業務流量,則會繼續進行彈性服務流程;算法模型是整個DAS 自動彈性服務的核心,負責對數據庫實例的業務負載異常檢測和容量規格模型推薦進行計算,解決核心的擴容時機、擴容方式、計算規格選擇問題;規格建議校驗將產出具體建議,並針對數據庫實例的部署類型和實際運行環境進行適配,並與當前區域的可售賣規格進行二次校驗,確保的建議能夠順利在管控側進行執行;管控執行負責按照產出的規格建議進行分發執行;狀態跟蹤最後用於衡量和跟蹤規格變更前後數據庫實例上的性能變化情況。

下面是雙11期間自動SQL優化一個實際案例:

某自治服務接入實例,用戶的業務流量不斷上升,實例(PolarDB)的CPU使用率不斷飆高並達到了高負載狀態,此時DAS的Autoscaling算法精確的識別出了實例當前的異常狀態,於是自動爲實例增加了兩個只讀節點,實例的CPU使用率成功降到了較低的水位;在維持該狀態兩個小時後,用戶實例的流量依然在不斷上升,並第二次觸發DAS的Autoscaling,DAS Autoscaling將實例的規格從4核8GB升級到8核16GB,並平穩持續了10多個小時,幫助用戶順利度過了業務高峯期。

智能壓測

DAS提供的“智能壓測”服務能夠幫助用戶在上雲或在業務大促前評估所需的數據庫規格容量(將在後續章節重點介紹);規格自動擴容AutoScale能力能夠幫助用戶在指定配置的數據庫性能閾值,或根據DAS內置智能化策略自動動觸發擴縮容動作,從而一定程度上解決了用戶做規格評估和管理的負擔。

傳統的壓測方案大部分基於現有的壓測工具,如sysbench、TPCC等,其最大的問題是這些壓測工具對應的SQL與真實業務差距太大,壓測結果無法準確反映出真實業務的性能和穩定性。DAS提供的智能壓測服務是基於用戶真實業務的workload,因此壓測結果可以直接體現在不同壓力下的性能和穩定性變化。達到該目標,智能壓測需要解決如下挑戰:

• 在不能採集大量SQL的情況,如何提供長時間壓測,如7x24小時穩定性壓測。因爲SQL採集需要時間和存儲成本,在給定部分SQL的情況,DAS需要生成滿足業務要求的SQL。
• 併發回放能力。DAS需要保證和真實業務一致的併發,並能夠提供倍速(如2倍速、10倍速等)和峯值壓測功能。

DAS通過自動學習業務模型,自動生成符合壓測時間的真實業務Workload,同時提供給用戶更豐富的壓測場景,幫助用戶解決大促、數據庫選型等問題。

智能調參

數據庫的參數成百上千,用戶的業務場景多種多樣,靠人肉的方式很難講參數調整爲最優的配置,通過基於機器學習技術,和智能壓測相結合,可以爲每個數據庫實例的自動推薦最優的參數模版。雲上常用數據庫如MySQL、PolarDB配置參數多達幾百個,同時每個參數的範圍從幾十到幾萬,甚至幾十萬不等。配置參數的過程相當於從巨大的多維空間中搜索出滿足目標(如提升TPS,或降低latency)的參數值。DBA通常是通過經驗,或者直接使用默認參數值設定配置。然而,不同workload,不同硬件對應的參數都會發生變化,就算有經驗的DBA也無法保證對參數配置的有效性,雲上大量的中小企業甚至沒有專門的運維人員,對於最優參數基本無法設定和調整。因此,數據庫參數設置存在如下挑戰:

• 參數組合空間巨大,全部遍歷爲NP-hard
• 調參依賴經驗,無法保證參數的有效性
• 雲上Workload存在多樣性,不同Workload的參數不同
• 硬件(規格)異構,不同硬件規格下,對應的參數不同

DAS通過高效的機器學習手段,將調參看做黑盒優化問題,進行迭代學習,對於不同Workload的TPS提升有15%-55%,整個過程能在3-5個小時約100個迭代步內完成。基於阿里巴巴集團內部豐富的Workload和硬件基礎設施,離線學習出不同種類workload和硬件規格的特徵和參數,再通過偏序關係的匹配和Meta Learning,在線擬合出適配給定目標workload的模型,通過少量迭代便可以快速學習出目標workload的參數值,可以在縮短到1個小時以內約10-30步以內找出理想的參數。

結束語

通過數據庫自治服務DAS,可以幫助企業節省90%的數據庫管理成本,降低80%的運維風險,讓用戶可以更集中在業務創新,讓業務持續行駛在快車道上。在阿里,我們以十一年爲一個輪迴思考雙 11,今年是雙 11 新輪迴的起點。數據庫自治服務DAS跟隨着它、護航着它,基於創新的蛻變將持續延續。

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