對象存儲和高防CDN實現(xiàn)分析揭秘

來源:cdnfine
作者:cdnfine
時間:2020-12-10
2873
分享一個對象存儲和高防CDN配合使用的話題,一般來講,公有云廠商提供對象存儲的服務(wù)之外,還會附帶一些增值服務(wù),這些服務(wù)是適配不同的應(yīng)用場景的。什么意思?對象存儲本質(zhì)上解決了海量存儲的問題,但是數(shù)據(jù)不僅要可靠的存儲,大部分情況數(shù)據(jù)還要處理才會有價值,所以一般公有云廠商還會有數(shù)據(jù)處理的服務(wù),比如圖像處理,類似縮略圖,音視*頻轉(zhuǎn)碼,視屏截幀。其次,數(shù)據(jù)訪問,也有特殊需求,比如一次上傳,多次下載的場景,就配合使用CDN的服務(wù),因為高防CDN的下載流量會比對象存儲服務(wù)下載的成本要低。

分享一個對象存儲和高防CDN配合使用的話題,一般來講,公有云廠商提供對象存儲的服務(wù)之外,還會附帶一些增值服務(wù),這些服務(wù)是適配不同的應(yīng)用場景的。什么意思?

對象存儲本質(zhì)上解決了海量存儲的問題,但是數(shù)據(jù)不僅要可靠的存儲,大部分情況數(shù)據(jù)還要處理才會有價值,所以一般公有云廠商還會有數(shù)據(jù)處理的服務(wù),比如圖像處理,類似縮略圖,音視*頻轉(zhuǎn)碼,視屏截幀。

其次,數(shù)據(jù)訪問,也有特殊需求,比如一次上傳,多次下載的場景,就配合使用CDN的服務(wù),因為高防CDN的下載流量會比對象存儲服務(wù)下載的成本要低。

什么是CDN?全稱Content Delivery Network,本質(zhì)上是部署在各地的邊緣服務(wù)器,提供數(shù)據(jù)的就近訪問體驗,并有效降低數(shù)據(jù)服務(wù)器后端壓力。

從技術(shù)實現(xiàn)來講,CDN其實是后端服務(wù)器的緩存代理。

示意圖:

2105004157-0.jpg

公有云廠商提供對象存儲服務(wù)的同時,還會提供cdn服務(wù),因為這兩個服務(wù)都是一家,所以自然方便協(xié)同操作。

數(shù)據(jù)上傳:

數(shù)據(jù)上傳走對象存儲服務(wù)的域名(endpoint);

數(shù)據(jù)下載:

數(shù)據(jù)下載可以走對象存儲服務(wù)的域名;

也可以走cdn域名下載;

對象存儲開啟cdn之后,客戶端使用cdn服務(wù)的域名請求數(shù)據(jù)。如果數(shù)據(jù)不在cdn服務(wù),cdn服務(wù)會自動使用對象存儲Bucket域名回源,拉取數(shù)據(jù)到cdn的緩存下來。這樣之后的壓力全都卸載于cdn服務(wù)上。所以,從以上描述我們再一次體會:cdn其實就是簡單的后端存儲服務(wù)的緩存代理。如果業(yè)務(wù)要使用cdn的話,需要明確cdn服務(wù)的域名,對象存儲的域名,將映射關(guān)系配置在cdn服務(wù)中(這一步其實是公有云廠商幫我們做好)。上傳數(shù)據(jù)使用對象存儲域名,讀取數(shù)據(jù)使用cdn域名。

cdn回源使用方案

cdn在用戶請求不命中的時候,需要回源后端拉取數(shù)據(jù)。那么不知道大家有沒有思考過,CDN加速使用什么樣的方案才能正確的獲取數(shù)據(jù)呢?(因為S3協(xié)議是有權(quán)限校驗的,也就是數(shù)字簽名,S3 v4協(xié)議會把host簽在數(shù)字身份校驗中,也就是說,一般情況,cdn是無法直接轉(zhuǎn)發(fā)的)。一般,對象存儲服務(wù)和cdn配合實現(xiàn)有三種解決方案:

presign

授權(quán)讀

公共讀

presign

presign也叫預(yù)簽名。這種方案是客戶端把簽名完全準(zhǔn)備好,所有的簽名元素和校驗全都在query url里面。cdn這種場景下真的就是做一個純粹轉(zhuǎn)發(fā)代理。但presign有個限制是只能使用S3 V2版本簽名,因為cdn回源時host會變,v4版本簽名會簽host,所以這種情況下簽名校驗會不通過。

Policy授權(quán)方案

這個是通用的方式,S3的Bucket支持細粒度的權(quán)限分配,也就是Policy策略。它允許把各種操作權(quán)限分配給各種指定的對象。

在公有云上,用戶申請cdn服務(wù)的資源,主要做幾個配置(公有云廠商幫你搞定的):

提供CDN域名與Bucket域名的映射關(guān)系

業(yè)務(wù)和CDN之間的認證方式

公有云廠商還會將業(yè)務(wù)方的Bucket授予cdn服務(wù)讀權(quán)限。這樣,當(dāng)cdn未命中,cdn回源,就可以使用自己的賬號向?qū)ο蟠鎯Ψ?wù)請求數(shù)據(jù)(因為開啟CDN加速的時候,已經(jīng)通過policy授權(quán)給cdn了,所以能讀到數(shù)據(jù))。

公共讀方案

S3的Bucket是可以配置成公共讀,也叫做匿名訪問。隨便任何客戶端直接curl都能得到數(shù)據(jù),所以cdn自然也能得到數(shù)據(jù)。這個是一個特殊方案,我們通常不會這樣操作。這種方式可想而知,適用場景有限,因為數(shù)據(jù)安全是無法保證的。

立即登錄,閱讀全文
原文鏈接:點擊前往 >
文章來源:cdnfine
版權(quán)說明:本文內(nèi)容來自于cdnfine ,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼關(guān)注
獲取更多出海資訊的相關(guān)信息
優(yōu)質(zhì)服務(wù)商推薦
更多
個人VIP