OpenStack開源虛擬化平臺(二)

目錄

    • 三、對象存儲服務Swift
      • (一)Swift特性
      • (二)應用場景
      • (三)Swift主要組件
      • (四)Swift基本原理
      • (五)實例分析
    • 四、鏡像服務Glance
      • (一)Glance的作用
      • (二)Glance的組成部分


三、對象存儲服務Swift

在這里插入圖片描述
??比如復制和存檔數據,圖像或視頻服務,存儲次級靜態數據,開發數據存儲整合的新應用,存儲容量難以估計的數據,為Web應用創建基于云的彈性存儲。

(一)Swift特性

1. 高數據持久性

??數據的可靠性,是指數據存儲到系統中后,到某一天數據丟失的可能性。

2. 完全對稱的系統架構

??“對稱”意味著Swift中各節點可以完全對等,能極大地降低系統維護成本。

3. 無限的可擴展性

??一是數據存儲容量無限可擴展,二是Swift性能(如QPS、吞吐量等)可線性提升。

4. 無單點故障

??整個Swift集群中,也沒有一個角色是單點的,并且在架構和設計上保證無單點業務是有效的。

5. 簡單、可依賴

??簡單體現在實現易懂、架構優美、代碼整潔;可依賴是指Swift經測試、分析之后,可以放心大膽地將Swift用于最核心的存儲業務上。

(二)應用場景

在這里插入圖片描述
??Swift主要有三個組成部分:Proxy Server、Storage Server和Consistency Server。其中Storage和Consistency服務均允許在Storage Node上。使用OpenStack的認證服務Keystone,目的在于實現統一OpenStack各個項目間的認證管理。

在這里插入圖片描述

(三)Swift主要組件

??Swift主要組件如下。
??(1)代理服務(Proxy Server):對外提供對象服務API,會根據環的信息來查找服務地址并轉發用戶請求至相應的賬戶、容器或者對象服務;由于采用無狀態的REST請求協議,可以進行橫向擴展來均衡負載。
??(2)認證服務(Authentication Server):驗證訪問用戶的身份信息,并獲得一個對象訪問令牌(Token),在一定的時間內會一直有效:驗證訪問令牌的有效性并緩存下來直至過期時間。
??(3)緩存服務(Cache Server):緩存的內容包括對象服務令牌、賬戶和容器的存在信息,但不會緩存對象本身的數據;緩存服務可采用Memcached集群,Swift會使用一致性散列算法來分配緩存地址。
??(4)賬戶服務(Account Server):提供賬戶元數據和統計信息,并維護所含容器列表的服務,每個賬戶的信息被存儲在一個SQLite數據庫中。
??(5)容器服務(Container Server):提供容器元數據和統計信息,并維護所含對象列表的服務,每個容器的信息也存儲在一個SOLite數據庫中。
??(6)對象服務(Object Server):提供對象元數據和內容服務,每個對象的內容會以文件的形式存儲在文件系統中,元數據會作為文件屬性來存儲,建議采用支持擴展屬性的XFS文件系統。
??(7)復制服務(Replicator):會檢測本地分區副本和遠程副本是否一致,具體是通過對比散列文件和高級水印來完成,發現不一致時會采用推式(Push)更新遠程副本, 例如對象復制服務會使用遠程文件復制工具rsync來同步;另外一個任務是確保被標記刪除的對象從文件系統中移除。
??(8)更新服務(Updater):當對象由于高負載的原因而無法立即更新時,任務將會被序列化到在本地文件系統中進行排隊,以便服務恢復后進行異步更新;例如成功創建對象后容器服務器沒有及時更新對象列表,這個時候容器的更新操作就會進入排隊中, 更新服務會在系統恢復正常后掃描隊列并進行相應的更新處理。
??(9)審計服務(Auditor):檢查對象、容器和賬戶的完整性,如果發現比特級的錯誤,文件將被隔離,并復制其他的副本以覆蓋本地損壞的副本;其他類型的錯誤會被記錄到日志中。
??(10)賬戶清理服務(Account Reaper):移除被標記為刪除的賬戶,刪除其所包含的所有容器和對象。

1. Ring

??Ring是Swift最重要的組件,用于記錄存儲對象與物理位置間的映射關系。在涉及查詢Account(賬戶)、Container(容器)、Object(對象)信息時,就需要查詢集群的Ring信息。Ring使用Zone、Device、Partition和Replica來維護這些映射信息。Ring中每個Partition在集群中都(默認)有3個Replica。每個Partition的位置由Ring來維護,并存儲在映射中。每次增減存儲節點時,需要重新平衡一下Ring文件中的項目。

2. Proxy Server

??Proxy Server是提供Swift API的服務器進程,負責Swift其余組件間的相互通信。Proxy提供了Rest-full API,并且符合標準的HTTP協議規范,這使得開發者可以快捷構建定制的Client與Swift交互。

在這里插入圖片描述
3. Storage Server

??Storage Server提供了磁盤設備上的存儲服務。Swift中有三類存儲服務器:Account、Container和Object。

在這里插入圖片描述
4. Consistency Servers

??目的是查找并解決由數據損壞和硬件故障引起的錯誤。主要存在三個Server:Auditor、Updater和Replicator。

在這里插入圖片描述
在這里插入圖片描述

(四)Swift基本原理

??Swift 的算法和存儲理論并不復雜。主要有以下幾個概念。

1. 數據一致性模型(Consistency Model)

??為了實現這一目標,Swift采用Quorum仲裁協議:
??(1)定義N為數據的副本總數,W為寫操作被確認接受的副本數量,R為讀操作的副本數量。
??(2)強一致性:R+W >N,以保證對副本的讀寫操作會產生交集,從而保證可以讀取到最新版本。
??(3)弱一致性:R+W<=N,如果讀寫操作的副本集合不產生交集,就可能會讀到臟數據。
??Swift針對的是讀寫都比較頻繁的場景,所以采用了比較折中的策略,即寫操作需要滿足至少一半以上成功W>N2,再保證讀操作與寫操作的副本集合至少產生一個交集,即R+W>N。Swift默認配置是N=3,W=2>N/2,R=1或2,即每個對象會存在3個副本,這些副本會盡量被存儲在不同區域的節點上;W=2表示至少需要更新兩個副本才算寫成功;當R=1時意味著某一個讀操作成功便立刻返回,此種情況下可能會讀取到舊版本(弱一致性模型);當R=2時,需要通過在讀操作請求頭中增加x-newest=true參數來同時讀取兩個副本的元數據信息,然后比較時間戳來確定哪個是最新版本(強一致性模型);如果數據出現了不一致,后臺服務進程會在一定時間窗口內通過檢測和復制協議來完成數據同步,從而保證達到最終一致性,如下圖所示。

在這里插入圖片描述
2. 一致性散列(Consistent Hashing)

??面對海量級別的對象,需要存放在成千上萬臺服務器和硬盤設備上,首先要解決尋址問題,即如何將對象分布到這些設備地址上。Swift基于一致性散列技術,通過計算可將對象均勻分布到虛擬空間的虛擬節點上,在增加或刪除節點時可大大減少需要移動的數據量;虛擬空間大小通常采用2的n次冪,便于進行高效的移位操作;然后通過獨特的數據結構Ring(環)再將虛擬節點映射到實際的物理存儲設備上,完成尋址過程之間的對象(它們本來映射到Node4上)。

在這里插入圖片描述
??將散列結果右移m位,可產生 2 32 ? m 2^{32-m} 232?m 個虛擬節點,例如 m = 29 m=29 m=29 時可產生8個虛擬節點。

3. 數據模型

??共設有三層邏輯模型。Account(賬戶):租戶,用來做頂層的隔離機制;Container(容器):代表封裝一組對象,類似文件夾或目錄;Object(對象):由元數據和內容兩部分組成。

在這里插入圖片描述
4. 環的數據結構

??環是為了將虛擬節點(分區)映射到一組物理存儲設備上,并提供一定的冗余度而設計的,其數據結構由以下信息組成。
??(1)存儲設備列表、設備信息,包括唯一標識號(id)、區域號(zone)、權重(weight)、IP地址(ip)、端口(port)、設備名稱(device)、元數據(metadata)。
??(2)分區到設備映射關系(replica2part2dev_id數組)。
??(3)計算分區號的位移(part_shift整數)。

在這里插入圖片描述
5. Replica

??如果集群中的數據在本地節點上只有一份,一旦發生故障就可能會造成數據的永久性丟失。
??因此,需要有冗余的副本來保證數據安全。Swift中引入了Replica的概念,其默認值為3,理論依據主要來源于NWR策略(也叫Quorum協議)。

在這里插入圖片描述
??NWR是一種在分布式存儲系統中用于控制一致性級別的策略。在Amazon的Dynamo云存儲系統中,使用了NWR來控制一致性。N代表同一份數據的Replica的份數,W更新一個數據對象時需要確保成功更新的份數,R代表讀取一個數據需要讀取的Replica的份數。
??公式W+R>N,保證某個數據不被兩個不同的事務同時讀和寫,公式W>N/2保證兩個事務不能并發寫某一個數據。

在這里插入圖片描述
??Swift的N=3、W=2、R=2,完全符合NWR策略, Swift系統是可靠的,沒有單點故障。

6. Zone

??如果所有的節點都在一個機架或一個機房中,那么一旦發生斷電、網絡故障等事故,都將導致用戶無法訪問。需要一種機制對機器的物理位置進行隔離,以滿足分區容忍性。Ring中引入了Zone的概念,把集群的節點分配到每個Zone中,其中,同一個Partition的Replica不能同時放在同一個節點上或同一個Zone內。

7. Weight權重

??Ring引入權重的目的是解決未來添加存儲能力更大的節點時,分配到更多的Partition。例如,2TB容量的節點的Partition數為1TB的兩倍,那么就可以設置2TB的權重為200,而1TB的權重為100。

8. 系統架構

??Swift采用完全對稱、面向資源的分布式系統架構設計,組件可擴展,通信方式采用非阻塞式I/O模式,提高系統吞吐和響應能力。

在這里插入圖片描述

(五)實例分析

??下圖是新浪SAE在測試環境中部署的Swif集群,集群中又分為4個Zone,每個Zone是一臺存儲服務器,每臺服務器上由12塊2TB 的SATA磁盤組成,只有操作系統安裝盤需要RAID,其他盤作為存儲節點,不需要RAID。
??前面提到過,Swift采用完全對稱的系統架構,在這個部署案例中得到了很好的體現。下圖中每個存儲服務器的角色是完全對等的,系統配置完全一樣,均安裝了所有Swift服務軟件包,如 Proxy Server、Container Server和Account Server等。上面的負載均衡(Load Balancer)并不屬于Swift 的軟件包,出于安全和性能的考慮,一般會在業務之前擋一層負載均衡設備。當然可以去掉這層代理,讓Proxy Server直接接收用戶的請求,但這可能不太適合在生產環境中使用。
??下圖中分別表示了上傳文件PUT和下載文件GET請求的數據流,兩個請求操作的是同一個對象。上傳文件時,PUT請求通過負載均衡隨機挑選一臺Proxy Server,將請求轉發到后者,后者通過查詢本地的Ring文件,選擇3個不同Zone中的后端來存儲這個文件,然后同時將該文件向這三個存儲節點發送文件。這個過程需要滿足NWR策略(QuorumProtocol),即3份存儲,寫成功的份數必須大于2/3,即必須保證至少兩份數據寫成功,再給用戶返回文件寫成功的消息。下載文件時,GET請求也通過負載均衡隨機挑選一臺Proxy Server,后者上的Ring文件能查詢到這個文件存儲在哪三個節點中,然后同時去向后端查詢,至少有兩個存儲節點“表示”可以提供該文件,然后Proxy Server中選擇一個節點下載文件。

在這里插入圖片描述

四、鏡像服務Glance

??Glance提供了一個虛擬磁盤鏡像的目錄和存儲倉庫,并且可以提供對虛擬機鏡像的存儲和檢索。這些磁盤鏡像常常廣泛應用于OpenStack Compute組件之中。以三種形式加以配置:利用OpenStack對象存儲機制來存儲鏡像,利用Amazon的簡單存儲解決方案(簡稱S3)直接存儲信息,將S3存儲與對象存儲結合起來,作為S3訪問的連接器。

(一)Glance的作用

??Glance作為OpenStack的虛擬機的Image(鏡像)服務,提供了一系列的REST API,用來管理、查詢虛擬機的鏡像,它支持多種后端存儲介質。

在這里插入圖片描述
??可以看出,通過Glance,Opentack的3個模塊被鏈接成了一個整體,Glance為Nova提供鏡像的查找操作,而Swift又為Glance提供實際的存儲服務,Swift可以看成Glacne存儲接口的一個具體實現。

(二)Glance的組成部分

在這里插入圖片描述
??OpenStack Image Service支持的后端倉庫如下。
??(1)OpenStack Object Storage(Swift):它是OpenStack中高可用的對象存儲項目。
??(2)FileSystem:OpenStack Image Service存儲虛擬機鏡像的默認后端是后端文件系統。
??(3)S3:該后端允許OpenStack Image Service存儲虛擬機鏡像在Amazon S3服務中。
??(4)HTTP:OpenStack Image Service能通過HTTP在Internet上讀取可用的虛擬機鏡像。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38070.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38070.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38070.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA-Redis數據結構—跳躍表(Skiplist)【包含Java實現詳情代碼】

本人詳解 作者:王文峰,參加過 CSDN 2020年度博客之星,《Java王大師王天師》 公眾號:JAVA開發王大師,專注于天道酬勤的 Java 開發問題中國國學、傳統文化和代碼愛好者的程序人生,期待你的關注和支持!本人外號:神秘小峯 山峯 轉載說明:務必注明來源(注明:作者:王文峰…

CAAC無人機執照:視距內駕駛員與超視距駕駛員區別詳解

CAAC無人機執照中的視距內駕駛員與超視距駕駛員在多個方面存在顯著的區別。以下是詳細的對比和解釋&#xff1a; 1. 定義與操作范圍&#xff1a; - 視距內駕駛員&#xff08;駕駛員證&#xff09;&#xff1a;操作無人機時&#xff0c;無人機必須在操控員的視線范圍內&#xff…

數據開源|GigaSpeech 2:三萬小時東南亞多語種語音識別開源數據集發布

“Giga”一詞源于“gigantic”&#xff0c;互聯網上具有海量音頻資源&#xff0c;但語音質量良莠不齊&#xff0c;高質量音頻文本對數據十分稀缺且標注成本高昂&#xff0c;特別是在小語種領域。GigaSpeech 是一個非常成功的英文開源數據集&#xff0c;以 YouTube 和 Podcast 為…

[數據庫原理]關系范式總結(自用)

如有錯誤&#xff0c;歡迎指正&#xff01;&#xff01;&#xff01; 有一些題目我放在pdf里面了

解釋 Java 中的封裝、繼承和多態性,并舉例說明相關概念

在Java編程的世界里&#xff0c;封裝、繼承和多態是面向對象編程&#xff08;OOP&#xff09;的三大基石&#xff0c;它們支撐起整個Java程序設計的骨架&#xff0c;讓代碼更加靈活、可擴展和易于維護。 接下來&#xff0c;我會用一種輕松的方式&#xff0c;并通過一個貼近生活…

“核心期刊論文選題與寫作技巧分享”——郭順利

講師簡介&#xff1a; 郭順利博士&#xff0c;一位擁有管理學博士學位的副教授及碩士生導師&#xff0c;活躍在學術界&#xff0c;同時在多份CSSCI收錄期刊中擔任審稿專家。在近年的學術生涯中&#xff0c;他發表了超過50篇的核心期刊論文&#xff0c;并成功指導研究生在核心期…

充電寶買哪個牌子好?2024年十大口碑最好充電寶推薦

在如今快節奏的生活中&#xff0c;充電寶已然成為我們出行必備的物品之一。然而&#xff0c;面對市場上琳瑯滿目的充電寶品牌和型號&#xff0c;我們常常陷入選擇的困境&#xff1a;充電寶買哪個牌子好&#xff1f;2024 年&#xff0c;充電寶技術不斷革新&#xff0c;新品牌層出…

1、數據庫模型圖、er圖

關系 user和administarators是多對一的關系 user和order是一對多的關系 shipped和order是多對一的關系 order和books是多對多的關系 leavewords和order是一對一的關系 stock和books是一對多的關系 Chens 數據庫表示法——ER圖 Crows Foot數據庫表示法——數據庫模型圖 Navicat表…

python機器人編程——用pytorch實現六軸機械臂的正向和逆向數值解算,及python算法解析

目錄 一、前言二、實現原理2.1正向建模2.2張量化2.3繪制3D動畫及操作UI 三、結論四、python源碼PS.擴展閱讀ps1.六自由度機器人相關文章資源ps2.四軸機器相關文章資源ps3.移動小車相關文章資源 一、前言 前面對六軸&#xff08;或多軸&#xff09;機械臂進行了一些研究&#x…

hadoop分布式云筆記系統-計算機畢業設計源碼15725

摘 要 隨著信息技術的飛速發展&#xff0c;人們對于數據的存儲、管理和共享需求日益增長。傳統的集中式存儲系統在處理大規模數據時面臨著性能瓶頸和擴展性問題。而 Hadoop 作為一種分布式計算框架&#xff0c;為解決這些問題提供了有效的解決方案。 本研究旨在設計并實現一種…

c++裝飾器模式 和 多重繼承區別

在C中&#xff0c;裝飾器模式和多重繼承都可以用來在不修改現有對象結構的情況下增加額外的功能。但是&#xff0c;它們之間有一些關鍵的區別&#xff1a; 1.裝飾器模式通常用于向對象添加額外的職責&#xff0c;而不會影響其他用戶&#xff0c;它遵循“開放-封閉”原則。多重…

【數據結構與算法】堆排序算法原理與實現:基于堆實現的高效排序算法

&#x1f493; 博客主頁&#xff1a;倔強的石頭的CSDN主頁 &#x1f4dd;Gitee主頁&#xff1a;倔強的石頭的gitee主頁 ? 文章專欄&#xff1a;《數據結構與算法》 期待您的關注 ? 目錄 一、引言 堆排序的簡介 堆排序的特點 二、堆的概念 三、堆排序算法的原理 四、堆…

15kg級彈簧刀高速巡飛無人機技術詳解

彈簧刀高速巡飛無人機&#xff0c;作為一種先進的戰術導彈系統&#xff0c;融合了無人機與導彈的雙重特性&#xff0c;成為了現代戰爭中不可或缺的偵察與打擊利器。該無人機以其小巧的外形設計、優異的性能表現和廣泛的適用領域&#xff0c;受到了全球軍事領域的廣泛關注。彈簧…

【吊打面試官系列-MyBatis面試題】Mybatis 是如何進行分頁的?分頁插件的原理是什么?

大家好&#xff0c;我是鋒哥。今天分享關于 【Mybatis 是如何進行分頁的&#xff1f;分頁插件的原理是什么&#xff1f;】面試題&#xff0c;希望對大家有幫助&#xff1b; Mybatis 是如何進行分頁的&#xff1f;分頁插件的原理是什么&#xff1f; Mybatis 使用 RowBounds 對象…

怎么測試遠程服務器能否連通

遠程服務器連接測試的方法很多&#xff0c;下面簡單介紹下其中兩種方法。 ping命令 按WINR快截鍵&#xff0c;打開“運行”對話框&#xff0c;輸入cmd&#xff0c;回車&#xff0c;打開命令提示符。 輸入ping IP地址或ping 域名即可&#xff0c;如ping360服務器通不通&#xf…

32 lambda表達式

c11 c98例子 在c98中&#xff0c;如果想要對一個數據集合中的元素進行排序&#xff0c;可以適用std::sort方法 #include <algorithm>#include <functional>int main(){int array[] {4,1,8,5,3,7,0,9,2,6};// 默認按照小于比較&#xff0c;排出來結果是升序 std…

Django + Vue 實現圖片上傳功能的全流程配置與詳細操作指南

文章目錄 前言圖片上傳步驟1. urls 配置2. settings 配置3. models 配置4. 安裝Pillow 前言 在現代Web應用中&#xff0c;圖片上傳是一個常見且重要的功能。Django作為強大的Python Web框架&#xff0c;結合Vue.js這樣的現代前端框架&#xff0c;能夠高效地實現這一功能。本文將…

【Arduino】小飛魚通達二開實驗ESP32使用紅外尋跡傳感器 (圖文)

在智能小車項目中都會有一個功能就是自動巡線&#xff0c;今天小飛魚通達來實驗的就是這個紅外尋跡傳感器。 紅外尋跡傳感器的原理就是有一個小燈發出紅外光&#xff0c;光線照到物體后進行反射&#xff0c;有一個接收器進行接收&#xff0c;當在一定距離內會導通電路&#xf…

網安加·百家講壇 | 肖文棣:鑄盾護企——面對勒索病毒產業鏈的企業防護之道

作者簡介&#xff1a;肖文棣&#xff0c;OWASP中國廣東分會負責人、網安加社區特聘專家&#xff0c;現任某外企安全架構師&#xff0c;負責應用安全設計、管理和評審等工作。 引言 隨著信息技術的飛速發展&#xff0c;網絡安全問題愈發凸顯&#xff0c;企業面臨的網絡安全威脅…

HarmonyOS NEXT Beta 版開發者及先鋒用戶招募(第一期)報名答題題庫(持續更新中,僅供學習分享使用)

判斷題 All True. 單選題 關于容器組件Row和Column&#xff0c;下面說法錯誤的是&#xff1a; A A. justifyContent用于設置子組件在交叉軸方向上的對齊格式。 B. Row容器主軸為水平方向&#xff0c;Column容器主軸為垂直方向。 C. justifyContent用于設置子組件在主軸方向上的…