深度技术揭秘 | 大促狂欢背后,如何有效评估并规划数据库计算资源?
1. 背景
經過“雙11”、“618”這類互聯網促銷活動的驗證,越來越多的互聯網公司采用不定期營銷活動來刺激消費,達到提升營收能力的目標。然而,在每一次業務狂歡的背后,如何科學地為促銷活動準備相應的計算資源就變成了困擾開發人員的常態問題。此外,據Gartner統計,在疫情的影響下越來越多的企業開始加速關鍵業務模塊從本地云往公有云上遷移,以提升企業服務的穩定性和容災能力。如何有效評估并規劃計算能力、計算引擎、帶寬等關鍵資源的容量成為了云場景下的一項技術挑戰。
針對這個場景,阿里云數據庫自治服務團隊(DAS)推出了智能壓測服務,致力于解決大促場景下計算資源評估問題、遷移上云的離線資源容量規劃、跨引擎遷移等數據庫選型評估問題。DAS(Database Autonomy Service)是一種基于機器學習和專家經驗實現數據庫自感知、自修復、自優化、自運維及自安全的云服務,幫助用戶消除數據庫管理的復雜性及人工操作引發的服務故障,有效保障數據庫服務的穩定、安全及高效,解決方案架構見圖1。
2.?智能壓測的組成
壓測,即壓力測試,是確立系統穩定性的一種測試方法,通常在系統正常運作范圍之外進行,以考察其功能極限和隱患。一般針對網絡服務器測試從傳統的意義來講是對網絡服務器不斷施加“壓力”的測試,是通過確定一個系統的瓶頸或者不能接受的性能點,來獲得系統能提供的最大服務級別的測試。在數據庫場景下,壓測通常指的是對數據庫的性能進行測試,通過對數據庫服務器不斷提高執行SQL的數量和并發度,來測試既定規格下的數據庫是否可以持續穩定地對外提供服務,并基于測試結果做出相應的決策,包括調整數據庫規格、部署形態、業務SQL優化等等。通常情況下,完成一次壓測主要涉及到三個關鍵部分:壓測數據準備、流量回放和結果分析,如圖2所示。
圖2 智能壓測的關鍵組成
壓測數據:在數據庫場景下,流量數據為SQL語句,但僅有執行時SQL語句是不夠的。SQL語句在數據庫內的執行過程中,真實數據分布和庫表索引都會影響其執行時間。因此,數據庫場景下,壓測數據包含了數據庫的庫表結構、庫表內數據、索引和SQL執行語句。此外,在一些有嚴格安全要求的特殊場景下,僅表結構允許復用,而具體原始數據不能被用于流量壓測。針對這種情況,我們提出了智能生成數據的算法,產出符合原始數據分布的模擬數據用于回放。
流量回放技術:傳統性能壓測過程中,由于未對SQL執行語句按照原始流量的并發情況和執行次序做限制,出現壓測與原始業務流量效果差異較大的現象,導致單次數據庫資源評估任務中通常會進行多次壓測,然后對性能結果數據求平均后再評估資源。這種方法需要耗費大量的測試時間,并且需要測試人員具有一定的數據庫經驗,通常需要DBA進行操作。針對這一問題,DAS對單次壓測進行技術改進,通過壓測冪等技術確保壓測回放后的性能表現與原始業務流量性能相近,且無須多次回放,大幅節省了資源評估的時間并降低了對數據庫壓測經驗的要求。
壓測結果分析:有效的結果分析可以幫助用戶合理的選擇資源規格,并發現業務流量回放過程中存在的隱患。數據庫的關鍵性能參數、關鍵性能指標的對比、SQL優化建議等數據可幫助用戶理解資源差異和潛在優化點,輔助做出后續決策。
3.?智能壓測技術內幕
3.1. 智能數據生成技術
關于數據庫性能壓測,業界存在很多開源的工具,例如Sysbench、mysqlslap、tpcc等。這類工具均可以通過并發大量數據庫連接結合一定的查詢語句來制造出一定的SQL流量,達到模擬業務高強度使用數據庫的效果。但模擬場景下的性能表現通常和業務實際性能表現相差較大,故模擬壓測不能滿足計算資源評估的要求。利用業務數據庫中的真實數據進行壓測成為資源評估的基本條件。針對阿里云數據庫用戶,可通過SQL審計功能,方便的獲取壓測所需要的數據。而對于云下或阿里云ECS自建數據庫的用戶,較難獲取歷史上的庫表數據或流量數據來做壓測,甚至在一些有嚴格安全數據要求的場景下,連原始數據和SQL流量數據都是不被允許使用的。
目前,我們在單表查詢場景下采用智能數據生成技術來產出符合業務數據分布的數據,可用于壓測并評估資源。這個算法的前提是,需要我們已知一些SQL模版,以及這些SQL模版對應的執行指標,如RT,rows_sent,rows_affected等,我們希望實例化這些SQL模版來生成SQL,使得這些SQL在目標庫表上執行時能得到相似的執行指標(這里我們假設同一模版的SQL都會以相同的執行計劃來執行)。如圖3所示,我們需要搜索相應的參數a和b來實例化這條SQL模版,使得在給定數據執行時返回行數為1。
圖3 SQL模板
在搜索SQL參數的時候,對于點查詢/點更新,可以直接利用主鍵和唯一鍵來做參數搜索。而對于返回行數/更新行數大于1行的情況,我們使用基于采樣的基數估計方法來估計實例化后SQL的返回/更新行數,進而進行SQL模版實例化的參數搜索。
圖4是我們對于釘釘一個讀寫業務在早高峰期的流量生成壓測,可以看到流量生成壓測和真實業務在多個指標上都有相似的表現,證明生成的數據可以有效的模擬線上真實數據。
圖4 基于生成數據的壓測效果
3.2. 壓測冪等技術
在數據準備完成之后,如何有效且可重復的進行流量回放是智能壓測中的另一項核心技術。盡管業內已有的開源工具均可以通過并發大量數據庫連接結合一定的查詢語句來制造出一定的SQL流量,達到模擬業務高強度使用數據庫的效果。但是,在使用了真實的且有一定數據傾斜的業務模型之后,會發現一個比較嚴重的問題:假如多次測試同一個模型同一份數據在RDS MySQL下的性能效果,在數據有傾斜的情況下,兩邊的性能曲線很可能對不上。例如,第一輪壓測在A時間點查到了某一個數據,而第二次壓測很可能在B時間點才查到,這樣對分析問題就有了很大干擾,如圖5所示,兩條曲線雖然壓力差不多,但是抖動頻率完全不一致,不利于分析。
圖5 同一個數據庫實例上跑兩次相同的測試模型的效果
針對這種情況,我們提出了壓測冪等的概念,即相同的測試,無論運行多少次,產生的SQL是完全一致的。在冪等情況下,每個時間點產生的SQL文本是完全相同的(假設數據庫處理能力完全一致),并且整個壓測任務中,所有SQL的執行順序是一致的。目前做到了線程級別完全一致,不同線程之間從性能和需求的角度考慮沒有實現強一致。
在冪等技術的加持下,DAS智能壓測可以針對前文描述的場景可以做到一致性的壓測,效果如圖6。
圖6 同一個數據庫實例上跑兩次相同的智能壓測的效果
壓測冪等的技術主要從壓測線程生成邏輯、總請求數、寫入最終一致性這三方面進行處理,讓壓測過程中可以確保每個線程內部出現的隨機數的順序都是一樣的,并且不同線程之間不一樣;通過保持線程中請求量總數一致,達到確保總請求量固定的效果;再結合自定義主鍵和約定update區間的方式,規避了自增主鍵和update沖突問題,確保了壓測結束后的數據最終一致性。
4. 產品落地
4.1. 產品流程
介紹完智能壓測的組成部分和對應的核心技術之后,下面來看DAS是如何將智能壓測落地成產品。從壓測的流程來看,整個智能壓測的過程可以分為準備階段、SQL處理階段、回放階段和效果評估階段,如圖7所示。
圖7 智能壓測產品流程
準備階段主要是解決壓測的機器環境問題,涉及從購買ECS機器、準備壓測目標實例、配置ECS機器上的運行環境等。目前DAS的智能壓測可根據壓測流量的QPS和回放時長,自主選擇合適的ECS機器并自動配置運行環境,也允許用戶采用利用自有機器進行壓測。在準備壓測目標實例環節,現在DAS可通過RDS備份恢復、DTS同步的方式來自助幫助用戶準備好目標實例,也允許用戶自由指定壓測實例。
SQL處理階段則主要是對壓測使用的全量SQL明細數據做壓測前的數據準備,基于SQL洞察明細或者智能算法生成的SQL數據做預處理,包括prepared statement語句去重、日志剔除、事務語句合并等等操作。
在回放階段主要是利用壓測冪等技術將流量進行回放,提供了實時的數據庫性能數據和壓測機器負載情況,便于用戶了解壓測進度。在此環節中,DAS將智能調參算法與壓測進行了結合,用戶可通過該功能實現參數調優的功能,具體算法實現將在后續文章單獨介紹。
效果評估階段主要是解讀壓測過程中的指標數據,DAS對業務調優中常用的性能參數和關鍵性能指標做了對比,協助用戶做出資源評估決策。對于壓測過程中發現的慢SQL、鎖等問題,DAS也提供了相應的改進建議和處理方法,對用戶優化業務也提供了信息輔助。
4.2 產品使用
用戶可以在DAS控制臺的左側菜單“智能壓測”進行使用,如圖8。目前DAS支持RDS MySQL和PolarDB MySQL壓測,其他關系型數據庫引擎的支持正在開發中。
圖8 智能壓測界面
在壓測結束之后,用戶可以通過任務詳情查看到目標實例與源實例的性能數據對比以及關鍵參數的對比,如圖9所示。
圖9 壓測后的效果對比
4.3. 產品計費
目前DAS智能壓測功能未單獨收費,壓測流程中新創建的ECS、RDS均按照對應產品官網中以按量計費的標準進行計費,無額外服務費用。如前文所述,壓測依賴源端全量SQL明細數據或相應庫表基礎結構數據,故該服務僅需要壓測源端實例開啟DAS專業版功能即可。
4.4. 客戶案例
DAS智能壓測服務自2020年上線以來,主要客戶為云上頭部客戶,已累計為近百個客戶提供服務,主要包括上云資源評估、業務大促評估、引擎切換評估、數據庫操作驗證等場景。
5. 未來規劃
接下來,智能壓測將增加支持的數據庫引擎,覆蓋云上的所有關系型數據庫引擎;同時,智能壓測將會貼近客戶的真實業務問題,與用戶上云、資源評估、引擎推薦等場景密切結合,并提供相應的壓測評估建議和報告,與企業客戶一起構建大規模場景下的數據庫容量規劃能力。
7月7日14點數據庫自治服務DAS年度重磅發布
DAS自治勝似閑庭信步
數據庫自動駕駛進入規模化時代
掃描下圖二維碼或點擊“這里”預約觀看直播
原文鏈接:https://developer.aliyun.com/article/784999?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的深度技术揭秘 | 大促狂欢背后,如何有效评估并规划数据库计算资源?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字化转型的路上,手握一张地图,但路还得
- 下一篇: 商业化十周年,阿里云RDS推出企业级自治