• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      電信運(yùn)營(yíng)商“互聯(lián)網(wǎng)+”業(yè)務(wù)中的分布式存儲(chǔ)技術(shù)研究

      2016-05-14 03:13:45
      信息通信技術(shù) 2016年5期
      關(guān)鍵詞:存儲(chǔ)系統(tǒng)海量分布式

      聯(lián)通系統(tǒng)集成有限公司 北京 100032

      1 分布式存儲(chǔ)技術(shù)概述

      1.1 分布式存儲(chǔ)概念

      運(yùn)用分布式計(jì)算技術(shù)把大量標(biāo)準(zhǔn)X86服務(wù)器的本地存儲(chǔ)介質(zhì)進(jìn)行聚合,將這些存儲(chǔ)資源通過(guò)網(wǎng)絡(luò)整合為一個(gè)既具備傳統(tǒng)SAN/NAS的企業(yè)級(jí)功能和特性又具有良好擴(kuò)展性、低成本、高可靠、易用的存儲(chǔ)系統(tǒng),形成全新的產(chǎn)品類(lèi)型。目前,市場(chǎng)上絕大部分分布式存儲(chǔ)產(chǎn)品都是由上述形態(tài)構(gòu)成,我們將這一類(lèi)產(chǎn)品稱(chēng)為Server SAN。

      1.2 分布式存儲(chǔ)的特點(diǎn)

      1)良好的擴(kuò)展性。它可以擴(kuò)展到幾百臺(tái)甚至幾千臺(tái)的集群規(guī)模,容量達(dá)PB級(jí),而且,其擴(kuò)展的方式是漸進(jìn)式的,隨著規(guī)模的增長(zhǎng),系統(tǒng)整體性能表現(xiàn)為線性增長(zhǎng)。

      2)低成本。由成本低廉的PC服務(wù)器組成的集群在性能方面能夠達(dá)到或超越中高端存儲(chǔ)的性能,在成本上遠(yuǎn)低于中高端存儲(chǔ)。這也是分布式存儲(chǔ)最吸引人之處。但成本低廉的PC服務(wù)器在硬件可靠性方面與大型機(jī)相比相去甚遠(yuǎn),于是分布式系統(tǒng)由軟件來(lái)對(duì)硬件進(jìn)行容錯(cuò),通過(guò)軟件來(lái)保證整體系統(tǒng)的高可靠性。

      3)高可靠性。通過(guò)把數(shù)據(jù)分成2-3個(gè)副本負(fù)載分散到眾多的機(jī)器上,單個(gè)節(jié)點(diǎn)故障最多只會(huì)使一個(gè)副本丟失,而其它副本不會(huì)受任何影響。理想條件下,某一時(shí)刻如果有1/3的節(jié)點(diǎn)出現(xiàn)故障,存儲(chǔ)仍能繼續(xù)工作,只不過(guò)損失1/3的性能。另外,線性擴(kuò)展能力也使得增加、減少機(jī)器非常方便,可以實(shí)現(xiàn)自動(dòng)運(yùn)維。

      4)易用性。分布式存儲(chǔ)需要能夠提供易用的對(duì)外接口,另外,也要求具備完善的監(jiān)控、運(yùn)維工具,并能夠方便地與其他系統(tǒng)集成[1]。

      1.3 分布式存儲(chǔ)的關(guān)鍵技術(shù)

      對(duì)于大多數(shù)分布式文件系統(tǒng),通常將元數(shù)據(jù)(inode)與數(shù)據(jù)(block)兩者獨(dú)立開(kāi)來(lái),即將控制流與數(shù)據(jù)流進(jìn)行分離,從而獲得更高的系統(tǒng)擴(kuò)展性和I/O并發(fā)性。因而,元數(shù)據(jù)管理架構(gòu)顯得至關(guān)重要,直接影響到系統(tǒng)的擴(kuò)展性、性能、可靠性和穩(wěn)定性等。存儲(chǔ)系統(tǒng)要具有很高的Scale-Out(橫向擴(kuò)展)特性,最大的挑戰(zhàn)之一就是記錄數(shù)據(jù)邏輯與物理位置的映像關(guān)系即數(shù)據(jù)元數(shù)據(jù),還包括諸如屬性和訪問(wèn)權(quán)限等信息。特別是對(duì)于海量小文件的應(yīng)用,元數(shù)據(jù)問(wèn)題是個(gè)非常大的挑戰(zhàn)??傮w來(lái)說(shuō),分布式文件系統(tǒng)的元數(shù)據(jù)管理大致可以分為三種架構(gòu),即集中式元數(shù)據(jù)架構(gòu)(如Lustre、PVFS、StorNext、GFS等)、分布式元數(shù)據(jù)架構(gòu)(如PanFS、GPFS、Ceph等)和無(wú)元數(shù)據(jù)架構(gòu)(最典型的就是GlusterFS)。這三種架構(gòu)各有優(yōu)勢(shì)和不足之處,實(shí)際系統(tǒng)實(shí)現(xiàn)中也難分優(yōu)劣,三種元數(shù)據(jù)架構(gòu)都有各自存在的理由。[2]

      1.4 分布式存儲(chǔ)的主流產(chǎn)品

      目前,市場(chǎng)上絕大部分Server SAN類(lèi)型的分布式存儲(chǔ)產(chǎn)品都是由開(kāi)源的或自研的分布式文件系統(tǒng)+標(biāo)準(zhǔn)X86服務(wù)器+存儲(chǔ)管理軟件來(lái)實(shí)現(xiàn)的。其中,分布式文件系統(tǒng)包括Ceph、GlusterFS、HDFS、GFS、OpenStack swift、MogileFS、FastDFS、MooseFS以及NFS等,根據(jù)不同應(yīng)用場(chǎng)景,選擇不同分布式文件系統(tǒng);標(biāo)準(zhǔn)X86服務(wù)器一般會(huì)選用硬盤(pán)槽位較多的服務(wù)器;存儲(chǔ)管理軟件主要有兩個(gè)作用,一是封裝多種協(xié)議供前端設(shè)備訪問(wèn),例如iSCSI(塊設(shè)備)、NFS(文件服務(wù))、Amazon S3(對(duì)象存儲(chǔ))等,第二是根據(jù)每個(gè)廠商的自身技術(shù)實(shí)力,開(kāi)發(fā)企業(yè)級(jí)的存儲(chǔ)功能,例如提升性能的SSD加速、存儲(chǔ)自動(dòng)分層,數(shù)據(jù)負(fù)載均衡功能,增強(qiáng)可靠性的多副本、糾刪碼、自動(dòng)修復(fù)功能,提高利用率的去重、壓縮、精簡(jiǎn)配置等功能。

      2 海量小文件問(wèn)題

      通常我們稱(chēng)小于1MB的文件為小文件,百萬(wàn)級(jí)數(shù)量及以上稱(chēng)為海量,由此量化定義海量小文件問(wèn)題[3]。海量小文件在目前實(shí)際中越來(lái)越常見(jiàn),如社交網(wǎng)站、電子商務(wù)、廣電、網(wǎng)絡(luò)視頻、高性能計(jì)算,例如以下幾個(gè)場(chǎng)景。

      1)社交網(wǎng)站Facebook存儲(chǔ)了600億張以上的圖片,推出專(zhuān)門(mén)針對(duì)海量小圖片定制優(yōu)化的Haystack進(jìn)行存儲(chǔ)。

      2)淘寶作為最大的C2C電子商務(wù)網(wǎng)站,存儲(chǔ)超過(guò)200億張圖片,平均大小僅為15KB,也推出了針對(duì)小文件優(yōu)化的TFS文件系統(tǒng)存儲(chǔ)這些圖片。

      3)歌華有線可以進(jìn)行圖書(shū)和視頻的在線點(diǎn)播,圖書(shū)每頁(yè)會(huì)掃描成一個(gè)幾十KB大小的圖片,總圖片數(shù)量能夠超過(guò)20億。

      從上述數(shù)據(jù)和近幾年的統(tǒng)計(jì)結(jié)果來(lái)看,非結(jié)構(gòu)化數(shù)據(jù)的增長(zhǎng)趨勢(shì)明顯已經(jīng)超過(guò)了結(jié)構(gòu)化數(shù)據(jù)。未來(lái),企業(yè)勢(shì)必要選擇一種更適合的存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)設(shè)備,這種存儲(chǔ)設(shè)備必須具備良好的橫向擴(kuò)展能力、高可靠性,還要支持大數(shù)據(jù)類(lèi)的應(yīng)用,并能夠構(gòu)建云計(jì)算基礎(chǔ),同時(shí),它還必須得在合理的成本之內(nèi)。分布式存儲(chǔ)正迅速成為一種可行的方案,因?yàn)槠鋽U(kuò)展的上限比集中存儲(chǔ)要高,而且成本更低。

      2.1 聯(lián)通集團(tuán)應(yīng)用系統(tǒng)現(xiàn)狀

      目前,聯(lián)通集團(tuán)內(nèi)部眾多系統(tǒng)也面臨著海量小文件的問(wèn)題,以電子商城系統(tǒng)為例,電子商城系統(tǒng)屬于核心系統(tǒng),其中存儲(chǔ)了眾多用戶(hù)信息的圖片文件,文件大小在100k~200k之間,數(shù)量為億級(jí),整體容量約20TB左右。商城系統(tǒng)架構(gòu)如圖1所示。

      圖1 聯(lián)通集團(tuán)電子商城架構(gòu)圖

      電子商城系統(tǒng)目前分為商城前置機(jī)和商城主存儲(chǔ)兩個(gè)部分,商城前置機(jī)部分共有31臺(tái)PC服務(wù)器作為前置機(jī),分別存儲(chǔ)不同營(yíng)業(yè)廳上傳的近半年的文件,圖片主存儲(chǔ)部分由2臺(tái)PC服務(wù)器和1臺(tái)終端存儲(chǔ)構(gòu)成,存儲(chǔ)的是過(guò)期半年的圖片文件。商城系統(tǒng)的文件上傳和調(diào)閱過(guò)程如下。

      1)上傳過(guò)程。營(yíng)業(yè)廳的客戶(hù)端在上傳時(shí),需要輸入唯一的身份證號(hào),核心系統(tǒng)的應(yīng)用程序會(huì)以身份證號(hào)碼作為唯一標(biāo)識(shí)并根據(jù)上傳文件的營(yíng)業(yè)廳編碼、日期信息生成一個(gè)目錄索引,然后核心系統(tǒng)應(yīng)用程序會(huì)將目錄索引寫(xiě)入到核心系統(tǒng)數(shù)據(jù)庫(kù)中。之后核心系統(tǒng)應(yīng)用程序會(huì)將圖片按照目錄索引寫(xiě)入到對(duì)應(yīng)的前置機(jī)中存儲(chǔ)起來(lái)。由于前置機(jī)的存儲(chǔ)容量有限,6個(gè)月之后,前置機(jī)會(huì)將6個(gè)月以前的數(shù)據(jù)遷移至圖片主存儲(chǔ)中,并通過(guò)核心系統(tǒng)應(yīng)用程序修改數(shù)據(jù)中的目錄索引。

      2)調(diào)閱過(guò)程。營(yíng)業(yè)廳的客戶(hù)端在查閱某一圖片文件時(shí),首先,根據(jù)唯一的身份證號(hào)標(biāo)識(shí)將向核心系統(tǒng)應(yīng)用程序發(fā)起請(qǐng)求,應(yīng)用程序會(huì)在核心系統(tǒng)數(shù)據(jù)庫(kù)中查詢(xún)圖片的目錄索引。之后,核心系統(tǒng)應(yīng)用程序會(huì)根據(jù)索引讀取存在前置機(jī)上或圖片主存儲(chǔ)上的用戶(hù)信息文件,并緩存在自己的內(nèi)容緩存中,供客戶(hù)端查看。

      目前,聯(lián)通電子商城系統(tǒng)主要存在的問(wèn)題是系統(tǒng)主存儲(chǔ)調(diào)閱時(shí)性能不高,主存儲(chǔ)使用的是一臺(tái)中低端HDS存儲(chǔ),本身性能不強(qiáng),并且還存儲(chǔ)了上億的圖片小文件,而傳統(tǒng)存儲(chǔ)對(duì)于海量小文件的支持并不好,因此在查閱主存儲(chǔ)上的文件時(shí)性能不是很好,由于文件數(shù)量巨大,從查詢(xún)請(qǐng)求發(fā)起到接收到最終結(jié)果,會(huì)有3~5秒左右的延遲,這對(duì)前端業(yè)務(wù)人員的耐心是一種考驗(yàn)。

      2.2 傳統(tǒng)存儲(chǔ)無(wú)法解決海量小文件問(wèn)題

      傳統(tǒng)存儲(chǔ)解決不好海量小文件問(wèn)題主要有兩方面原因。第一,作為傳統(tǒng)存儲(chǔ)主要使用的存儲(chǔ)介質(zhì),機(jī)械硬盤(pán)本身就不適合隨機(jī)小文件I/O讀寫(xiě),機(jī)械硬盤(pán)最適合的是順序的大文件I/O讀寫(xiě),這是由存儲(chǔ)介質(zhì)自身特性決定的,也是傳統(tǒng)存儲(chǔ)在海量小文件場(chǎng)景下性能表現(xiàn)不佳的最根本原因。第二,傳統(tǒng)存儲(chǔ)大都使用本地文件系統(tǒng),比如XFS/EXT4、EXT3、EXT2、JFS2、ZFS,這些文件系統(tǒng)是針對(duì)機(jī)械硬盤(pán)適合大文件I/O特性而設(shè)計(jì)的,在I/O訪問(wèn)流程、空間利用率和元數(shù)據(jù)管理方面都側(cè)重大文件,而在應(yīng)對(duì)海量小文件時(shí),由于文件數(shù)量多,傳統(tǒng)文件系統(tǒng)中無(wú)法緩存所有inode信息,因此,系統(tǒng)將進(jìn)行頻繁的I/O,這會(huì)使讀寫(xiě)數(shù)據(jù)的速率降低。

      2.3 分布式存儲(chǔ)如何解決海量小文件問(wèn)題

      海量小文件由于數(shù)量巨大,又通常需要進(jìn)行共享和并發(fā)訪問(wèn),目前主流的解決方案是采用分布式存儲(chǔ)技術(shù),包括分布式文件系統(tǒng)和分布式對(duì)象存儲(chǔ)系統(tǒng),每個(gè)存儲(chǔ)節(jié)點(diǎn)底層采用本地文件系統(tǒng)進(jìn)行管理。

      對(duì)于分布式存儲(chǔ)而言,通常將元數(shù)據(jù)與數(shù)據(jù)兩者獨(dú)立開(kāi)來(lái),即控制流與數(shù)據(jù)流進(jìn)行分離。元數(shù)據(jù)節(jié)點(diǎn)處理控制流,通常稱(chēng)為MDC。通過(guò)擴(kuò)展元數(shù)據(jù)節(jié)點(diǎn),可以擴(kuò)展元數(shù)據(jù)的存儲(chǔ)容量、提高元數(shù)據(jù)的并發(fā)訪問(wèn)能力,從而提升整個(gè)系統(tǒng)的I/O并發(fā)能力。數(shù)據(jù)節(jié)點(diǎn)處理數(shù)據(jù)流,通過(guò)擴(kuò)展數(shù)據(jù)節(jié)點(diǎn),可以將數(shù)據(jù)I/O訪問(wèn)分散到多個(gè)數(shù)據(jù)節(jié)點(diǎn),從而實(shí)現(xiàn)容量和性能的整體提升。

      相比傳統(tǒng)存儲(chǔ),分布式存儲(chǔ)可以靈活地調(diào)整元數(shù)據(jù)節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)的配比,從而提高空間利用率;對(duì)于海量小文件的情況,還可以將元數(shù)據(jù)緩存在多個(gè)節(jié)點(diǎn)的SSD或內(nèi)存中,從而提高元數(shù)據(jù)的訪問(wèn)效率;同時(shí),分布式存儲(chǔ)還可以進(jìn)一步優(yōu)化I/O訪問(wèn)流程,提升I/O效率??傮w上來(lái)說(shuō),分布式存儲(chǔ)與傳統(tǒng)存儲(chǔ)相比,對(duì)海量小文件的優(yōu)化可以更加靈活,有更多可優(yōu)化的手段去適配海量小文件的場(chǎng)景。

      分布式存儲(chǔ)邏輯架構(gòu)如圖2所示。

      3 如何提高分布式存儲(chǔ)的性能

      根據(jù)上述內(nèi)容中對(duì)海量小文件問(wèn)題根源的剖析,結(jié)合Facebook Haystack、淘寶TFS等分布式存儲(chǔ)在海量小文件應(yīng)用方面的優(yōu)化實(shí)踐,我們認(rèn)為硬件優(yōu)化、Cache管理優(yōu)化、小文件合并存儲(chǔ)、元數(shù)據(jù)管理優(yōu)化等是幾種行之有效的優(yōu)化方法。

      圖2 分布式存儲(chǔ)邏輯架構(gòu)圖

      3.1 提高硬件配置

      分布式存儲(chǔ)雖然在擴(kuò)展性和靈活性方面比傳統(tǒng)存儲(chǔ)要好,但其由于各個(gè)節(jié)點(diǎn)之間必須通過(guò)網(wǎng)絡(luò)通信,因此,增加了數(shù)據(jù)訪問(wèn)的開(kāi)銷(xiāo)。例如,分布式存儲(chǔ)系統(tǒng)的客戶(hù)端與元數(shù)據(jù)服務(wù)器和I/O服務(wù)器之間的網(wǎng)絡(luò)通常為T(mén)CP/IP網(wǎng)絡(luò),網(wǎng)絡(luò)開(kāi)銷(xiāo)較大,增大了文件訪問(wèn)的延時(shí)。其他方面,服務(wù)器的CPU、內(nèi)存、硬盤(pán)等硬件配置也或多或少地會(huì)對(duì)分布式存儲(chǔ)系統(tǒng)產(chǎn)生影響。

      如果不考慮成本問(wèn)題,硬件優(yōu)化是最為直接有效的優(yōu)化方法,可以采用更高性能的硬件來(lái)提高分布式存儲(chǔ)系統(tǒng)的性能。1)使用速度更快的SSD作為全部或部分存儲(chǔ)介質(zhì),部署時(shí)采用數(shù)據(jù)分層存儲(chǔ)或Cache加速,可以顯著提高隨機(jī)讀寫(xiě)場(chǎng)景下的IOPS性能;2)采用處理能力更強(qiáng)或更多的CPU,可以提高系統(tǒng)的I/O處理速度和并發(fā)性;3)配置更大容量的內(nèi)存,有效提高數(shù)據(jù)緩存命中率;4)采用延遲更小、帶寬更高的網(wǎng)絡(luò)設(shè)備優(yōu)化網(wǎng)絡(luò)傳輸效率,比如萬(wàn)兆網(wǎng)絡(luò)或Inf i niBand網(wǎng)絡(luò)。

      擴(kuò)展硬件設(shè)備時(shí)需要注意,硬件設(shè)備在性能上要做到匹配,尤其是磁盤(pán)速率和網(wǎng)絡(luò)速率要匹配,例如萬(wàn)兆網(wǎng)絡(luò)中理論帶寬為1.28GB,SATA3理論速率為600MB左右,如果采用萬(wàn)兆網(wǎng)絡(luò)+SATA盤(pán),此時(shí)系統(tǒng)瓶頸在硬盤(pán)處,如果換成SSD盤(pán),就可以消除硬盤(pán)的瓶頸。必要時(shí)需要調(diào)節(jié)操作系統(tǒng)內(nèi)核參數(shù),以?xún)?yōu)化通過(guò)網(wǎng)絡(luò)接收和發(fā)送數(shù)據(jù)的效率,如表1所示(各參數(shù)的具體數(shù)值需要按照實(shí)際項(xiàng)目需求來(lái)定)。

      表1 操作系統(tǒng)優(yōu)化參數(shù)

      3.2 提高元數(shù)據(jù)管理效率

      分布式存儲(chǔ)系統(tǒng)架構(gòu)大致分兩種,即有中心架構(gòu)和無(wú)中心架構(gòu)。在有中心架構(gòu)的分布式存儲(chǔ)系統(tǒng)中,通常有一個(gè)元數(shù)據(jù)服務(wù)器來(lái)統(tǒng)一管理元數(shù)據(jù)。而在無(wú)中心的架構(gòu)中,元數(shù)據(jù)會(huì)分散存儲(chǔ)于各個(gè)存儲(chǔ)節(jié)點(diǎn)上,通過(guò)哈希算法進(jìn)行管理和定位??蛻?hù)端在讀寫(xiě)小文件數(shù)據(jù)前,需要通過(guò)與元數(shù)據(jù)服務(wù)器(有中心架構(gòu))或存儲(chǔ)節(jié)點(diǎn)(無(wú)中心架構(gòu))進(jìn)行通信,以獲取位置信息,這一過(guò)程相當(dāng)于額外增加一次網(wǎng)絡(luò)傳輸開(kāi)銷(xiāo)和元數(shù)據(jù)服務(wù)訪問(wèn)開(kāi)銷(xiāo)。對(duì)小文件I/O來(lái)說(shuō),開(kāi)銷(xiāo)影響非常大;因此,對(duì)于有中心架構(gòu),元數(shù)據(jù)管理主要從減少元數(shù)據(jù)量、減少元數(shù)據(jù)訪問(wèn)次數(shù)、提高元數(shù)據(jù)檢索效率幾個(gè)方面著手。

      在分布式存儲(chǔ)系統(tǒng)中,可以根據(jù)實(shí)際應(yīng)用需求,對(duì)元數(shù)據(jù)進(jìn)行適當(dāng)精簡(jiǎn),只保留需要的元數(shù)據(jù)信息即可,從而達(dá)到減少元數(shù)據(jù)的目的。例如,在文件命名時(shí),可以加入位置信息;對(duì)象存儲(chǔ)系統(tǒng)可以不設(shè)置訪問(wèn)日期、訪問(wèn)權(quán)限等元數(shù)據(jù)信息,這樣可以減少元數(shù)據(jù)的存儲(chǔ)量。需要注意的是,精簡(jiǎn)元數(shù)據(jù)信息雖然可以帶來(lái)性能上的提升,但也會(huì)帶來(lái)管理上的不便,需要應(yīng)用系統(tǒng)在開(kāi)發(fā)時(shí)統(tǒng)一格式,并且開(kāi)發(fā)人員要嚴(yán)格遵守制度,從管理上杜絕可能造成的混亂。

      另外,元數(shù)據(jù)操作在小文件整個(gè)I/O過(guò)程中占了大部分時(shí)間,可以對(duì)多個(gè)RPC請(qǐng)求進(jìn)行合并,從而大幅減少對(duì)元數(shù)據(jù)訪問(wèn)次數(shù)。還可以在客戶(hù)端對(duì)元數(shù)據(jù)進(jìn)行緩存,利用Cache機(jī)制顯著減少元數(shù)據(jù)訪問(wèn)次數(shù)。

      在元數(shù)據(jù)服務(wù)器上或存儲(chǔ)節(jié)點(diǎn)上,元數(shù)據(jù)最終持久化存儲(chǔ)在數(shù)據(jù)庫(kù)上或磁盤(pán)文件系統(tǒng)目錄上,甚至是單個(gè)文件中。為達(dá)到高效的元數(shù)據(jù)檢索,需要使用大容量?jī)?nèi)存和更快速度的磁盤(pán)(例如SSD磁盤(pán)),同時(shí),還可以通過(guò)多級(jí)索引、BloomFilter等減少元數(shù)據(jù)操作過(guò)程的I/O訪問(wèn)次數(shù),進(jìn)一步加快元數(shù)據(jù)訪問(wèn)速度。

      3.3 優(yōu)化數(shù)據(jù)布局和I/O訪問(wèn)模式

      對(duì)于大文件的處理:分布式文件系統(tǒng)往往采用條帶化技術(shù)對(duì)大文件進(jìn)行切片,并在多個(gè)數(shù)據(jù)服務(wù)器上進(jìn)行存儲(chǔ),從而提高用戶(hù)對(duì)文件訪問(wèn)的并發(fā)性。

      對(duì)于小文件的處理:由于小文件不利于條帶化,一般采用將單個(gè)文件存儲(chǔ)在單個(gè)數(shù)據(jù)服務(wù)器上的策略。但當(dāng)小文件數(shù)量達(dá)到一定程度后,對(duì)小文件的大量重復(fù)訪問(wèn)將會(huì)給數(shù)據(jù)服務(wù)器帶來(lái)性能上的負(fù)擔(dān)。分布式存儲(chǔ)采用將小文件合并存儲(chǔ)的方式來(lái)優(yōu)化海量小文件訪問(wèn)的問(wèn)題。該策略通過(guò)多個(gè)邏輯文件共享同一個(gè)物理文件,將多個(gè)小文件合并存儲(chǔ)到一個(gè)大文件中,實(shí)現(xiàn)高效的小文件存儲(chǔ)。這種方式將大量的小文件存儲(chǔ)到一個(gè)大文件中,把大量的小文件數(shù)據(jù)變成大文件數(shù)據(jù),減少了文件數(shù)量,從而減少元數(shù)據(jù)數(shù)量,提高了元數(shù)據(jù)的檢索和查詢(xún)效率,性能得以顯著提升。小文件的元數(shù)據(jù)和數(shù)據(jù)會(huì)一并存儲(chǔ)在大文件中,并形成索引文件,訪問(wèn)時(shí)通過(guò)索引進(jìn)行定位。索引文件采用預(yù)加載到Cache的策略,可以實(shí)現(xiàn)隨機(jī)讀寫(xiě)小文件只需要一次I/O。

      眾多小文件合并存儲(chǔ)后實(shí)際上相當(dāng)于一個(gè)微型文件系統(tǒng),這種機(jī)制對(duì)于“一次寫(xiě),多次讀”模式的分布式存儲(chǔ)系統(tǒng)非常合適,但不適合“多次寫(xiě)”的存儲(chǔ)系統(tǒng)。因?yàn)槲募膶?xiě)和刪除操作會(huì)使大文件內(nèi)部產(chǎn)生碎片,如何進(jìn)行空間管理并在合適的時(shí)候執(zhí)行碎片整理,實(shí)現(xiàn)起來(lái)比較復(fù)雜,并會(huì)產(chǎn)生額外開(kāi)銷(xiāo)。如果不對(duì)碎片進(jìn)行處理,則會(huì)導(dǎo)致數(shù)據(jù)分布的不連續(xù),訪問(wèn)數(shù)據(jù)時(shí)會(huì)增加I/O的次數(shù),導(dǎo)致性能下降。

      3.4 提高Cache管理效率

      Cache技術(shù)主要通過(guò)空間換時(shí)間的策略,利用數(shù)據(jù)訪問(wèn)的時(shí)間和空間局部性,盡量提高數(shù)據(jù)訪問(wèn)的緩存命中率,從而提高系統(tǒng)的性能。

      分布式存儲(chǔ)系統(tǒng)中,多個(gè)存儲(chǔ)節(jié)點(diǎn)、元數(shù)據(jù)服務(wù)以及客戶(hù)端都通過(guò)物理網(wǎng)絡(luò)互聯(lián),客戶(hù)端和服務(wù)器端都會(huì)進(jìn)行數(shù)據(jù)緩存。根據(jù)節(jié)點(diǎn)上Cache資源工作方式的不同,分布式存儲(chǔ)系統(tǒng)中的Cache分為分布獨(dú)立式Cache和協(xié)作式Cache。

      分布獨(dú)立式Cache中,每個(gè)存儲(chǔ)節(jié)點(diǎn)上的文件系統(tǒng)Cache只負(fù)責(zé)緩存本節(jié)點(diǎn)上的I/O數(shù)據(jù),Cache中數(shù)據(jù)的一致性和Cache資源分配等工作由本節(jié)點(diǎn)上的Cache管理器負(fù)責(zé)。這種Cache管理簡(jiǎn)單,不影響系統(tǒng)的整體結(jié)構(gòu)。增刪存儲(chǔ)節(jié)點(diǎn)后,也不需要做額外的Cache配置和管理工作。

      協(xié)作式Cache中,每個(gè)存儲(chǔ)節(jié)點(diǎn)上的Cache不僅負(fù)責(zé)緩存本節(jié)點(diǎn)上的I/O數(shù)據(jù),還負(fù)責(zé)緩存其他節(jié)點(diǎn)上的Cache數(shù)據(jù)。協(xié)作式Cache需要各節(jié)點(diǎn)之間能夠快速的通信,因此,存儲(chǔ)節(jié)點(diǎn)之間的網(wǎng)絡(luò)帶寬必須足夠大。協(xié)作式Cache能夠充分利用Cache資源,構(gòu)造全局的“Cache Fusion”,以實(shí)現(xiàn)更高的Cache命中率。

      兩種Cache方式相比較,分布獨(dú)立式Cache簡(jiǎn)單、擴(kuò)展性高,協(xié)作式Cache管理復(fù)雜、對(duì)網(wǎng)絡(luò)要求高,但是Cache命中率能夠大幅提高,對(duì)分布式存儲(chǔ)系統(tǒng)整體性能提高更加明顯。

      通過(guò)以上幾方面的分析我們可以看出,分布式文件系統(tǒng)的海量小文件問(wèn)題主要包括元數(shù)據(jù)管理、數(shù)據(jù)布局、Cache管理、I/O訪問(wèn)流程、網(wǎng)絡(luò)開(kāi)銷(xiāo)等幾個(gè)方面;因此,想要用好分布式文件系統(tǒng),必須要針對(duì)問(wèn)題的根源進(jìn)行特定的優(yōu)化措施。優(yōu)化思路大體分為兩種:一是減少數(shù)據(jù)訪問(wèn)次數(shù),二是減少數(shù)據(jù)訪問(wèn)時(shí)間。具體來(lái)講,可以從合并小文件、增大Cache命中率、優(yōu)化元數(shù)據(jù)管理等方面提高訪問(wèn)效率,進(jìn)而達(dá)到優(yōu)化海量小文件存儲(chǔ)的效果。同時(shí),可以結(jié)合硬件和應(yīng)用優(yōu)化,進(jìn)一步增強(qiáng)優(yōu)化效果。

      4 聯(lián)通集團(tuán)應(yīng)用系統(tǒng)問(wèn)題的解決

      4.1 成功案例

      Facebook和淘寶都面臨著百億級(jí)的小文件存儲(chǔ),兩家公司都根據(jù)自身應(yīng)用特點(diǎn)設(shè)計(jì)相應(yīng)解決方案。Facebook采用的是Haystack[4],淘寶采用TFS,而它們都不約而同地采用分布式存儲(chǔ)的設(shè)計(jì)思想,并對(duì)分布式存儲(chǔ)的不足進(jìn)行了改進(jìn)。

      Facebook設(shè)計(jì)的Haystack與淘寶設(shè)計(jì)的TFS思路相仿:將元數(shù)據(jù)與文件實(shí)際內(nèi)容分開(kāi)處理,元數(shù)據(jù)保存在主控節(jié)點(diǎn)的內(nèi)存中,文件實(shí)際內(nèi)容合并成大文件再保存在存儲(chǔ)集群的磁盤(pán)中,存儲(chǔ)節(jié)點(diǎn)通過(guò)內(nèi)存索引檢索文件實(shí)際內(nèi)容。Facebook使用Haystack來(lái)應(yīng)付海量圖片的讀取更新,如圖3所示。

      圖3 Haystack架構(gòu)圖

      該系統(tǒng)由三個(gè)核心部分組成:存儲(chǔ)節(jié)點(diǎn)、目錄節(jié)點(diǎn)和緩存系統(tǒng)。當(dāng)用戶(hù)訪問(wèn)某個(gè)頁(yè)面時(shí),目錄節(jié)點(diǎn)會(huì)為其中的每個(gè)圖片構(gòu)造一個(gè)URL,根據(jù)該URL,瀏覽器會(huì)先訪問(wèn)對(duì)應(yīng)的CDN,如無(wú)命中則訪問(wèn)高速緩存,再無(wú)命中則訪問(wèn)存儲(chǔ)節(jié)點(diǎn)。Haystack適配海量小文件的秘密在存儲(chǔ)節(jié)點(diǎn)上:存儲(chǔ)節(jié)點(diǎn)的磁盤(pán)空間被劃分為幾個(gè)100GB左右的大文件,圖片依次寫(xiě)入這些大文件,存儲(chǔ)節(jié)點(diǎn)在內(nèi)存為每個(gè)圖片建立索引,并實(shí)時(shí)備份到磁盤(pán),機(jī)器宕機(jī)后仍能根據(jù)磁盤(pán)上的備份迅速恢復(fù)該內(nèi)存索引表。Haystack使用專(zhuān)門(mén)的目錄服務(wù)節(jié)點(diǎn)處理圖片的元數(shù)據(jù)。

      淘寶也開(kāi)發(fā)了類(lèi)似Haystack的系統(tǒng)TFS來(lái)存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)[5],主要是針對(duì)海量的小圖片文件。TFS能有效處理淘寶“雙十一購(gòu)物狂歡節(jié)”的驚人并發(fā)量。TFS的整體架構(gòu)如圖4所示,是由一個(gè)NameServer(名稱(chēng)服務(wù)器)與眾多數(shù)據(jù)節(jié)點(diǎn)組成的主從結(jié)構(gòu)。為防止單點(diǎn)問(wèn)題,NameServer使用了HA結(jié)構(gòu)(High Availability):兩臺(tái)NameServer互為熱備,實(shí)現(xiàn)主從復(fù)制,從機(jī)器只提供讀功能;從機(jī)器可以在需要時(shí)迅速切換為主機(jī)器,以便持續(xù)工作;心跳代理負(fù)責(zé)監(jiān)控這一切換過(guò)程。

      4.2 問(wèn)題的解決

      之前聯(lián)通集團(tuán)電子商城系統(tǒng)的瓶頸主要集中在圖片存儲(chǔ)服務(wù)器和圖片主存儲(chǔ)這里,圖片索引、核心應(yīng)用集群、前置機(jī)等部分沒(méi)有性能瓶頸,因此,主要針對(duì)圖片服務(wù)器和圖片主存儲(chǔ)部分進(jìn)行改進(jìn)。改進(jìn)后的效果如圖5所示。

      針對(duì)之前提到的聯(lián)通電子商城系統(tǒng)中存在的主要問(wèn)題,參考淘寶和Facebook解決方案案例,我們來(lái)對(duì)聯(lián)通集團(tuán)電子商城系統(tǒng)架構(gòu)進(jìn)行改進(jìn)。

      我們采用有元數(shù)據(jù)的架構(gòu),首先將兩臺(tái)圖片存儲(chǔ)服務(wù)器利舊,作為分布式存儲(chǔ)的名稱(chēng)節(jié)點(diǎn),配置為HA結(jié)構(gòu),使兩臺(tái)服務(wù)器互為熱備,并且實(shí)現(xiàn)主從復(fù)制;從設(shè)備提供讀功能;心跳代理監(jiān)控主從之間的狀態(tài)。之后,采購(gòu)多臺(tái)大容量硬盤(pán)服務(wù)器作為圖片存儲(chǔ)節(jié)點(diǎn),所有服務(wù)器之間采用萬(wàn)兆以太網(wǎng)方式連接。

      圖4 TFS整體架構(gòu)圖

      圖5 改進(jìn)后效果圖

      架構(gòu)確定以后,我們針對(duì)分布式存儲(chǔ)系統(tǒng)進(jìn)行了優(yōu)化,包括:Cache管理優(yōu)化、小文件合并存儲(chǔ)、元數(shù)據(jù)管理優(yōu)化等。另外,對(duì)于圖片存儲(chǔ)服務(wù)器和圖片存儲(chǔ)節(jié)點(diǎn),我們還要對(duì)操作系統(tǒng)進(jìn)行優(yōu)化,例如修改I/O調(diào)度算法為DeadLine方式;修改BDP(Bandwidth Delay Product,帶寬和延遲的乘積)大小,以擴(kuò)大TCP Socket緩沖區(qū)大??;調(diào)大TCP滑動(dòng)窗口;調(diào)整TCP Socket創(chuàng)建和保持參數(shù)等。

      經(jīng)過(guò)這些改進(jìn),聯(lián)通集團(tuán)電子商城系統(tǒng)性能有了大幅提升。傳統(tǒng)存儲(chǔ)系統(tǒng)中從查詢(xún)請(qǐng)求發(fā)起到接收到最終結(jié)果,會(huì)有3~5秒左右的延遲,在我們的分布式存儲(chǔ)系統(tǒng)中,這一時(shí)間被控制在了1秒以?xún)?nèi),業(yè)務(wù)人員實(shí)際體驗(yàn)較好。

      5 結(jié)束語(yǔ)

      中國(guó)聯(lián)通分布式存儲(chǔ)系統(tǒng)的建設(shè),對(duì)集團(tuán)內(nèi)部海量小文件應(yīng)用系統(tǒng)建設(shè)起到了指導(dǎo)作用,在數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)處理、數(shù)據(jù)傳輸?shù)确矫嫣岣吡诵?。為?lián)通邁向大數(shù)據(jù)時(shí)代奠定了基礎(chǔ)。

      參考文獻(xiàn)

      [1]楊傳輝.大規(guī)模分布式存儲(chǔ)系統(tǒng):原理解析與架構(gòu)實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2013

      [2]劉愛(ài)貴.GlusterFS分布式文件系統(tǒng)[EB/OL].(2014-12-27)[2016-07-15]. http://vdisk.weibo.com/s/HPecIjqX8sc

      [3]李其力.適配海量小文件的分布式文件系統(tǒng)關(guān)鍵技術(shù)研究及系統(tǒng)實(shí)現(xiàn)[EB/OL].[2016-07-15].http://cdmd.cnki.com.cn/Article/CDMD-10561-1015987694.htm

      [4]王鈴惠,李小勇,張軼彬.海量小文件存儲(chǔ)系統(tǒng)研究綜述[J].計(jì)算機(jī)應(yīng)用及軟件,2012,29(8):106-109

      [5]阿里云Code[EB/OL].(2011-09-29)[2016-07-15].http://code.tobao.org/p/tfs/wiki/intro/

      猜你喜歡
      存儲(chǔ)系統(tǒng)海量分布式
      一種傅里葉域海量數(shù)據(jù)高速譜聚類(lèi)方法
      分布式存儲(chǔ)系統(tǒng)在企業(yè)檔案管理中的應(yīng)用
      哈爾濱軸承(2020年2期)2020-11-06 09:22:36
      海量快遞垃圾正在“圍城”——“綠色快遞”勢(shì)在必行
      天河超算存儲(chǔ)系統(tǒng)在美創(chuàng)佳績(jī)
      分布式光伏熱錢(qián)洶涌
      能源(2017年10期)2017-12-20 05:54:07
      分布式光伏:爆發(fā)還是徘徊
      能源(2017年5期)2017-07-06 09:25:54
      一個(gè)圖形所蘊(yùn)含的“海量”巧題
      基于DDS的分布式三維協(xié)同仿真研究
      華為震撼發(fā)布新一代OceanStor 18000 V3系列高端存儲(chǔ)系統(tǒng)
      一種基于STM32的具有斷電保護(hù)機(jī)制的采集存儲(chǔ)系統(tǒng)設(shè)計(jì)
      石狮市| 陇川县| 永登县| 澳门| 盐津县| 四子王旗| 怀安县| 长乐市| 伊川县| 寻乌县| 沁阳市| 巴林右旗| 库伦旗| 徐汇区| 大连市| 库伦旗| 交口县| 连平县| 金阳县| 二连浩特市| 盘锦市| 青神县| 黔东| 卢氏县| 巴楚县| 梅州市| 隆化县| 柳江县| 淄博市| 醴陵市| 绥芬河市| 文安县| 志丹县| 贡觉县| 石家庄市| 西乌珠穆沁旗| 盖州市| 唐海县| 衡东县| 若尔盖县| 台北县|