在互聯(lián)網(wǎng)場景中, 對象存儲 和CDN是緊密相連組合使用的一對服務(wù),鑒于很多客戶使用了多家CDN廠商甚至使用了多家 云存儲 ,本文針對單云模型和多云模型的成本構(gòu)成進行詳細分析,并給出建議的最佳實踐。
一、單一云廠商模型
對象存儲的下行流量按業(yè)界通用模式一般分為三類:內(nèi)網(wǎng)流出流量(免費)、公網(wǎng)流出流量(價格最高)、回源流量(指自家CDN回源到自家對象存儲的流量,在 定價 上有優(yōu)惠,價格較低)。所以在使用同一云廠商的對象存儲和CDN時,架構(gòu)及成本模型如下:

其中可能產(chǎn)生的流量收費項包括:
1)CDN流量,為CDN產(chǎn)品的計費項
2)回源流量,為對象存儲的計費項
3)公網(wǎng)流出流量(當客戶端直接訪問對象存儲時),為對象存儲的計費項
以華為云為例,CDN的流量計費為階梯模式,在10TB以內(nèi)為0.2元/GB,OBS的回源流量單價為0.15元/GB,而OBS的公網(wǎng)流出流量則是閑時0.25元/GB+忙時0.5元/GB。
一般而言,當存儲在OBS中的數(shù)據(jù)需要進行互聯(lián)網(wǎng)分發(fā)且存在多個客戶端經(jīng)常訪問同一個文件(即存在熱點文件)的場景,建議使用CDN來做分發(fā)加速,同時可降低整體的流量費用。
二、多家云廠商模型
在實際項目中,很多客戶會使用多家CDN廠商+一家對象存儲,或者使用多家CDN廠商+多家對象存儲,那么我們舉幾個例子來分析下不同場景的成本模型并給出建議的最佳實踐。
1.A廠商CDN+B廠商對象存儲
比如使用華為云CDN+其他云對象存儲,則架構(gòu)及成本構(gòu)成如下:
此時產(chǎn)生的流量收費項包括:
1)華為云CDN的流量,為華為云CDN的計費項
2)其他云對象存儲公網(wǎng)流出流量(華為云CDN回源到其他云對象存儲),為其他云對象存儲的計費項
這種架構(gòu)相比使用單云廠商的CDN和對象存儲,會增加CDN回源鏈路的流量成本,且通過公網(wǎng)回源到云存儲會有一定的性能下降。
2.多廠商CDN+單廠商對象存儲
比如使用其他云對象存儲+其他云CDN+華為云CDN,則架構(gòu)及成本構(gòu)成如下:

此時產(chǎn)生的流量收費項包括:
1)其他云CDN的流量,為其他云CDN的計費項
2)華為云CDN的流量,為華為云CDN的計費項
3)回源流量(其他云CDN回源到其他云對象存儲),為其他云對象存儲的計費項
4)其他云對象存儲公網(wǎng)流出流量(華為云CDN回源到其他云對象存儲),為其他云對象存儲的計費項
注意,該場景下使用華為云CDN,回源到其他云對象存儲的流量在其他云看來為公網(wǎng)流出流量,以Ali為例官網(wǎng)目錄價為閑時0.25元/GB+忙時0.5元/GB,而CDN回源流量目錄價則是0.15元/GB。
假設(shè)業(yè)務(wù)在華為云CDN上產(chǎn)生了1TB月流量且為忙時流量,而回源率為10%,則因為跨云回源而額外增加的成本為 (0.5-0.15)元/GB*100GB=35元,這部分費用如果用于購買OBS標準存儲則可以買到353GB。這也說明如果文件總?cè)萘啃∮?53GB時,使用兩家CDN分別回源到兩家對象存儲是最劃算的,即其他云CDN回源到其他云對象存儲+華為云CDN回源到華為云OBS。
3.多廠商CDN+多廠商對象存儲
一般而言使用多廠商CDN+多廠商對象存儲的原因有以下幾種:
1)減少使用A廠商CDN回源到B廠商對象存儲所帶來的額外公網(wǎng)流出成本
2)使用多家CDN避免單一CDN故障影響,形成多家CDN容災架構(gòu)
3)數(shù)據(jù)存儲在多家云廠商,形成多云 存儲容災 架構(gòu)
此時架構(gòu)及成本構(gòu)成如下:

1)其他云CDN流量,為其他云CDN的計費項
2)其他云對象存儲回源流量,為其他云對象存儲的計費項
3)華為云CDN流量,為華為云CDN的計費項
4)華為云OBS回源流量,為華為云OBS的計費項
該架構(gòu)在業(yè)務(wù)上可以有幾種使用模式:
1)不同的加速域名配置在不同的云廠商(如圖片加速域名使用其他云、視頻加速域名使用華為云)
2)同一域名在兩家云廠商都進行配置而在不同的運營商/地區(qū)解析到不同云廠商的CNAME地址上(如在北京電信將 域名解析 到其他云CDN、在上海聯(lián)通將域名解析到華為云)
3)同一域名在兩家云廠商都進行配置,但只解析A廠商,當A廠商故障時將域名切換解析到B廠商
這時可極大地提高整體的業(yè)務(wù)連續(xù)性,任何一家云廠商故障對整體業(yè)務(wù)的訪問影響基本在可控范圍之內(nèi)。但同時也帶來了一個問題,如何實現(xiàn)多云存儲之間的數(shù)據(jù)同步。
三、多云存儲數(shù)據(jù)同步方案
應用雙寫
如果數(shù)據(jù)是在應用服務(wù)側(cè)產(chǎn)生,或者數(shù)據(jù)在客戶端產(chǎn)生但通過服務(wù)端將數(shù)據(jù)寫入對象存儲,則建議使用雙寫方案,架構(gòu)如下:
此時業(yè)務(wù)應用可對接兩家對象存儲的SDK,將文件以同步模式或者異步模式寫入兩家對象存儲。對象存儲的上行流量免費,所以該架構(gòu)不會增加任何成本。
數(shù)據(jù)回源
如果數(shù)據(jù)上傳邏輯不做改變,則可使用OBS的“數(shù)據(jù)回源”功能,在文件訪問請求到達OBS而OBS桶里沒有該文件時,可通過“數(shù)據(jù)回源”將客戶端請求重定向到設(shè)定的源站并異步地從源站將數(shù)據(jù)拉取到OBS存儲下來,架構(gòu)如下:

詳細流程說明:
客戶端向華為CDN發(fā)起獲取文件的請求
華為CDN回源到華為OBS請求文件,OBS側(cè)事先配置好數(shù)據(jù)回源,當請求的文件不存在時,會響應302重定向到配置的源站(此處為其他云對象存儲)
華為CDN接收到OBS返回的302請求
OBS異步從客戶配置的源站請求文件
華為CDN處理302跳轉(zhuǎn)到其他云對象存儲側(cè)獲取數(shù)據(jù)
其他云對象存儲響應華為CDN的文件請求
華為CDN將文件內(nèi)容返回給客戶端,當下次客戶端請求同樣的文件時,華為CDN直接回源到OBS獲取。
“數(shù)據(jù)回源”功能是被動觸發(fā)式,即只有向OBS發(fā)起請求后OBS才會到設(shè)置的源站將數(shù)據(jù)拉取過來,所以當一個新文件上傳到其他云對象存儲后,建議業(yè)務(wù)應用程序向OBS觸發(fā)一個GET請求來請求數(shù)據(jù)(發(fā)起GET請求后可關(guān)閉連接,無需接收實體數(shù)據(jù))。另外該架構(gòu)會在其他云對象存儲側(cè)產(chǎn)生兩份數(shù)據(jù)流量(針對同一個文件,CDN拉取一次,OBS拉取一次)。
Serverless觸發(fā)式上傳
不改變原有的上傳邏輯,當文件上傳到其他云對象存儲后,觸發(fā)函數(shù)計算服務(wù),通過Serverless方式將文件同步到華為云OBS,架構(gòu)如下:
該架構(gòu)需要客戶在其他云啟用函數(shù)計算服務(wù)并部署上傳文件到OBS的代碼,會產(chǎn)生函數(shù)計算服務(wù)的費用。
版權(quán)聲明:本文章文字內(nèi)容來自第三方投稿,版權(quán)歸原始作者所有。本網(wǎng)站不擁有其版權(quán),也不承擔文字內(nèi)容、信息或資料帶來的版權(quán)歸屬問題或爭議。如有侵權(quán),請聯(lián)系contentedit@huawei.com,本網(wǎng)站有權(quán)在核實確屬侵權(quán)后,予以刪除文章。