雲計算

【SRE學堂第一講】OSS從入門到精通 – 產品綜述

本文始發於:雲棲社區
時間:2020-06-02
原文鏈接:https://yq.aliyun.com/articles/763344

前言

阿里雲SRE團隊首次推出SRE學堂,我們精選了廣大客戶主流部署的雲產品進行由淺入深的系列介紹,目的是讓使用阿里雲的客戶對產品有一個相對全面的瞭解。同時也希望讀者能夠反饋後續希望學習瞭解的產品,我們將根據需求不斷推出更新。

本期我們推出的產品是被客戶廣泛使用的對象存儲產品——OSS。後續會通過4個章節逐步介紹該產品,涵蓋產品概念、產品架構、運維工具及運維常見問題等內容。
image.png

圖1:SRE學堂課程規劃

1 OSS是什麼

說到OSS產品,大家都要知道OSS是什麼?OSS是阿里雲對象存儲服務(Object Storage Service)的一個簡稱,它是阿里雲提供的海量、安全、低成本、高可靠的雲存儲服務。

OSS可以被理解成一個即開即用、無限大空間的存儲集群。相較傳統建服務器存儲而言,OSS在可靠性、安全性、成本和數據處理能力方面都有著突出的優勢。使用OSS,您可以通過網絡隨時存儲和調用包括文本、圖片和視頻等在內的各種非結構化數據文件。

OSS將數據文件以對象/文件(Object)的形式上傳到存儲空間(Bucket)中。OSS提供的是一個Key-Value鍵值對形式的對象存儲服務。用戶可以根據Object的名稱(Key)唯一地址獲取該Object的內容。

您可以進行以下OSS相關的操作:

  • 創建存儲空間,並向存儲空間中上傳文件。
  • 獲取已上傳文件的地址,進行文件的分享和下載。
  • 修改存儲空間或文件的屬性或元信息,為其設置相應的權限。
  • 在對象存儲OSS控制檯進行基礎和高級OSS操作。
  • 通過開發者工具包SDK或直接在應用程序中調用RESTful API,進行基礎和高級OSS操作。

2 OSS的優勢

OSS產品相對於自建存儲,有哪些優勢呢?從下表中即可看出:
image.png

OSS還具備的其他各項優勢:

  • 方便、快捷的使用方式
    a提供標準的RESTful API接口(部分接口與Amazon S3 API兼容)、豐富的SDK包、客戶端工具、控制檯。您可以像使用文件一樣方便地上傳、下載、檢索、管理用於Web網站或者移動應用的海量數據。

b不限文件數量和大小。您可以根據所需存儲量無限擴展存儲空間,解決了傳統硬件存儲擴容問題。
c支持流式寫入和讀出。特別適合視頻等大文件的邊寫邊讀業務場景。
d支持數據生命週期管理。您可以自定義將到期數據批量刪除。

  • 強大、靈活的安全機制
    靈活的鑑權、授權機制。提供STS和URL鑑權和授權機制,以及白名單、防盜鏈、主子賬號功能。
  • 豐富的圖片處理服務
    支持jpg、png、bmp、gif、webp、tiff等多種圖片格式的轉換,以及縮略圖、剪裁、水印、縮放等多種操作。

3 OSS產品架構圖

image.png

圖2:OSS產品架構圖

  • WS&PM(協議接入層):負責接收用戶使用RESTful協議發來的請求,進行安全認證。如果認證通過,用戶的請求將被轉發到Key-Value引擎繼續處理。如果認證失敗,直接返回錯誤信息給用戶。
  • KV集群:負責數據結構化處理,即按照Key(對象名稱)來查找或存儲數據,並支持大規模併發的請求。當協調服務集群變更導致服務被迫改變運行物理位置時,可以快速協調找到接入點。
  • 存儲集群:元數據存儲在Master上,Master之間採用分佈式消息一致性協議(Paxos)保證元數據的一致性,從而實現高效的文件分佈式存儲和訪問。

4 OSS基本概念

本部分將向您介紹OSS中涉及的幾個基本概念,以便於您更好地理解OSS產品。

4.1 對象/文件(Object)

對象是OSS存儲數據的基本單元,也被稱為OSS的文件。對象由元信息(Object Meta)、用戶數據(Data)和文件名(Key)組成。對象由存儲空間內部唯一的Key來標識。對象元信息是一個鍵值對,表示了對象的一些屬性,比如最後修改時間、大小等信息,同時用戶也可以在元信息中存儲一些自定義的信息。

對象的生命週期是從上傳成功到被刪除為止。在整個生命週期內,對象信息不可變更,重複上傳同名的對象會覆蓋之前的對象。因此,OSS不支持修改文件的部分內容等操作。

4.2 存儲空間(Bucket)

存儲空間是您用於存儲對象(Object)的容器,所有的對象都必須隸屬於某個存儲空間。您可以設置和修改存儲空間屬性用來控制訪問權限、生命週期等,這些屬性設置直接作用於該存儲空間內所有對象,因此您可以通過靈活創建不同的存儲空間來完成不同的管理功能。

  • 同一個存儲空間的內部是扁平的,沒有文件系統的目錄等概念,所有對象都直接隸屬於其對應的存儲空間。
  • 每個用戶可以擁有多個存儲空間。
  • 存儲空間的名稱在OSS範圍內必須是全局唯一的,一旦創建之後無法修改名稱。
  • 存儲空間內部的對象數目沒有限制。

4.3 強一致性

Object操作在OSS上具有原子性,操作要麼成功要麼失敗,不會存在有中間狀態的Object。

OSS保證用戶一旦上傳完成之後讀到的Object是完整的,OSS不會返回給用戶一個部分上傳成功的Object。Object操作在OSS上同樣具有強一致性,用戶一旦收到了一個上傳(PUT)成功的響應,該上傳的Object就已經立即可讀,並且數據的三份副本已經寫成功。不存在一種上傳的中間狀態,即read-after-write卻無法讀取到數據。對於刪除操作也是一樣的,用戶刪除指定的Object成功之後,該Object立即變為不存在。

強一致性方便了用戶架構設計,可以使用跟傳統存儲設備同樣的邏輯來使用OSS,修改立即可見,無需考慮最終一致性帶來的各種問題。

4.4 OSS與文件系統的對比

OSS是一個分佈式的對象存儲服務,提供的是一個Key-Value對形式的對象存儲服務。用戶可以根據Object的名稱(Key)唯一地獲取該Object的內容。雖然用戶可以使用類似test1/test.jpg的名字,但是這並不表示用戶的Object是保存在test1目錄下面的。對於OSS來說,test1/test.jpg僅僅只是一個字符串,和a.jpg這種並沒有本質的區別。因此不同名稱的Object之間的訪問消耗的資源是類似的。

文件系統是一種典型的樹狀索引結構,一個名為test1/test.jpg的文件,訪問過程需要先訪問到test1這個目錄,然後再在該目錄下查找名為test.jpg的文件。因此文件系統可以很輕易地支持文件夾的操作,比如重命名目錄、刪除目錄、移動目錄等,因為這些操作僅僅只是針對目錄節點的操作。這種組織結構也決定了文件系統訪問越深的目錄消耗的資源也越大,操作擁有很多文件的目錄也會非常慢。

對於OSS來說,可以通過一些操作來模擬類似的功能,但是代價非常昂貴。比如重命名目錄,希望將test1目錄重命名成test2,那麼OSS的實際操作是將所有以test1/開頭的Object都重新複製成以test2/開頭的Object,這是一個非常消耗資源的操作。因此在使用OSS的時候要儘量避免類似的操作。

OSS保存的Object不支持修改(追加寫Object需要調用特定的接口,生成的Object也和正常上傳的Object類型上有差別)。用戶哪怕是僅僅需要修改一個字節也需要重新上傳整個Object。而文件系統的文件支持修改,比如修改指定偏移位置的內容、截斷文件尾部等,這些特點也使得文件系統擁有廣泛的適用性。但另外一方面,OSS能支持海量的用戶併發訪問,而文件系統會受限於單個設備的性能。

因此,將OSS映射為文件系統是非常低效的,也是不建議的做法。如果一定要掛載成文件系統的話,建議儘量只做新建文件、刪除文件、讀取文件這幾種操作。使用OSS應該充分發揮其優點,即海量數據處理能力,優先用來存儲海量的非結構化數據,比如圖片、視頻、文檔等。

5 後續介紹

OSS產品的第一章只是向大家介紹了一下產品的一些基本概念,產品的優勢以及產品的架構,但我們知道OSS產品的內容遠遠不止這些,還有OSS的使用方法,例如:如何去創建存儲空間,如何實現上傳、下載、刪除的操作等。如果您對這些內容感興趣或者想深入瞭解OSS產品,敬請期待下一期SRE大學堂之OSS從入門到精通第二章節的內容。

我們是阿里雲智能全球技術服務-SRE團隊,我們致力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基於雲構建更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運行更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿里雲SRE技術學院釘釘圈子,和更多雲上人交流關於雲平臺的那些事。
image.png

Leave a Reply

Your email address will not be published. Required fields are marked *