一種基于xmpp協(xié)議的分布式存儲系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及計算機應用技術領域,尤其涉及一種基于XMPP協(xié)議的分布式存儲系統(tǒng)。
【背景技術】
[0002]Google、Amazon、Alibaba等互聯(lián)網(wǎng)公司的成功催生了云計算和大數(shù)據(jù)兩個熱門領域。無論是云計算、大數(shù)據(jù)還是互聯(lián)網(wǎng)公司的各種應用,其后臺基礎設施的主要目標都是構建低成本、高性能、可擴展、易用的分布式存儲系統(tǒng)。
[0003]雖然分布式系統(tǒng)研究了很多年,但是,直到近年來,互聯(lián)網(wǎng)大數(shù)據(jù)應用的興起才使得它大規(guī)模的應用到工程實踐中。相比傳統(tǒng)的分布式系統(tǒng),互聯(lián)網(wǎng)公司的分布式系統(tǒng)具有兩個特點:一個特點是規(guī)模大,另一個特點是成本低。不同的需求造就了不同的設計方案,可以這么說,Google等互聯(lián)網(wǎng)公司重新定義了大規(guī)模分布式系統(tǒng)。目前,大型的互聯(lián)網(wǎng)公司或互聯(lián)網(wǎng)組織幾乎都實現(xiàn)一套自己的分布式存儲方案。
[0004]Google最早發(fā)布了三篇論文講述其分布式存儲系統(tǒng)的設計思路和原理,但是沒有現(xiàn)成的產(chǎn)品。Apache基金會通過Google的論文,最終實現(xiàn)了一整套解決方案,命名為Hadoop,其中包括HDFS,HBase等子項目。HDFS被設計為針對大文件。HBase是一個開源的非關系型分布式數(shù)據(jù)庫,運行于HDFS文件系統(tǒng)上。
[0005]在Google之后,Amazon公布了自己的Dynamo分布式存儲系統(tǒng)解決方案。
[0006]隨后,F(xiàn)acebook基于Google和Amazon的解決方案實現(xiàn)了自己的Cassandra分布式存儲系統(tǒng)解決方案。不久,F(xiàn)acebook將其開源,并交于Apache基金會維護。
[0007]在以上幾個典型的技術方案中,Google的論文與Apache的Hadoop方案體系龐大,而且其底層文件系統(tǒng)針對大文件優(yōu)化,處理小文件時沒有優(yōu)勢。Amazon和Facebook的技術方案使用一致性哈希處理節(jié)點的分布和定位,但是其算法實現(xiàn)較復雜。
【發(fā)明內(nèi)容】
[0008]本發(fā)明提供了一種基于XMPP協(xié)議的分布式存儲系統(tǒng),該發(fā)明所述的技術方案以XMPP協(xié)議為基礎搭建分布式存儲系統(tǒng),管理節(jié)點和數(shù)據(jù)節(jié)點之間的信息傳遞使用XML文件格式,所有數(shù)據(jù)節(jié)點之間通過直連方法進行數(shù)據(jù)文件的傳遞。本發(fā)明所述的分布式存儲系統(tǒng)充分利用已經(jīng)成熟的XMPP協(xié)議的優(yōu)勢搭建分布式系統(tǒng),有非常好的適應性和擴展性。
[0009]首先,對XMPP協(xié)議做一個簡單的介紹:
XMPPCExtensible Messaging and Presence Protocol,前稱 Jabber)是一種以 XML 為基礎的開放式實時通信協(xié)議,是經(jīng)由互聯(lián)網(wǎng)工程工作小組(IETF)通過的互聯(lián)網(wǎng)標準。XMPP因為被Google Talk應用而被廣大網(wǎng)民所接觸。XMPP的關鍵特色是,分散式的實時通信系統(tǒng),以及使用XML流。XMPP原本是為即時通訊而量身定制,但由于XML Stanza本身是XML元素,在基于XML靈活發(fā)展的特性下,使得XMPP也可以適用其他方面。
[0010]互聯(lián)網(wǎng)工程工作小組(IETF)已經(jīng)將Jabber的核心XML流協(xié)議以XMPP之名,正式列為認可的實時通信及Presence技術。而XMPP的技術規(guī)格已被定義在RFC 3920。XMPP網(wǎng)絡的架構和電子郵件十分相像;XMPP核心協(xié)議通信方式是先創(chuàng)建一個stream,XMPP以TCP傳遞XML數(shù)據(jù)流,沒有中央主服務器。任何人都可以運行自己的XMPP服務器,使個人及組織能夠掌控他們的實時傳訊體驗。任何XMPP協(xié)議的服務器可以獨立于公眾XMPP網(wǎng)絡(例如在企業(yè)內(nèi)部網(wǎng)絡中),而使用SASL及TLS等技術的可靠安全性,已內(nèi)置于核心XMPP技術規(guī)格中。本發(fā)明將XMPP協(xié)議轉用到分布式存儲系統(tǒng)中,從而解決現(xiàn)有技術中存在的問題。
[0011]本發(fā)明采用如下系統(tǒng)來實現(xiàn):一種基于XMPP協(xié)議的分布式存儲系統(tǒng),包括管理節(jié)點和數(shù)據(jù)節(jié)點:
所述管理節(jié)點用于存儲其他管理節(jié)點和數(shù)據(jù)節(jié)點的節(jié)點信息,并向數(shù)據(jù)節(jié)點發(fā)送控制信息并接收請求信息;
所述數(shù)據(jù)節(jié)點用于存儲數(shù)據(jù)文件,并接收管理節(jié)點的控制信息,所述數(shù)據(jù)節(jié)點之間通過直連的方式傳遞數(shù)據(jù)文件;
任意一個數(shù)據(jù)節(jié)點只屬于一個管理節(jié)點,所述控制信息和請求信息遵循XMPP協(xié)議,為XML文件格式。
[0012]進一步地,若向分布式存儲系統(tǒng)中添加新的數(shù)據(jù)節(jié)點,則包括:
在管理節(jié)點中建立待添加數(shù)據(jù)節(jié)點的節(jié)點信息;
搭建待添加數(shù)據(jù)節(jié)點并啟動;
待添加數(shù)據(jù)節(jié)點向管理節(jié)點發(fā)送請求信息,所述請求信息中包含待添加數(shù)據(jù)節(jié)點的節(jié)點信息;
管理節(jié)點接收到請求信息后,對獲取的節(jié)點信息進行驗證,若驗證成功,管理節(jié)點向待添加數(shù)據(jù)節(jié)點發(fā)送控制信息,表明登錄成功。
[0013]進一步地,若用戶請求向分布式存儲系統(tǒng)中上傳數(shù)據(jù)文件,則包括:
用戶連接管理節(jié)點,并發(fā)送請求信息,請求上傳數(shù)據(jù)文件;
管理節(jié)點將請求信息轉發(fā)至其他管理節(jié)點;
綜合對比所有登錄狀態(tài)的數(shù)據(jù)節(jié)點;
選出一個合適的數(shù)據(jù)節(jié)點,并將數(shù)據(jù)節(jié)點的URL返回給用戶。
[0014]進一步地,所述管理節(jié)點接收到請求信息后,生成數(shù)據(jù)迀移的控制信息,并發(fā)送給所有相關數(shù)據(jù)節(jié)點;所有相關數(shù)據(jù)節(jié)點之間通過直連的方式同步新上傳的數(shù)據(jù)文件。
[0015]進一步地,若用戶請求從分布式存儲系統(tǒng)中下載數(shù)據(jù)文件,則包括:
用戶連接管理節(jié)點,并發(fā)送請求信息,請求下載數(shù)據(jù)文件;
管理節(jié)點將請求信息轉發(fā)至其他管理節(jié)點;
綜合對比所有登錄狀態(tài)的相關數(shù)據(jù)節(jié)點;
選出合適的數(shù)據(jù)節(jié)點,并將數(shù)據(jù)節(jié)點URL返回給用戶。
[0016]進一步地,所述將數(shù)據(jù)節(jié)點URL返回給用戶包括:
若用戶使用的是專用客戶端程序,則將數(shù)據(jù)節(jié)點URL生成列表,并將列表返回給用戶; 若用戶使用的是通用工具,則將一個數(shù)據(jù)節(jié)點的URL重定向返回給用戶。
[0017]進一步地,所述管理節(jié)點周期性地同步數(shù)據(jù)節(jié)點間的數(shù)據(jù)文件,包括:管理節(jié)點將同步的控制信息發(fā)送至所有相關數(shù)據(jù)節(jié)點;所有相關數(shù)據(jù)節(jié)點之間通過直連的方式同步數(shù)據(jù)文件。
[0018]綜上所述,本發(fā)明提供了一種基于XMPP協(xié)議的分布式存儲系統(tǒng),引入了原本用于通信的XMPP協(xié)議,并以XMPP協(xié)議為基礎,建立分布式存儲系統(tǒng),包括管理節(jié)點和數(shù)據(jù)節(jié)點,所述分布式存儲系統(tǒng)中除了數(shù)據(jù)文件之外的信息遵循XMPP協(xié)議,數(shù)據(jù)文件的傳遞通過數(shù)據(jù)節(jié)點之間直連方式進行。
[0019]本發(fā)明的有益效果為:由于使用了已經(jīng)發(fā)展較成熟的XMPP協(xié)議,大大降低技術實現(xiàn)復雜度,本發(fā)明所述的分布式存儲系統(tǒng)可以靈活擴展,方便添加新的數(shù)據(jù)節(jié)點,實時跟蹤各數(shù)據(jù)節(jié)點的狀態(tài),并可以獲取每個數(shù)據(jù)節(jié)點的歷史操作記錄。
【附圖說明】
[0020]為了更清楚地說明本發(fā)明的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0021]圖1為本發(fā)明提供的一種基于XMPP協(xié)議的分布式存儲系統(tǒng)示意圖。
【具體實施方式】
[0022]本發(fā)明給出了一種基于XMPP協(xié)議的分布式存儲系統(tǒng),為了使本技術領域的人員更好地理解本發(fā)明實施例中的技術方案,并使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖對本發(fā)明中技術方案作進一步詳細的說明:
參見圖1所示,本發(fā)明首先提供了一種基于XMPP協(xié)議的分布式存儲系統(tǒng),包括管理節(jié)點和數(shù)據(jù)節(jié)點:
所述管理節(jié)點用于存儲其他管理節(jié)點和數(shù)據(jù)節(jié)點的節(jié)點信息,并向數(shù)