淘宝如何保障业务稳定性——诺亚(Noah)自适应流控
作者|哲良、八風、澤彬
出品|阿里巴巴新零售淘系技術(shù)部
諾亞(Noah) 自適應(yīng)流控解決方案 基于自動控制算法,解決了人工限流配置疏漏或過時的痛點,大幅提升應(yīng)用抵抗流量沖擊的能力。在剛過去的雙11中,諾亞(Noah)保障了大量業(yè)務(wù)應(yīng)用系統(tǒng),有超過 15K 的容器大規(guī)模部署;穩(wěn)定性上最高可提升 20 倍于業(yè)務(wù)負載流量的上限 QPS ;最高可提升 100% 的資源利用率;同時優(yōu)化了體驗與效率。提升淘系(及更多BU)的穩(wěn)定性底盤,成為應(yīng)用穩(wěn)定性保障的核心能力,推動了業(yè)界在大型分布式在線業(yè)務(wù)系統(tǒng)的高可用/穩(wěn)定性保障的進展。
背景
隨著業(yè)務(wù)的不斷發(fā)展,應(yīng)用數(shù)量、拓撲依賴與復(fù)雜性都在持續(xù)增長,流量模型的有效預(yù)測也變得更加困難。系統(tǒng)與流量的不確定性都會導致系統(tǒng)容量評估疏漏或評估過時。這些情況在雙11、春晚等大型復(fù)雜活動中會更加的突顯。
面向流量的「意義」
流量會受到業(yè)務(wù)的影響而發(fā)生強變化的,這種變化是不確定的且在頻繁發(fā)生的。
應(yīng)對這種不確定性需要基礎(chǔ)架構(gòu)有可靠的、自適應(yīng)的方式,能夠
實時接受與感知變化
作出保護響應(yīng)來抵御變化,自適應(yīng)的、柔性的實施系統(tǒng)/架構(gòu)
然后是彈性,針對基礎(chǔ)資源做實時調(diào)節(jié)
這樣才能具備有效的抵抗力、適應(yīng)力,活著是前提,有了這個前提,才有機會將基礎(chǔ)資源驅(qū)動起來(彈性),而業(yè)務(wù)無需耗費心力去關(guān)注這種不確定性帶來的業(yè)務(wù)可用性風險。
關(guān)于高可用的重新思考
業(yè)界在討論高可用時,主要說的是資源失效的對應(yīng)方式,比如通過應(yīng)用集群、主備、熱切換等應(yīng)對單機失效;通過單元化架構(gòu)、異地多活等應(yīng)對單機房/地域失效。
從上面對資源失效的問題與對策可以看出,高可用所要解決的核心問題是保證服務(wù)不掛,準確的說是要大大降低服務(wù)掛掉的概率。
到了今天我們的應(yīng)用架構(gòu),我們的可用性痛點問題是什么呢?對于你自己開發(fā)的應(yīng)用,或聽到某某服務(wù)掛了時,你會擔心或者想到什么?在可用性方面,相信更多的回答會是『服務(wù)壓跨了』,典型的是問題場景是『大流量、突發(fā)流量』下,比如:直播場景中主播一聲吼,后端流量飆升;社交媒體場景中明星官宣結(jié)婚,帶來熱點流量暴漲;電商運營場景中,秒殺活動大流量脈沖;互動玩法場景中持續(xù)不斷發(fā)布互動活動,一個新的活動導致系統(tǒng)整體可支撐的QPS可能下降很多。這些場景與問題在日常應(yīng)用開發(fā)和服務(wù)保障過程中,應(yīng)該是深有痛點吧 :)
在應(yīng)用架構(gòu)上,業(yè)界對面向流量的可用性,不如像面向資源一樣得到充分的關(guān)注、有著豐富成熟的思路和廣泛有效的實踐,我們有意于改變 面向流量的可用性 這個主題的現(xiàn)狀,更多的直面問題、探索思路、實踐推進。
傳統(tǒng)方案有什么問題?
面向流量的可用性現(xiàn)有的應(yīng)對方式是靜態(tài)限流。
傳統(tǒng)的針對 QPS 限制的靜態(tài)限流方法的問題:
- 流量/請求
依賴 請求模型的準確評估,即測試流量的請求大小與實際需保持一致。
熱點流量,如熱點用戶被頻繁訪問/爆冷商品等。運營導致用戶動線走了較重的邏輯分支。
依賴 來的流量的準確預(yù)估。
但我們要承認,流量一定無法準確被評估,系統(tǒng)會被摸死(即拒絕操作導致的過載)。
- 業(yè)務(wù)代碼邏輯
依賴 測試之后系統(tǒng)自身和其下游依賴的邏輯不變,性能需保持一致。
但是業(yè)務(wù)總是在演進,除非全網(wǎng)封網(wǎng),否則限流閾值一上線就已經(jīng)過時了。
- 資源
依賴 各臺機器性能完全一致且穩(wěn)定不變。
機器型號不同,處理能力是不可能做到完全一致的。
虛擬化/容器化之間有影響,你無法控制你的鄰居會做什么。
- 流程
依賴 事先人工準確執(zhí)行了評估過程
但人總是靠不住的,只要人工來執(zhí)行就一定會疏漏、出錯。
另外對于長尾應(yīng)用/非核心應(yīng)用,支持力度沒有保障,人力資源總是有限的。
傳統(tǒng)方法無法解決人工評估過時導致的流量與容量不一致的問題,我們需要一種能夠?qū)崟r評估系統(tǒng)容量,并就地對流量進行控制的解決方案。
諾亞(Noah)自適應(yīng)流控
面對系統(tǒng)穩(wěn)定性問題,諾亞(Noah) 自適應(yīng)流控解決方案采用不同于業(yè)界傳統(tǒng)的針對QPS限制的靜態(tài)限流方法,首次以自動控制算法為核心手段,提供自適應(yīng)流控解決方案,解決了限流配置過時的痛點,大幅提升應(yīng)用抵抗流量沖擊的能力,極度簡化了相關(guān)配置工作,同時在系統(tǒng)資源利用率、用戶體驗、運維效率等方面均有大幅優(yōu)化提升。
諾亞(Noah)自適應(yīng)流控解決方案
在絕大部分情況下,CPU利用率作為資源供給的主要信號是最為直接的。諾亞(Noah) 自適應(yīng)流控解決方案即是以自動控制CPU資源為核心方法的,其具備了一下3點優(yōu)勢:
在系統(tǒng)穩(wěn)定性控制效果方面表現(xiàn)為精準和有效的控制,并具備很強的可解釋性。
沒有提前的人工評估,便沒有提前評估的過時與人工評估的疏漏和錯誤。
應(yīng)用場景更為廣泛,不受異步場景約束,可同時使用于同步和異步場景。
諾亞(Noah) 自適應(yīng)流控解決方案能夠?qū)崟r自動評估 QPS ,在技術(shù)方案上使用自適應(yīng)性來解決業(yè)務(wù)流量的不確定性。
業(yè)務(wù)落地
作為淘寶應(yīng)用架構(gòu)升級(代號Tango:Taobao Architecture Next GeneratiOn)在穩(wěn)定性上的核心產(chǎn)品,諾亞(Noah)在剛剛過去的雙11大促過程中,保障大量業(yè)務(wù)應(yīng)用系統(tǒng),有超過15K的容器大規(guī)模部署(涉及淘寶、天貓、聚劃算、盒馬、貓超、優(yōu)酷等等眾多業(yè)務(wù))。提升系統(tǒng)穩(wěn)定性、提升資源利用率、優(yōu)化體驗與效率,提升了淘系(及更多BU)的穩(wěn)定性底盤,成為應(yīng)用穩(wěn)定性保障的核心能力,推動了業(yè)界在大型分布式在線業(yè)務(wù)系統(tǒng)的高可用/穩(wěn)定性保障的進展。
諾亞(Noah) 自適應(yīng)流控解決方案目前已上線超過9個月,在線上實戰(zhàn)和全鏈路壓測中,諾亞保護了大促會場、直播、導購等等核心業(yè)務(wù)場景;應(yīng)用系統(tǒng)在出現(xiàn)容量缺失30%或近20倍超大流量脈沖場景下仍保持穩(wěn)定運行。
諾亞(Noah)自適應(yīng)流控的效果收益:
- 可用性提升
壓垮QPS上限,最高可提升 20倍 于業(yè)務(wù)負載流量。
在大流量壓力下降后,1秒 快速恢復(fù)服務(wù)。
大流量壓力下,僅需直接擴容機器 一步即可,無需緊急調(diào)整限流。
- 用戶體驗的優(yōu)化
應(yīng)用在高負載情況下,服務(wù)成功率最高可提升 2.7倍,同時響應(yīng)時間維持正常水平不劣化。
- 成本的優(yōu)化
資源利用率最高可提升 100%(去除為了穩(wěn)定性/不確定性而留的資源冗余)
- 效率提升
全鏈路壓測/性能壓測更順暢。無需人工限流閾值設(shè)置,避免人工評估錯誤導致系統(tǒng)被壓垮后需要大量調(diào)整時間。
自適應(yīng)流控的實際控制效果:在流量飆升/大流量壓力時,CPU穩(wěn)定控制在閾值,且服務(wù)RT正常
諾亞后續(xù)的發(fā)展
目前諾亞(Noah) 自適應(yīng)流控解決方案保障了大量業(yè)務(wù)應(yīng)用系統(tǒng),提升穩(wěn)定性、提升資源利用率、優(yōu)化體驗與效率,提升淘系(及更多BU)的穩(wěn)定性底盤,成為應(yīng)用穩(wěn)定性保障的核心能力,推動了業(yè)界在大型分布式在線業(yè)務(wù)系統(tǒng)的高可用/穩(wěn)定性保障的進展。
對未來更體系化建設(shè)的幾點展望:
- 自適應(yīng)能力由限流拓展到隔離/熔斷等更多穩(wěn)定性能力,如
自適應(yīng)線程資源隔離
自適應(yīng)服務(wù)比例
自適應(yīng)服務(wù)熔斷
- 由單機的自適應(yīng)限流拓展到鏈路級,尤其是客戶端流量入口接入層
與接入層協(xié)同,讓入口流量與應(yīng)用的處理容量自適應(yīng)匹配
確定性地保障面向流量的高可用
- 自適應(yīng)控制流量拓展到自適應(yīng)伸縮容
流量控制與處理資源控制(伸縮容)協(xié)同
無論是流量的控制還是資源的控制,都是為了讓處理流量與資源容量匹配
- 保障系統(tǒng)不過載,提升穩(wěn)定性與業(yè)務(wù)請求的成功率
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的淘宝如何保障业务稳定性——诺亚(Noah)自适应流控的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十年磨一剑 | 淘宝如何打造承载亿级流量
- 下一篇: 云上快速搭建Serverless AI实