1. 程式人生 > 其它 >如何在雲開發中優雅地管控 CDN 流量?

如何在雲開發中優雅地管控 CDN 流量?

在社群中,有不少使用雲開發的小夥伴反饋遇到了“CDN流量消耗如流水”的情況。

有一覺醒來超額的:

有被高質量圖片的載入“嚇”到不敢用的:

那麼問題來了,如何在雲開發中優雅地管控 CDN 流量消耗呢?本文就來和你詳細聊聊!

01、按量付費和管道付費
為了便於理解,先來看看雲開發的流量計費模式。

簡單來說,按量計費就是:你有多少個量跑出去了,就給你算多少量;但是它並不限制你同一時間跑出去的量,也就是流量峰值不設限。

如果你在同一時間需要跑出去100M的量,那麼峰值就給你開到100M,在同一時間跑完,最後算費用是100M的錢。

而管道付費則是限制給你開多寬的“道路”,按照這個“道路”的寬窄收費,比如你選擇1M的網路道路,那就按照1M的價格來收錢;在使用時,你的量只能達到1M的速度,再也高不了了,這個最大速度就被稱做頻寬。

但是即使低峰沒多少量時,你還必須為這個“道路”付錢。還是上述例子,你同一時間需要跑出去100M,但是速度只能給你開到1M,那麼這些量在100秒後才可以走完,最後算費用是1M的道路租金*租用時長。

而在現實專案中,總會有業務的高峰和低峰,流量幾乎不可能始終保持在一個恆定的速率,這就會造成管道計費有速度的天花板、但閒置時仍在計費的資源浪費問題。

雲開發作為 Serverless 雲原生一體化後端服務,提供的流量是按量付費的,暫不支援管道付費,不限制同一時刻的流量速度,因此,如果開發者使用不合理就會導致流速過快,進而造成流量超額較快的情況。

瞭解了按量付費和管道付費的區別後,咱們進入正題,說說 CDN。

02、什麼是CDN流量?
我們在使用雲開發時,幾乎在各處都會看到CDN這個詞。

CDN又稱內容分發網路,通俗來講就是將你主儲存(源站)中的檔案,複製給各地的儲存點(CDN節點),當有使用者訪問這個資源時,直接從就近的儲存點(CDN節點)獲取即可。

雲開發的雲端儲存和靜態網站託管天然支援 CDN 加速,所以你的使用者通過客戶端下載檔案跑的流量都是 CDN 流量。

以上 CDN 流量只適用於各種渠道走加速公網下載檔案的情況,比如瀏覽器載入網站,客戶端下載資源,外部系統請求檔案,通過臨時地址的各種訪問開啟檔案都在消耗 CDN 流量。

但是如果是內網訪問檔案,則不走 CDN 流量消耗,比如在雲函式中通過 fileID 訪問檔案等。

03、什麼是CDN回源流量?
當我們的儲存中有檔案更新時,儲存在 CDN 節點的舊檔案又該如何處理呢?在這裡引入一個知識點——快取時間。

這裡的快取時間其實就是檔案副本在各地儲存點(CDN節點)的有效時間,比如預設是兩小時,那麼每次檔案副本在各地儲存點的有效時間就是兩小時,超過這個時間之後再收到請求時,儲存點(CDN節點)就會丟棄過期的舊檔案,向主儲存(源站)請求最新的檔案,而這一請求所產生的流量就稱為 CDN 回源流量。

快取時間既不能太長也不可太短,如果 CDN 快取間隔時間過短,那麼 CDN 節點上的資料會經常失效,導致頻繁回源,增加了源站的負載,進而影響了整體的傳輸效率;如果快取間隔時間過長,會帶來資料更新不及時等嚴重的業務問題。

雲開發的雲端儲存就提供了非常細微顆粒度的快取時間設定,你可以針對一個檔案、一個路徑甚至是檔案字尾來進行分別設定。

另外,多個快取規則設定中還有優先順序策略,調配變得更加靈活。

雲端儲存是以從後到前的配置模式來做策略計算的,比如一個雲端儲存的域名做了如下快取配置:

現在請求此路徑下資源/test/abc.jpg,其從後到前匹配方式如下:

匹配第一條所有檔案,命中,此時快取時間為 2 分鐘。

匹配第二條,未命中。

匹配第三條,命中,此時快取時間為300秒。

匹配第四條,命中,此時快取時間為400秒。

匹配第五條,命中,此時快取時間為200秒。

04、如何合理管控CDN?
我們需要把握一個原則:

縮減大小,善用快取。

縮減大小的意思就是,我們在開發應用時,所需要的多媒體檔案,如果沒有特殊要求(比如攝像館的原圖傳送),需要儘可能的壓縮。只有減輕了業務資源的大小,才能夠根本的減少流量資源的消耗。

另外,使用者在上傳多媒體資源時,仍然可以使用平臺或框架能力對資源進行壓縮後再上傳,保證資源都是經過優化後進入儲存,這樣在請求下載時就會減輕很多負擔。

善用快取意思就是同一個使用者、同一份資源儘可能不要請求一次以上,要合理使用客戶端的本地快取能力,將固定資源全部快取。當用戶再此進入時,直接使用快取的資源。

再送給大家一句云云學長的金句:快取用的好,PV 的效果用的只是 UV 的量。

而在具體使用時,大家還是需要根據自己的業務情況來合理把握。比如你的資源變更非常頻繁,就不太適合快取優化;而你的資源不能壓縮,要保持原大小,則就不適合壓縮優化。

05、結語
以上攻略送給各位 hold 不住 CDN 流量的小夥伴們,如果大家覺得 CDN 消耗如流水,使用者活躍卻沒有多少起色,可能就需要好好檢查一下自己哪裡浪費了。勤儉節約可是中華民族的傳統美德,雲開發雖好,也需要節約使用哦~

作者:云云學長