Ceph分布式存儲之三-S3接口編程


目錄

  1. 開發環境與基本概念(2018-02)
    1. 搭建RGW環境(2018-2-07)
    2. 安裝配置S3 Client(2018-2-07)
    3. 測試S3 Client及常用命令(2018-2-07)
  2. C#語言調用S3接口的實現方式(2018-02)
    1. 基本框架及調用流程(2018-2-07)
    2. 主要調用流程分析(2018-2-07)
    3. S3接口主要的類及方法(2018-2-07)
  3. 自定義特性在程序設計中的應用(2018-02)
    1. 遞歸調用過程分析(2018-2-07)
    2. 利用尾遞歸改善遞歸程序的效率(2018-2-07)
    3. 函數的調用與返回本質(2018-2-07)
--------------------------------------------------------------------

(一)開發環境准備
     Ceph提供了三種存儲類型:塊存儲、文件存儲和對象存儲,本文主要介紹對象存儲的RGW基本原理和應用場景。
對象存儲(雲存儲)是面向對象/文件的、海量的互聯網存儲。對象存儲里的對象是經過封裝了的文件,在對象存儲系統里,不能直接打開/修改文件,但可以像ftp一樣上傳文件,下載文件等。另外,對象存儲沒有像文件系統那樣有一個很多層級的文件結構,而是只有一個”桶”的概念(也就是存儲空間),“桶”里面全部都是對象,是一種非常扁平化的存儲方式。 其最大的特點就是它的對象名稱就是一個域名地址,一旦對象被設置為“公開”,所有網民都可以訪問到。對象存儲最主流的使用場景,就是存儲網站、移動app等互聯網/移動互聯網應用的靜態內容(視頻、圖片、文件、軟件安裝包等等)。
什么是RGW
     RGW為Rados Gateway的縮寫,ceph通過RGW為互聯網雲服務提供商提供對象存儲服務。RGW在librados之上向應用提供訪問ceph集群的RestAPI,支持Amazon S3和openstack swift兩種接口。對RGW最直接的理解就是一個協議轉換層,把從上層應用符合S3或Swift協議的請求轉換成rados的請求,將數據保存在rados集群中。
基本概念
zone:包含多個RGW實例的一個邏輯概念。zone不能跨集群。同一個zone的數據保存在同一組pool中。
zonegroup:一個zonegroup如果包含1個或多個zone。如果一個zonegroup包含多個zone,必須指定一個zone作為master zone,用來處理bucket和用戶的創建。一個集群可以創建多個zonegroup,一個zonegroup也可以跨多個集群。
realm:一個realm包含1個或多個zonegroup。如果realm包含多個zonegroup,必須指定一個zonegroup為master zonegroup, 用來處理系統操作。一個系統中可以包含多個realm,多個realm之間資源完全隔離。
user:對象存儲的使用者,默認情況下,一個用戶只能創建1000個存儲桶。
bucket:存儲桶,用來管理對象的容器。
object:對象,泛指一個文檔、圖片或視頻文件等,盡管用戶可以直接上傳一個目錄,但是ceph並不按目錄層級結構保存對象,ceph所有的對象扁平化的保存在bucket中。
基本架構及訪問流程
應用通過RGW訪問集群流程如下:
● S3或Swift 應用通過http協議發送請求到RGW。
● RGW從http請求中解析出s3或swift協議數據,調用librados接口,將對應的請求發送到rados集群中。
注:圖中load balance非必須,只要在存在多個RGW做負荷分擔時需要。
image9

1.1)搭建RGW環境
如下圖為RGW網關搭建流程圖
image14

1.2)安裝配置S3 Client   (參考指南
image19

1.3)S3 Client常用命令

 

❶  創建一個桶

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM