同步數(shù)據(jù)的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種同步數(shù)據(jù)的方法及系統(tǒng),屬于網(wǎng)絡(luò)【技術(shù)領(lǐng)域】。所述方法包括:代理服務(wù)器集群接收終端發(fā)送的第一寫數(shù)據(jù)請求,第一寫數(shù)據(jù)請求中攜帶第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識;代理服務(wù)器集群對第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號;代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號,將第一寫數(shù)據(jù)請求發(fā)送給第一存儲服務(wù)器;代理服務(wù)器集群向隊(duì)列服務(wù)器集群發(fā)送第一同步數(shù)據(jù)請求,第一同步數(shù)據(jù)請求中攜帶第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識;隊(duì)列服務(wù)器集群將第一同步數(shù)據(jù)請求發(fā)送給第二機(jī)房包括的隊(duì)列服務(wù)器集群,以同步多個(gè)機(jī)房的存儲服務(wù)器集群中存儲的數(shù)據(jù)。本發(fā)明提高了分布式系統(tǒng)的處理性能和可用性。
【專利說明】同步數(shù)據(jù)的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,特別涉及一種同步數(shù)據(jù)的方法及系統(tǒng)。
【背景技術(shù)】
[0002]在多機(jī)房、多機(jī)器、多進(jìn)程部署的分布式系統(tǒng)內(nèi),可能會對多個(gè)業(yè)務(wù)進(jìn)程訪問的數(shù)據(jù)進(jìn)行頻繁讀寫操作處理。同時(shí),為了保證每個(gè)機(jī)房均可以向業(yè)務(wù)進(jìn)程提供服務(wù),需要對每個(gè)機(jī)房中存儲的數(shù)據(jù)進(jìn)行同步處理。
[0003]目前,同步數(shù)據(jù)的過程具體可以為:終端向主redis服務(wù)器發(fā)送寫數(shù)據(jù)請求,該寫數(shù)據(jù)請求中攜帶待寫入數(shù)據(jù)和數(shù)據(jù)標(biāo)識,主redis服務(wù)器位于該多個(gè)機(jī)房中的任一機(jī)房。當(dāng)主redis服務(wù)器接收到該寫數(shù)據(jù)請求時(shí),根據(jù)該數(shù)據(jù)標(biāo)識,對待寫入數(shù)據(jù)執(zhí)行寫操作。此夕卜,該主redis服務(wù)器還可以向從redis服務(wù)器發(fā)送同步數(shù)據(jù)請求,該同步數(shù)據(jù)請求中攜帶待寫入數(shù)據(jù)和該數(shù)據(jù)標(biāo)識,且該從redis服務(wù)器位于其他機(jī)房中,從而同步多個(gè)機(jī)房中存儲的數(shù)據(jù)。
[0004]通過上述方法同步數(shù)據(jù)時(shí),由于redis服務(wù)器同步數(shù)據(jù)時(shí)是單方向的,即,一旦確定主redis服務(wù)器和從redis服務(wù)器之后,只能將主redis服務(wù)器中的數(shù)據(jù)同步到從redis服務(wù)器中,無法將從redis服務(wù)器中的數(shù)據(jù)同步到主redis服務(wù)器中;并且,上述方法中每個(gè)機(jī)房中只包括一個(gè)redis服務(wù)器,限制了分布式系統(tǒng)的處理性能和可用性。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種同步數(shù)據(jù)的方法及系統(tǒng)。所述技術(shù)方案如下:
[0006]第一方面,提供了一種同步數(shù)據(jù)的方法,所述方法應(yīng)用于分布式系統(tǒng)中,所述分布式系統(tǒng)包括多個(gè)機(jī)房,且每個(gè)機(jī)房中包括代理服務(wù)器集群、存儲服務(wù)器集群和隊(duì)列服務(wù)器集群,所述方法包括:
[0007]代理服務(wù)器集群接收終端發(fā)送的第一寫數(shù)據(jù)請求,所述第一寫數(shù)據(jù)請求中攜帶第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,所述代理服務(wù)器集群位于第一機(jī)房中,且所述第一機(jī)房為所述多個(gè)機(jī)房中的任一機(jī)房;
[0008]所述代理服務(wù)器集群對所述第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號,所述第一存儲服務(wù)器包含于存儲服務(wù)器集群中,所述存儲服務(wù)器集群也位于所述第一機(jī)房中;
[0009]所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號,將所述第一寫數(shù)據(jù)請求發(fā)送給所述第一存儲服務(wù)器,使所述第一存儲服務(wù)器根據(jù)所述第一數(shù)據(jù)標(biāo)識,寫入所述第一待寫入數(shù)據(jù);
[0010]所述代理服務(wù)器集群向隊(duì)列服務(wù)器集群發(fā)送第一同步數(shù)據(jù)請求,所述第一同步數(shù)據(jù)請求中攜帶所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,所述隊(duì)列服務(wù)器集群也位于所述第一機(jī)房中;
[0011]當(dāng)所述隊(duì)列服務(wù)器集群接收到所述第一同步數(shù)據(jù)請求時(shí),所述隊(duì)列服務(wù)器集群將所述第一同步數(shù)據(jù)請求發(fā)送給第二機(jī)房包括的隊(duì)列服務(wù)器集群,以同步所述多個(gè)機(jī)房的存儲服務(wù)器集群中存儲的數(shù)據(jù),所述第二機(jī)房為所述多個(gè)機(jī)房中除所述第一機(jī)房之外的機(jī)房。
[0012]可選地,所述代理服務(wù)器集群對所述第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號之后,還包括:
[0013]所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號、所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù);
[0014]所述代理服務(wù)器集群根據(jù)所述元數(shù)據(jù),判斷是否執(zhí)行對應(yīng)的寫操作;
[0015]如果判斷出執(zhí)行所述寫操作,則所述代理服務(wù)器集群執(zhí)行根據(jù)所述第一存儲服務(wù)器的編號,將所述第一寫數(shù)據(jù)請求發(fā)送給所述第一存儲服務(wù)器的步驟。
[0016]可選地,所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號、所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù),包括:
[0017]所述代理服務(wù)器集群獲取所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型;
[0018]如果所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第一數(shù)據(jù)類型,則所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù);
[0019]如果所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第二數(shù)據(jù)類型,則所述代理服務(wù)器集群將所述第一待寫入數(shù)據(jù)拆分為多個(gè)待寫入子數(shù)據(jù),并基于所述多個(gè)待寫入子數(shù)據(jù),將所述第一數(shù)據(jù)標(biāo)識拆分為多個(gè)數(shù)據(jù)子標(biāo)識,所述待寫入子數(shù)據(jù)與所述數(shù)據(jù)子標(biāo)識一一對應(yīng);
[0020]所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號和所述多個(gè)數(shù)據(jù)子標(biāo)識,從所述第一存儲服務(wù)器中獲取所述多個(gè)待寫入子數(shù)據(jù)的元數(shù)據(jù)。
[0021]可選地,所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù),包括:
[0022]所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號,向所述第一存儲服務(wù)器發(fā)送第一元數(shù)據(jù)獲取請求,所述第一元數(shù)據(jù)獲取請求中攜帶所述第一數(shù)據(jù)標(biāo)識;
[0023]當(dāng)所述第一存儲服務(wù)器接收到所述第一元數(shù)據(jù)獲取請求時(shí),所述第一存儲服務(wù)器根據(jù)所述第一數(shù)據(jù)標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù);
[0024]所述第一存儲服務(wù)器將獲取的所述元數(shù)據(jù)發(fā)送給所述代理服務(wù)器集群。
[0025]可選地,所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號和所述多個(gè)數(shù)據(jù)子標(biāo)識,從所述第一存儲服務(wù)器中獲取所述多個(gè)待寫入子數(shù)據(jù)的元數(shù)據(jù),包括:
[0026]對于所述多個(gè)待寫入子數(shù)據(jù)中的任一待寫入子數(shù)據(jù),所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號,向所述第一存儲服務(wù)器發(fā)送第二元數(shù)據(jù)獲取請求,所述第二元數(shù)據(jù)獲取請求中攜帶所述待寫入子數(shù)據(jù)對應(yīng)的數(shù)據(jù)子標(biāo)識;
[0027]當(dāng)所述第一存儲服務(wù)器接收到所述第二元數(shù)據(jù)獲取請求時(shí),所述第一存儲服務(wù)器根據(jù)所述數(shù)據(jù)子標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù);
[0028]所述第一存儲服務(wù)器將獲取的所述元數(shù)據(jù)發(fā)送給所述代理服務(wù)器集群。
[0029]可選地,所述代理服務(wù)器集群根據(jù)所述元數(shù)據(jù),判斷是否執(zhí)行對應(yīng)的寫操作,包括:
[0030]當(dāng)所述元數(shù)據(jù)為本地時(shí)間戳?xí)r,所述代理服務(wù)器集群讀取當(dāng)前時(shí)間,并將讀取的時(shí)間確定為所述寫操作的操作時(shí)間戳;
[0031]所述代理服務(wù)器集群比較所述操作時(shí)間戳和所述本地時(shí)間戳;
[0032]如果所述操作時(shí)間戳晚于所述本地時(shí)間戳,則所述代理服務(wù)器集群確定執(zhí)行所述寫操作。
[0033]可選地,所述方法還包括:
[0034]所述隊(duì)列服務(wù)器集群接收所述第二機(jī)房包括的隊(duì)列服務(wù)器集群發(fā)送的第二同步數(shù)據(jù)請求,所述第二同步數(shù)據(jù)請求中攜帶第二待寫入數(shù)據(jù)和第二數(shù)據(jù)標(biāo)識;
[0035]所述隊(duì)列服務(wù)器集群將所述第二同步數(shù)據(jù)請求發(fā)送給所述代理服務(wù)器集群;
[0036]當(dāng)所述代理服務(wù)器集群接收到所述第二同步數(shù)據(jù)請求時(shí),所述代理服務(wù)器集群對所述第二數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第二待寫入數(shù)據(jù)對應(yīng)的第二存儲服務(wù)器的編號,所述第二存儲服務(wù)器包含于所述存儲服務(wù)器集群中;
[0037]所述代理服務(wù)器集群根據(jù)所述第二存儲服務(wù)器的編號,向所述第二存儲服務(wù)器發(fā)送第二寫數(shù)據(jù)請求,所述第二寫數(shù)據(jù)請求中攜帶所述第二待寫入數(shù)據(jù)和所述第二數(shù)據(jù)標(biāo)識,使所述第二存儲服務(wù)器根據(jù)所述第二數(shù)據(jù)標(biāo)識,寫入所述第二待寫入數(shù)據(jù)。
[0038]可選地,所述方法還包括:
[0039]當(dāng)部署新機(jī)房時(shí),所述存儲服務(wù)器集群將存儲的數(shù)據(jù)同步給新存儲服務(wù)器集群;
[0040]所述隊(duì)列服務(wù)器集群將緩存的同步數(shù)據(jù)請求同步給新隊(duì)列服務(wù)器集群;
[0041]所述代理服務(wù)器集群向所述存儲服務(wù)器集群發(fā)送測試數(shù)據(jù)寫請求,所述測試數(shù)據(jù)寫請求中攜帶待寫入的測試數(shù)據(jù)和測試數(shù)據(jù)標(biāo)識;
[0042]當(dāng)所述存儲服務(wù)器集群接收到所述測試數(shù)據(jù)寫請求時(shí),所述存儲服務(wù)器集群根據(jù)所述測試數(shù)據(jù)標(biāo)識,寫入所述待寫入的測試數(shù)據(jù);
[0043]所述存儲服務(wù)器集群將所述測試數(shù)據(jù)同步給所述新存儲服務(wù)器集群,以測試所述新存儲服務(wù)器中是否同步上所述存儲服務(wù)器集群中存儲的數(shù)據(jù);
[0044]如果所述新存儲服務(wù)器集群中同步上所述存儲服務(wù)器集群中存儲的數(shù)據(jù),則啟動(dòng)新代理服務(wù)器集群,并基于所述新存儲服務(wù)器集群同步的數(shù)據(jù),處理所述新隊(duì)列服務(wù)器集群中的同步數(shù)據(jù)請求;
[0045]其中,所述新存儲服務(wù)器集群、所述新隊(duì)列服務(wù)器集群和所述新代理服務(wù)器集群位于所述新機(jī)房中。
[0046]第二方面,提供了一種分布式系統(tǒng)中,所述分布式系統(tǒng)包括多個(gè)機(jī)房,且每個(gè)機(jī)房中包括代理服務(wù)器集群、存儲服務(wù)器集群和隊(duì)列服務(wù)器集群,
[0047]代理服務(wù)器集群,用于接收終端發(fā)送的第一寫數(shù)據(jù)請求,所述第一寫數(shù)據(jù)請求中攜帶第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,所述代理服務(wù)器集群位于第一機(jī)房中,且所述第一機(jī)房為所述多個(gè)機(jī)房中的任一機(jī)房;
[0048]所述代理服務(wù)器集群,還用于對所述第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號,所述第一存儲服務(wù)器包含于存儲服務(wù)器集群中,所述存儲服務(wù)器集群也位于所述第一機(jī)房中;
[0049]所述代理服務(wù)器集群,還用于根據(jù)所述第一存儲服務(wù)器的編號,將所述第一寫數(shù)據(jù)請求發(fā)送給所述第一存儲服務(wù)器,使所述第一存儲服務(wù)器根據(jù)所述第一數(shù)據(jù)標(biāo)識,寫入所述第一待寫入數(shù)據(jù);
[0050]所述代理服務(wù)器集群,還用于向隊(duì)列服務(wù)器集群發(fā)送第一同步數(shù)據(jù)請求,所述第一同步數(shù)據(jù)請求中攜帶所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,所述隊(duì)列服務(wù)器集群也位于所述第一機(jī)房中;
[0051]當(dāng)所述隊(duì)列服務(wù)器集群,用于接收到所述第一同步數(shù)據(jù)請求時(shí),所述隊(duì)列服務(wù)器集群將所述第一同步數(shù)據(jù)請求發(fā)送給第二機(jī)房包括的隊(duì)列服務(wù)器集群,以同步所述多個(gè)機(jī)房的存儲服務(wù)器集群中存儲的數(shù)據(jù),所述第二機(jī)房為所述多個(gè)機(jī)房中除所述第一機(jī)房之外的機(jī)房。
[0052]可選地,
[0053]所述代理服務(wù)器集群,還用于根據(jù)所述第一存儲服務(wù)器的編號、所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù);
[0054]所述代理服務(wù)器集群,還用于根據(jù)所述元數(shù)據(jù),判斷是否執(zhí)行對應(yīng)的寫操作;
[0055]所述代理服務(wù)器集群,還用于如果判斷出執(zhí)行所述寫操作,則執(zhí)行根據(jù)所述第一存儲服務(wù)器的編號,將所述第一寫數(shù)據(jù)請求發(fā)送給所述第一存儲服務(wù)器的步驟。
[0056]可選地,
[0057]所述代理服務(wù)器集群,還用于獲取所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型;
[0058]所述代理服務(wù)器集群,還用于如果所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第一數(shù)據(jù)類型,則根據(jù)所述第一存儲服務(wù)器的編號和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù);
[0059]所述代理服務(wù)器集群,還用于如果所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第二數(shù)據(jù)類型,則將所述第一待寫入數(shù)據(jù)拆分為多個(gè)待寫入子數(shù)據(jù),并基于所述多個(gè)待寫入子數(shù)據(jù),將所述第一數(shù)據(jù)標(biāo)識拆分為多個(gè)數(shù)據(jù)子標(biāo)識,所述待寫入子數(shù)據(jù)與所述數(shù)據(jù)子標(biāo)識一一對應(yīng);
[0060]所述代理服務(wù)器集群,還用于根據(jù)所述第一存儲服務(wù)器的編號和所述多個(gè)數(shù)據(jù)子標(biāo)識,從所述第一存儲服務(wù)器中獲取所述多個(gè)待寫入子數(shù)據(jù)的元數(shù)據(jù)。
[0061]可選地,
[0062]所述代理服務(wù)器集群,還用于根據(jù)所述第一存儲服務(wù)器的編號,向所述第一存儲服務(wù)器發(fā)送第一元數(shù)據(jù)獲取請求,所述第一元數(shù)據(jù)獲取請求中攜帶所述第一數(shù)據(jù)標(biāo)識;
[0063]所述第一存儲服務(wù)器,用于當(dāng)所述第一存儲服務(wù)器接收到所述第一元數(shù)據(jù)獲取請求時(shí),根據(jù)所述第一數(shù)據(jù)標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù);
[0064]所述第一存儲服務(wù)器,還用于將獲取的所述元數(shù)據(jù)發(fā)送給所述代理服務(wù)器集群。
[0065]可選地,
[0066]所述代理服務(wù)器集群,還用于對于所述多個(gè)待寫入子數(shù)據(jù)中的任一待寫入子數(shù)據(jù),根據(jù)所述第一存儲服務(wù)器的編號,向所述第一存儲服務(wù)器發(fā)送第二元數(shù)據(jù)獲取請求,所述第二元數(shù)據(jù)獲取請求中攜帶所述待寫入子數(shù)據(jù)對應(yīng)的數(shù)據(jù)子標(biāo)識;
[0067]所述第一存儲服務(wù)器,還用于當(dāng)所述第一存儲服務(wù)器接收到所述第二元數(shù)據(jù)獲取請求時(shí),根據(jù)所述數(shù)據(jù)子標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù);
[0068]所述第一存儲服務(wù)器,還用于將獲取的所述元數(shù)據(jù)發(fā)送給所述代理服務(wù)器集群。
[0069]可選地,
[0070]所述代理服務(wù)器集群,還用于當(dāng)所述元數(shù)據(jù)為本地時(shí)間戳?xí)r,讀取當(dāng)前時(shí)間,并將讀取的時(shí)間確定為所述寫操作的操作時(shí)間戳;
[0071]所述代理服務(wù)器集群,還用于比較所述操作時(shí)間戳和所述本地時(shí)間戳;
[0072]所述代理服務(wù)器集群,還用于如果所述操作時(shí)間戳晚于所述本地時(shí)間戳,則確定執(zhí)行所述寫操作。
[0073]可選地,所述系統(tǒng)還包括:
[0074]所述隊(duì)列服務(wù)器集群,還用于接收所述第二機(jī)房包括的隊(duì)列服務(wù)器集群發(fā)送的第二同步數(shù)據(jù)請求,所述第二同步數(shù)據(jù)請求中攜帶第二待寫入數(shù)據(jù)和第二數(shù)據(jù)標(biāo)識;
[0075]所述隊(duì)列服務(wù)器集群,還用于將所述第二同步數(shù)據(jù)請求發(fā)送給所述代理服務(wù)器集群;
[0076]所述代理服務(wù)器集群,還用于當(dāng)所述代理服務(wù)器集群接收到所述第二同步數(shù)據(jù)請求時(shí),對所述第二數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第二待寫入數(shù)據(jù)對應(yīng)的第二存儲服務(wù)器的編號,所述第二存儲服務(wù)器包含于所述存儲服務(wù)器集群中;
[0077]所述代理服務(wù)器集群,還用于根據(jù)所述第二存儲服務(wù)器的編號,向所述第二存儲服務(wù)器發(fā)送第二寫數(shù)據(jù)請求,所述第二寫數(shù)據(jù)請求中攜帶所述第二待寫入數(shù)據(jù)和所述第二數(shù)據(jù)標(biāo)識,使所述第二存儲服務(wù)器根據(jù)所述第二數(shù)據(jù)標(biāo)識,寫入所述第二待寫入數(shù)據(jù)。
[0078]可選地,所述系統(tǒng)還包括:
[0079]所述存儲服務(wù)器集群,還用于當(dāng)部署新機(jī)房時(shí),將存儲的數(shù)據(jù)同步給新存儲服務(wù)器集群;
[0080]所述隊(duì)列服務(wù)器集群,還用于將緩存的同步數(shù)據(jù)請求同步給新隊(duì)列服務(wù)器集群;
[0081]所述代理服務(wù)器集群,還用于向所述存儲服務(wù)器集群發(fā)送測試數(shù)據(jù)寫請求,所述測試數(shù)據(jù)寫請求中攜帶待寫入的測試數(shù)據(jù)和測試數(shù)據(jù)標(biāo)識;
[0082]所述存儲服務(wù)器集群,還用于當(dāng)所述存儲服務(wù)器集群接收到所述測試數(shù)據(jù)寫請求時(shí),根據(jù)所述測試數(shù)據(jù)標(biāo)識,寫入所述待寫入的測試數(shù)據(jù);
[0083]所述存儲服務(wù)器集群,還用于將所述測試數(shù)據(jù)同步給所述新存儲服務(wù)器集群,以測試所述新存儲服務(wù)器中是否同步上所述存儲服務(wù)器集群中存儲的數(shù)據(jù);
[0084]新代理服務(wù)器集群,還用于如果所述新存儲服務(wù)器集群中同步上所述存儲服務(wù)器集群中存儲的數(shù)據(jù),則啟動(dòng),并基于所述新存儲服務(wù)器集群同步的數(shù)據(jù),處理所述新隊(duì)列服務(wù)器集群中的同步數(shù)據(jù)請求;
[0085]其中,所述新存儲服務(wù)器集群、所述新隊(duì)列服務(wù)器集群和所述新代理服務(wù)器集群位于所述新機(jī)房中。
[0086]在本發(fā)明實(shí)施例中,對于多個(gè)機(jī)房中的任一機(jī)房,當(dāng)該機(jī)房中的代理服務(wù)器集群接收到終端發(fā)送的第一寫數(shù)據(jù)請求時(shí),代理服務(wù)器集群不僅可以將該第一寫數(shù)據(jù)請求發(fā)送給該機(jī)房中的存儲服務(wù)器集群,使存儲服務(wù)器集群對該第一寫數(shù)據(jù)請求進(jìn)行處理,還可以基于第一寫數(shù)據(jù)請求,向該機(jī)房中的隊(duì)列服務(wù)器集群發(fā)送第一同步數(shù)據(jù)請求,使該隊(duì)列服務(wù)器集群將該第一同步數(shù)據(jù)請求發(fā)送給其他機(jī)房中的隊(duì)列服務(wù)器集群,如此,實(shí)現(xiàn)多個(gè)機(jī)房中存儲的數(shù)據(jù)的互相同步,即,不僅可以將第一機(jī)房包括的存儲服務(wù)器集群中的數(shù)據(jù)同步到第二機(jī)房包括的存儲服務(wù)器集群中,還可以將第二機(jī)房包括的存儲服務(wù)器集群中的數(shù)據(jù)同步到第一機(jī)房包括的存儲服務(wù)器集群中。另外,本發(fā)明實(shí)施例采用代理服務(wù)器集群、存儲服務(wù)器集群和隊(duì)列服務(wù)器集群,相比單個(gè)服務(wù)器,提高了分布式系統(tǒng)處理數(shù)據(jù)請求的處理性能,并且當(dāng)這些集群中的某個(gè)服務(wù)器出現(xiàn)故障時(shí),還可以由該集群中的其他服務(wù)器進(jìn)行替代,提高了分布式系統(tǒng)的可用性。
【專利附圖】
【附圖說明】
[0087]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0088]圖1是本發(fā)明實(shí)施例提供的一種同步數(shù)據(jù)的系統(tǒng)架構(gòu)圖;
[0089]圖2是本發(fā)明實(shí)施例提供的一種同步數(shù)據(jù)的方法流程圖;
[0090]圖3是本發(fā)明實(shí)施例提供的另一種同步數(shù)據(jù)的方法流程圖;
[0091]圖4是本發(fā)明實(shí)施例提供的一種同步數(shù)據(jù)的系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0092]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0093]圖1是本發(fā)明實(shí)施例提供的一種同步數(shù)據(jù)的系統(tǒng)機(jī)構(gòu)圖。該系統(tǒng)包括終端側(cè)和網(wǎng)絡(luò)側(cè),網(wǎng)絡(luò)側(cè)可以部署為分布式系統(tǒng)。該分布式系統(tǒng)可以包括多個(gè)機(jī)房,每個(gè)機(jī)房中包括代理服務(wù)器集群、隊(duì)列服務(wù)器集群和存儲服務(wù)器集群。對于該多個(gè)機(jī)房中的任一機(jī)房,終端可以與該機(jī)房中的代理服務(wù)器集群之間通過網(wǎng)絡(luò)連接,該代理服務(wù)器集群與該機(jī)房中的隊(duì)列服務(wù)器集群之間連接,該代理服務(wù)器集群還與該機(jī)房中的存儲服務(wù)器集群之間連接,且任意兩個(gè)機(jī)房中的隊(duì)列服務(wù)器集群之間也連接,以實(shí)現(xiàn)兩個(gè)機(jī)房的連接。
[0094]其中,終端中可以安裝并運(yùn)行多個(gè)業(yè)務(wù)進(jìn)程,當(dāng)終端運(yùn)行業(yè)務(wù)進(jìn)程時(shí)可以與網(wǎng)絡(luò)側(cè)進(jìn)行交互,使網(wǎng)絡(luò)側(cè)為該業(yè)務(wù)提供服務(wù)。代理服務(wù)器集群用于對終端交互時(shí)發(fā)送的請求進(jìn)行初步處理,并隔離終端與存儲服務(wù)器,當(dāng)存儲服務(wù)器中存在業(yè)務(wù)進(jìn)程的數(shù)據(jù)變化時(shí),不影響終端中的業(yè)務(wù)進(jìn)程。隊(duì)列服務(wù)器集群用于同步兩個(gè)機(jī)房之間的數(shù)據(jù)。存儲服務(wù)器用于存儲業(yè)務(wù)進(jìn)程對應(yīng)的數(shù)據(jù)。
[0095]圖2是本發(fā)明實(shí)施例提供的一種同步數(shù)據(jù)的方法流程圖。方法應(yīng)用于分布式系統(tǒng)中,該分布式系統(tǒng)包括多個(gè)機(jī)房,且每個(gè)機(jī)房中包括一個(gè)代理服務(wù)器集群、一個(gè)存儲服務(wù)器集群和一個(gè)隊(duì)列服務(wù)器集群。參見圖2,該方法包括:
[0096]步驟201:代理服務(wù)器集群接收終端發(fā)送的第一寫數(shù)據(jù)請求,第一寫數(shù)據(jù)請求中攜帶第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,代理服務(wù)器集群位于第一機(jī)房中,且第一機(jī)房為多個(gè)機(jī)房中的任一機(jī)房。
[0097]步驟202:代理服務(wù)器集群對第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號,第一存儲服務(wù)器包含于存儲服務(wù)器集群中,存儲服務(wù)器集群也位于第一機(jī)房中。
[0098]步驟203:代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號,將第一寫數(shù)據(jù)請求發(fā)送給第一存儲服務(wù)器,使第一存儲服務(wù)器根據(jù)第一數(shù)據(jù)標(biāo)識,寫入第一待寫入數(shù)據(jù)。
[0099]步驟204:代理服務(wù)器集群向隊(duì)列服務(wù)器集群發(fā)送第一同步數(shù)據(jù)請求,第一同步數(shù)據(jù)請求中攜帶第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,隊(duì)列服務(wù)器集群也位于第一機(jī)房中。
[0100]步驟205:當(dāng)隊(duì)列服務(wù)器集群接收到第一同步數(shù)據(jù)請求時(shí),隊(duì)列服務(wù)器集群將第一同步數(shù)據(jù)請求發(fā)送給第二機(jī)房包括的隊(duì)列服務(wù)器集群,以同步多個(gè)機(jī)房的存儲服務(wù)器集群中存儲的數(shù)據(jù),第二機(jī)房為多個(gè)機(jī)房中除第一機(jī)房之外的機(jī)房。
[0101]在本發(fā)明實(shí)施例中,對于多個(gè)機(jī)房中的任一機(jī)房,當(dāng)該機(jī)房中的代理服務(wù)器集群接收到終端發(fā)送的第一寫數(shù)據(jù)請求時(shí),代理服務(wù)器集群不僅可以將該第一寫數(shù)據(jù)請求發(fā)送給該機(jī)房中的存儲服務(wù)器集群,使存儲服務(wù)器集群對該第一寫數(shù)據(jù)請求進(jìn)行處理,還可以基于第一寫數(shù)據(jù)請求,向該機(jī)房中的隊(duì)列服務(wù)器集群發(fā)送第一同步數(shù)據(jù)請求,使該隊(duì)列服務(wù)器集群將該第一同步數(shù)據(jù)請求發(fā)送給其他機(jī)房中的隊(duì)列服務(wù)器集群,如此,實(shí)現(xiàn)多個(gè)機(jī)房中存儲的數(shù)據(jù)的互相同步,即,不僅可以將第一機(jī)房包括的存儲服務(wù)器集群中的數(shù)據(jù)同步到第二機(jī)房包括的存儲服務(wù)器集群中,還可以將第二機(jī)房包括的存儲服務(wù)器集群中的數(shù)據(jù)同步到第一機(jī)房包括的存儲服務(wù)器集群中。另外,本發(fā)明實(shí)施例采用代理服務(wù)器集群、存儲服務(wù)器集群和隊(duì)列服務(wù)器集群,相比單個(gè)服務(wù)器,提高了分布式系統(tǒng)處理數(shù)據(jù)請求的處理性能,并且當(dāng)這些集群中的某個(gè)服務(wù)器出現(xiàn)故障時(shí),還可以由該集群中的其他服務(wù)器進(jìn)行替代,提高了分布式系統(tǒng)的可用性。
[0102]可選地,代理服務(wù)器集群對第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號之后,還包括:
[0103]代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號、第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,從第一存儲服務(wù)器中獲取第一待寫入數(shù)據(jù)的元數(shù)據(jù);
[0104]代理服務(wù)器集群根據(jù)元數(shù)據(jù),判斷是否執(zhí)行對應(yīng)的寫操作;
[0105]如果判斷出執(zhí)行寫操作,則代理服務(wù)器集群執(zhí)行根據(jù)第一存儲服務(wù)器的編號,將第一寫數(shù)據(jù)請求發(fā)送給第一存儲服務(wù)器的步驟。
[0106]可選地,代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號、第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,從第一存儲服務(wù)器中獲取第一待寫入數(shù)據(jù)的元數(shù)據(jù),包括:
[0107]代理服務(wù)器集群獲取第一待寫入數(shù)據(jù)的數(shù)據(jù)類型;
[0108]如果第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第一數(shù)據(jù)類型,則代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號和第一數(shù)據(jù)標(biāo)識,從第一存儲服務(wù)器中獲取第一待寫入數(shù)據(jù)的元數(shù)據(jù);
[0109]如果第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第二數(shù)據(jù)類型,則代理服務(wù)器集群將第一待寫入數(shù)據(jù)拆分為多個(gè)待寫入子數(shù)據(jù),并基于多個(gè)待寫入子數(shù)據(jù),將第一數(shù)據(jù)標(biāo)識拆分為多個(gè)數(shù)據(jù)子標(biāo)識,待寫入子數(shù)據(jù)與數(shù)據(jù)子標(biāo)識一一對應(yīng);
[0110]代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號和多個(gè)數(shù)據(jù)子標(biāo)識,從第一存儲服務(wù)器中獲取多個(gè)待寫入子數(shù)據(jù)的元數(shù)據(jù)。
[0111]可選地,代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號和第一數(shù)據(jù)標(biāo)識,從第一存儲服務(wù)器中獲取第一待寫入數(shù)據(jù)的元數(shù)據(jù),包括:
[0112]代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號,向第一存儲服務(wù)器發(fā)送第一元數(shù)據(jù)獲取請求,第一元數(shù)據(jù)獲取請求中攜帶第一數(shù)據(jù)標(biāo)識;
[0113]當(dāng)?shù)谝淮鎯Ψ?wù)器接收到第一元數(shù)據(jù)獲取請求時(shí),第一存儲服務(wù)器根據(jù)第一數(shù)據(jù)標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù);
[0114]第一存儲服務(wù)器將獲取的元數(shù)據(jù)發(fā)送給代理服務(wù)器集群。
[0115]可選地,代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號和多個(gè)數(shù)據(jù)子標(biāo)識,從第一存儲服務(wù)器中獲取多個(gè)待寫入子數(shù)據(jù)的元數(shù)據(jù),包括:
[0116]對于多個(gè)待寫入子數(shù)據(jù)中的任一待寫入子數(shù)據(jù),代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號,向第一存儲服務(wù)器發(fā)送第二元數(shù)據(jù)獲取請求,第二元數(shù)據(jù)獲取請求中攜帶待寫入子數(shù)據(jù)對應(yīng)的數(shù)據(jù)子標(biāo)識;
[0117]當(dāng)?shù)谝淮鎯Ψ?wù)器接收到第二元數(shù)據(jù)獲取請求時(shí),第一存儲服務(wù)器根據(jù)數(shù)據(jù)子標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù);
[0118]第一存儲服務(wù)器將獲取的元數(shù)據(jù)發(fā)送給代理服務(wù)器集群。
[0119]可選地,代理服務(wù)器集群根據(jù)獲取的元數(shù)據(jù),判斷是否執(zhí)行對應(yīng)的寫操作,包括:
[0120]當(dāng)元數(shù)據(jù)為本地時(shí)間戳?xí)r,代理服務(wù)器集群讀取當(dāng)前時(shí)間,并將讀取的時(shí)間確定為寫操作的操作時(shí)間戳;
[0121]代理服務(wù)器集群比較操作時(shí)間戳和本地時(shí)間戳;
[0122]如果操作時(shí)間戳晚于本地時(shí)間戳,則代理服務(wù)器集群確定執(zhí)行寫操作。
[0123]可選地,該方法還包括:
[0124]隊(duì)列服務(wù)器集群接收第二機(jī)房包括的隊(duì)列服務(wù)器集群發(fā)送的第二同步數(shù)據(jù)請求,第二同步數(shù)據(jù)請求中攜帶第二待寫入數(shù)據(jù)和第二數(shù)據(jù)標(biāo)識;
[0125]隊(duì)列服務(wù)器集群將第二同步數(shù)據(jù)請求發(fā)送給代理服務(wù)器集群;
[0126]當(dāng)代理服務(wù)器集群接收到第二同步數(shù)據(jù)請求時(shí),代理服務(wù)器集群對第二數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到第二待寫入數(shù)據(jù)對應(yīng)的第二存儲服務(wù)器的編號,第二存儲服務(wù)器包含于存儲服務(wù)器集群中;
[0127]代理服務(wù)器集群根據(jù)第二存儲服務(wù)器的編號,向第二存儲服務(wù)器發(fā)送第二寫數(shù)據(jù)請求,第二寫數(shù)據(jù)請求中攜帶第二待寫入數(shù)據(jù)和第二數(shù)據(jù)標(biāo)識,使第二存儲服務(wù)器根據(jù)第二數(shù)據(jù)標(biāo)識,寫入第二待寫入數(shù)據(jù)。
[0128]可選地,該方法還包括:
[0129]當(dāng)部署新機(jī)房時(shí),存儲服務(wù)器集群將存儲的數(shù)據(jù)同步給新存儲服務(wù)器集群;
[0130]隊(duì)列服務(wù)器集群將緩存的同步數(shù)據(jù)請求同步給新隊(duì)列服務(wù)器集群;
[0131]代理服務(wù)器集群向存儲服務(wù)器集群發(fā)送測試數(shù)據(jù)寫請求,測試數(shù)據(jù)寫請求中攜帶待寫入的測試數(shù)據(jù)和測試數(shù)據(jù)標(biāo)識;
[0132]當(dāng)存儲服務(wù)器集群接收到測試數(shù)據(jù)寫請求時(shí),存儲服務(wù)器集群根據(jù)測試數(shù)據(jù)標(biāo)識,寫入待寫入的測試數(shù)據(jù);
[0133]存儲服務(wù)器集群將測試數(shù)據(jù)同步給新存儲服務(wù)器集群,以測試新存儲服務(wù)器中是否同步上存儲服務(wù)器集群中存儲的數(shù)據(jù);
[0134]如果新存儲服務(wù)器集群中同步上存儲服務(wù)器集群中存儲的數(shù)據(jù),則啟動(dòng)新代理服務(wù)器集群,并基于新存儲服務(wù)器集群同步的數(shù)據(jù),處理新隊(duì)列服務(wù)器集群中的同步數(shù)據(jù)請求;
[0135]其中,新存儲服務(wù)器集群、新隊(duì)列服務(wù)器集群和新代理服務(wù)器集群位于新機(jī)房中。
[0136]上述所有可選技術(shù)方案,均可按照任意結(jié)合形成本發(fā)明的可選實(shí)施例,在此不再
--贅述。
[0137]圖3是本發(fā)明實(shí)施例提供的一種同步數(shù)據(jù)的方法流程圖。該方法應(yīng)用于分布式系統(tǒng)中,該分布式系統(tǒng)包括多個(gè)機(jī)房,且每個(gè)機(jī)房中包括代理服務(wù)器集群、存儲服務(wù)器集群和隊(duì)列服務(wù)器集群。每個(gè)機(jī)房中的代理服務(wù)器集群、存儲服務(wù)器集群和隊(duì)列服務(wù)器集群可以是單獨(dú)的服務(wù)器集群,也可以是同一服務(wù)器上的不同功能模塊。參見圖3,該方法包括:
[0138]步驟301:終端加載本地配置文件,并從本地配置文件中獲取需要訪問的代理服務(wù)器集群的標(biāo)識。
[0139]其中,在終端中可以對于不同的業(yè)務(wù)進(jìn)程,事先存儲不同的本地配置文件。且本地配置文件是存儲在指定目錄下的。當(dāng)終端運(yùn)行安裝的任一業(yè)務(wù)進(jìn)程時(shí),終端可以根據(jù)該業(yè)務(wù)進(jìn)程對應(yīng)的指定目錄,查找該業(yè)務(wù)進(jìn)程對應(yīng)的本地配置文件。當(dāng)查找到對應(yīng)的本地配置文件時(shí),該終端可以加載該本地配置文件,并從該本地配置文件中獲取需要訪問的代理服務(wù)器集群的標(biāo)識。
[0140]其中,代理服務(wù)器集群的標(biāo)識可以為該代理服務(wù)器集群在分布式系統(tǒng)包括的代理服務(wù)器集群中的編號,還可以為該代理服務(wù)器集群所在機(jī)房的編號,當(dāng)然,還可以為該代理服務(wù)器集群的名稱,本發(fā)明實(shí)施例對此不做具體限定。
[0141]需要補(bǔ)充說明的是,本地配置文件中不僅存儲終端需要訪問的代理服務(wù)器集群的標(biāo)識,還可以存儲該業(yè)務(wù)進(jìn)程運(yùn)行過程中需要的其他配置信息。由于其他配置信息在本發(fā)明實(shí)施例中并未涉及,所以,在此不再對其他配置信息進(jìn)行一一闡述。
[0142]另外,在分布式系統(tǒng)中也可以不用部署多個(gè)代理服務(wù)器進(jìn)行集群化處理,可以只部署一個(gè)代理服務(wù)器。但是,當(dāng)業(yè)務(wù)進(jìn)程較多時(shí),考慮到代理服務(wù)器的負(fù)載問題,可以優(yōu)選地部署多個(gè)代理服務(wù)器構(gòu)成代理服務(wù)器集群。當(dāng)部署多個(gè)代理服務(wù)器時(shí),如果某個(gè)代理服務(wù)器宕機(jī),其他的代理服務(wù)器還可以繼續(xù)提供服務(wù),提高了分布式系統(tǒng)的可用性。
[0143]步驟302:終端根據(jù)該代理服務(wù)器集群的標(biāo)識,向該代理服務(wù)器集群發(fā)送第一寫數(shù)據(jù)請求,第一寫數(shù)據(jù)請求中攜帶第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,該代理服務(wù)器集群位于第一機(jī)房中,且第一機(jī)房為多個(gè)機(jī)房中的任一機(jī)房。
[0144]具體地,終端根據(jù)該代理服務(wù)器集群的標(biāo)識,通過終端提供的訪問接口向該代理服務(wù)器集群發(fā)送第一寫數(shù)據(jù)請求。
[0145]其中,終端可以提供一個(gè)訪問接口,當(dāng)終端發(fā)送消息時(shí),可以通過該訪問接口進(jìn)行發(fā)送。
[0146]另外,寫數(shù)據(jù)請求對應(yīng)寫操作,而寫操作可以包括插入操作、更新操作和刪除操作。其中,當(dāng)寫操作為刪除操作時(shí),第一待寫入數(shù)據(jù)可以為空。
[0147]其中,第一數(shù)據(jù)標(biāo)識可以為第一待寫入數(shù)據(jù)的地址,也可以為第一待寫入數(shù)據(jù)的名稱,本發(fā)明實(shí)施例對此不做具體限定。
[0148]步驟303:當(dāng)代理服務(wù)器集群接收到該第一寫數(shù)據(jù)請求時(shí),代理服務(wù)器集群對第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號,第一存儲服務(wù)器包含于存儲服務(wù)器集群中,該存儲服務(wù)器集群也位于第一機(jī)房中。
[0149]具體地,當(dāng)代理服務(wù)器集群接收到第一寫數(shù)據(jù)請求時(shí),代理服務(wù)器集群可以對第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到運(yùn)算數(shù)值。將運(yùn)算數(shù)值確定為第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號。
[0150]其中,存儲服務(wù)器集群中包括多個(gè)存儲服務(wù)器,可以事先對該多個(gè)存儲服務(wù)器進(jìn)行編號。當(dāng)代理服務(wù)器集群對第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到第一存儲服務(wù)器的編號時(shí),可以將第一待寫入數(shù)據(jù)寫入第一存儲服務(wù)器,如此,保證同一個(gè)數(shù)據(jù)標(biāo)識對應(yīng)的數(shù)據(jù),可以寫入同一個(gè)存儲服務(wù)器中,減少了時(shí)間沖突。
[0151]由于代理服務(wù)器集群中部署了多個(gè)代理服務(wù)器,所以,可以通過輪詢的方式均衡每個(gè)代理服務(wù)器的負(fù)載。比如,該代理服務(wù)器集群中包括3個(gè)代理服務(wù)器,當(dāng)接收到第一個(gè)寫數(shù)據(jù)請求時(shí),可以分配代理服務(wù)器I對該寫數(shù)據(jù)請求進(jìn)行處理;當(dāng)接收到第二個(gè)寫數(shù)據(jù)請求時(shí),可以分配代理服務(wù)器2對該寫數(shù)據(jù)請求進(jìn)行處理;當(dāng)接收到第三個(gè)寫數(shù)據(jù)請求時(shí),可以分配代理服務(wù)器3對該寫數(shù)據(jù)請求進(jìn)行處理。
[0152]步驟304:代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號、第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,從第一存儲服務(wù)器中獲取第一待寫入數(shù)據(jù)的元數(shù)據(jù)。
[0153]具體地,本步驟可以通過如下(1)-(4)的步驟來實(shí)現(xiàn),包括:
[0154](I)、代理服務(wù)器集群獲取第一待寫入數(shù)據(jù)的數(shù)據(jù)類型。
[0155]具體地,代理服務(wù)器集群可以對第一待寫入數(shù)據(jù)進(jìn)行類型檢測,得到第一待寫入數(shù)據(jù)的數(shù)據(jù)類型。
[0156]其中,在本發(fā)明實(shí)施例中,數(shù)據(jù)類型可以包括第一數(shù)據(jù)類型和第二數(shù)據(jù)類型。第一數(shù)據(jù)類型為最基本的非集合數(shù)據(jù)類型,比如,string類型。第二數(shù)據(jù)類型為集合數(shù)據(jù)類型,比如,set、sorted set、hash 等類型。
[0157](2)、如果第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第一數(shù)據(jù)類型,則代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號和第一數(shù)據(jù)標(biāo)識,從第一存儲服務(wù)器中獲取第一待寫入數(shù)據(jù)的元數(shù)據(jù)。
[0158]具體地,如果第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第一數(shù)據(jù)類型,則代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號,向第一存儲服務(wù)器發(fā)送第一元數(shù)據(jù)獲取請求,第一元數(shù)據(jù)獲取請求中攜帶第一數(shù)據(jù)標(biāo)識。當(dāng)?shù)谝淮鎯Ψ?wù)器接收到第一元數(shù)據(jù)獲取請求時(shí),第一存儲服務(wù)器根據(jù)第一數(shù)據(jù)標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù)。第一存儲服務(wù)器將獲取的元數(shù)據(jù)發(fā)送給代理服務(wù)器集群。
[0159]其中,元數(shù)據(jù)是對第一待寫入數(shù)據(jù)進(jìn)行描述的數(shù)據(jù),也就是說,是第一待寫入數(shù)據(jù)的屬性數(shù)據(jù),用于管理第一待寫入數(shù)據(jù)。例如,元數(shù)據(jù)可以為數(shù)據(jù)長度、時(shí)間戳等等。本發(fā)明實(shí)施例以元數(shù)據(jù)為時(shí)間戳為例進(jìn)行說明。
[0160]例如,第一存儲服務(wù)器的編號為2,則代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號2,向第一存儲服務(wù)器發(fā)送第一元數(shù)據(jù)獲取請求,第一元數(shù)據(jù)獲取請求中攜帶第一數(shù)據(jù)標(biāo)識keyO。當(dāng)?shù)谝淮鎯Ψ?wù)器接收到第一元數(shù)據(jù)獲取請求時(shí),第一存儲服務(wù)器根據(jù)第一數(shù)據(jù)標(biāo)識keyO,可以從如下表I所示的數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù)為2014.6.23-14:00。第一存儲服務(wù)器可以將獲取的元數(shù)據(jù)2014.6.23-14:00發(fā)送給代理服務(wù)器集群。
[0161]表I
[0162]
數(shù)據(jù)標(biāo)識[^11
keyO2014.6.23—14:00
key!2014.6.23-5:12
key22014.6.23-5:13
key32014.6.23-5:15
[0163]需要補(bǔ)充說明的是,在實(shí)際應(yīng)用中,上述表I中時(shí)間的精確度可以達(dá)到微秒的64位整數(shù),而在本發(fā)明實(shí)施例中,為了舉例方便,僅以上述表I中的時(shí)間精確度為例進(jìn)行說明。
[0164](3)、如果第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第二數(shù)據(jù)類型,則代理服務(wù)器集群將第一待寫入數(shù)據(jù)拆分為多個(gè)待寫入子數(shù)據(jù),并基于多個(gè)待寫入子數(shù)據(jù),將第一數(shù)據(jù)標(biāo)識拆分為多個(gè)數(shù)據(jù)子標(biāo)識,待寫入子數(shù)據(jù)與數(shù)據(jù)子標(biāo)識一一對應(yīng)。
[0165]其中,當(dāng)?shù)谝淮龑懭霐?shù)據(jù)的數(shù)據(jù)類型為第二數(shù)據(jù)類型時(shí),則表明第一待寫入數(shù)據(jù)是一個(gè)數(shù)據(jù)集合,也就是說,第一待寫入數(shù)據(jù)中包括多個(gè)待寫入子數(shù)據(jù),該多個(gè)待寫入子數(shù)據(jù)是針對多個(gè)成員的單獨(dú)寫操作對應(yīng)的數(shù)據(jù)。所以,可以基于每個(gè)成員,將第一待寫入數(shù)據(jù)拆分為多個(gè)待寫入子數(shù)據(jù),并基于多個(gè)待寫入子數(shù)據(jù),將第一數(shù)據(jù)標(biāo)識拆分為多個(gè)數(shù)據(jù)子標(biāo)識。其中,待寫入子數(shù)據(jù)與數(shù)據(jù)子標(biāo)識一一對應(yīng)。
[0166]例如,第一待寫入數(shù)據(jù)為數(shù)據(jù)集合{valuel、value2, value3},代理服務(wù)器集群將第一待寫入數(shù)據(jù)拆分為3個(gè)待寫入子數(shù)據(jù)valuel、value2和value3。同時(shí),基于該3個(gè)待寫入子數(shù)據(jù),將第一數(shù)據(jù)標(biāo)識{keyl、key2、key3}拆分為3個(gè)數(shù)據(jù)子標(biāo)識keyl、key2和key30 其中,valuel 和 keyl 對應(yīng),value2 和 key2 對應(yīng),value3 和 key3 對應(yīng)。
[0167](4)、代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號和多個(gè)數(shù)據(jù)子標(biāo)識,從第一存儲服務(wù)器中獲取多個(gè)待寫入子數(shù)據(jù)的元數(shù)據(jù)。
[0168]具體地,對于多個(gè)待寫入子數(shù)據(jù)中的任一待寫入子數(shù)據(jù),代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號,向第一存儲服務(wù)器發(fā)送第二元數(shù)據(jù)獲取請求,第二元數(shù)據(jù)獲取請求中攜帶待寫入子數(shù)據(jù)對應(yīng)的數(shù)據(jù)子標(biāo)識;當(dāng)?shù)谝淮鎯Ψ?wù)器接收到第二元數(shù)據(jù)獲取請求時(shí),第一存儲服務(wù)器根據(jù)數(shù)據(jù)子標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù);第一存儲服務(wù)器將獲取的元數(shù)據(jù)發(fā)送給代理服務(wù)器集群。
[0169]其中,對于多個(gè)待寫入子數(shù)據(jù)中的其他待寫入子數(shù)據(jù),也可以按照上述方法獲取其對應(yīng)的元數(shù)據(jù),在此不再詳細(xì)贅述。
[0170]例如,對于3個(gè)待寫入子數(shù)據(jù)中的待寫入子數(shù)據(jù)value2,代理服務(wù)器集群根據(jù)第一存儲服務(wù)器的編號2,向第一存儲服務(wù)器發(fā)送第二元數(shù)據(jù)獲取請求,第二元數(shù)據(jù)獲取請求中攜帶待寫入子數(shù)據(jù)value2對應(yīng)的數(shù)據(jù)子標(biāo)識key2。當(dāng)?shù)谝淮鎯Ψ?wù)器接收到第二元數(shù)據(jù)獲取請求時(shí),第一存儲服務(wù)器根據(jù)數(shù)據(jù)標(biāo)識key2,從上述表I所述的數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù)為2014.6.23-5:13。第一存儲服務(wù)將獲取的元數(shù)據(jù)2014.6.23-5:13發(fā)送給代理服務(wù)器集群。
[0171]步驟305:代理服務(wù)器集群根據(jù)獲取的元數(shù)據(jù),判斷是否執(zhí)行對應(yīng)的寫操作。
[0172]具體地,當(dāng)元數(shù)據(jù)為本地時(shí)間戳?xí)r,代理服務(wù)器集群讀取當(dāng)前時(shí)間,并將讀取的時(shí)間確定為寫操作的操作時(shí)間戳;代理服務(wù)器集群比較操作時(shí)間戳和本地時(shí)間戳;如果操作時(shí)間戳晚于本地時(shí)間戳,則代理服務(wù)器集群確定執(zhí)行寫操作。
[0173]其中,該寫操作為第一寫數(shù)據(jù)請求對應(yīng)的操作。
[0174]進(jìn)一步地,如果操作時(shí)間戳早于本地時(shí)間戳,則代理服務(wù)器集群確定不執(zhí)行該寫操作。該代理服務(wù)器集群直接將該寫操作丟棄,也即是,直接將第一寫數(shù)據(jù)請丟棄。
[0175]基于上述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第一數(shù)據(jù)類型的例子,第一待寫入數(shù)據(jù)的元數(shù)據(jù)為2014.6.23-14:00,此時(shí),代理服務(wù)器集群讀取當(dāng)前時(shí)間為2014.6.25-10:00,也即是,寫操作的操作時(shí)間戳為2014.6.25-10:00,操作時(shí)間戳2014.6.25-10:00晚于本地時(shí)間戳2014.6.23-14:00,則代理服務(wù)器集群確定執(zhí)行該寫操作。
[0176]進(jìn)一步地,如果操作時(shí)間戳晚于本地時(shí)間戳,則代理服務(wù)器集群確定執(zhí)行寫操作之后,還包括:代理服務(wù)器集群將操作時(shí)間戳發(fā)送給第一存儲服務(wù)器,使第一存儲服務(wù)器將本地時(shí)間戳替換為操作時(shí)間戳。
[0177]需要說明的是,第一存儲服務(wù)器將本地時(shí)間戳替換為操作時(shí)間戳可以在此步驟執(zhí)行,還可以在寫入第一待寫入數(shù)據(jù)之后執(zhí)行,本發(fā)明實(shí)施例對此不做具體限定。
[0178]延續(xù)上述例子,代理服務(wù)器集群將操作時(shí)間戳2014.6.25-10:00發(fā)送給第一存儲服務(wù)器。當(dāng)?shù)谝淮鎯Ψ?wù)器接收到該操作時(shí)間戳2014.6.25-10:00,第一存儲服務(wù)器根據(jù)第一數(shù)據(jù)標(biāo)識keyO,將上述表1中,第一數(shù)據(jù)標(biāo)識keyO對應(yīng)的元數(shù)據(jù),也即是,第一數(shù)據(jù)標(biāo)識keyO對應(yīng)的本地時(shí)間戳2014.6.23-14:00替換為操作時(shí)間戳2014.6.25-10:00,如下表2所示。
[0179]表2
[0180]
【權(quán)利要求】
1.一種同步數(shù)據(jù)的方法,所述方法應(yīng)用于分布式系統(tǒng)中,所述分布式系統(tǒng)包括多個(gè)機(jī)房,且每個(gè)機(jī)房中包括代理服務(wù)器集群、存儲服務(wù)器集群和隊(duì)列服務(wù)器集群,其特征在于,所述方法包括: 代理服務(wù)器集群接收終端發(fā)送的第一寫數(shù)據(jù)請求,所述第一寫數(shù)據(jù)請求中攜帶第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,所述代理服務(wù)器集群位于第一機(jī)房中,且所述第一機(jī)房為所述多個(gè)機(jī)房中的任一機(jī)房; 所述代理服務(wù)器集群對所述第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號,所述第一存儲服務(wù)器包含于存儲服務(wù)器集群中,所述存儲服務(wù)器集群也位于所述第一機(jī)房中; 所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號,將所述第一寫數(shù)據(jù)請求發(fā)送給所述第一存儲服務(wù)器,使所述第一存儲服務(wù)器根據(jù)所述第一數(shù)據(jù)標(biāo)識,寫入所述第一待寫入數(shù)據(jù); 所述代理服務(wù)器集群向隊(duì)列服務(wù)器集群發(fā)送第一同步數(shù)據(jù)請求,所述第一同步數(shù)據(jù)請求中攜帶所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,所述隊(duì)列服務(wù)器集群也位于所述第一機(jī)房中; 當(dāng)所述隊(duì)列服務(wù)器集群接收到所述第一同步數(shù)據(jù)請求時(shí),所述隊(duì)列服務(wù)器集群將所述第一同步數(shù)據(jù)請求發(fā)送給第二機(jī)房包括的隊(duì)列服務(wù)器集群,以同步所述多個(gè)機(jī)房的存儲服務(wù)器集群中存儲的數(shù)據(jù),所述第二機(jī)房為所述多個(gè)機(jī)房中除所述第一機(jī)房之外的機(jī)房。
2.如權(quán)利要求1所述的方法,其特征在于,所述代理服務(wù)器集群對所述第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號之后,還包括: 所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號、所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù); 所述代理服務(wù)器集群根據(jù)所述元數(shù)據(jù),判斷是否執(zhí)行對應(yīng)的寫操作; 如果判斷出執(zhí)行所述寫操作,則所述代理服務(wù)器集群執(zhí)行根據(jù)所述第一存儲服務(wù)器的編號,將所述第一寫數(shù)據(jù)請求發(fā)送給所述第一存儲服務(wù)器的步驟。
3.如權(quán)利要求2所述的方法,其特征在于,所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號、所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù),包括: 所述代理服務(wù)器集群獲取所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型; 如果所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第一數(shù)據(jù)類型,則所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù); 如果所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第二數(shù)據(jù)類型,則所述代理服務(wù)器集群將所述第一待寫入數(shù)據(jù)拆分為多個(gè)待寫入子數(shù)據(jù),并基于所述多個(gè)待寫入子數(shù)據(jù),將所述第一數(shù)據(jù)標(biāo)識拆分為多個(gè)數(shù)據(jù)子標(biāo)識,所述待寫入子數(shù)據(jù)與所述數(shù)據(jù)子標(biāo)識一一對應(yīng); 所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號和所述多個(gè)數(shù)據(jù)子標(biāo)識,從所述第一存儲服務(wù)器中獲取所述多個(gè)待寫入子數(shù)據(jù)的元數(shù)據(jù)。
4.如權(quán)利要求3所述的方法,其特征在于,所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù),包括: 所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號,向所述第一存儲服務(wù)器發(fā)送第一元數(shù)據(jù)獲取請求,所述第一元數(shù)據(jù)獲取請求中攜帶所述第一數(shù)據(jù)標(biāo)識; 當(dāng)所述第一存儲服務(wù)器接收到所述第一元數(shù)據(jù)獲取請求時(shí),所述第一存儲服務(wù)器根據(jù)所述第一數(shù)據(jù)標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù); 所述第一存儲服務(wù)器將獲取的所述元數(shù)據(jù)發(fā)送給所述代理服務(wù)器集群。
5.如權(quán)利要求4所述的方法,其特征在于,所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號和所述多個(gè)數(shù)據(jù)子標(biāo)識,從所述第一存儲服務(wù)器中獲取所述多個(gè)待寫入子數(shù)據(jù)的元數(shù)據(jù),包括: 對于所述多個(gè)待寫入子數(shù)據(jù)中的任一待寫入子數(shù)據(jù),所述代理服務(wù)器集群根據(jù)所述第一存儲服務(wù)器的編號,向所述第一存儲服務(wù)器發(fā)送第二元數(shù)據(jù)獲取請求,所述第二元數(shù)據(jù)獲取請求中攜帶所述待寫入子數(shù)據(jù)對應(yīng)的數(shù)據(jù)子標(biāo)識; 當(dāng)所述第一存儲服務(wù)器接收到所述第二元數(shù)據(jù)獲取請求時(shí),所述第一存儲服務(wù)器根據(jù)所述數(shù)據(jù)子標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù); 所述第一存儲服務(wù)器將獲取的所述元數(shù)據(jù)發(fā)送給所述代理服務(wù)器集群。
6.如權(quán)利要求2-5任一權(quán)利要求所述的方法,其特征在于,所述代理服務(wù)器集群根據(jù)所述元數(shù)據(jù),判斷是否執(zhí)行對應(yīng)的寫操作,包括: 當(dāng)所述元數(shù)據(jù)為本地時(shí)間戳?xí)r,所述代理服務(wù)器集群讀取當(dāng)前時(shí)間,并將讀取的時(shí)間確定為所述寫操作的操作時(shí)間戳; 所述代理服務(wù)器集群比較所述操作時(shí)間戳和所述本地時(shí)間戳; 如果所述操作時(shí)間戳晚于所述本地時(shí)間戳,則所述代理服務(wù)器集群確定執(zhí)行所述寫操作。
7.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 所述隊(duì)列服務(wù)器集群接收所述第二機(jī)房包括的隊(duì)列服務(wù)器集群發(fā)送的第二同步數(shù)據(jù)請求,所述第二同步數(shù)據(jù)請求中攜帶第二待寫入數(shù)據(jù)和第二數(shù)據(jù)標(biāo)識; 所述隊(duì)列服務(wù)器集群將所述第二同步數(shù)據(jù)請求發(fā)送給所述代理服務(wù)器集群; 當(dāng)所述代理服務(wù)器集群接收到所述第二同步數(shù)據(jù)請求時(shí),所述代理服務(wù)器集群對所述第二數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第二待寫入數(shù)據(jù)對應(yīng)的第二存儲服務(wù)器的編號,所述第二存儲服務(wù)器包含于所述存儲服務(wù)器集群中; 所述代理服務(wù)器集群根據(jù)所述第二存儲服務(wù)器的編號,向所述第二存儲服務(wù)器發(fā)送第二寫數(shù)據(jù)請求,所述第二寫數(shù)據(jù)請求中攜帶所述第二待寫入數(shù)據(jù)和所述第二數(shù)據(jù)標(biāo)識,使所述第二存儲服務(wù)器根據(jù)所述第二數(shù)據(jù)標(biāo)識,寫入所述第二待寫入數(shù)據(jù)。
8.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)部署新機(jī)房時(shí),所述存儲服務(wù)器集群將存儲的數(shù)據(jù)同步給新存儲服務(wù)器集群; 所述隊(duì)列服務(wù)器集群將緩存的同步數(shù)據(jù)請求同步給新隊(duì)列服務(wù)器集群; 所述代理服務(wù)器集群向所述存儲服務(wù)器集群發(fā)送測試數(shù)據(jù)寫請求,所述測試數(shù)據(jù)寫請求中攜帶待寫入的測試數(shù)據(jù)和測試數(shù)據(jù)標(biāo)識; 當(dāng)所述存儲服務(wù)器集群接收到所述測試數(shù)據(jù)寫請求時(shí),所述存儲服務(wù)器集群根據(jù)所述測試數(shù)據(jù)標(biāo)識,寫入所述待寫入的測試數(shù)據(jù); 所述存儲服務(wù)器集群將所述測試數(shù)據(jù)同步給所述新存儲服務(wù)器集群,以測試所述新存儲服務(wù)器中是否同步上所述存儲服務(wù)器集群中存儲的數(shù)據(jù); 如果所述新存儲服務(wù)器集群中同步上所述存儲服務(wù)器集群中存儲的數(shù)據(jù),則啟動(dòng)新代理服務(wù)器集群,并基于所述新存儲服務(wù)器集群同步的數(shù)據(jù),處理所述新隊(duì)列服務(wù)器集群中的同步數(shù)據(jù)請求; 其中,所述新存儲服務(wù)器集群、所述新隊(duì)列服務(wù)器集群和所述新代理服務(wù)器集群位于所述新機(jī)房中。
9.一種分布式系統(tǒng),所述分布式系統(tǒng)包括多個(gè)機(jī)房,且每個(gè)機(jī)房中包括代理服務(wù)器集群、存儲服務(wù)器集群和隊(duì)列服務(wù)器集群,其特征在于, 代理服務(wù)器集群,用于接收終端發(fā)送的第一寫數(shù)據(jù)請求,所述第一寫數(shù)據(jù)請求中攜帶第一待寫入數(shù)據(jù)和第一數(shù)據(jù)標(biāo)識,所述代理服務(wù)器集群位于第一機(jī)房中,且所述第一機(jī)房為所述多個(gè)機(jī)房中的任一機(jī)房; 所述代理服務(wù)器集群,還用于對所述第一數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第一待寫入數(shù)據(jù)對應(yīng)的第一存儲服務(wù)器的編號,所述第一存儲服務(wù)器包含于存儲服務(wù)器集群中,所述存儲服務(wù)器集群也位于所述第一機(jī)房中; 所述代理服務(wù)器集群,還用于根據(jù)所述第一存儲服務(wù)器的編號,將所述第一寫數(shù)據(jù)請求發(fā)送給所述第一存儲服務(wù)器,使所述第一存儲服務(wù)器根據(jù)所述第一數(shù)據(jù)標(biāo)識,寫入所述第一待寫入數(shù)據(jù); 所述代理服務(wù)器集群,還用于向隊(duì)列服務(wù)器集群發(fā)送第一同步數(shù)據(jù)請求,所述第一同步數(shù)據(jù)請求中攜帶所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,所述隊(duì)列服務(wù)器集群也位于所述第一機(jī)房中; 所述隊(duì)列服務(wù)器集群,用于當(dāng)接收到所述第一同步數(shù)據(jù)請求時(shí),將所述第一同步數(shù)據(jù)請求發(fā)送給第二機(jī)房包括的隊(duì)列服務(wù)器集群,以同步所述多個(gè)機(jī)房的存儲服務(wù)器集群中存儲的數(shù)據(jù),所述第二機(jī)房為所述多個(gè)機(jī)房中除所述第一機(jī)房之外的機(jī)房。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于, 所述代理服務(wù)器集群,還用于根據(jù)所述第一存儲服務(wù)器的編號、所述第一待寫入數(shù)據(jù)和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù);所述代理服務(wù)器集群,還用于根據(jù)所述元數(shù)據(jù),判斷是否執(zhí)行對應(yīng)的寫操作; 所述代理服務(wù)器集群,還用于如果判斷出執(zhí)行所述寫操作,則執(zhí)行根據(jù)所述第一存儲服務(wù)器的編號,將所述第一寫數(shù)據(jù)請求發(fā)送給所述第一存儲服務(wù)器的步驟。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于, 所述代理服務(wù)器集群,還用于獲取所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型; 所述代理服務(wù)器集群,還用于如果所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第一數(shù)據(jù)類型,則根據(jù)所述第一存儲服務(wù)器的編號和所述第一數(shù)據(jù)標(biāo)識,從所述第一存儲服務(wù)器中獲取所述第一待寫入數(shù)據(jù)的元數(shù)據(jù);所述代理服務(wù)器集群,還用于如果所述第一待寫入數(shù)據(jù)的數(shù)據(jù)類型為第二數(shù)據(jù)類型,則將所述第一待寫入數(shù)據(jù)拆分為多個(gè)待寫入子數(shù)據(jù),并基于所述多個(gè)待寫入子數(shù)據(jù),將所述第一數(shù)據(jù)標(biāo)識拆分為多個(gè)數(shù)據(jù)子標(biāo)識,所述待寫入子數(shù)據(jù)與所述數(shù)據(jù)子標(biāo)識一一對應(yīng);所述代理服務(wù)器集群,還用于根據(jù)所述第一存儲服務(wù)器的編號和所述多個(gè)數(shù)據(jù)子標(biāo)識,從所述第一存儲服務(wù)器中獲取所述多個(gè)待寫入子數(shù)據(jù)的元數(shù)據(jù)。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于, 所述代理服務(wù)器集群,還用于根據(jù)所述第一存儲服務(wù)器的編號,向所述第一存儲服務(wù)器發(fā)送第一元數(shù)據(jù)獲取請求,所述第一元數(shù)據(jù)獲取請求中攜帶所述第一數(shù)據(jù)標(biāo)識; 所述第一存儲服務(wù)器,用于當(dāng)所述第一存儲服務(wù)器接收到所述第一元數(shù)據(jù)獲取請求時(shí),根據(jù)所述第一數(shù)據(jù)標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù);所述第一存儲服務(wù)器,還用于將獲取的所述元數(shù)據(jù)發(fā)送給所述代理服務(wù)器集群。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于, 所述代理服務(wù)器集群,還用于對于所述多個(gè)待寫入子數(shù)據(jù)中的任一待寫入子數(shù)據(jù),根據(jù)所述第一存儲服務(wù)器的編號,向所述第一存儲服務(wù)器發(fā)送第二元數(shù)據(jù)獲取請求,所述第二元數(shù)據(jù)獲取請求中攜帶所述待寫入子數(shù)據(jù)對應(yīng)的數(shù)據(jù)子標(biāo)識; 所述第一存儲服務(wù)器,還用于當(dāng)所述第一存儲服務(wù)器接收到所述第二元數(shù)據(jù)獲取請求時(shí),根據(jù)所述數(shù)據(jù)子標(biāo)識,從數(shù)據(jù)標(biāo)識與元數(shù)據(jù)之間的對應(yīng)關(guān)系中獲取對應(yīng)的元數(shù)據(jù);所述第一存儲服務(wù)器,還用于將獲取的所述元數(shù)據(jù)發(fā)送給所述代理服務(wù)器集群。
14.如權(quán)利要求10-13任一權(quán)利要求所述的系統(tǒng),其特征在于, 所述代理服務(wù)器集群,還用于當(dāng)所述元數(shù)據(jù)為本地時(shí)間戳?xí)r,讀取當(dāng)前時(shí)間,并將讀取的時(shí)間確定為所述寫操作的操作時(shí)間戳; 所述代理服務(wù)器集群,還用于比較所述操作時(shí)間戳和所述本地時(shí)間戳; 所述代理服務(wù)器集群,還用于如果所述操作時(shí)間戳晚于所述本地時(shí)間戳,則確定執(zhí)行所述寫操作。
15.如權(quán)利要求9任一權(quán)利要求所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 所述隊(duì)列服務(wù)器集群,還用于接收所述第二機(jī)房包括的隊(duì)列服務(wù)器集群發(fā)送的第二同步數(shù)據(jù)請求,所述第二同步數(shù)據(jù)請求中攜帶第二待寫入數(shù)據(jù)和第二數(shù)據(jù)標(biāo)識; 所述隊(duì)列服務(wù)器集群,還用于將所述第二同步數(shù)據(jù)請求發(fā)送給所述代理服務(wù)器集群;所述代理服務(wù)器集群,還用于當(dāng)所述代理服務(wù)器集群接收到所述第二同步數(shù)據(jù)請求時(shí),對所述第二數(shù)據(jù)標(biāo)識進(jìn)行哈希運(yùn)算,得到所述第二待寫入數(shù)據(jù)對應(yīng)的第二存儲服務(wù)器的編號,所述第二存儲服務(wù)器包含于所述存儲服務(wù)器集群中; 所述代理服務(wù)器集群,還用于根據(jù)所述第二存儲服務(wù)器的編號,向所述第二存儲服務(wù)器發(fā)送第二寫數(shù)據(jù)請求,所述第二寫數(shù)據(jù)請求中攜帶所述第二待寫入數(shù)據(jù)和所述第二數(shù)據(jù)標(biāo)識,使所述第二存儲服務(wù)器根據(jù)所述第二數(shù)據(jù)標(biāo)識,寫入所述第二待寫入數(shù)據(jù)。
16.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 所述存儲服務(wù)器集群,還用于當(dāng)部署新機(jī)房時(shí),將存儲的數(shù)據(jù)同步給新存儲服務(wù)器集群; 所述隊(duì)列服務(wù)器集群,還用于將緩存的同步數(shù)據(jù)請求同步給新隊(duì)列服務(wù)器集群;所述代理服務(wù)器集群,還用于向所述存儲服務(wù)器集群發(fā)送測試數(shù)據(jù)寫請求,所述測試數(shù)據(jù)寫請求中攜帶待寫入的測試數(shù)據(jù)和測試數(shù)據(jù)標(biāo)識; 所述存儲服務(wù)器集群,還用于當(dāng)所述存儲服務(wù)器集群接收到所述測試數(shù)據(jù)寫請求時(shí),根據(jù)所述測試數(shù)據(jù)標(biāo)識,寫入所述待寫入的測試數(shù)據(jù); 所述存儲服務(wù)器集群,還用于將所述測試數(shù)據(jù)同步給所述新存儲服務(wù)器集群,以測試所述新存儲服務(wù)器中是否同步上所述存儲服務(wù)器集群中存儲的數(shù)據(jù); 新代理服務(wù)器集群,還用于如果所述新存儲服務(wù)器集群中同步上所述存儲服務(wù)器集群中存儲的數(shù)據(jù),則啟動(dòng),并基于所述新存儲服務(wù)器集群同步的數(shù)據(jù),處理所述新隊(duì)列服務(wù)器集群中的同步數(shù)據(jù)請求; 其中,所述新存儲服務(wù)器集群、所述新隊(duì)列服務(wù)器集群和所述新代理服務(wù)器集群位于所述新機(jī)房中。
【文檔編號】H04L29/08GK104202375SQ201410417950
【公開日】2014年12月10日 申請日期:2014年8月22日 優(yōu)先權(quán)日:2014年8月22日
【發(fā)明者】邱吉雄, 林道強(qiáng), 張可匯 申請人:廣州華多網(wǎng)絡(luò)科技有限公司