如何設(shè)計一套好用的自適應流控方案?

0 評論 4887 瀏覽 27 收藏 13 分鐘

自適應流控是指根據(jù)當前流量對象的數(shù)據(jù)特征及預定義的規(guī)則,自動調(diào)整方法、順序、參數(shù)或條件,以期與預定義目標相適應的過程。

什么是自適應流控?

流控,是流量控制的簡稱。在不同的領(lǐng)域有不同的含義,如航空流量控制,網(wǎng)絡流量控制等。

自適應,就是在處理和分析過程中,根據(jù)處理數(shù)據(jù)的數(shù)據(jù)特征自動調(diào)整處理方法、處理順序、處理參數(shù)、邊界條件或約束條件,使其與所處理數(shù)據(jù)的統(tǒng)計分布特征、結(jié)構(gòu)特征相適應,以取得最佳的處理效果的過程。

簡言之,自適應流控是指根據(jù)當前流量對象的數(shù)據(jù)特征及預定義的規(guī)則,自動調(diào)整方法、順序、參數(shù)或條件,以期與預定義目標相適應的過程。

根據(jù)上述定義,你是否對自適應流控的概念有了基本的認識呢?Don’t worry,我們將在下文,用案例的方式幫助你理解。So, Take It Easy!

為什么要自適應流控?

1. 引言

在互聯(lián)網(wǎng)領(lǐng)域,我們常聽說的諸如:“主站用戶流量太大,需做子頁面分流設(shè)計”、“大促請求洪峰將至,需提前做好限流措施”、“數(shù)據(jù)庫請求量太大,需將查詢請求切流至從庫”等等,都是在討論流控問題,只不過關(guān)注的視角和對象不同而已。

  • 產(chǎn)品、運營可能更多的是關(guān)注用戶流量;
  • 研發(fā)可能更關(guān)心的是服務請求流量;
  • DBA(數(shù)據(jù)庫管理員)在意的可能是數(shù)據(jù)庫請求量。

職責不同,則視角不同;視角不同,則關(guān)注對象不同。

可見,流量控制在互聯(lián)網(wǎng)領(lǐng)域應用十分廣泛且廣受關(guān)注。

2. 流控的必要性

然而,為什么要進行流量控制呢?我們設(shè)想一個典型的流控場景:

假如周杰倫即將在鳥巢開個人演唱會,據(jù)官方大數(shù)據(jù)預測:預計將有10萬觀眾入座,屆時會場將座無虛席。而你有幸擔任本次演唱會的安保工作,負責保障觀眾及時有序地入場和出場。

挑戰(zhàn):假如有以下三種方案,你將采取哪種方案,以保障觀眾及時有序地入場和出場呢?

  • 方案一:設(shè)置一個會場入口,觀眾可憑入場券由此入場。
  • 方案二:設(shè)置一個會場入口,在入場電子指示牌(或入場券上)上標明入場券編號及對應的入場時段,各個手持入場券的觀眾按入場券編號及對應的時段有序入場。
  • 方案三:設(shè)置多個會場入口,在入場電子指示牌(或入場券上)上標明入場券編號及對應的入場口編號(如A口、B口、C口、D口等),各個手持入場券的觀眾按入場券編號及對應的入場口有序入場。

方案一,沒有進行任何流控的干預

優(yōu)勢是節(jié)省安保及秩序維護的人力或設(shè)施成本,劣勢尤為突出:

  1. 觀眾排隊嚴重,甚至因為排隊時間長而錯過入場,用戶體驗極差;
  2. 極易造成擁堵,甚至踩踏事件,造成安全事故。

方案二,主要按時間順序(類似“錯峰出行”),對觀眾進行流控

優(yōu)勢是節(jié)省安保及秩序維護的人力或設(shè)施成本,劣勢也顯而易見:

  1. 觀眾排隊現(xiàn)象有所減輕,但觀眾入場時間被嚴格限制,時間不自由;
  2. 對于未按時間進場的觀眾而言,要么錯失進場機會要么無奈等待,抵觸情緒上升;

總結(jié)一句話:用戶體驗差。

方案三,主要按空間分布,對觀眾進行流控

雖然需要更多的安保及秩序維護的人力或設(shè)施,但優(yōu)勢也非常明顯:

  1. 輕微擁堵,觀眾可根據(jù)自己的時間安排靈活快速出入場,用戶體驗佳;
  2. 不易產(chǎn)生踩踏等安全事故。

另外,方案三的優(yōu)勢還體現(xiàn)在當演唱會結(jié)束時,可以快速完成觀眾的有序出場。

根據(jù)各方案的比較后,我相信聰慧過人的你一定會選擇方案三。這也是現(xiàn)實場景中被主流選擇的流控方案。

3. 流控的適用場景

結(jié)合上述“演唱會”的場景,我們總結(jié)下:在什么場景下需要進行流量控制呢?

一般而言,流量控制被用于具有如下特征的場景:

  1. 在短時間內(nèi)匯聚了巨大的流量;
  2. 匯聚流量的各個個體需得到妥善處理。

線上的典型場景,包括秒殺,搶購,限時大促等,如天貓京東雙11大促、唯品會定時秒殺等,需盡量保障每個用戶都能正常訪問網(wǎng)站或APP,而不是簡單粗暴地攔截或拒絕訪問。

線下的典型場景,包括重大會議(運動會、演唱會、展銷會等)出入場等,每個有入場券的觀眾,都有被合理安排入場和出場的權(quán)利,不能隨意拒絕觀眾入場或出場。

4. 關(guān)于自適應的理解

如何理解自適應流量控制呢?

回到“演唱會”例子中的方案三,我們是否有欠考慮的地方呢?想象一下如下特殊場景:

  • 對于某些特殊群體如VIP、孕婦、行動不便等,一般會提供特殊通道,保障其優(yōu)先出入場;
  • 對于入口而言,若出現(xiàn)故障,則需啟用備用出入口,以保障觀眾有序出入場。

以上場景是否似曾相識?這就是我們所說的“自適應”,即:能夠根據(jù)特殊觀眾個體或入口故障等數(shù)據(jù)特征,自動調(diào)整走特殊通道或啟用備用通道的處理方法,以匹配完成觀眾有序快速出入場相適應的目標。

總體而言,“自適應”主要用于:需要根據(jù)待處理對象的數(shù)據(jù)特征,或根據(jù)待處理對象所處環(huán)境的變化,而匹配相適應的處理方式、條件、規(guī)則等的應用場景。

物競天擇,適者生存。世界上唯一不變的就是變化本身。

由此可見,擁抱和適應變化就顯得格外重要,“自適應”的重要性也就不言而喻了。

有自適應流控的典型實踐嗎?

現(xiàn)在,舉一個互聯(lián)網(wǎng)電商領(lǐng)域短信自適應流控的案例。

一年一度的雙11大促期間,消費者們購物的激情,被大促節(jié)日和網(wǎng)購所烘托的氛圍所點燃和釋放,特別是在雙11當天,億級的消費者幾乎在同一時段內(nèi)搶購自己心儀的商品。

與此同時,各類短信也在此期間競相迸發(fā),如登錄驗證、支付驗證、預售提醒、活動推廣等,這些短信將在短時間內(nèi)產(chǎn)生巨大的流量洪峰。如何使這些短信及時可靠下發(fā),成為了是否能保障雙11順利進行的關(guān)鍵。

1. 短信下發(fā)原理

為了便于理解,在介紹短信自適應流控之前,先簡要介紹短信下發(fā)的原理:

如上圖所示,短信下發(fā)的原理,可按以下步驟進行簡要概述:

  1. 由各業(yè)務源頭生成短信內(nèi)容,如注冊登錄、預約預售、活動推廣等;
  2. 由短信網(wǎng)關(guān)按短信類型,將短信內(nèi)容放入不同的待發(fā)送隊列;
  3. 由短信網(wǎng)關(guān)經(jīng)過分發(fā)層,投遞至短信通道商;
  4. 由通道商轉(zhuǎn)發(fā)至運營商,并最終下發(fā)至用戶手機終端。

2. 自適應流控的設(shè)計思路

關(guān)于短信的自適應流控,設(shè)計思路體現(xiàn)如下:

(1)劃分短信類別,定義優(yōu)先級

將短信按行業(yè)規(guī)則劃分為驗證碼、通知短信、推廣短信。

  • 驗證碼,具有驗證用戶身份或確認用戶操作的作用,包括但不限于APP/網(wǎng)站注冊、安全登陸、支付認證、身份認證、密碼找回、賬號綁定等應用場景。
  • 通知短信,用戶在使用或訂閱了企業(yè)相關(guān)服務后,為使服務履約閉環(huán)而由企業(yè)程序觸發(fā)的通知,包括但不限于提貨通知、訂單通知、支付通知、物流通知、生活服務類通知等應用場景。
  • 推廣短信,為了推廣和宣介產(chǎn)品或服務等,由企業(yè)主動觸發(fā)的短信,包括但不限于用戶調(diào)研、抽獎邀請、新品試用、新品宣傳、會員關(guān)懷、商品促銷、活動邀請等應用場景。

通過上述對各類型的短信介紹,我們可以判別:

通常來說,用戶對驗證碼短信的時效性要求最為苛刻,需要秒級到達;其次是通知短信;最后才是推廣短信。

因此,我們將優(yōu)先級的順序定義為:驗證碼>通知短信>推廣短信。優(yōu)先保障驗證碼的及時下發(fā),其次保障通知短信的下發(fā),最后保障推廣短信的下發(fā)。

(2)多通道商備份,制定自適應切換規(guī)則。

一般而言,作為備份,會采購多個通道商的短信通道,以確保某個通道商出現(xiàn)故障時的快速切換,最終保障短信的可靠下發(fā)。在通道發(fā)生故障時,如何快速切換以保障短信及時下發(fā)呢?

我們首先想到的是:人工值守和人工切換的方式。當然,這是一種可行的解決方案,但存在切換不及時、非工作時段無法及時響應(特別是在夜間)等諸多弊端。

所以,需要找到更優(yōu)的解決方案,通過評估分析,我們最后采用了自動化的方式來做通道故障時的快速切換,原理可簡要描述如下:

注:對于不可用通道,我們采用了“嘗試發(fā)送”機制進行探活檢測,如果檢測到某故障通道經(jīng)過修復后達到可用標準,則將其從不可用通道隊列放入可用通道隊列。

3. 度量指標

為了度量該設(shè)計方案是否有效,我們定義了2個關(guān)鍵的指標:

  1. 下發(fā)延時,下發(fā)延時=短信下發(fā)至通道商的時間點-收到短信下發(fā)請求的時間點;
  2. 切換耗時,切換耗時=通道切換時間點-通道不可用的識別時間點。

從線上運營數(shù)據(jù)來看,以上兩個指標的實測數(shù)據(jù)皆達到項目預期的目標。

總結(jié)

本文簡要講述了自適應流控的相關(guān)背景、概念、價值及典型實踐,旨在幫助大家建立起對自適應流控的適用場景及必要性等基本認識,其中的自適應短信流控案例來自互聯(lián)網(wǎng)廠商,具備一定的借鑒意義,僅供大家參考和探討。

另,受限于作者寫作水平及保密要求等相關(guān)原因,有陳述不盡之處,敬請諒解。

 

本文由 @南瓜哥 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!