數(shù)據(jù)一致性處理方法、裝置和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)一致性處理方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)的發(fā)展,大量的數(shù)據(jù)在互聯(lián)網(wǎng)上傳播和存儲,往往采用分布式系統(tǒng)進(jìn)行海量數(shù)據(jù)處理。
[0003]現(xiàn)有的分布式數(shù)據(jù)存儲系統(tǒng)往往采用主從的架構(gòu),采用部署一臺主機(jī),多臺備機(jī)的方式,在主機(jī)上進(jìn)行讀寫,在備機(jī)上進(jìn)行讀,而主機(jī)寫之后通過binlog文件同步到備機(jī)。備機(jī)解析相應(yīng)的binlog文件還原在主機(jī)上的寫操作,從而能得到跟主機(jī)一樣的操作結(jié)果,備份結(jié)點(diǎn)采用復(fù)制的方式進(jìn)行還原寫操作,使得主機(jī)和備機(jī)的數(shù)據(jù)一致性存在一定的延遲,使得終端在備機(jī)上讀取的數(shù)據(jù)不一定是最新的,從而產(chǎn)生數(shù)據(jù)不一致問題。
【發(fā)明內(nèi)容】
[0004]基于此,有必要針對上述技術(shù)問題,提供一種數(shù)據(jù)一致性處理方法、裝置和系統(tǒng),保證讀取的數(shù)據(jù)和寫入的數(shù)據(jù)的一致性。
[0005]—種數(shù)據(jù)一致性處理方法,所述方法包括:
[0006]接收終端發(fā)送的第一寫請求,獲取所述第一寫請求對應(yīng)的全局遞增第一請求序列號,將所述第一寫請求與所述第一請求序列號關(guān)聯(lián)存儲至請求序號隊(duì)列;
[0007]廣播所述第一請求序列號和對應(yīng)的第一寫請求至代理服務(wù)器,以使所述代理服務(wù)器根據(jù)本地請求序列號和第一請求序列號的連續(xù)性寫入數(shù)據(jù),使所述寫入的數(shù)據(jù)對應(yīng)的寫入請求的請求序列號連續(xù),當(dāng)數(shù)據(jù)寫入成功時(shí)返回最大請求序列號;
[0008]將所述返回的最大請求序列號與所述代理服務(wù)器關(guān)聯(lián),當(dāng)任一代理服務(wù)器返回最大請求序列號時(shí),判斷為數(shù)據(jù)寫入成功,所述最大請求序列號用于讀取數(shù)據(jù)時(shí)選擇代理服務(wù)器。
[0009]—種數(shù)據(jù)一致性處理裝置,所述裝置包括:
[0010]寫請求處理模塊,用于接收終端發(fā)送的第一寫請求,獲取所述第一寫請求對應(yīng)的全局遞增第一請求序列號,將所述第一寫請求與所述第一請求序列號關(guān)聯(lián)存儲至請求序號隊(duì)列;
[0011]廣播模塊,用于廣播所述第一請求序列號和對應(yīng)的第一寫請求至代理服務(wù)器,以使所述代理服務(wù)器根據(jù)本地請求序列號和第一請求序列號的連續(xù)性寫入數(shù)據(jù),使所述寫入的數(shù)據(jù)對應(yīng)的寫入請求的請求序列號連續(xù),當(dāng)數(shù)據(jù)寫入成功時(shí)返回最大請求序列號;
[0012]響應(yīng)處理模塊,用于將所述返回的最大請求序列號與所述代理服務(wù)器關(guān)聯(lián),當(dāng)任一代理服務(wù)器返回最大請求序列號時(shí),判斷為數(shù)據(jù)寫入成功,所述最大請求序列號用于讀取數(shù)據(jù)時(shí)選擇代理服務(wù)器。
[0013]上述數(shù)據(jù)一致性處理方法和裝置,通過接收終端發(fā)送的第一寫請求,獲取第一寫請求對應(yīng)的全局遞增第一請求序列號,將第一寫請求與第一請求序列號關(guān)聯(lián)存儲至請求序號隊(duì)列,廣播第一請求序列號和對應(yīng)的第一寫請求至代理服務(wù)器,以使代理服務(wù)器根據(jù)本地請求序列號和第一請求序列號的連續(xù)性寫入數(shù)據(jù),使寫入的數(shù)據(jù)對應(yīng)的寫入請求的請求序列號連續(xù),當(dāng)數(shù)據(jù)寫入成功時(shí)返回最大請求序列號,將返回的最大請求序列號與所述代理服務(wù)器關(guān)聯(lián),當(dāng)任一代理服務(wù)器返回最大請求序列號時(shí),判斷為數(shù)據(jù)寫入成功,最大請求序列號用于讀取數(shù)據(jù)時(shí)選擇代理服務(wù)器,通過廣播第一請求序列號和對應(yīng)的第一寫請求至代理服務(wù)器使得代理服務(wù)器在本地請求序列號和第一請求序列號不連續(xù)時(shí),將間斷的數(shù)據(jù)補(bǔ)齊,保證了數(shù)據(jù)寫入的一致性,且在讀取數(shù)據(jù)時(shí)通過返回的最大請求序列號選擇數(shù)據(jù)寫入符合要求的代理服務(wù)器,不需要等待所有代理服務(wù)器全部完成數(shù)據(jù)寫入就可進(jìn)入讀操作,在保證速度的同時(shí)保證了數(shù)據(jù)寫入和讀取的一致性。
[0014]一種數(shù)據(jù)一致性處理方法,所述方法包括:
[0015]接收接入服務(wù)器廣播的第一請求序列號和對應(yīng)的第一寫請求,所述第一請求序列號為所述第一寫請求對應(yīng)的全局遞增序列號;
[0016]獲取本地請求序列號,根據(jù)本地請求序列號和第一請求序列號的連續(xù)性寫入數(shù)據(jù),使所述寫入的數(shù)據(jù)對應(yīng)的寫入請求的請求序列號連續(xù);
[0017]當(dāng)數(shù)據(jù)寫入成功時(shí)返回最大請求序列號,以使接入服務(wù)器將所述返回的最大請求序列號與代理服務(wù)器關(guān)聯(lián),當(dāng)任一代理服務(wù)器返回最大請求序列號時(shí),判斷為數(shù)據(jù)寫入成功,所述最大請求序列號用于讀取數(shù)據(jù)時(shí)所述接入服務(wù)器選擇代理服務(wù)器。
[0018]一種數(shù)據(jù)一致性處理裝置,所述裝置包括:
[0019]接收模塊,用于接收接入服務(wù)器廣播的第一請求序列號和對應(yīng)的第一寫請求,所述第一請求序列號為所述第一寫請求對應(yīng)的全局遞增序列號;
[0020]數(shù)據(jù)寫入模塊,用于獲取本地請求序列號,根據(jù)本地請求序列號和第一請求序列號的連續(xù)性寫入數(shù)據(jù),使所述寫入的數(shù)據(jù)對應(yīng)的寫入請求的請求序列號連續(xù);
[0021]返回模塊,用于當(dāng)數(shù)據(jù)寫入成功時(shí)返回最大請求序列號,以使接入服務(wù)器將所述返回的最大請求序列號與代理服務(wù)器關(guān)聯(lián),當(dāng)任一代理服務(wù)器返回最大請求序列號時(shí),判斷為數(shù)據(jù)寫入成功,所述最大請求序列號用于讀取數(shù)據(jù)時(shí)所述接入服務(wù)器選擇代理服務(wù)器。
[0022]上述數(shù)據(jù)一致性處理方法和裝置,通過接收接入服務(wù)器廣播的第一請求序列號和對應(yīng)的第一寫請求,第一請求序列號為所述第一寫請求對應(yīng)的全局遞增序列號,獲取本地請求序列號,根據(jù)本地請求序列號和第一請求序列號的連續(xù)性寫入數(shù)據(jù),使寫入的數(shù)據(jù)對應(yīng)的寫入請求的請求序列號連續(xù),當(dāng)數(shù)據(jù)寫入成功時(shí)返回最大請求序列號,以使接入服務(wù)器將返回的最大請求序列號與代理服務(wù)器關(guān)聯(lián),當(dāng)任一代理服務(wù)器返回最大請求序列號時(shí),數(shù)據(jù)寫入成功,最大請求序列號用于讀取數(shù)據(jù)時(shí)接入服務(wù)器選擇代理服務(wù)器,在本地請求序列號和第一請求序列號不連續(xù)時(shí),通過將間斷的數(shù)據(jù)補(bǔ)齊,保證了數(shù)據(jù)寫入的一致性,且返回最大的請求序列號以使得在讀取數(shù)據(jù)時(shí)接入服務(wù)器通過返回的最大請求序列號選擇數(shù)據(jù)寫入符合要求的代理服務(wù)器,不需要等待所有代理服務(wù)器全部完成數(shù)據(jù)寫入就可進(jìn)入讀操作,在保證速度的同時(shí)保證了數(shù)據(jù)寫入和讀取的一致性。
[0023]一種數(shù)據(jù)一致性處理系統(tǒng),所述系統(tǒng)包括:
[0024]接入服務(wù)器,用于接收終端發(fā)送的第一寫請求,獲取所述第一寫請求對應(yīng)的全局遞增第一請求序列號,將所述第一寫請求與所述第一請求序列號關(guān)聯(lián)存儲至請求序號隊(duì)列,廣播所述第一請求序列號和對應(yīng)的第一寫請求至代理服務(wù)器;
[0025]至少2個(gè)代理服務(wù)器,用于接收第一請求序列號和對應(yīng)的第一寫請求,獲取本地請求序列號,根據(jù)本地請求序列號和第一請求序列號的連續(xù)性寫入數(shù)據(jù),使所述寫入的數(shù)據(jù)對應(yīng)的寫入請求的請求序列號連續(xù),當(dāng)數(shù)據(jù)寫入成功時(shí)返回最大請求序列號;
[0026]接入服務(wù)器還用于將所述返回的最大請求序列號與所述代理服務(wù)器關(guān)聯(lián),當(dāng)任一代理服務(wù)器返回最大請求序列號時(shí),判斷為數(shù)據(jù)寫入成功,所述最大請求序列號用于讀取數(shù)據(jù)時(shí)選擇代理服務(wù)器。
[0027]上述所述數(shù)據(jù)一致性處理系統(tǒng),通過接入服務(wù)器和代理服務(wù)器配合,接入服務(wù)器廣播第一請求序列號和對應(yīng)的第一寫請求至代理服務(wù)器,代理服務(wù)器在本地請求序列號和第一請求序列號不連續(xù)時(shí),將間斷的數(shù)據(jù)補(bǔ)齊,保證了數(shù)據(jù)寫入的一致性,且在讀取數(shù)據(jù)時(shí)接入服務(wù)器通過返回的最大請求序列號選擇數(shù)據(jù)寫入符合要求的代理服務(wù)器,不需要等待所有代理服務(wù)器全部完成數(shù)據(jù)寫入就可進(jìn)入讀操作,在保證速度的同時(shí)保證了數(shù)據(jù)寫入和讀取的一致性。
【附圖說明】
[0028]圖1為一個(gè)實(shí)施例中數(shù)據(jù)一致性處理方法的應(yīng)用環(huán)境圖;
[0029]圖2為一個(gè)實(shí)施例中圖1中接入服務(wù)器的內(nèi)部結(jié)構(gòu)圖;
[0030]圖3為一個(gè)實(shí)施例中圖1中代理服務(wù)器的內(nèi)部結(jié)構(gòu)圖;
[0031 ]圖4為一個(gè)實(shí)施例中數(shù)據(jù)一致性處理方法的流程圖;
[0032]圖5為一個(gè)實(shí)施例中請求序號隊(duì)列的示意圖;
[0033]圖6為一個(gè)實(shí)施例中另一種數(shù)據(jù)一致性處理方法的流程圖;
[0034]圖7為一個(gè)實(shí)施例中寫入數(shù)據(jù)的流程圖;
[0035]圖8為一個(gè)實(shí)施例中本地序號隊(duì)列的示意圖;
[0036]圖9為一個(gè)實(shí)施例中更新后的本地序號隊(duì)列的不意圖;
[0037]圖10為一個(gè)實(shí)施例中數(shù)據(jù)一致性處理系統(tǒng)的結(jié)構(gòu)框圖;
[0038]圖11為一個(gè)實(shí)施例中接入服務(wù)器上完成數(shù)據(jù)一致性處理方法的步驟示意圖;
[0039]圖12為一個(gè)實(shí)施例中代理服務(wù)器上完成數(shù)據(jù)一致性處理方法的步驟示意圖;
[0040]圖13為一個(gè)實(shí)施例中數(shù)據(jù)一致性處理裝置的結(jié)構(gòu)框圖;
[0041 ]圖14為另一個(gè)實(shí)施例中數(shù)據(jù)一致性處理裝置的結(jié)構(gòu)框圖;
[0042]圖15為再一個(gè)實(shí)施例中數(shù)據(jù)一致性處理裝置的結(jié)構(gòu)框圖;
[0043]圖16為一個(gè)實(shí)施例中另一種數(shù)據(jù)一致性處理裝置的結(jié)構(gòu)框圖;
[0044]圖17為一個(gè)實(shí)施例中數(shù)據(jù)寫入模塊的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0045]圖1為一個(gè)實(shí)施例中數(shù)據(jù)一致性處理方法運(yùn)行的應(yīng)用環(huán)境圖。如圖1所示,該應(yīng)用環(huán)境包括終端110、接入服務(wù)器120和代理服務(wù)器130,其中接入服務(wù)器120和終端110、代理服務(wù)器130通過網(wǎng)絡(luò)進(jìn)行通信。
[0046]終端110可為智能手機(jī)、平板電腦、筆記本電腦、臺式計(jì)算機(jī)等,但并不局限于此。終端110向接入服務(wù)器120發(fā)送讀請求和寫請求,接入服務(wù)器120廣播寫請求至代理服務(wù)器130,并且選擇接收讀請求的代理服務(wù)器,代理服