雲端儲存:阿里雲 和 七牛 的比較

weixin_34119545發表於2015-02-11

結論:

  阿里雲端儲存 七牛雲端儲存
標準:REST、HTTP 99%符合 50%
基本功能:送二級域名、繫結域名、CDN 支援 支援
自定義檔案HTTP header 支援 少量支援
高階服務:圖片處理 不提供 很完善地提供
收費策略 收費 小流量免費。大流量收費。
官方PHP SDK 差,依賴亞馬遜http庫,而不是PHP官方PEAR HTTP_Request2

在國內的VPS伺服器廠商中,阿里雲做的很好,所以專案傾向於使用阿里雲開放儲存服務(aliyun OSS)。

把阿里雲端儲存官方混亂的PHP SDK 重寫成PEAR,然後作為apk下載使用。

然後想把圖片伺服器也遷移到雲端儲存,這樣不佔用VPS頻寬。這時候才發現 阿里雲OSS 只有最簡單的檔案儲存功能,不支援圖片處理。

比如圖片伺服器最常用的功能:

1、上傳一張原圖,實時自動生成任意解析度的各種圖片

比如原圖

http://example.com/2.jpg

然後請求任意解析度,請求時伺服器自動生成並輸出,比如

http://example.com/2.jpg?resolution=1280x720

2、格式自動轉換

比如http://example.com/2.jpg?format=png

 

由於阿里雲端儲存不支援圖片功能,所以不能用了。考慮遷移到七牛。

參考七牛官方PHP SDK,重寫成PHP PEAR包,發現七牛API不是REST。

API對比如下:

  阿里雲端儲存 七牛雲端儲存
上傳檔案 HTTP PUT 資源URI HTTP POST up.qiniu.com
刪除檔案 HTTP DELETE 資源URI HTTP POST rs.qbox.me
認證 HTTP header Authorization 一會兒使用HTTP header Authorization,一會兒使用POST token

阿里雲端儲存 API CURL demo:

上傳檔案:

curl -i -X 'PUT' -T '1.jpg' 'http://com-163-sinkcup.oss.aliyuncs.com/1.jpg' -H 'Authorization: OSS asdf:qwer' -H 'Content-Type:image/jpeg'

刪除檔案:

curl -i -X 'DELETE' 'http://com-163-sinkcup.oss.aliyuncs.com/2.jpg'

七牛雲端儲存 API CURL demo:

上傳檔案(可以看出七牛把bucket放在token認證中,技術上導致七牛無法實現“公共上傳”):

curl -i -F 'file=@2.jpg' -F 'token=asdf' -F 'key=2.jpg' 'http://up.qiniu.com/'

刪除檔案:

curl -i -X 'POST' -H 'Authorization: QBox asdf' 'http://rs.qbox.me/delete/com-163-sinkcup:1.jpg'

 

可以看出:阿里雲端儲存在技術上比較嚴謹,使用標準REST。七牛有的地方不再使用token,使用了HTTP header Authorization,可能正在改進。

圖片功能對比如下:

  阿里雲端儲存 七牛雲端儲存
自動生成任意解析度 支援
自動生成任意格式 支援
webp 支援,可節約app大量流量

七牛的圖片demo:

原圖 103KB:http://com-163-sinkcup.qiniudn.com/6ffe255fab20747c8872638870268703

自動生成jpg 79KB:http://com-163-sinkcup.qiniudn.com/6ffe255fab20747c8872638870268703?imageMogr/v2/auto-orient/thumbnail/1366x768/quality/80/format/jpg

自動生成webp 23KB:http://com-163-sinkcup.qiniudn.com/6ffe255fab20747c8872638870268703?imageMogr/v2/auto-orient/thumbnail/1366x768/quality/80/format/webp

由於七牛提供的圖片功能極其強大,支援webp對移動網際網路省流量特別重要(Android、iOS app省70%流量),而且七牛使用go語言,還寫了本書(《Go語言程式設計》豆瓣),說明技術上實力很強,以後也許會支援REST的,所以最後決定使用 七牛雲端儲存。

阿里雲和七牛的PHP SDK都一樣不規範,沒法用,只能重寫。我重寫好了,在這裡:

七牛雲端儲存PHP PEAR包下載:http://www.cnblogs.com/sink_cup/p/PHP_PEAR_Services_Qiniu.html

阿里雲端儲存PHP PEAR包下載:http://www.cnblogs.com/sink_cup/p/PHP_PEAR_Services_Aliyun_OSS.html

阿里雲端儲存1%不符合標準的地方:

自定義HTTP header使用了小寫,不符合HTTP常識。比如阿里雲使用x-oss-acl是錯誤的,應該使用X-Oss-Acl。

相關文章