天天看點

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

在社群中,有不少使用雲開發的小夥伴回報遇到了“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 節點上的資料會經常失效,導緻頻繁回源,增加了源站的負載,進而影響了整體的傳輸效率;如果緩存間隔時間過長,會帶來資料更新不及時等嚴重的業務問題。

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

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

另外,多個緩存規則設定中還有優先級政策,調配變得更加靈活。

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

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

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

比對第一條所有檔案,命中,此時緩存時間為 2 分鐘。

比對第二條,未命中。

比對第三條,命中,此時緩存時間為300秒。

比對第四條,命中,此時緩存時間為400秒。

比對第五條,命中,此時緩存時間為200秒。

04、如何合理管控CDN?

我們需要把握一個原則:

縮減大小,善用緩存。

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

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

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

再送給大家一句雲雲學長的金句:緩存用的好,PV 的效果用的隻是 UV 的量。

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

05、結語

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

作者:雲雲學長

繼續閱讀