欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

OpenStack Object Storage(Swift)架構(gòu)、原理

系統(tǒng) 1983 0

?簡介

OpenStack Object Storage(Swift) OpenStack 開源云計(jì)算項(xiàng)目的子項(xiàng)目之一。Swift使用普通的服務(wù)器來構(gòu)建 冗余的 可擴(kuò)展的 分布式 對(duì)象存儲(chǔ) 集群,存儲(chǔ)容量可達(dá)PB級(jí)。Swift的是用Python開發(fā),前身是 Rackspace Cloud Files 項(xiàng)目,隨著Rackspace加入到OpenStack社區(qū),Racksapce也將Cloud Files的代碼貢獻(xiàn)給了社區(qū),并逐漸形成現(xiàn)在Swift。Swift最新的發(fā)型版本為essex?1.4.6。

功能

Swift提供的服務(wù)與AWS S3相同,可以用以下用途:

  • 作為IaaS的存儲(chǔ)服務(wù)
  • 與OpenStack Compute對(duì)接,為其存儲(chǔ)鏡像
  • 文檔存儲(chǔ)
  • 存儲(chǔ)需要長期保存的數(shù)據(jù),例如log
  • 存儲(chǔ)網(wǎng)站的圖片,縮略圖等

Swift使用RESTful API對(duì)外提供服務(wù),目前 1.4.6版本所提供的功能:

  • Account(存儲(chǔ)賬戶)的GET、HEAD
  • Container(存儲(chǔ)容器,與S3的bucket相同)的GET、PUT、HEAD、DELETE
  • Object(存儲(chǔ)對(duì)象)的GET、PUT、HEAD、DELETE、DELETE
  • Account、Container、Object的元數(shù)據(jù)支持
  • 大文件(無上限,單個(gè)無文件最大5G,大于5G的文件在客戶端切分上傳,并上傳manifest文件)、
  • 訪問控制、權(quán)限控制
  • 臨時(shí)對(duì)象存儲(chǔ)(過期對(duì)象自動(dòng)刪除)
  • 存儲(chǔ)請(qǐng)求速率限制
  • 臨時(shí)鏈接(讓任何用戶訪問對(duì)象,不需要使用Token)
  • 表單提交(直接從HTML表單上傳文件到Swift存儲(chǔ),依賴與臨時(shí)鏈接)
  • 靜態(tài)WEB站點(diǎn)(用Swift作為靜態(tài)站點(diǎn)的WEB服務(wù)器)

架構(gòu)

上圖為Swift的基本架構(gòu)。

? ? ? ? 在介紹Swift的架構(gòu)之前,先介紹一下OpenStack的 設(shè)計(jì)原理

  1. Scalability and elasticity are our main goals (可擴(kuò)展性和伸縮性是我們的主要目標(biāo))
  2. Any feature that limits our main goals must be optional (任何影響到可擴(kuò)展性和伸縮性的功能都必須是可選的)
  3. Everything should be asynchronous,If you can't do something asynchronously, see #2 (所有的環(huán)節(jié)必須是異步的,如果不能異步實(shí)現(xiàn),參考第二條設(shè)計(jì)原理)
  4. All required components must be horizontally scalable (所有的基礎(chǔ)組件必須能橫向擴(kuò)展)
  5. Always use shared nothing architecture? (SN) ?or? sharding ,If you can't Share nothing/shard, see #2 (始終使用無共享的架構(gòu),如果不能實(shí)現(xiàn),參見第二條)
  6. Distribute everything,especially logic. Move logic to where state naturally exists.(所有的都是分布式的,尤其是邏輯。把邏輯放在狀態(tài)應(yīng)該存在的地方)
  7. Accept eventual consistency and use it where it is appropriate. (接受最終一致性,并在適合的條件下使用)
  8. Test everything (充足的測試)

依賴組件

  • Memcached,分布式緩存系統(tǒng),在swift中主要被用于token和account信息,container信息的存儲(chǔ)
  • Sqlite,輕量級(jí)數(shù)據(jù)庫引擎,在swift中主要被用于管理account和container數(shù)據(jù)庫
  • rsync,遠(yuǎn)程同步工具,用于storage node之間的數(shù)據(jù)同步
  • XFS文件系統(tǒng)
  • WSGI,Python Web服務(wù)網(wǎng)關(guān)接口,通過paste.deploy工具包管理swift各服務(wù)進(jìn)程、中間件的處理流程
  • Eventlet,Python搞并發(fā)網(wǎng)絡(luò)編程庫,swift所有的服務(wù)器進(jìn)程均依賴于該庫

主要組件

  • Ring文件 在基本架構(gòu)圖中,我并沒有畫出ring文件,但是它卻是整個(gè)Swift中最重要的組件。ring文件是由一致性哈希算法生成,它的主要作用是存儲(chǔ)名字到位置的映射。 ring文件分為三類,分別是:account.ring,container.ring,object.ring。 對(duì)于account的請(qǐng)求,就能通過account_name查詢account.ring得到{'/account_name' : account_db_position}的映射,從而知道account數(shù)據(jù)庫文件在集群的位置; 對(duì)于container的請(qǐng)求,通過account_name和container_name查詢container.ring文件,得到{'/account_name/container_name' : container_db_position}的映射; 對(duì)于object的請(qǐng)求,通過account_name,container_name,object_name查詢object.ring文件,得到{'/account_name/container_name/object_name' : object_position}的映射; Ring文件作為一個(gè)靜態(tài)文件存儲(chǔ)在每個(gè)節(jié)點(diǎn)的/etc/swift目錄下,被用于各節(jié)點(diǎn)之間的位置查詢,使得swift的內(nèi)部網(wǎng)絡(luò)是一個(gè)P2P網(wǎng)絡(luò),不依賴某幾個(gè)節(jié)點(diǎn)進(jìn)行位置查詢,避免了單點(diǎn)瓶頸。 生成ring文件的一致性哈希算法不但為數(shù)據(jù)的冗余性,分區(qū)容忍性提供了保證,也為整體架構(gòu)上實(shí)現(xiàn)性能、容量的橫向擴(kuò)展奠定了基礎(chǔ)。 Ring的詳細(xì)構(gòu)造過程將在下一節(jié)介紹。
  • proxy-server proxy-server是proxy node中唯一運(yùn)行的服務(wù)進(jìn)程,也是swift集群的endpoint,向用戶提供RESTful API。 對(duì)于用戶的請(qǐng)求,proxy-server會(huì)根據(jù)配置文件的配置,將請(qǐng)求交給各個(gè)中間件進(jìn)行處理,其中最重要的就是Auth中間件(認(rèn)證),在處理完成后會(huì)根據(jù)請(qǐng)求路徑將請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的storage node中的account-server。container-server或object-server進(jìn)程處理。 swift集群的流入數(shù)據(jù)和流出數(shù)據(jù)都需要經(jīng)過proxy-server,proxy-server不會(huì)對(duì)數(shù)據(jù)進(jìn)行緩存。
  • auth-server 驗(yàn)證服務(wù)進(jìn)程,為用戶生成token和驗(yàn)證每個(gè)請(qǐng)求的token及token的權(quán)限。swift的驗(yàn)證服務(wù)是作為一個(gè)中間件被proxy-server使用,是可選的,可以自己開發(fā),也可以使用OpenStack Keystone。Keystone是官方開發(fā)的驗(yàn)證服務(wù),使用Keystone可以無縫的與其它OpenStack項(xiàng)目整合。
  • account-server account-server是storage node中負(fù)責(zé)處理對(duì)account的GET、HEAD、PUT、DELETE、RELICATION請(qǐng)求的服務(wù)進(jìn)程,account-server使用sqlite的數(shù)據(jù)庫文件保存account的相關(guān)信息。
  • container-server container-server是storage node中負(fù)責(zé)處理對(duì)container的GET、HEAD、PUT、DELETE、RELICATION請(qǐng)求的服務(wù)進(jìn)程,container-server使用sqlite的數(shù)據(jù)庫文件保存container的相關(guān)信息。
  • object-server object-server是storage node中負(fù)責(zé)處理對(duì)object的GET、HEAD、PUT、PSOT、DELETE、RELICATION請(qǐng)求的服務(wù)進(jìn)程,object-server直接操作object,并利用XFS文件系統(tǒng)的xattr包存object的元數(shù)據(jù)。
  • account-auditor、container-auditor、object-auditor 這三個(gè)進(jìn)程運(yùn)行在storage node中,分別檢測account的db文件,container的db文件,object是否損壞,如果損壞,將會(huì)向存儲(chǔ)有其它副本的storage node請(qǐng)求副本,替換損壞的。
  • account-replicator、container-replicator、object-replicator 這三個(gè)進(jìn)程運(yùn)行在storage node中,分別負(fù)責(zé)account的db文件,container的db文件,object在集群中副本的同步。 例如,一個(gè)object在swift集群中通常被存儲(chǔ)在3個(gè)不同的storage node中,對(duì)于一個(gè)PUT /account/container/object的請(qǐng)求,proxy-server會(huì)根據(jù)?/account/container/object查詢r(jià)ing文件,得到該object應(yīng)該存儲(chǔ)的節(jié)點(diǎn)列表(長度為3),proxy-server會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到這三個(gè)節(jié)點(diǎn)。如果只有兩個(gè)節(jié)點(diǎn)寫入成功,就認(rèn)為這次PUT操作成功。寫入失敗的節(jié)點(diǎn)在一段時(shí)間后將會(huì)得到寫入成功的節(jié)點(diǎn)object-replicator進(jìn)程推送過來的數(shù)據(jù)。
  • container-updater、account-updater 這兩個(gè)進(jìn)程運(yùn)行在storage node中,負(fù)責(zé)container數(shù)據(jù)庫和account數(shù)據(jù)庫的異步更新。使用異步更新的原因:在請(qǐng)求來量大時(shí),container-server和account-server不能實(shí)時(shí)處理對(duì)數(shù)據(jù)庫更新的請(qǐng)求,這些請(qǐng)求將被本地化到隊(duì)列中,由updater進(jìn)程進(jìn)行異步更新。

原理

Swift利用一致性哈希算法構(gòu)建了一個(gè)冗余的可擴(kuò)展的分布式對(duì)象存儲(chǔ)集群。下面將引用我的同事 http://www.cnblogs.com/yuxc/ 的文章對(duì)ring實(shí)現(xiàn)原理進(jìn)行講解。 鏈接: http://vdisk.weibo.com/s/1rqxy

特性

總結(jié)

經(jīng)過對(duì)Swift原理、代碼的學(xué)習(xí)研究以及一系列地測試,我認(rèn)為Swift簡單、冗余、可擴(kuò)展的架構(gòu)保證了它能作為IaaS的一個(gè)基礎(chǔ)服務(wù)。至于服務(wù)的可用率能達(dá)到幾個(gè)9需要看運(yùn)營這個(gè)服務(wù)的公司的運(yùn)維能力。如果要達(dá)到像AWS S3這種規(guī)模的服務(wù),還需要對(duì)Swift的部份組件進(jìn)行優(yōu)化。 ?

OpenStack Object Storage(Swift)架構(gòu)、原理及特性


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日韩精品视频在线免费观看 | 黄a在线 | 成人黄色免费网站 | 欧美久久一区二区三区 | 久久久久成人免费 | 蜜桃视频在线观看免费视频网站www | 毛片久久| 无码缴情做A爱片毛片A片 | 午夜电影通 | 亚洲伊人久久综合 | 高清videosgratis欧美live | 日韩欧美中文字幕视频 | 国外成人免费视频 | 99久在线视频 | 亚洲精品电影在线观看 | 韩国一大片a毛片 | 亚洲v日韩v综合v精品v | 婷婷综合激情五月中文字幕 | 狠狠色依依成人婷婷九月 | 国产亚洲第一页 | 久久综合伊人 | 国产精品极品美女自在线看免费一区二区 | 欧美大码毛片在线播放 | 国产精品久久久久久久久久久久 | 狠狠色丁香婷婷综合 | 日韩高清中文字幕 | 国产精品免费一区 | 亚洲电影免费观看高清完整版在线观 | 精品久久久爽爽久久久AV | 久久性| 激情奇米| 成人国产欧美精品一区二区 | 日韩精品 电影一区 亚洲 | 六月婷婷久久 | 很黄很污的网站 | 在线成人免费视频 | 日韩欧美专区 | 成年网站在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 天天射天天干天天插 | 中文在线一区二区 |