業(yè)務(wù)場景
OSS對象存儲作為一種海量绅你、安全伺帘、低成本、高持久的云存儲服務(wù)忌锯,深受廣大開發(fā)人員的喜愛伪嫁。但是在全球化的業(yè)務(wù)場景中,不管OSS選擇放于海外或者大陸地區(qū)偶垮,都會導(dǎo)致另外一部分用戶上傳和訪問質(zhì)量不佳的問題张咳。
本文旨在提供一種基于OSS對象存儲的低成本的全球加速方案帝洪。
網(wǎng)絡(luò)架構(gòu)圖
網(wǎng)絡(luò)架構(gòu)圖
方案設(shè)計
下載方案
- 使用自定義域名配置CDN加速
- DNS解析:自定義域名CNAME解析到CDN加速域名
- 對象訪問簽名調(diào)整:改用URL鑒權(quán)的方式進(jìn)行簽名
上傳方案
- 直接使用OSS傳輸加速域名 {bucket}.oss-accelerate.aliyuncs.com
配置步驟
- 配置CDN加速
-
加速域名配置
自定義域名
,后續(xù)對象訪問使用此域名脚猾。源站信息選擇OSS域名
, 域名類型選擇自定義OSS源站
葱峡,域名配置為OSS傳輸加速域名 {bucket}.oss-accelerate.aliyuncs.com
配置CDN加速 -
創(chuàng)建成功后會生成一個CDN加速域名(類似xxx.com.w.cdngslb.com)
CDN列表頁 -
如果為私有Bucket,回源配置中需要開啟
阿里云OSS私有Bucket回源
龙助,訪問控制-開啟URL鑒權(quán)
砰奕,填寫主備KEY
!
URL鑒權(quán)
- 配置DNS解析
將自定義域名CNAME解析到剛才配置后得到的CDN加速域名
DNS解析
- 對象訪問簽名
/**
* CND鑒權(quán)-A方案的簽名
*
* @param string $host eg. https://mall.xxx.com
* @param string $path eg. resume/110/abc.jpg
* @param string $args eg. ?x-oss-process=image%2Fauto-orient%2C1%2Fresize%2Cw_160
* @param string $key 鑒權(quán)的key
* @param int $expireAt 過期時間戳
* @return string
*/
function sign($host, $path, $args, $key, $expireAt)
{
$path = Str::startsWith($path, '/') ? $path : "/$path";
$path = implode('/', array_map('urlencode', explode('/', $path)));
$rand = '0';
$uid = '0';
$str = sprintf('%s-%s-%s-%s-%s', $path, $expireAt, $rand, $uid, $key);
$hash = md5($str);
$authKey = sprintf('%s-%s-%s-%s', $expireAt, $rand, $uid, $hash);
$symbol = $args ? '&' : '?';
return sprintf('%s%s%s%sauth_key=%s', $host, $path, $args, $symbol, $authKey);
}
對比測試
本次測試以3種方案進(jìn)行對比測試,測試的圖片為948KB提鸟。
- 直接使用OSS傳輸加速域名方案:網(wǎng)絡(luò)耗時不是很穩(wěn)定军援,快的0.48s,慢的1s多
傳輸加速網(wǎng)絡(luò)傳輸耗時
- 使用CDN鑒權(quán)+OSS傳輸加速域名回源方案:命中CDN緩存的網(wǎng)絡(luò)耗時在0.15s左右称勋,回源的網(wǎng)絡(luò)耗時1-2s
1.命令緩存
CDN緩存命中網(wǎng)絡(luò)傳輸耗時
2.OSS傳輸加速域名回源
CDN傳輸加速回源網(wǎng)絡(luò)傳輸耗時
- 使用CDN鑒權(quán)+OSS域名回源方案:命中CDN緩存和上述方案差不多胸哥,回源的網(wǎng)絡(luò)耗時再4-7s
OSS域名回源
CDN普通回源網(wǎng)絡(luò)傳輸耗時
從上面的對比測試中,可以很明顯的看出CDN緩存加速的網(wǎng)絡(luò)傳輸質(zhì)量會更好赡鲜,相比于傳輸加速通過選擇優(yōu)質(zhì)鏈路從OSS源站取數(shù)據(jù)空厌,CDN在最近邊緣節(jié)點(diǎn)的緩存更快,更穩(wěn)定银酬。
從成本上來說嘲更,傳輸加速1.6元/G(還不包括OSS訪問的流量計費(fèi)),而CDN加速的流量計費(fèi)只需要0.x/G捡硅,顯然CDN加速更節(jié)約成本哮内。