本文將向您介紹Object Storage Service產品中涉及的幾個基本概念,以便於您更好地理解OSS產品。
儲存空間(Bucket)
儲存空間是使用者用於儲存物件(Object)的容器,所有的對象都必須隸屬於某個儲存空間。儲存空間具有各種配置屬性,包括地區、存取權限、儲存類型等。使用者可以根據實際需求,建立不同類型的儲存空間來儲存不同的資料。
同一個儲存空間的內部是扁平的,沒有檔案系統的目錄等概念,所有的對象都直接隸屬於其對應的儲存空間。
每個使用者可以擁有多個儲存空間。
儲存空間的名稱在OSS範圍內必須是全域唯一的。儲存空間建立成功後,名稱將無法修改。
說明全域唯一表示阿里雲所有的使用者建立的Bucket名稱都不能相同。例如使用者A建立了名稱為example的Bucket,其他使用者無法再次建立名稱為example的Bucket。
儲存空間內部的對象數目沒有限制。
儲存空間的命名規範如下:
只能包括小寫字母、數字和短劃線(-)。
必須以小寫字母或者數字開頭和結尾。
長度必須在3~63字元之間。
對象(Object)
對象是OSS儲存資料的基本單元,也被稱為OSS的檔案。和傳統的檔案系統不同,對象沒有檔案目錄層級結構的關係。對象由中繼資料(Object Meta)、使用者資料(Data)和檔案名稱(Key)組成,並且由儲存空間內部唯一的Key來標識。對象中繼資料是一組索引值對,表示了對象的一些屬性,例如檔案類型、編碼方式等資訊,同時使用者也可以在中繼資料中儲存一些自訂的資訊。
對象的生命週期是從上傳成功到被刪除為止。在整個生命週期內,除使用追加方式上傳的Object可以通過繼續追加上傳寫入資料外,使用其他方式上傳的Object內容無法編輯,您可以通過重複上傳同名的對象來覆蓋之前的對象。
對象的命名規範如下:
使用UTF-8編碼。
長度必須在1~1023字元之間。
不能以正斜線(/)或者反斜線(\)開頭。
說明對象名稱需要區分大小寫。如無特殊說明,本文檔中的對象、檔案標頭等同於Object。
ObjectKey
在各語言SDK中,ObjectKey、Key以及ObjectName是同一概念,均表示對Object執行相關操作時需要填寫的Object名稱。例如向某一儲存空間上傳Object時,ObjectKey表示上傳的Object所在儲存空間的完整名稱,即包含檔案尾碼在內的完整路徑,如填寫為abc/efg/123.jpg
。
Object類型
Object包含以下三種類型:
Normal
通過簡單上傳產生的Object。上傳結束之後內容是固定的,只能讀取,不能修改。如果Object內容發生了改變,只能重新上傳同名的Object來覆蓋之前的內容。簡單上傳適用於上傳小於5 GB的單個檔案、一次HTTP請求互動即可完成上傳的情境。更多資訊,請參見簡單上傳。
Multipart
通過分區上傳產生的Object。上傳結束之後內容是固定的,只能讀取,不能修改。如果Object內容發生了改變,只能重新上傳同名的Object來覆蓋之前的內容。分區上傳適用於大檔案加速上傳、網路環境較差、檔案大小不確定的情境。更多資訊,請參見分區上傳。
Appendable
通過追加上傳產生的Object。追加上傳可在視頻資料產生之後即時將資料上傳至同一個Object。追加上傳適用於視頻監控、ApsaraVideo for Live等領域產生的即時視頻流情境。更多資訊,請參見追加上傳。
不支援在不同類型的Object之間相互轉換。例如,Normal類型的Object無法轉換為Multipart或者Appendable類型。
Region(地區)
Region表示OSS的資料中心所在物理位置。使用者可以根據費用、請求來源等選擇合適的地區建立Bucket。一般來說,距離使用者更近的Region訪問速度更快。更多資訊,請參見OSS已經開通的Region。
Region是在建立Bucket的時候指定的。Bucket建立成功後,Region將無法修改。該Bucket下所有的Object都儲存在對應的資料中心,目前不支援Object層級的Region設定。
Endpoint(訪問網域名稱)
Endpoint表示OSS對外服務的訪問網域名稱。OSS以HTTP RESTful API的形式對外提供服務,當訪問不同的Region的時候,需要不同的網域名稱。通過內網和外網訪問同一個Region所需要的Endpoint也是不同的。例如杭州Region的外網Endpoint是oss-cn-hangzhou.aliyuncs.com,內網Endpoint是oss-cn-hangzhou-internal.aliyuncs.com。具體的內容請參見各個Region對應的Endpoint。
AccessKey(存取金鑰)
AccessKey簡稱AK,指的是訪問身分識別驗證中用到的AccessKey ID和AccessKey Secret。OSS通過使用AccessKey ID和AccessKey Secret對稱式加密的方法來驗證某個請求的寄件者身份。AccessKey ID用於標識使用者;AccessKey Secret是使用者用於加密簽名字串和OSS用來驗證簽名字串的密鑰,必須保密。對於OSS來說,AccessKey的來源有:
Bucket的擁有者申請的AccessKey。
被Bucket的擁有者通過RAM授權給第三方要求者的AccessKey。
被Bucket的擁有者通過STS授權給第三方要求者的AccessKey。
更多AccessKey介紹請參見建立AccessKey。
原子性和強一致性
原子性
Object操作在OSS上具有原子性,操作要麼成功要麼失敗,不存在中間狀態的Object。當Object上傳完成時,OSS即可保證讀到的Object是完整的,OSS不會返回給使用者一個部分上傳成功的Object。
強一致性
Object操作在OSS同樣具有強一致性,當使用者收到了上傳(PUT)成功的響應時,該上傳的Object進入立即可讀狀態,並且Object的冗餘資料已經寫入成功。不存在上傳的中間狀態,即執行read-after-write,卻無法讀取到資料。對於刪除操作,使用者刪除指定的Object成功之後,該Object立即不存在。
資料冗餘機制
OSS使用基於糾刪碼的資料冗餘儲存機制,確保硬體失效時的資料持久性和可用性。
OSS Object操作具有強一致性,當使用者收到了上傳或複製成功的響應時,該上傳的Object就已經立即可讀,且資料已經冗餘寫入到多個裝置中。
OSS會通過計算網路流量包的校正和,驗證資料包在用戶端和服務端之間傳輸中是否出錯,保證資料完整傳輸。
OSS的冗餘儲存機制,可支援兩個儲存設施並發損壞時,仍鑑效組資料不丟失。
當資料存入OSS後,OSS會檢測和修複丟失的冗餘,確保資料持久性和可用性。
OSS會周期性地通過校正等方式驗證資料的完整性,及時發現因硬體失效等原因造成的資料損毀。當檢測到資料有部分損壞或丟失時,OSS會利用冗餘的資料,進行重建並修複損壞資料。