分布式計算、云計算與大數據 第2版 課件匯 第6-11章 云存儲技術- 保險大數據分析案例_第1頁
分布式計算、云計算與大數據 第2版 課件匯 第6-11章 云存儲技術- 保險大數據分析案例_第2頁
分布式計算、云計算與大數據 第2版 課件匯 第6-11章 云存儲技術- 保險大數據分析案例_第3頁
分布式計算、云計算與大數據 第2版 課件匯 第6-11章 云存儲技術- 保險大數據分析案例_第4頁
分布式計算、云計算與大數據 第2版 課件匯 第6-11章 云存儲技術- 保險大數據分析案例_第5頁
已閱讀5頁,還剩400頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章云存儲技術提綱存儲基礎知識云存儲概念與技術原理對象存儲技術存儲技術趨勢存儲重要歷史回顧總的趨勢:存儲容量和IO速度的不斷增加。網絡存儲的發展網絡存儲根據服務器類型可以進行如下分類:網絡存儲的發展根據組網形式不同,當前三種主流存儲技術如下圖所示:DASDAS(DirectAttachedStorage—直接連接存儲)是指將存儲設備通過SCSI接口或光纖通道直接連接到一臺計算機上。優勢連接簡單低成本需求較好的性能通用的解決方案劣勢有限的擴展性專屬的連接備份和數據保護TCO(總擁有成本高)NASNAS(NetworkAttachedStorage—網絡附加存儲)是將存儲設備連接到現有的網絡上,提供數據和文件服務,應用服務器直接把FileI/O請求通過LAN傳給遠端NAS中的文件系統,NAS中的文件系統發起BlockI/O到與NAS直連的磁盤。優勢資源共享構架于IP網絡之上部署簡單較好的擴展性異構環境下的文件共享易于管理備份方案簡單低的TCO劣勢擴展性有限帶寬瓶頸不適應某些數據庫的應用SANSAN(存儲區域網絡)通過光纖通道連接到一群計算機上。在該網絡中提供了多主機連接,但并非通過標準的網絡拓撲。優勢實現存儲介質的共享非常好的擴展性LANFree和ServerFree高性能支持服務器集群技術容災手段低的TCO劣勢成本較高SAN孤島技術較為復雜需要專門的技術人員維護DAS、NAS、SAN三種形態比較

DASNASFC-SANIP-SAN傳輸類型SCSI、FCIPFCIP數據類型塊級文件級塊級塊級典型應用任何文件服務器數據庫應用視頻監控優點易于理解兼容性好易于安裝成本低高擴展性高性能高可用性高擴展性成本低缺點難以管理,擴展性有限;存儲空間利用率不高性能較低;對某些應用不適合比較昂貴,配置復雜;互操作性問題性能較低DAS、NAS、SAN每種組網技術都有其優勢和劣勢,在實際運用中需要權衡各方面的資源和適用范圍。一般來說,DAS是最直接最簡單的組網技術,實現簡單但是存儲空間利用率和擴展性差,而NAS使用較為廣泛,技術也相對成熟,SAN則是專為某些大型存儲而定制的昂貴網絡。RAIDRAID是廉價冗余磁盤陣列的簡稱,磁盤陣列是由很多價格較便宜的磁盤,組合成一個容量巨大的磁盤組,利用個別磁盤提供數據所產生加成效果提升整個磁盤系統效能。利用這項技術,將數據切割成許多區段,分別存放在各個硬盤上。在具體介紹RAID之前,我們先了解一下相關概念。名詞說明分區又稱為Extent;是一個磁盤上的地址連續的存儲塊。一個磁盤可以劃分為多個分區,每個分區可以大小不等,有時也稱為邏輯磁盤。分塊又稱為Strip;將一個分區分成多個大小相等的、地址相鄰的塊,這些塊稱為分塊。分塊通常被認為是條帶的元素。虛擬磁盤以它為單位將虛擬磁盤的地址映射到成員磁盤的地址。條帶又稱為Stripe;是陣列的不同分區上的位置相關的strip的集合,是組織不同分區上條塊的單位。軟RAIDRAID的所有功能都依賴于操作系統(OS)與服務器CPU來完成,沒有第三方的控制/處理(業界稱其為RAID協處理器――RAIDCo-Processor)與I/O芯片硬RAID有專門的RAID控制/處理與I/O處理芯片,用來處理RAID任務,不需耗用主機CPU資源,效率高,性能好。RAIDRAID可以細分為:RAID0、RAID1、RAID3、RAID5、RAID6、RAID10、RAID50。1)RAID0RAID0以條帶形式將RAID陣列的數據均勻分布在各個陣列中,沒有磁盤冗余,一個磁盤失敗導致數據丟失,所示,總容量=(磁盤數量)*(磁盤容量)。優點可多I/O操作并行處理,極高的讀寫效率速度快設計、使用與配置簡單缺點無冗余不能用于關鍵數據環境RAID2)RAID1RAID1以鏡像作為冗余手段,虛擬磁盤中的數據有多個拷貝,放在成員磁盤上,具有100%的數據冗余,但磁盤空間利用率只有50%,所以,總容量=(磁盤數量/2)*(磁盤容量)。優點理論上讀效率是單個磁盤的兩倍;100%的數據冗余;設計、使用簡單缺點ECC((錯誤檢查與糾正))效率低下,磁盤ECC的CPU占用率是所有RAID等級中最高的,成本高;軟RAID方式下,很少能支持硬盤的熱插拔;空間利用率只有1/2RAID3)RAID3以xor校驗為冗余方式,使用專門的磁盤存放校驗數據,虛擬磁盤上的數據塊被分為更小的數據塊并行傳輸到各個成員物理磁盤上,同時計算出xor校驗數據存放到校驗磁盤上。只有一個磁盤損壞的情況下,RAID3能通過校驗數據恢復損壞磁盤,但兩個以上磁盤同時損壞情況下RAID3不能發揮數據校驗功能。總容量=(磁盤數量-1)*(磁盤容量)。優點相對較高的讀取傳輸率高可用性,如果有一個磁盤損壞,對吞吐量影響較小高效率的ECC操作缺點校驗盤成為性能瓶頸每次讀寫牽動整個組,每次只能完成一次I/ORAID4)RAID5以XOR檢驗為冗余方式,校驗數據均勻分布在各個數據磁盤上,對各個數據磁盤的訪問為異步操作,RAID5相對于RAID3改善了校驗盤的瓶頸,總容量=(磁盤數-1)*(磁盤容量)。優點高讀取速率中等寫速率缺點異或校驗影響存儲性能磁盤損壞后,重建很復雜RAID5)RAID6RAID6能夠允許兩顆磁盤同時失效的RAID級別系統,其總容量=(磁盤數-2)*(磁盤容量)。優點快速的讀取性能更高的容錯能力缺點很慢的寫入速度成本更高RAID6)RAID10RAID10(鏡像陣列條帶化)將鏡像和條帶組合起來的組合RAID級別,最低一級是RAID1鏡像對,第二級為RAID0。其總容量=(磁盤數/2)*(磁盤容量)。優點高讀取速率高寫速率,較校驗RAID而言,寫開銷最小至多可以容許N個磁盤同時損壞(2N個磁盤組成的RAID10陣列)缺點貴只有1/2的磁盤利用率RAID7)RAID50RAID50將鏡像和條帶組合起來的組合RAID級別,最低一級是RAID5鏡像對,第二級為RAID0。其總容量=(磁盤數-1)*(磁盤容量)。優點比單個RAI5容納更多的磁盤比單個RAID5有更好的讀性能至多可以容許n個磁盤同時損壞(N個RAID5組成的RAID50陣列)比相同容量的單個RAID5重建時間更短缺點比較難實現同一個RAID5組內的兩個磁盤損壞會導致整個RAID50陣列的失效RAID級別比較

需要根據具體的應用情況決定使用那種RAID級別,各種級別的比較如表所示項目RAID0

RAID1RAID10

RAID5

、RAID3RAID6最小配置12434性能HighestLowestRAID5<RAID10<RAID0RAID1<RAID5<RAID10RAID6<RAID5<RAID10特點無容錯最佳的容錯最佳的容錯提供容錯提供容錯磁盤利用率100%50%50%(N-1)/N(N-2)/N描述

不帶奇偶效驗的條帶集磁盤鏡像RAID0與RAID1的結合帶奇偶效驗的

條帶集雙校驗位其中RAID3與RAID5的區別為:RAID3更適合于順序存取,RAID5更適合于隨機存取。需要根據具體的應用情況決定使用那種RAID級別。磁盤熱備

所謂熱備份(簡稱為熱備)是在建立RAID磁盤陣列系統的時候,將其中一個磁盤指定為熱備磁盤,此熱備磁盤在平常并不操作,當陣列中某一磁盤發生故障時,熱備磁盤便取代故障磁盤,并自動將故障磁盤的數據重構在熱備磁盤上。熱備盤可分為以下兩種:全局熱備盤:針對整個磁盤陣列,對陣列中所有RAID組起作用局部熱備盤:只針對某一RAID組起作用。

磁盤熱備的主要過程1)由5個磁盤組成RAID5,4個數據盤,1個熱備盤存儲校驗條帶集,熱盤平時不參與計算。2)某個時刻某個數據盤損壞,熱備盤根據校驗集開始自動重構。3)熱備盤重構結束,加入RAID5代替損壞磁盤參與計算。4)替換新的磁盤,熱備盤進行COPYBACK復制。5)熱備盤復制完成后,重新建立校驗集。RAID5setofdrives:4active,1hot-spareCOPYBACK完成某個磁盤損壞,重構過程開始重構過程結束,RAID5可靠性恢復冗余插入新磁盤,COPYBACK開始邏輯卷快照(snapshot)DEAC快照是某一個時間點上的邏輯卷的映像,邏輯上相當于整個BaseVolume的拷貝用途(利用少量存儲空間保存原始數據的備份)文件、邏輯卷恢復備份、測試、數據分析等基本概念:BaseVolume:快照源卷RepositoryVolume:快照倉儲卷,保存快照源卷在快照過程中被修改以前的數據SnapshotVolume:快照卷某一個時間點的邏輯卷映像:邏輯上相當于整個BaseVolume的拷貝可將SanpshotVolume分配給任何一臺主機SnapshotVolume可讀取、寫入或拷貝存儲空間需求需要相當于BaseVolume20%的額外空間快照過程1)首先保證源卷和倉儲卷的正常運行2)快照開始時源卷是只讀的,快照卷對源卷3)快照完成,控制器釋放對源卷的寫權限,我們可以對源卷進行寫操作,快照是一些指向源卷數據的指針。4)當源卷數據發生改變時,首先在源卷的數據改變之前將原數據寫入倉儲卷上,并且將快照指針引導到倉儲卷上,然后再對源卷數據進行修改。5)最后更新源卷數據,此時快照可以跟蹤到更新之前的舊數據。數據分級存儲概念數據分級存儲:即把數據存放在不同類別的存儲設備(磁盤、磁盤陣列、光盤庫、磁帶)中,通過分級存儲管理軟件實現數據實體在存儲設備之間的自動遷移;根據數據的訪問頻率、保留時間、容量、性能要求等因素確定最佳存儲策略,從而控制數據遷移的規則。優點最大限度地滿足用戶需求減少總體存儲成本性能優化改善數據可用性數據遷移對應用透明在線(On-line)存儲:指存儲設備和所存儲的數據時刻保持“在線”狀態,可供用戶隨意讀取,滿足計算平臺對數據訪問的速度要求近線(Near-line)存儲:主要定位于客戶在線存儲和離線存儲之間的應用,將那些不是經常用到,或者說數據的訪問量并不大的數據存放在性能較低的存儲設備上,但同時對這些設備要求是尋址迅速、傳輸率高,需要的存儲容量相對較大。離線(Off-line)存儲:對在線存儲數據的備份,以防范可能發生的數據災難。提綱存儲基礎知識云存儲概念與技術原理對象存儲技術存儲技術趨勢云存儲概念關于云存儲的定義,目前沒有標準。云存儲一般包含兩個含義:1)云存儲是云計算的存儲部分,即虛擬化的、易于擴展的存儲資源池。用戶通過云計算使用存儲資源池,但不是所有的云計算的存儲部分都是可以分離的。2)云存儲意味著存儲可以作為一種服務,通過網絡提供給用戶。用戶可以通過若干種方式(互聯網開放接口、在線服務等)來使用存儲,并按使用(時間、空間或兩者結合)付費。從技術層面看,目前業界普遍認為云存儲的兩種主流技術解決方案:基于虛擬化技術和分布式存儲。分布式存儲從技術特征上看,分布式存儲主要包括以下四種:分布式塊存儲分布式文件存儲分布式對象存儲分布式表存儲塊存儲技術塊存儲將存儲區域劃分成固定大小的小塊,是傳統裸存儲設備的存儲空間對外暴露方式。塊存儲系統將大量磁盤設備通過SCSI/SAS或FCSAN與存儲服務器連接,服務器直接通過SCSI/SAS或FC協議控制和訪問數據。塊存儲方式不存在數據打包/解包過程,可提供更高的性能。系統目標:為現有各種應用提供通用的存儲能力在云計算環境下,塊存儲設備面臨著分布式環境數據塊數據塊數據塊數據塊數據塊存儲節點2數據塊數據塊數據塊數據塊數據塊存儲節點1索引節點直接索引1直接索引2直接索引3直接索引4直接索引5直接索引6目錄索引目錄索引數據塊數據塊數據塊數據塊存儲節點傳統設備的塊存儲面向的是單一的物理設備塊存儲技術塊存儲主要包括DAS和SAN兩種存儲方式直接附加存儲DAS以主機為中心,將外部的數據存儲設備通過SISC/IDE/ATA等I/O總線直接連接到服務器上,使數據存儲設備是服務器結構一部分SAN采用塊數據組織,通過可伸縮的高速專用存儲網絡互連不同類型的存儲設備和服務器,提供內部任意節點間多路可選擇的數據交換。應用服務器文件系統SCSI,FCJBOD應用服務器文件系統光纖交換機RAIDRAID塊存儲技術優點缺點DAS設備成本低廉,實施簡單通過磁盤陣列技術,可將多塊硬盤在邏輯上組合成一塊硬盤,實現大容量的存儲不能提供不同操作系統下的文件共享存儲容量受限I/O總線支持的設備數量服務器發生故障時,數據不可訪問數據備份操作非常復雜SAN可實現大容量存儲設備數據共享可實現高速計算機和高速存儲設備的高速互聯可實現數據高效快速集中備份建設成本和能耗高,部署復雜單獨建立光纖網絡,異地擴展比較困難互操作性差,數據無法共享元數據服務器會成為性能瓶頸適用場景DAS服務器在地理分布上很分散,通過SAN或NAS在它們之間進行互連非常困難既要求數據的集中管理,又要求最大限度的降低數據的管理成本許多數據庫應用和應用服務器在內的應用,它們需要直接連接到存儲器上SAN與其它計算資源緊密集群來實現遠程備份和檔案存儲過程磁盤鏡像、備份與恢復、檔案數據的存檔和檢索、存儲設備間的數據遷移以及網絡中不同服務器間的數據共享等用于合并子網和網絡附接存儲系統分布式文件存儲文件存儲以標準文件系統接口形式向應用系統提供海量非結構化數據存儲空間。分布式文件系統把分布在局域網內各個計算機上的共享文件夾集合成一個虛擬共享文件夾,將整個分布式文件資源以統一的試圖呈現給用戶。它對用戶和應用程序屏蔽各個節點計算機底層文件系統的差異,提供用戶方便的管理資源的手段或統一的訪問接口。分布式文件系統的出現很好的滿足互聯網信息不斷增長的需求,并為上層構建實時性更高,更易使用的結構化存儲系統提供有效的數據管理的支持。在催生了許多分布式數據庫產品的同時,也促使分布式存儲技術不斷的發展和成熟。技術特點提供NFS/CIFS/POSIX等文件訪問接口協議開銷較高、響應延遲較塊存儲長應用系統跟存儲系統的耦合程度中等存儲能力和性能水平擴展適用場景適合TB~PB級文件存儲,可支持文件頻繁修改和刪除。例如圖片、文件、視頻、郵件附件、MMS的存儲海量數據存儲及系統負載的轉移文件在線備份文件共享傳統分布式文件系統NAS技術特點應用服務器以太網交換機文件系統RAID文件系統RAID網絡附加存儲NAS是一種文件網絡存儲結構,通過以太網及其他標準的網絡拓撲結構將存儲設備連接到許多計算機上,建立專用于數據存儲的存儲內部網絡文件協議支持NFS和CIFS網絡文件協議連接方式百兆/千兆以太網主要功能細顆粒度數據共享及跨平臺文件共享存儲擴展高達數百TB,不停機適用場景商業或企業級數據共享;高性能計算或技術計算優點易于管理,節約成本缺點系統(包括存儲容量和性能)擴展性差以SUN-Lustre文件系統為例,它只對數據管理器MDS提供容錯解決方案。Lustre推薦OST(對象存儲服務器)節點采用成本較高的RAID技術或SAN存儲區域網絡來達到容災的要求,但Lustre自身不能提供數據存儲的容災,一旦OST發生故障就無法恢復,因此對OST的可靠性就提出了相當高的要求,大大增加了存儲的成本,這種成本的投入會隨著存儲規模的擴大線性增長。對象存儲技術對象存儲為海量非結構化數據提供Key-Value這種通過鍵-值查找數據文件的存儲模式,提供了基于對象的訪問接口,有效地合并了NAS和SAN的存儲結構優勢,通過高層次的抽象具有NAS的跨平臺共享數據和基于策略的安全訪問優點,支持直接訪問具有SAN的高性能和交換網絡結構的可伸縮性。對象存儲成為云存儲技術的新熱點技術特點訪問接口簡單,提供REST/SOAP接口協議開銷高、響應延遲較文件存儲長引入對象元數據描述對象特征應用系統跟存儲系統的耦合程度松散支持一次寫多次讀對象存儲技術對象是介于文件和塊之間的一種抽象,具有唯一的ID標識符。對象提供類似文件的訪問方法,如創建、打開、讀寫和關閉等。每個對象是一系列有序字節的集合,是數據和數據屬性集的綜合體。數據包括自身的元數據和用戶數據。數據屬性可以根據應用的需求進行設置,包括數據分布、服務質量等。對象維護自己的屬性,簡化了存儲系統的管理任務,增加了靈活性。對象分為根對象,組對象和用戶對象。對象特點對象存儲系統組成部分對象(Object):對象存儲的基本單元對象存儲設備(OSD):對象存儲系統的核心文件系統:文件系統對用戶的文件操作進行解釋,并在元數據服務器和對象存儲設備間通信,完成所請求的操作。元數據服務器(MDS):為客戶端提供元數據網絡連接:對象存儲系統的重要組成部分。表存儲技術表存儲系統用來存儲和管理結構化/半結構化數據,向應用系統提供高可擴展的表存儲空間,包括交易型數據庫和分析型數據庫。NoSQL是設計滿足超大規模數據存儲需求的分布式存儲系統,沒有固定的Schema,不支持join操作,通過“向外擴展”的方式提高系統負載能力。系統目標:管理結構化數據或半結構化數據交易型分析型TB~PB級NoSQL存儲日志詳單類存儲TB級OLTP關系數據庫OLAP數據倉庫交易型數據特點:每次更新或查找少量記錄,并發量大,響應時間短分析型數據特點:更新少,批量導入,每次針對大量數據進行處理,并發量小分布式表存儲技術特點適用場景NoSQL存儲通常不支持SQL、只有主索引、半結構化大規模互聯網社交網絡、博客、微博等日志詳單類存儲兼容SQL、索引通常只對單表有效、多表Join需掃描,支持MapReduce并行計算大規模日志存儲處理、信令系統處理、經分系統ETL等OLTP關系數據庫支持標準SQL、多表join、索引、事務計費系統、在線交易系統等OLAP數據倉庫支持標準SQL、多表Join、索引中等規模日志存儲處理、經分系統等分布式表存儲NoSQL數據庫分類類型主要產品特點列存儲HbaseCassandraHypertable顧名思義,是按列存儲數據的。最大的特點是方便存儲結構化和半結構化數據,方便做數據壓縮,對針對某一列或者某幾列的查詢有非常大的IO優勢。文檔存儲MongoDBCouchDB文檔存儲一般用類似json的格式存儲,存儲的內容是文檔型的。這樣也就有有機會對某些字段建立索引,實現關系數據庫的某些功能。Key-Value存儲TCabinet/TyrantBerkeleyDBMemcacheDBRedis可以通過key快速查詢到其value。一般來說,存儲不管value的格式,照單全收。(Redis包含了其他功能)圖存儲Neo4JFlockDB圖形關系的最佳存儲。使用傳統關系數據庫來解決的話性能低下,而且設計使用不方便。對象存儲db4oVersant通過類似面向對象語言的語法操作數據庫,通過對象的方式存取數據。XML數據庫BerkeleyDBXMLBaseX高效的存儲XML數據,并支持XML的內部查詢語法,比如XQuery,Xpath。表存儲適應場景典型NoSQL數據庫適用場景數據庫最佳適用適用場景Cassandra寫操作較多,讀比較少的時候。如果你的系統都是基于Java的時候主要應用場景包括:銀行、金融行業、數據分析。應用于FacebookMongoDB主要支持海量數據存儲,動態查詢,定義索引,針對大數據庫的高性能使用,大容量磁盤空間。適用于:網站數據、緩存、大尺寸,低價值的數據、高伸縮性的場景、用于對象及JSON數據的存儲Redis在數據庫大小可預見的前提下,適用于數據變化速度快的應用較小數據量的高性能操作和運算上,包括:股價系統、數據分析、實時數據采集以及實時通信場景CouchD對于數據變化不太頻繁的業務,運行有預先定義的查詢。此外對于版本控制有高要求的業務同樣適用CRM、CMS系統等HBase類似于BigTable,需要隨即、實時的讀寫大數據適合于非結構化數據存儲的數據庫,如:Facebook網站、郵件數據庫等各種存儲技術對比

分布式對象存儲分布式文件存儲塊存儲NoSQL存儲存儲單位對象,就是帶客戶化元數據的文件文件數據塊文檔更新方式不支持就地更新,通過建立新的對象版本進行更新支持就地更新支持就地更新很少更新協議通過HTTP的REST和SOAPCIFS和NFSSCSI,FiberChannel和SATAApache協議,HTTP/REST元數據支持支持客戶化元數據固有的文件系統屬性固有的系統屬性固有的文件系統屬性最佳應用場景相對靜態的文件數據和云存儲共享文件數據交易數據和頻繁變化的數據非關系型數據存儲,適用于海量數據存儲和OLAP的應用場景最大優勢擴展性和分布式訪問簡單的共享文件訪問和管理高性能易擴展、靈活的數據模型、高可用、大數據量,高性能制約因素不適合頻繁變化的交易數據;不提供基于鎖機制的共享協議很難擴展到數據中心之外的范疇很難擴展到數據中心之外的范疇很難實現數據的完整性;缺乏強有力的技術支持等存儲類型存儲類型分布式文件存儲對象存儲直接附加存儲DAS塊存儲表存儲存儲域網絡SANIPSANFCSAN網絡附加存儲NAS日志詳單類存儲NoSQL存儲Google文件系統GFSHadoop分布式文件系統OLTP關系數據庫OLAP數據倉庫BC-oNestAmazonS3BigTableHBaseSwiftCassandraMongodb存儲虛擬化企業用戶面對日益復雜的異構平臺,不同廠商的產品,不同種類的存儲設備,給存儲管理帶來諸多難題。數據應用已不再局限于某一企業和部門,而分布于整個網絡環境。系統整合、資源共享、簡化管理、降低成本以及自動存儲將成為信息存儲技術的發展要求。存儲虛擬化技術(StorageVirtualization)是解決這些問題的有效手段,現成為信息存儲技術的主要發展方向。隨著網絡存儲的飛速發展給存儲虛擬化賦予了新的內涵。使之成為共享存儲管理中的主流技術。

存儲虛擬化的基本原理是:把多個存儲介質模塊(如硬盤、磁盤、磁帶)通過一定手段集中管理,把不同接口協議(如SCSI,iSCSI或FC等)的物理存儲設備(如JBOD,RAID和磁帶庫等)整合成一個虛擬的存儲池,根據需要為主機創建和提供虛擬存儲卷。即把不同存儲硬件抽象出來,以管理工具來實現統一的管理,不必再管后端的介質到底是什么。存儲虛擬化

虛擬化的目的主要有三個:抽象,隱藏,隔離。存儲虛擬化的目的是為了提高設備使用效率,統一數據管理功能,設備構件化,降低管理難度,提高可擴展性,數據跨設備流動,其技術如下圖所示。從系統的觀點看,存儲虛擬化有3種途徑:基于主機的存儲虛擬化、基于網絡的存儲虛擬化、基于存儲設備的存儲虛擬化。基于主機的存儲虛擬化

基于主機的虛擬存儲依靠于代理軟件,它們安裝在一個或多個主機上,實現存儲虛擬化的控制和治理。它的實現方式一般由操作系統下的邏輯卷管理軟件完成(安裝客戶端軟件),不同操作系統的邏輯卷管理軟件也不相同。優點支持異構的存儲系統缺點:占用主機資源,降低應用性能存在操作系統和應用的兼容性問題導致主機升級、維護和擴展非常復雜,而且容易造成系統不穩定性需要復雜的數據遷移過程,影響業務連續性。基于網絡的存儲虛擬化

基于網絡的虛擬化方法是在網絡設備之間實現存儲虛擬化功能,它將類似于卷管理的功能擴展到整個存儲網絡,負責管理Host視圖、共享存儲資源、數據復制、數據遷移及遠程備份等,并對數據路徑進行管理避免性能瓶頸。它的實現方式通過在存儲域網(SAN)中添加虛擬化引擎實現。優點與主機無關,不占用主機資源能夠支持異構主機、異構存儲設備使不同存儲設備的數據管理功能統一構建統一管理平臺,可擴展性好缺點:部分廠商數據管理功能弱,難以達到虛擬化統一數據管理的目的部分廠商產品成熟度較低,仍然存在和不同存儲和主機的兼容性問題。基于存儲設備的存儲虛擬化

基于存儲設備的存儲虛擬化方法依賴于提供相關功能的存儲模塊,它的實現方式是,在存儲控制器上添加虛擬化功能(虛擬化引擎)。優點與主機無關,不占用主機資源數據管理功能豐富。缺點:一般只能實現對本設備內磁盤的虛擬化不同廠商間的數據管理功能不能互操作多套存儲設備需配置多套數據管理軟件,成本較高。存儲虛擬化技術對比

不同的存儲虛擬化技術都有其適用場景和優勢,下表給出了三種存儲虛擬化技術各種特性的對比。比較內容基于主機基于存儲設備基于網絡存儲視圖一致性差好好單點管理否是是主機是否安裝管理軟件需要不需要不需要獨立于主機或存儲設備非獨立非獨立獨立統一存儲池是是是存儲分配靈活性差好好性能差差好SAN擴展性差好好SAN高可用性差好好SAN安全性差好好相對價格低高中應用案例多少少主要用途使服務器的存儲空間可以跨越多個異構存儲陣列,常用于在不同磁盤陣列之間做數據鏡像保護異構存儲系統整合和統一數據管理(如容災備份)異構存儲系統整合和統一數據管理(如容災備份)適用場景主機已采用SF卷(即Storage

Foundation,一種磁盤管理工具)管理,需要新接多臺存儲設備;存儲系統中包含異構陣列設備;業務持續能力與數據吞吐要求較高系統中包括自帶虛擬化功能的高端存儲設備與若干需要利舊的中低端存儲系統包括不同品牌和型號的主機與存儲設備;對數據無縫遷移及數據格式轉換有較高時間保證提綱存儲基礎知識云存儲概念與技術原理對象存儲技術存儲技術趨勢傳統塊存儲與對象存儲在傳統的存儲系統中用文件或塊作為基本的存儲單位,塊設備要記錄每個存儲數據塊在設備上的位置;而在對象存儲系統中,對象是數據存儲的基本單元,Object維護自己的屬性,從而簡化了存儲系統的管理任務,增加了靈活性,在存儲設備中,所有對象都有一個對象標識,通過對象標識OSD命令訪問該對象。對象存儲架構對象存儲的核心是將數據通路(數據讀或寫)和控制通路(元數據)分離,并且基于對象存儲設備(Object-basedStorageDevice,OSD)構建存儲系統,每個對象存儲設備具有一定的智能,能夠自動管理其上的數據分布。對象存儲結構由對象、對象存儲設備、元數據服務器、對象存儲系統的客戶端四部分組成。對象的組成對象是系統中數據存儲的基本單位,每個Object是數據和數據屬性集的綜合體,數據屬性可以根據應用的需求進行設置,包括數據分布、服務質量等。對象基本存儲單元名字空間:對象ID數據元數據元數據類似于inode,描述了對象在磁盤上的塊分布屬性根據需要而定義E.g.多媒體對象的延遲和吞吐請求因此,對象存儲就是實現對象具有高性能、高可靠性、跨平臺以及安全的數據共享的存儲體系,是塊和文件之外的存儲形式對象(Object)包含了文件數據以及相關的屬性信息,可以進行自我管理對象存儲結構

傳統的訪問層次和虛擬數據訪問模型對象存儲系統組成

對象(Object)包含了文件數據以及相關的屬性信息,可以進行自我管理OSD(Object-basedStorageDevice)一個智能設備,是Object的集合文件系統文件系統運行在客戶端上,將應用程序的文件系統請求傳輸到MDS和OSD上元數據服務器(MetadataServer,MDS)系統提供元數據、Cache一致性等服務網絡連接網絡連接是對象存儲系統的重要組成部分。它將客戶端、MDS和OSD連接起來,構成了一個完整的系統對象的分類OSD(Object-basedStorageDevice)

每個OSD都是一個智能設備,具有自己的存儲介質、處理器、內存以及網絡系統等,負責管理本地的Object,是對象存儲系統的核心。OSD同塊設備的不同不在于存儲介質,而在于兩者提供的訪問接口。OSD的主要功能包括數據存儲和安全訪問。目前國際上通常采用刀片式結構實現對象存儲設備。OSD的主要功能

OSD提供三個主要功能:(1)數據存儲。OSD管理對象數據,并將它們放置在標準的磁盤系統上,OSD不提供塊接口訪問方式,Client請求數據時用對象ID、偏移進行數據讀寫。(2)智能分布。OSD用其自身的CPU和內存優化數據分布,并支持數據的預取。由于OSD可以智能地支持對象的預取,從而可以優化磁盤的性能。(3)每個對象元數據的管理。OSD管理存儲在其上對象的元數據,該元數據與傳統的inode元數據相似,通常包括對象的數據塊和對象的長度。而在傳統的NAS系統中,這些元數據是由文件服務器維護的,對象存儲架構將系統中主要的元數據管理工作由OSD來完成,降低了Client的開銷。OSD功能說明:OSD使用Object對所保存的數據進行管理。它將數據存放到磁盤的磁道和扇區,將若干磁道和扇區組合起來構成Object,并且通過此Object向外界提供對數據的訪問。每個Object同傳統的文件相似,使用同文件類似的訪問接口,包括Open、Read、Write等。但是兩者并不相同,每個Object可能包括若干個文件,也可能是某個文件的一部分,且是獨立于操作系統的。除了具體的用戶數據外,OSD還記錄了每個Object的屬性信息,主要是物理視圖信息。將這些信息放到OSD上,大大減輕了元數據服務器的負擔,增強了整個存儲系統的并行訪問性能和可擴展性。如圖顯示了OSD的作用。文件系統

文件系統對用戶的文件操作進行解釋,并在元數據服務器和OSD間通信,完成所請求的操作。現有的應用對數據的訪問大部分都是通過POSIX文件方式進行的,對象存儲系統提供給用戶的也是標準的POSIX文件訪問接口。接口具有和通用文件系統相同的訪問方式,同時為了提高性能,也具有對數據的Cache功能和文件的條帶功能。同時,文件系統必須維護不同客戶端上Cache的一致性,保證文件系統的數據一致元數據服務器(MetadataServer)

MDS控制Client與OSD對象的交互,主要提供以下功能:(1)對象存儲訪問:MDS構造、管理描述每個文件分布的視圖,允許Client直接訪問對象。MDS為Client提供訪問該文件所含對象的能力,OSD在接收到每個請求時將先驗證該能力,然后才可以訪問。(2)文件和目錄訪問管理:MDS在存儲系統上構建一個文件結構,包括限額控制、目錄和文件的創建和刪除、訪問控制等。(3)ClientCache一致性:為了提高Client性能,在對象存儲系統設計時通常支持Client方的Cache。由于引入Client方的Cache,帶來了Cache一致性問題,MDS支持基于Client的文件Cache,當Cache的文件發生改變時,將通知Client刷新Cache,從而防止Cache不一致引發的問題。對象存儲與傳統存儲的對比存儲接口存儲系統優點缺點塊級存儲塊塊存儲設備如:SAN,提供高性能的隨機I/O和數據吞吐率可擴展性和可管理性較差、價格較高、不能滿足成千上萬CPU規模的系統文件儲存文件塊存儲設備+文件系統如:NAS,擴展性好、易于管理、價格便宜開銷高、帶寬低、延遲大,不利于高性能集群中應用對象存儲對象塊存儲設備+文件系統+定位邏輯+應用程序支持高并行性、可伸縮的數據訪問,管理性好、安全性高、適合高性能集群使用處于發展階段,相應的硬件、軟件支持有待進一步完善基于Hadoop構建對象存儲系統系統組成:對象訪問接口層(AccessEdge)、對象元數據存儲層(MetaDataStorage)、對象實體數據存儲(DataNode)和歸檔管理(ArchiveManagement)59基于Hadoop構建對象存儲系統HDFS上的對象數據存儲:為了減少HDFS中小文件的數據,將小的對象文件和歸檔文件歸檔。60基于Hadoop構建對象存儲系統桶的創建和刪除61基于Hadoop構建對象存儲系統對象的創建62基于Hadoop構建對象存儲系統對象的刪除63基于Hadoop構建對象存儲系統小文件的歸檔管理:主要由周期性執行的MapReduce任務完成64提綱存儲基礎知識云存儲概念與技術原理對象存儲技術存儲技術趨勢存儲技術趨勢存儲技術趨勢包括以下幾個方面:1)存儲虛擬化2)固態硬盤SSD3)重復數據刪除4)語義化檢索5)存儲智能化6)混合存儲系統7)軟件定義存儲SDS存儲技術趨勢1)存儲虛擬化存儲虛擬化是目前以及未來的存儲技術熱點,目前最新的存儲虛擬化技術有自動分級存儲(HSM)、自動精減配置(Thinprovision)、云存儲(Cloudstorage)、分布式文件系統(Distributedfilesystem),另外還有諸如動態內存分區、SAN和NAS虛擬化。2)語義化檢索數據檢索目前主要分為兩類,一是基于文件名,二是基于文件內容。存儲系統完全可以實現語義化的檢索,通過文件屬性和關系來檢索文件,并用關系網絡(類似社會化網絡)來表示檢索結果。面對海量的數據,精確、高效地檢索出自己需要的數據是第一步,語義化檢索符合存儲的技術發展趨勢。3)存儲智能化對于存儲系統來說,智能化代表著自動化、自適應、兼容性、自治管理、彈性應用,通過對系統的監控、分析和挖掘來發現數據應用的特點和使用者的行為模式并動態調整配置,從而達到最佳的運行狀態,存儲智能化越來越成為存儲技術的發展趨勢。4)混合存儲系統大數據和云計算環境下海量增長的數據對存儲系統的超高容量和體系結構帶來了極大的挑戰。利用新型存儲器良好的寫性能、固態硬盤良好的讀性能和傳統磁盤大容量低成本的特性組合成的混合存儲系統可能是未來發展的方向。存儲技術趨勢5)SSD固態硬盤(SSD,solidstatedisk)是目前倍受存儲界廣泛關注的存儲新技術,它被看作是一種革命性的存儲技術,可能會給存儲行業甚至計算機體系結構帶來深刻變革。SSD與傳統磁盤不同,它是一種電子器件而非物理機械裝置,它具有體積小、能耗小、搞干擾能力強、尋址時間極小(甚至可以忽略不計)、IOPS高、I/O性能高等特點。對于存儲系統來說,SSD最大突破是大幅提高了IOPS,摩爾定理的效力再次顯現,通過簡單地用SSD替換傳統磁盤,就可能可以達到和超越綜合運用緩存、預讀、高并發、數據局部性、磁盤調度策略等軟件技術的效用。SSD已經開始被廣泛接受并應用,當前主要的限制因素包括價格、使用壽命、寫性能抖動等。從最近兩年的發展情況來看,這些問題都在不斷地改善和解決,SSD的發展和廣泛應用將勢不可擋。存儲技術趨勢6)重復數據刪除重復數據刪除(Deduplication)是一種目前主流且非常熱門的存儲技術,可對存儲容量進行有效優化。它通過刪除數據集中重復的數據,只保留其中一份,從而消除冗余數據。Dedupe技術可以幫助眾多應用降低數據存儲量,節省網絡帶寬,提高存儲效率、減小備份窗口,節省成本。Dedupe技術目前大量應用于數據備份與歸檔系統,因為對數據進行多次備份后,存在大量重復數據。事實上,它也可以用于很多場合,包括在線數據、近線數據、離線數據存儲系統。信息呈現的指數級增長方式給存儲容量帶來巨大的壓力,而dedupe是最為行之有效的解決方案,因此固然其有一定的不足,它大行其道的技術趨勢無法改變。更低碰撞概率的hash函數、多核、GPU、SSD等,這些技術推動dedupe走向成熟,由作為一種產品而轉向作為一種功能,逐漸應用到近線和在線存儲系統存儲技術趨勢7)軟件定義存儲定義:即SDS(SoftwareDefinedStorage),沒有統一標準定義,一般是指存儲資源由軟件自動控制,通過抽象、池化和自動化,將標準服務器內置存儲、直連存儲、外置存儲或云存儲等存儲資源整合起來,實現應用感知,或者基于策略驅動的部署、變更和管理,最終達到存儲即服務的目標。與分布式存儲區別:“分布式”的理念是軟件定義存儲的基礎,從概念上來說,軟件定義存儲的范圍更大,除了存儲之外,還包括管理、計算、網絡接口等相關概念。或者說,分布式存儲就是一種鏈接方式,而軟件定義存儲就是類似華為等企業所研發的軟件產品,可以說軟件定義存儲是以分布式存儲的基礎的企業存儲解決方案。2025/3/21DistributedComputing71Questions1)簡述存儲組網的幾種形式(DAS,NAS,SAN),及其適用范圍。2)簡述RAID的技術原理。3)簡述磁盤熱備的技術原理。4)簡述快照技術原理。5)簡述分布式塊存儲的概念及其優缺點。6)簡述分布式對象存儲的概念及原理。7)簡述NoSQL的概念及原理。8)簡述存儲虛擬化的幾種形式,及其適用范圍。9)查閱相關資料,了解重復數據刪除及數據壓縮的原理。第7章云原生技術提綱7.1 云原生的概念與架構7.2 云原生關鍵技術7.3 云原生應用開發7.4 云原生技術特色云原生的概念云原生計算基金會(CloudNativeComputingFoundation,CNCF)組織對云原生的定義是:云原生技術有利于各組織在公有云、私有云和混合云等新型動態環境中,構建和運行可彈性擴展的應用。代表技術:容器、服務網格、微服務、不可變基礎設施和聲明式API。云原生本質上是一種基于云的軟件架構思想,以及基于云進行軟件開發實踐的一組方法論。通過學習云原生的應用架構設計理念和云原生包含的各種適用于云環境、發揮云端優勢的技術,使個人或企業能夠順利地在云端環境進行應用設計、開發和運維。云原生的架構云原生架構有4個要點,即微服務、容器、DevOps、持續交付云原生的架構微服務:微服務是將應用作為小型服務集合開發的架構方法,其中每個服務都可以實施業務功能,每個微服務都可以獨立于應用中的其他服務進行部署、升級、擴展和重新啟動。容器:容器技術是云原生概念興起的基礎,與標準虛擬機相比,容器體積小、速度快。DevOps:通過自動化工具協作和溝通,讓開發、測試和運維之間能夠模糊邊界,從而更快、更頻繁地交付更穩定的軟件。持續交付:在不影響用戶使用服務的前提下頻繁把新功能發布給用戶使用。提綱7.1 云原生的概念與架構7.2 云原生關鍵技術7.3 云原生應用開發7.4 云原生技術特色微服務定義微服務(microservice)是一種軟件架構風格,它以專注于單一責任與功能的小型功能區塊(smallbuildingblock)為基礎,利用模塊化的方式組合出復雜的大型應用程序,各功能區塊使用與語言無關的API集相互通信。特點采用模塊化的設計風格,更加適合大型應用開發可以將模塊化的服務跨多個服務器和基礎設施進行部署,充分滿足自身業務需求,具有高度的可擴展性

擁有出色的彈性,只要確保正確構建,這些獨立的服務就不會彼此影響典型開發框架比較著名的有SpringCloud、Dubbo和Dropwizard等目前最為流行的開發框架為SpringCloudSpringCloudSpringCloud服務發現—SpringCloudNetflixEurekaEureka由EurekaServer和EurekaClient組成EurekaServer提供服務注冊服務,各個EurekaClient啟動后,會在EurekaServer中進行注冊EurekaServer本身也是一個服務,默認情況下會自動注冊到注冊中心EurekaServer之間可以相互注冊,組成高可用的注冊中心來提高系統的穩定性。當一個服務注冊至注冊中心后,相當于在集群中發現了該服務,這樣當服務消費者需要通過遠程調用獲取這個服務的內容時,就可以通過注冊中心找到該服務。SpringCloud客戶端負載均衡—SpringCloudNetflixRibbon在微服務架構中,一個服務可能會被部署多份以提高服務的可用性,當多個相同服務的提供者被注冊至注冊中心后,注冊中心會注冊該服務的所有提供者,當服務消費者需要調用該服務時,注冊中心會查詢所有可用的服務提供者,這時可以通過Ribbon基于負載均衡算法做到負載均衡地請求其中一個服務提供者實例。Ribbon(負載均衡器)的作用正是提供負載均衡機制,當為Ribbon配置服務提供者地址列表后,Ribbon就可以基于某種負載均衡算法,自動幫助服務消費者處理請求。Ribbon提供的負載均衡算法有多種,例如輪詢、加權響應時間、隨機和區域感知輪詢。SpringCloud斷路器—SpringCloudNetflixHystrix斷路器能夠統計一段時間內調用失敗的次數,并決定是正常請求依賴的服務還是直接返回。當對特定服務的調用的不可用達到一個閾值(Hystrix是5秒20次)時,斷路器將會被打開。斷路器被打開后,可以避免連鎖故障,fallback方法直接返回一個固定值SpringCloud服務消費者—SpringCloudOpenFeignFeign是一種聲明式、模板化的HTTP客戶端,主要作為服務消費者用于調用其他服務。Feign大大簡化了服務調用客戶端的開發量,通過簡單的注解就能完成對服務提供方的接口綁定。Feign整合了Ribbon,所以能夠做到負載均衡地調用服務。Feign也整合了Hystrix,所以具有斷路器的功能,當服務調用失敗后,會返回預先設定的fallback函數的值。SpringCloud服務網關—SpringCloudNetflixZuul當一個請求到達系統后,應該最先到達網關,由網關進行統一鑒權等操作后再將請求轉發至各個具體的服務。Zuul的主要功能是路由轉發和過濾器。Zuul默認和Ribbon結合實現了負載均衡的功能。分布式配置—SpringCloudConfig動態拉取遠程數據倉庫的配置文件,并把配置文件應用至對應的微服務中容器概念:容器是一種允許在資源隔離的過程中運行應用程序和其依賴項的、輕量的、操作系統級別的虛擬化技術,運行應用程序所需的所有必要組件都被打包為單個鏡像,該鏡像是可以重復使用的。當鏡像運行時,它運行在獨立的環境中,并不會和其他的應用共享主機操作系統的內存、CPU或磁盤。容器特點:容器實現的是操作系統級虛擬化,具有輕量級的特點,與虛擬機相比較,容器性能更好,一般能做到秒級啟動。容器沒有自己的OS,直接共享宿主機的內核,也沒有管理程序(hypervisor)這一層進行資源隔離和限制,所有對于容器進程的限制都是基于操作系統本身的能力來進行的。容器在版本控制、計算環境可移植性和標準化方面也有很多優點。容器Docker容器技術:用于研發、測試、交付和運行軟件應用的容器引擎。容器Docker使用戶可以在容器中封裝和運行軟件應用。高資源利用率與隔離性使我們可以在同一時間、同一服務器上運行多個容器。容器輕量的特性使它們可以在系統內核中直接運行,而不需要對應用的額外負載進行管理。Kubernetes概念:Kubernetes是一個可移植的、可擴展的開源平臺,用于管理容器化的工作負載和服務,可促進聲明式配置和自動化。功能服務發現和負載均衡存儲編排自動部署和回滾自動完成裝箱計算自我修復密鑰與配置管理特性不限制支持的應用程序類型不部署源代碼,也不構建應用程序不提供應用程序級別的服務作為內置服務不要求日志記錄、監視或警報解決方案不提供或不要求配置語言/系統不提供也不采用任何全面的機器配置、維護、管理或自我修復系統。Kubernetes架構主從分布式結構,其節點在角色上分為Master節點和Node節點最小部署單元:

PodMaster組件:APIServeretcdControllerManagerSchedulerNode組件:KubeletProxy容器運行時服務網格概念服務網格是一個專門處理服務通信的基礎設施層。它的職責是在由云原生應用組成服務的復雜拓撲結構下進行可靠的請求傳送。架構服務網格的基礎設施層主要分為兩部分:控制平面與數據平面。每個服務實例都與一個反向代理服務器實例配對特點微服務治理與業務邏輯解耦可以實現異構系統的統一治理一定的可觀察性和流量控制提供了保護網絡調用的功能和基礎設施提綱7.1 云原生的概念與架構7.2 云原生關鍵技術7.3 云原生應用開發7.4 云原生技術特色實例概述云原生應用開發實例——線上考試系統業務:集題庫、組卷、發布、考試、評卷、系統考試報告業務閉環的考試平臺設計:使用SaaS模式基于SpringCloud的微服務技術構建。在數據的設計模式上為每一個租戶新建獨立的Schema或者Database共享數據庫實例,因為考試服務為互聯網應用,所以選擇SpringCloud微服務技術為項目基礎支撐技術,同時使用Kubernetes容器編排系統進行考試系統的部署和運維。考試系統主要分為基礎數據服務、系統管理、試卷中心、考試中心四個模塊系統設計系統架構設計

采用分布式體系架構設計,前端由Nginx服務器反向代理,訪問網關,由網關將請求分發給對應微服務,服務與服務之間通過Feign進行數據接口的調用,服務均被注冊至Eureka中,將SpringCloud微服務使用Kubernetes進行容器化部署。系統設計功能模塊劃分

系統設計基礎框架設計:主要分為以下5個部分es-util:工具類es-log:統一異常處理切面、錯誤碼,統一日志收集切面es-core:Entity、DTO、Controller等Base類、請求應答報文類、封裝公共字段注解自動注入功能切面es-cache-redis:RedisAPI封裝、Redis分布式鎖es-config:集成Swagger,便于查看API發布系統設計功能模塊詳細設計

以系統管理微服務為例,系統管理微服務主要包括組織機構管理模塊、公司管理模塊、部門管理模塊、資源管理模塊、職位管理模塊、用戶管理模塊、角色管理模塊、參數管理模塊、用戶在線管理模塊和登錄模塊。系統管理微服務的設計主要包括以下幾個方面:各個層級POJO的Base類設計Controller的Base類設計持久層框架的設計錯誤碼的設計API的設計系統設計動態模型設計

動態模型用于描述系統的過程和行為,通常使用時序圖、流程圖、狀態圖和活動圖等描述系統的動態模型,可以將需求設計明確化、可視化。通過動態模型的評估,可以及時發現系統中設計的缺陷,避免不必要的損失。下圖為系統管理微服務中的功能流程圖(右圖接下)系統設計動態模型設計

系統網關的工作時序圖系統實現系統實現流程首先在本地和服務器上配置好所需要的環境,搭建公用代碼倉庫,進行SpringCloudConfig配置,以便分布式部署同步配置文件根據所設計的E-R圖構建相應的數據庫和表,規范好每個字段對應的屬性和主外鍵約束,并錄入一些示例數據每位工程師開發各自負責的基礎框架,并把它們集成為基礎框架es-common進行第一次集成開發,每位工程師開發自己負責的部分,開發完成后進行第一次集成測試進行第二次集成開發,每位組員開發各自負責的部分,開發完成后進行第二次集成測試。開發模式按照第一次集成開發的模式前端開發最終集成測試各個模塊功能,修復Bug將本地部署的服務遷到云服務器,使用Kubernetes進行編排管理系統實現開發可能需要的軟件系統實現開發可能需要的插件系統實現后端服務的開發編寫所需功能的API編寫該功能模塊對應的ExceptionCode枚舉類,在Service層拋出Service異常,在Controller層拋出Business異常編寫該功能所涉及的DTO、VO、Query、QueryVO等POJO編寫Service接口與對應的實現類,實現類主要使用所配置的Tk.MyBatis通用Mapper實現,無須XML配置的單表增刪改查操作編寫Controller對API進行實現在Controller中使用Service進行服務調用,并進行一些數據驗證,不符合則拋出異常Controller的方法中需要對入參進行參數驗證、以保證進入方法中參數的合法性系統實現前端的實現

項目采用了微服務的后端架構開發,服務間均采用API通信,因此可以很容易做到前后端分離,前端開發技術的選擇不限。SpringCloud的使用實例服務注冊和發現——創建服務注冊中心(EurekaServer)創建一個Maven工程,并在pom文件中引入SpringCloudEurekaServer相關依賴EurekaServer的配置文件application.yml如右圖所示啟動一個服務注冊中心,只需要一個注解@EnableEurekaServer,需要在Springboot工程的啟動Application類上加該注解SpringCloud的使用實例服務注冊和發現——創建服務提供者(EurekaClient)創建一個Maven工程,并在pom文件中引入SpringCloudEurekaClient相關依賴通過注解@EnableEurekaClient表明自己是一個EurekaClient。在配置文件中注明自己的服務注冊中心的地址,application.yml配置文件如下:啟動工程,打開http://localhost:8761,即EurekaServer的網址,就可以看到注冊中心SpringCloud的使用實例服務消費者(Feign)新建一個Maven工程,并在pom文件中引入Feign的起步依賴spring-cloud-starter-feign、Eureka的起步依賴spring-cloud-starter-netflix-eureka-client和其他相關依賴。在程序的啟動類ServiceFeignApplication,加上@EnableFeignClients注解,開啟Feign的功能:SpringCloud的使用實例服務消費者(Feign)定義一個Feign接口,通過@FeignClient(“服務名”)來指定調用哪個服務。比如在代碼中調用了service-hi服務的“/hi”接口,代碼如下之后就可以通過SpringCloud的自動注入注解@Autowired對其他微服務進行調用,Feign會負責調用,并自動實現負載均衡SpringCloud的使用實例斷路器(Hystrix)在配置文件中加入以下代碼SchedualServiceHiHystric需要實現SchedualServiceHi接口,并將其注入IoC容器中,代碼如下要開啟Feign,只需在@Feign注解中加上fallback的指定類SpringCloud的使用實例路由網關——創建Zuul網關新建一個Maven工程,在pom文件中引入Zuul所需的spring-cloud-starter-netflix_x0002_zuul、spring-cloud-starter-netflix-eureka-client和其他相關依賴。配置文件application.yml如左示代碼在其入口Application類中加上注解@EnableZuulProxy,開啟Zuul的功能:SpringCloud的使用實例路由網關——服務過濾Zuul不僅是路由,還能過濾,做一些安全驗證。下面的代碼展示了Zuul的鑒權功能:使用了JWT進行Token生成,在header中攜帶對應的Token和userId的請求才允許訪問。SpringCloud的使用實例分布式配置中心(SpringCloudConfig)——構建配置服務器創建一個Maven工程,引入配置服務器所需的spring-cloud-config-server和其他相關依賴。在程序的入口Application類加上@EnableConfigServer注解,開啟配置服務器的功能,代碼如下SpringCloud的使用實例分布式配置中心(SpringCloudConfig)——構建配置服務器在程序的配置文件perties中做以下配置SpringCloud的使用實例分布式配置中心(SpringCloudConfig)——構建配置客戶端創建Maven項目,引入spring-cloud-starter-config和其他相關依賴。其配置文件bootstrap.properties如下:程序的入口類,寫一個API接口“/hi”,返回從配置中心讀取的foo變量的值,代碼如下:持續集成與部署使用的技術統一的代碼倉庫在GitHub、Gitee、GitLab等公有或私有的代碼倉庫平臺上構建一個Project作為項目的統一代碼倉庫使用Jenkins持續集成Jenkins可以結合Git版本控制工具和GitHub等云遠程代碼倉庫使用,并選擇Maven作為項目構建工具。持續集成與部署將SpringCloud微服務封裝為Docker鏡像創建SpringCloud微服務對應的Dockerfile文件。這里使用7.3.4節中的service-hi服務提供者,具體如下:使用命令dockerbuild-tservice-hi:v0.0.1構建Docker鏡像。使用命令dockerrun--nameservice-hi-d-p8762:8762service-hi:v0.0.1,運行構建好的微服務鏡像,并將宿主機的8762端口映射到容器的8762端口。在Eureka注冊中心中查看注冊項,注冊上后表示鏡像能夠正常使用。持續集成與部署使用Kubernetes中的Deployment部署高可用微服務Pod:Pod是可以在Kubernetes中創建和管理的、可部署的最小計算單元。Pod可以由一個甚至是一組共享相同運行環境的容器組成。執行以下命令可以創建Pod:持續集成與部署使用Kubernetes中的Deployment部署高可用微服務Service:Kubernetes的Service資源為一組提供相同功能服務的Pod充當入口執行以下命令創建該Service,把服務和8762端口暴露出來:持續集成與部署使用Kubernetes中的Deployment部署高可用微服務Deployment:Deployment可以創建指定數量的Pod并將其部署到各個Node上,可完成更新、回滾等操作。使用以下命令創建Deployment:持續集成與部署零停機時間滾動部署編輯service-hi-deployment.yaml文件,修改容器鏡像來引用新的鏡像service-hi:v0.0.2,保存并執行以下命令:可以使用以下命令檢查滾動部署的狀態:持續集成與部署回滾如果當前版本有問題,則需要回滾至前一個版本。執行以下命令:

返回:再執行:

返回:提綱7.1 云原生的概念與架構7.2 云原生關鍵技術7.3 云原生應用開發7.4 云原生技術特色云原生應用的12要素目的:為構建如下的軟件即服務(SaaS)應用提供方法論使用標準化流程自動配置,從而使新的開發者花費最少的學習成本加入這個項目。盡可能和操作系統劃清界限,在各個系統中提供最大的可移植性。適合部署在現代的云計算平臺,從而在服務器和系統管理方面節省資源。將開發環境和生產環境之間的差異降至最低,并使用持續交付實施敏捷開發。可以在工具、架構和開發流程不發生明顯變化的前提下實現擴展。12要素(12-Factor)應用是一系列云原生應用架構的模式集合,用來說明什么樣的應用才是云原生應用,它們關注速度、安全、通過聲明式配置擴展、可橫向擴展的無狀態/無共享進程以及部署環境的整體松耦合云原生應用的12要素1.基準代碼“一份基準代碼”是指基準代碼和應用之間總是保持一一對應的關系。一旦有多個基準代碼,則不是一個應用,而是一個分布式系統。多個應用共享一份基準代碼有悖于12-Factor原則。解決方法是將共享的代碼拆成獨立的類庫,通過依賴管理去使用它們。多份部署”是指每個應用只對應一份基準代碼,但可以同時存在多份部署,每份部署相當于運行一個應用的實例。區別在于:可以存在不同的配置文件對應不同的環境,例如開發環境、測試環境、預發布環境、生產環境等。可以使用不同的版本。云原生應用的12要素2.依賴12-Factor原則下的應用會通過依賴清單來顯式確切地聲明所有的依賴項。在運行工程中通過依賴隔離工具來保證應用不會去調用系統中存在但依賴清單中未聲明的依賴項。顯式聲明依賴項的優點在于可以簡化環境配置流程,開發者關注應用的基準代碼,而依賴庫則由依賴庫管理工具來管理和配置。3.配置12-Factor原則要求代碼和配置嚴格分離,配置單獨存儲,避免將配置硬編碼寫在代碼中。12-Factor原則建議將應用的配置存儲在環境變量中,環境變量可以方便在不同的部署環境中修改,而不侵入原有的代碼。環境變量的粒度要足夠小且相對獨立。云原生應用的12要素4.后端服務對于12-Factor應用來說,后端服務都是附加資源,沒有區別對待,當其中一份后端服務失效后,可以切換到原先備份的后端服務中,而不需要修改代碼(可能需要修改配置)。12-Factor應用與后端服務保持松耦合的關系。5.構建、發布、運行12-Factor應用嚴格區分構建、發布、運行三個步驟,每一個發布版本對應一個唯一的發布ID,可以使用時間戳或遞增的版本序列號。部署新代碼之前,由開發人員觸發構建操作,構建階段可以相對復雜一些,方便錯誤信息被展示出來并得到妥善處理。運行階段可以人為觸發或自動運行,運行階段應該保持盡可能少的模塊。云原生應用的12要素6.進程12-Factor應用的進程必須是無狀態且無共享的,任何需要持久化的數據都要存儲在后端服務中。12-Factor應用更傾向于在構建步驟執行二進制文件的編譯,而不是在運行階段。7.端口綁定應用通過端口綁定提供服務,并監聽發送至該端口的請求。8.并發12-Factor應用的進程具有無共享、水平分區的特性,使得水平擴展較為容易。12-Factor應用的進程不需要守護進程或者寫入PID文件,而是通過進程管理器(例如systemd)來管理輸出流、響應崩潰的進程,以及處理用戶觸發的重啟或者關閉超級進程的操

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論