0 序
- 本文屬筆記型博文。
目標讀者:博主本人
- 本文OSS的描述內容,主要參考阿里雲的OSS產品。
1 對象存儲-概述
1.1 什麼是對象存儲OSS?
- 對象存儲服務(
Object Storage Service
)是阿里雲等雲平臺提供的海量、安全、低成本、高可靠的雲存儲服務,提供與平臺無關的RESTful API
接口,提供99.999999999%的服務持久性。
- 優勢:
- 海量、安全、低成本、高可靠
- 按量收費,無需擔心存儲容量
- 主要功能:
- 任何時間、任何地點、任何平臺上對數據進行上傳和下載
- 通過API或WEB頁面方式管理海量數據
- 彈性擴展:海量存儲空間,隨時增加
- 大規模:支持同一時間內高併發,大流量的讀寫訪問
- 圖片處理:支持縮略、裁剪、水印、壓縮和格式轉換
- 按量付費:存儲量、流量、請求次數付費
1.2 對象存儲OSS的特點
OSS產品特點一:穩定
- 服務可用性不低於99.9%
- 規模自動擴展
- 數據三冗餘備份,持久性99.999999999%
OSS產品特點二:低成本
- OSS使用成本很低
- 內網地址訪問免流量費
- 無需運維投入
OSS產品特點三:安全
- 結合雲盾防DDos系統
- 多種安全認證機制
- 提供訪問日誌,有助於追查非法訪問
OSS產品特點四:大規模、高性能
- 存儲容量無限擴展
- 處理能力彈性增加
- 多線BGP網絡,各運營商訪問流暢
1.3 對象存儲OSS的應用場景
- 場景1:OSS適合作爲應用程序的持久化存儲
- 持久保存文件(附件、圖片、視頻)
- RDS數據庫MySQL
- 場景2:數據處理
- 圖片處理:提供裁剪、旋轉、水印、縮放
- 媒體轉碼:音視頻格式轉換
- 場景3:海量存儲
- 管理音視頻資源
- 網絡攝像機直存
- 管理海量的物聯網設備數據(例如:車聯網領域————CAN報文等)
- 軟件系統的日誌
- 場景4:動靜態資源分離
- 動態資源:數據庫記錄
- 靜態資源:圖片、附件、音視頻資源的超低延時傳輸
1.4 對象存儲OSS的計費模式
OSS費用構成(按量付費[主要類型]、包年包月)
- 結算方式:
- 按量付費:
- 開通OSS後,默認付費方式
- 按小時時間
- 計費公式:實際資源使用量*每小時單價
- 包年包月:
- 以資源包的形式提供,超出部分按量付費
- 資源包類型:
- 1、存儲包、下行流量包、回源流量包三種類型
- 2、地域資源包和全國通用資源包兩大類
- 存儲費用:
- 標準存儲類型
- 實際存儲量
- 低頻/歸檔存儲類型
- 實際存儲量
- 存儲實際未滿指定天數的存儲容量
- 數據取回量
- 流量費用:
- 外網流出流量
- CDN回源流出流量
- 跨區域複製流量
- 請求費用:
- 請求次數
- 數據處理費用:
- 圖片處理
- 視頻截幀
2 對象存儲的概念與原理
2.1 基本概念
OSS數據組織結構
- OSS數據組織結構
Bucket/桶
- 定義
- 同一用戶、同一地域創建的存儲空間不超過30個,名稱全局唯一
- 存儲空間一旦創建,名稱、所處地域、存儲類型不能修改
- 單個存儲空間的容量不限制
- Bucket的解釋說明:
- Bucket是OSS上的命名空間
- Bucket名稱在整個OSS服務中具有全局唯一性,不能修改
- 一個應用,例如圖片,可以對應一個或多個Bucket中
- 一個用戶在同一地域下最多可以創建30個Bucket,每個Bucket中存放的Object沒有限制,存儲容量沒有限制
- Bucket命名規則:
- 只能包括小寫字母、數字或短橫線
- 必須以小寫字母或數字開頭和結尾
- 長度必須在3-63字節之間
- Bucket的使用:
- 創建Bucket
- 設置Bucket權限
- 查看Bucket信息
- 刪除Bucket信息
Object
- 定義
- 每個文件都是一個Object
- 文件大小限制
- 控制檯最大不超過5G,斷點續傳方式
- 上傳的文件大小不超過48.8TB
- OSS支持上傳同名文件,但會覆蓋已有文件
- Object的解釋說明:
- Object是OSS存儲數據的基本單元,也稱爲OSS的文件
- Object由元信息(Object Meta),用戶數據(Data),文件名(Key)組成,對象由存儲空間內部唯一的Key來標識。
- 用戶可根據自己的需要在元信息中存儲一些自定義信息
- 根據不同的上傳方式,Object的大小限制是不一樣的,分片上傳最大支持48.8TB的對象大小,其他的上傳方式最大支持5GB
- Object展現形式爲文件或文件夾
- Object命名規則:
- 使用UTF-8編碼
- 長度必須在1-1023字節之間
- 不能以“/”或者“\”字符開頭
- 區分大小寫
- OSS控制檯可以上傳小於5G的文件,大於5G通過SDK或者API分片上傳
- 獲取文件訪問地址
- Bucket或Object的讀寫權限爲非私有,可以通過URL來訪問該文件
Bucket或Object的讀寫權限爲私有,OSS按照URL有效時間生成帶簽名字符串的URL
- OSS Object 的使用 :設置文件HTTP頭
HTTP標準屬性
名稱 | 描述 |
---|---|
Content-Type | 該Object文件類型 |
Content-Encoding | 指定該Object被下載時的內容編碼格式 |
Cache-Control | 指定該Object被下載時的網頁緩存行爲 |
Content-Disposition | 指定該Object被下載時的名稱 |
Content-Language | 指定該Object被下載時的內容語言編碼 |
Expires | 過期時間 |
-
OSS Object 的使用 : 用戶自定義元數據(User Meta)
-
OSS Object 的使用 : 刪除文件
- 單個刪除,指定刪除某個Object
- 批量刪除,控制檯批量刪除一次最多可指定1000個Object
- 自動刪除,使用生命週期管理來完成
- OSS Object 的使用 : 碎片管理
- 碎片
- 碎片是使用分片上傳模式,需要調用Compute Ultipart Upload將這些碎片組合成一個完整的Object
- 可通過控制檯查看或刪除產生的碎片
AK(AccessKey ID & Secret)
- 用於標識用戶,爲訪問OSS做簽名驗證
Endpoint(訪問域名)
- OSS對外服務的訪問域名
- HTTP RESTful API對外提供服務
- 訪問不同地域的時候,需要不同的域名
- 同一地域下,內外網的Endpoint也是不同的
2.2 OSS 訪問的Bucket、域名和數據中心
- Bucket和數據中心的關係
- Bucket是地域內作用的資源,可按照費用單價,請求來源分佈,網絡延遲
- Bucket一旦創建完成,不可修改所屬的數據中心
- OSS支持Bucket級別的數據中心設置,不支持Object級別設置數據中心
- Bucket訪問域名
Bucket的三級域名(API GetService)
- 域名構成規則是:
Bucket 名字
+.
+EndPoint
EndPoint
依據Bucket
所在地域的不同,內外網訪問方式的有所區別
- Bucket內網訪問
- 只有
ECS實例
可通過Bucket內網地址訪問ECS實例
與Bucket在同一地域,如不在同一地域,需使用外網Bucket外網域名訪問
- Object訪問地址構成規則
Bucket權限爲公共讀或公共讀寫時,Object的訪問規則如下:
http://<bucket名字>.<endpoint>/<object名字>
例如:
http://acper.oss-cn-beijing.aliyuncs.com/acper.jpg
訪問Object
可直接將URL鏈接寫入HTML中訪問Object
例如:<img src="http://acper.oss-cn-beijing.aliyuncs.com/acper.jpg">
2.3 OSS 自定義域名綁定
- 域名綁定說明:
- OSS Bucket未綁定域名時,通過瀏覽器訪問Object的URL,則爲:強制下載模式
- 支持OSS域名綁定CName,目前僅支持
OSS
及三級域名訪問訪問,即配置方式爲Bucket_name
.endpoint
- 綁定的域名,需提供工信部備案號
- 每個Bucket可以綁定20個域名
- 可通過域名TXT記錄的方式驗證域名所有權
- 訪問地址:
2.Y OSS的其他設置
2.Y.1 防盜鏈設置
-
適用場景:爲了減少存儲於OSS數據被他人盜鏈而產生額外費用
-
防盜鏈設置:
- OSS是按量收費的服務
- OSS基於HTTP Header中的字段Referer的防盜鏈方法
- 每個Refer白名單使用換行符,支持通配符(*,?)
- 1、白名單爲空
- 不會檢查Referer字段是否爲空
- 2、白名單不爲空
- 設置了不允許Referer字段爲空的規則,則只有Referer屬於白名單的請求被允許
- 設置了允許Referer字段爲空的規則,則Referer爲空的請求和符合白名單的請求被允許,其他請求會被拒絕。如果使用瀏覽器直接訪問,需設置Referer字段爲空。
2.Y.2 靜態網站託管
-
適用場景:網站靜態內容存儲在OSS Bucket中
-
靜態網站託管
- OSS支持靜態網站託管
- 通過控制檯將存儲空間配置成靜態網站託管模式
- 支持索引和404默認頁面
- 爲空,則不啓用靜態網站託管
2.Y.3 圖片處理
- 圖片服務特點:
海量、安全、低成本、高可靠的圖片處理服務
調用簡單:RESTful接口調用
不受時間、地點、設備的限制
隨OSS服務一併開通
- 圖片服務提供功能:
圖片縮放、裁剪、旋轉;
添加圖片,文字,圖文混合水印;
圖片格式轉換
自定義圖片處理樣式
通過管道順序調用多種圖片處理功能
獲取圖片信息
-
服務規則:
-
通過URL的形式(RESTful)
-
Bucket:用戶的IMG頻道
-
endpoint:用戶的Bucket所在數據中心的訪問域名
-
Object:用戶操作圖片的基本數據單元是Object
-
action:用戶對圖片的操作
-
parame:用戶對圖片操作對應的參數
-
多個action之間的組合形式
- 常用action列表:
- 圖片服務概念:
- 樣式 : 爲了避免URL過長,action保存成別名,即樣式style
URL方式訪問
分隔符方式訪問
分隔符支持-、_、/、!
2.Y.4 安全控制
- 數據安全:
三副本機制,盤古分佈式文件系統,提供物理層面的高可靠性
- 安全控制:
OSS提供Bucket、Object級別的權限訪問控制
- 防盜鏈:
- OSS是按量付費服務
- OSS基於HTTP Header中的字段Referer的防盜鏈方法
- 每個Referer白名單使用換行符,支持通配符(*、?)
- 服務器加密存儲:
- OSS支持在服務器端對用戶上傳的數據進行加密編碼
- 數據上傳,對數據進行加密編碼
- 數據下載,對數據進行解密,下載
- 支持加密的操作包括:
- Put Object:簡單上傳
- Copy Object:複製Object
- Initiate Multipart Upload:分片上傳
- 客戶端加密SDK:
- SDK在本地進行數據加密
- 阿里雲KMS託管用戶主密鑰,上傳對象時指定KMS用戶的主密鑰ID
- 使用用戶自主管理密鑰,用戶自主生成並保管加密密鑰
- AK方式加解密
2.Y.5 對象存儲OSS的API
- OSS API使用:
- 使用RESTful接口,推薦使用SDK來調用
- 通過向OSS client類設定Endpoint,加入請求參數,系統返回結果
- 請求結構:
訪問地址:EndPoint(http://oss-cn-hangzhou.aliyuncs.com)
- 返回的格式:數據格式只有XML格式
阿里雲API網址:http://api.aliyun.com
2.x 對比分析:OSS vs 傳統自建存儲服務器
對比項 | 對象存儲OSS | 自建服務器存儲 |
---|---|---|
可靠性 | 服務設計可用性不低於99.9% 規模自動擴展,不影響對外服務 數據設計持久性不低於99.999999999% 數據自動多重冗餘備份 |
受限於硬件可靠性,易出問題,一旦出現磁盤壞道,容易出現不可逆轉的數據丟失。 人工數據恢復困難、耗時、耗力 |
安全 | 提供企業級多層次安全防護 多用戶資源隔離機制,支持異地容災機制。 提供多重鑑權和授權機制及白名單、防盜鏈、主/子賬號功能 |
需要購買清洗和黑洞設備 需要單獨實現安全機制 |
成本 | 多線BGP骨幹網絡(中國移動、聯通、移動教育網等),無帶寬限制,上行流量免費 無需運維人員與託管費用,0成本運維 |
存儲受硬盤容量限制,需人工擴容 單線或雙線接入速度慢,有帶寬限制,峯值時需人工擴容 需專人運維,成本高 |
數據處理能力 | 提供圖片處理、音視頻轉碼、內容加速分發(CDN)、鑑黃服務、歸檔服務等多種數據增值服務,並不斷豐富中 | 需要額外採購,單獨部署 |
3 OSS產品一覽
- [國內] 七牛雲 Kodo OSS
對象存儲產品(Kodo OSS)
- [國內] 阿里雲 OSS
- [國內] 華爲雲 OBS
- [全球] Amazon S3
- [開源] MiniIO