一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)及任務(wù)調(diào)度方法
【專(zhuān)利摘要】本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng),一種遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)中的任務(wù)調(diào)度方法。所述的系統(tǒng)包括任務(wù)調(diào)度模塊、高可用控制模塊、備份模塊和在線遷移模塊。對(duì)用戶而言,使用本申請(qǐng)無(wú)需自建服務(wù)器和數(shù)據(jù)庫(kù),節(jié)省了時(shí)間提高了效率,同時(shí)若用戶業(yè)務(wù)量增大,只需要增加存儲(chǔ)節(jié)點(diǎn)即可,數(shù)據(jù)遷移等問(wèn)題都可以由系統(tǒng)完成,用戶使用非常方便,效率較高。
【專(zhuān)利說(shuō)明】一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)及任務(wù)調(diào)度方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及數(shù)據(jù)技術(shù),特別是涉及一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng),一種遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)中的任務(wù)調(diào)度方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的發(fā)展,互聯(lián)網(wǎng)打破了地域的分割,形成了一個(gè)統(tǒng)一的大市場(chǎng)?,F(xiàn)有技術(shù)中企業(yè)發(fā)展互聯(lián)網(wǎng)業(yè)務(wù)需要有自己的服務(wù)器和數(shù)據(jù)庫(kù),但不是所有的企業(yè)都能夠?qū)崿F(xiàn),并且服務(wù)器和數(shù)據(jù)庫(kù)的維護(hù)成本比較高。
[0003]若用戶自建數(shù)據(jù)庫(kù),特別是對(duì)那些非計(jì)算機(jī)技術(shù)相關(guān)的企業(yè)而言,需要聘請(qǐng)專(zhuān)業(yè)人員,了解企業(yè)需求的數(shù)據(jù)庫(kù)的性能和壓力狀況,然后購(gòu)買(mǎi)并搭建硬件系統(tǒng),并且需要自己編寫(xiě)在該硬件中運(yùn)行的數(shù)據(jù)庫(kù)腳本等,用戶自行建立服務(wù)器和數(shù)據(jù)庫(kù)的周期是非常長(zhǎng)的,期間可能面臨各種技術(shù)問(wèn)題要解決,建立的方法非常繁瑣,并且效率也較低。
[0004]同時(shí),自建的服務(wù)器和數(shù)據(jù)庫(kù)還需要面臨后期的維護(hù)問(wèn)題,特別是當(dāng)企業(yè)的業(yè)務(wù)量逐漸加大后,數(shù)據(jù)庫(kù)的壓力會(huì)隨之增加。數(shù)據(jù)庫(kù)達(dá)到飽和狀態(tài),即數(shù)據(jù)庫(kù)已優(yōu)化到極點(diǎn),無(wú)法支持龐大的業(yè)務(wù)量時(shí),需要升級(jí)硬件來(lái)解決這個(gè)問(wèn)題。而硬件升級(jí)中采購(gòu)周期,再加上數(shù)據(jù)遷移的周期通常要耗費(fèi)時(shí)間比較長(zhǎng),這段時(shí)間無(wú)法確保數(shù)據(jù)庫(kù)是否能夠支撐業(yè)務(wù)的執(zhí)行。并且,升級(jí)中要保證業(yè)務(wù)的執(zhí)行和數(shù)據(jù)遷移的穩(wěn)定等各種技術(shù)問(wèn)題,也是非常繁瑣的,同時(shí)需要浪費(fèi)比較多的時(shí)間。
[0005]因此本領(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問(wèn)題是,提出一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)及任務(wù)調(diào)度方法,使得用戶可以使用遠(yuǎn)程數(shù)據(jù)庫(kù),而避免自建數(shù)據(jù)庫(kù)造成時(shí)間的浪費(fèi),且數(shù)據(jù)穩(wěn)定性得不到保證的問(wèn)題。
【發(fā)明內(nèi)容】
[0006]本領(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問(wèn)題是,提出一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)及任務(wù)調(diào)度方法,使得用戶可以使用遠(yuǎn)程數(shù)據(jù)庫(kù),而避免自建數(shù)據(jù)庫(kù)造成時(shí)間的浪費(fèi),且數(shù)據(jù)穩(wěn)定性得不到保證的問(wèn)題。
[0007]為了解決上述問(wèn)題,本申請(qǐng)公開(kāi)了一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng),包括:任務(wù)調(diào)度模塊、高可用控制模塊、備份模塊和在線遷移模塊,其中,
[0008]所述任務(wù)調(diào)度模塊包括:
[0009]接收子模塊,用于接收用戶通過(guò)網(wǎng)絡(luò)或API接口發(fā)送的任務(wù);
[0010]互斥檢查子模塊,用于針對(duì)接收的任務(wù),通過(guò)檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,確定所述任務(wù)是否與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突;
[0011]調(diào)度子模塊,用于針對(duì)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突的任務(wù),調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理;
[0012]所述高可用控制模塊包括:
[0013]切換子模塊,用于接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行切換的任務(wù)后,發(fā)送將IP端口在主存儲(chǔ)節(jié)點(diǎn)和備存儲(chǔ)節(jié)點(diǎn)之間進(jìn)行切換的命令;
[0014]所述備份模塊包括:
[0015]存儲(chǔ)子模塊,用于接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行備份的任務(wù)后,根據(jù)配置將對(duì)應(yīng)的實(shí)例數(shù)據(jù)分片存儲(chǔ)到至少一個(gè)存儲(chǔ)節(jié)點(diǎn)上;
[0016]所述在線遷移模塊包括:
[0017]獲取子模塊,用于接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行遷移的任務(wù)后,從備份模塊中獲取原始存儲(chǔ)節(jié)點(diǎn)的備份實(shí)例數(shù)據(jù);
[0018]同步子模塊,用于目標(biāo)存儲(chǔ)節(jié)點(diǎn)上的備份完成后,將原始存儲(chǔ)節(jié)點(diǎn)和目標(biāo)存儲(chǔ)節(jié)點(diǎn)的實(shí)例數(shù)據(jù)進(jìn)行同步;
[0019]通知子模塊,用于通知備份模塊在目標(biāo)存儲(chǔ)節(jié)點(diǎn)上執(zhí)行對(duì)應(yīng)的備份操作,并發(fā)出將IP端口從原始存儲(chǔ)節(jié)點(diǎn)切換到目標(biāo)存儲(chǔ)節(jié)點(diǎn)上的通知。
[0020]優(yōu)選的,所述高可用控制模塊,還包括:
[0021]輪循子模塊,用于間隔一定時(shí)間并發(fā)輪循各個(gè)存儲(chǔ)節(jié)點(diǎn)上的所有實(shí)例;
[0022]故障檢測(cè)子模塊,用于輪循中檢測(cè)存儲(chǔ)節(jié)點(diǎn)是否存在故障;
[0023]所述切換子模塊,還用于針對(duì)故障的存儲(chǔ)節(jié)點(diǎn),采用無(wú)故障的存儲(chǔ)節(jié)點(diǎn)接管故障存儲(chǔ)節(jié)點(diǎn)的任務(wù)。
[0024]優(yōu)選的,所述任務(wù)調(diào)度模塊、高可用控制模塊、備份模塊和線遷移模塊,都是由若干個(gè)處理節(jié)點(diǎn)構(gòu)成的集群,所述的每個(gè)模塊還包括:
[0025]節(jié)點(diǎn)檢測(cè)子模塊,通過(guò)處理節(jié)點(diǎn)之間的心跳通信,檢測(cè)各個(gè)處理節(jié)點(diǎn)是否正常運(yùn)行;
[0026]節(jié)點(diǎn)切換子模塊,針對(duì)非正常運(yùn)行的處理節(jié)點(diǎn),切換至正常運(yùn)行的處理節(jié)點(diǎn),并接管對(duì)應(yīng)所述非正常運(yùn)行的處理節(jié)點(diǎn)的任務(wù)。
[0027]優(yōu)選的,所述的系統(tǒng)還包括監(jiān)控模塊,其中,所述監(jiān)控模塊包括:
[0028]一致性檢測(cè)子模塊,用于在系統(tǒng)運(yùn)行過(guò)程中檢測(cè)并清理存儲(chǔ)節(jié)點(diǎn)和對(duì)應(yīng)模塊中不一致的數(shù)據(jù);
[0029]狀態(tài)及性能監(jiān)控子模塊,用于收集并監(jiān)控所有存儲(chǔ)節(jié)點(diǎn)和實(shí)例的狀態(tài)數(shù)據(jù)和性能數(shù)據(jù);
[0030]空間檢查子模塊,用于當(dāng)檢測(cè)到用戶的使用空間超出預(yù)設(shè)范圍后,將用戶權(quán)限修改為只讀;
[0031]流量統(tǒng)計(jì)子模塊,用于統(tǒng)計(jì)每個(gè)存儲(chǔ)節(jié)點(diǎn)上各個(gè)實(shí)例的網(wǎng)絡(luò)流量數(shù)據(jù);
[0032]故障報(bào)警子模塊,用于當(dāng)檢測(cè)到異常情況時(shí),執(zhí)行故障報(bào)警操作。
[0033]優(yōu)選的,所述的系統(tǒng)還包括:數(shù)據(jù)鏈路模塊,用于在用戶訪問(wèn)實(shí)例時(shí)處理數(shù)據(jù)鏈路的問(wèn)題,包括:
[0034]域名系統(tǒng)子模塊,用于將網(wǎng)絡(luò)中所有主機(jī)的域名轉(zhuǎn)換為對(duì)應(yīng)IP地址并保存;
[0035]虛擬服務(wù)器子模塊,用于構(gòu)建并存儲(chǔ)公網(wǎng)IP端口和真實(shí)IP端口之間的映射關(guān)系,實(shí)現(xiàn)各個(gè)存儲(chǔ)節(jié)點(diǎn)的負(fù)載均衡,防止DDOS分布式拒絕服務(wù)攻擊,并進(jìn)行流量控制。
[0036]優(yōu)選的,所述任務(wù)調(diào)度模塊還包括:
[0037]狀態(tài)返回子模塊,用于任務(wù)執(zhí)行完畢后,接收并記錄返回的任務(wù)狀態(tài)數(shù)據(jù),所述任務(wù)狀態(tài)數(shù)據(jù)包括執(zhí)行成功和執(zhí)行失敗。[0038]優(yōu)選的,所述備份模塊還包括:
[0039]刪除子模塊,用于根據(jù)用戶設(shè)定的備份保留策略,自動(dòng)刪除過(guò)期的備份數(shù)據(jù);
[0040]相應(yīng)的,本申請(qǐng)還公開(kāi)了一種遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)中的任務(wù)調(diào)度方法,包括:
[0041]任務(wù)調(diào)度模塊接收用戶通過(guò)網(wǎng)絡(luò)或API接口發(fā)送的任務(wù);
[0042]通過(guò)檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,確定所述任務(wù)是否與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突;
[0043]若所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突,則調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理;
[0044]若所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)有沖突,則等待當(dāng)前運(yùn)行的任務(wù)運(yùn)行完畢后,調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理;
[0045]其中,
[0046]若所述任務(wù)為執(zhí)行切換的任務(wù),則調(diào)度所述任務(wù)到高可用控制模塊;
[0047]若所述任務(wù)為執(zhí)行備份的任務(wù),則調(diào)度所述任務(wù)到備份模塊;
[0048]若所述任務(wù)為執(zhí)行遷移的任務(wù),則調(diào)度所述任務(wù)到在線遷移模塊。
[0049]優(yōu)選的,通過(guò)檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,確定所述任務(wù)是否與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突,包括:
[0050]檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,其中所述互斥鎖包括獨(dú)占鎖和共享鎖;
[0051]若所述任務(wù)針對(duì)實(shí)例擁有獨(dú)占鎖,并且當(dāng)前運(yùn)行的任務(wù)沒(méi)有占用所述實(shí)例,則所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突;
[0052]若所述任務(wù)針對(duì)實(shí)例擁有獨(dú)占鎖,但當(dāng)前運(yùn)行的任務(wù)占用了所述實(shí)例,則所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)有沖突;
[0053]若檢測(cè)所述任務(wù)對(duì)應(yīng)的實(shí)例擁有共享鎖,則所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突。
[0054]優(yōu)選的,調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理之后,還包括:
[0055]接收并記錄返回的任務(wù)狀態(tài)數(shù)據(jù),所述任務(wù)狀態(tài)數(shù)據(jù)包括執(zhí)行成功和執(zhí)行失敗。
[0056]優(yōu)選的,調(diào)度所述任務(wù)到高可用控制模塊之后,還包括:
[0057]通知虛擬服務(wù)器子模塊將IP端口在主存儲(chǔ)節(jié)點(diǎn)和備存儲(chǔ)節(jié)點(diǎn)之間進(jìn)行切換。
[0058]優(yōu)選的,調(diào)度所述任務(wù)到備份模塊之后,還包括:
[0059]備份模塊根據(jù)配置將對(duì)應(yīng)的實(shí)例數(shù)據(jù)分片存儲(chǔ)到至少一個(gè)存儲(chǔ)節(jié)點(diǎn)上。
[0060]優(yōu)選的,調(diào)度所述任務(wù)到在線遷移模塊之后,還包括:
[0061]獲取備份模塊中原始存儲(chǔ)節(jié)點(diǎn)的備份實(shí)例數(shù)據(jù);
[0062]通知備份模塊在目標(biāo)存儲(chǔ)節(jié)點(diǎn)上執(zhí)行對(duì)應(yīng)的備份操作;
[0063]目標(biāo)存儲(chǔ)節(jié)點(diǎn)上的備份完成后,將原始存儲(chǔ)節(jié)點(diǎn)和目標(biāo)存儲(chǔ)節(jié)點(diǎn)的實(shí)例數(shù)據(jù)進(jìn)行同步;
[0064]通知虛擬服務(wù)器子模塊將IP端口從原始存儲(chǔ)節(jié)點(diǎn)切換到目標(biāo)存儲(chǔ)節(jié)點(diǎn)。
[0065]優(yōu)選的,所述高可用控制模塊的處理方法還包括:
[0066]高可用控制模塊間隔一定時(shí)間并發(fā)輪循各個(gè)存儲(chǔ)節(jié)點(diǎn)上的所有實(shí)例;
[0067]輪循中檢測(cè)存儲(chǔ)節(jié)點(diǎn)是否存在故障;
[0068]若存儲(chǔ)節(jié)點(diǎn)存在故障,則采用采用無(wú)故障的存儲(chǔ)節(jié)點(diǎn)接管故障存儲(chǔ)節(jié)點(diǎn)的任務(wù);
[0069]其中,所述檢測(cè)存儲(chǔ)節(jié)點(diǎn)是否存在故障方法包括:
[0070]檢測(cè)各個(gè)存儲(chǔ)節(jié)點(diǎn)上的實(shí)例是否存在,或,檢測(cè)各個(gè)存儲(chǔ)節(jié)點(diǎn)上的實(shí)例端口是否存在響應(yīng),或,模擬應(yīng)用執(zhí)行更新操作。
[0071]優(yōu)選的,所述的方法還包括:
[0072]監(jiān)控模塊檢測(cè)整個(gè)系統(tǒng)內(nèi)事務(wù)正常運(yùn)轉(zhuǎn),并收集實(shí)例相關(guān)狀態(tài)數(shù)據(jù)和性能數(shù)據(jù);
[0073]數(shù)據(jù)鏈路模塊在用戶訪問(wèn)實(shí)例時(shí)處理數(shù)據(jù)鏈路的問(wèn)題。
[0074]與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):
[0075]首先,由于用戶服務(wù)器和數(shù)據(jù)庫(kù)的周期是非常長(zhǎng)的,建立的方法非常繁瑣,并且效率也較低。并且,后期維護(hù)中無(wú)法確保硬件升級(jí)時(shí),數(shù)據(jù)庫(kù)是否能夠支撐業(yè)務(wù)的執(zhí)行,數(shù)據(jù)遷移的穩(wěn)定性也得不到保證。因此,本申請(qǐng)?zhí)岢鲆环N數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng),包括:任務(wù)調(diào)度模塊、高可用控制模塊、備份模塊和在線遷移模塊。通過(guò)任務(wù)調(diào)度模塊可以調(diào)度任務(wù)在各模塊中穩(wěn)定、有序的執(zhí)行。同使用該系統(tǒng)還可以實(shí)現(xiàn)數(shù)據(jù)的備份和遷移,以及各存儲(chǔ)節(jié)點(diǎn)的快速切換。對(duì)用戶而言,使用本申請(qǐng)無(wú)需自建服務(wù)器和數(shù)據(jù)庫(kù),節(jié)省了時(shí)間提高了效率,同時(shí)若用戶業(yè)務(wù)量增大,只需要增加存儲(chǔ)節(jié)點(diǎn)即可,數(shù)據(jù)遷移等問(wèn)題都可以由系統(tǒng)完成,用戶使用非常方便,效率較高。
[0076]其次,現(xiàn)有技術(shù)中存在虛擬平臺(tái)的RDS服務(wù),是將實(shí)例建立在虛擬機(jī)上,但是虛擬機(jī)中的資源不能滿足于高壓力的需求,并且當(dāng)某些用戶需要去維護(hù)數(shù)據(jù)庫(kù)時(shí),但他們使用的虛擬機(jī)由于IO能力不夠,不能承受起其業(yè)務(wù)帶來(lái)的壓力。本申請(qǐng)將實(shí)例建立在物理機(jī)上,所能提供的IO能力遠(yuǎn)超虛擬機(jī)至少10倍以上,能夠更高的承受起其業(yè)務(wù)帶來(lái)的壓力。
[0077]再次,虛擬平臺(tái)本身不提供數(shù)據(jù)庫(kù)備份,用戶需要自己去制定備份計(jì)劃,并把備份數(shù)據(jù)放到其他位置存儲(chǔ)。而本申請(qǐng)自帶了備份模塊,用戶可以自由配置備份保留策略以備份時(shí)間,不需考慮備份、異機(jī)存儲(chǔ)等問(wèn)題。
[0078]再次,用戶使用虛擬平臺(tái)時(shí),通常只會(huì)申請(qǐng)一個(gè)虛擬機(jī)來(lái)承擔(dān)前端業(yè)務(wù)和數(shù)據(jù)庫(kù)服務(wù)。其中,若前端業(yè)務(wù)丟了,因?yàn)槎际且恍┡渲眯缘奈募?,不?huì)造成重大的影響。而數(shù)據(jù)庫(kù)則是真正的價(jià)值所在,若虛擬機(jī)數(shù)據(jù)丟失,就會(huì)產(chǎn)生重大的影響。而本申請(qǐng)除了在每天晚上提供異機(jī)備份外,還提供雙節(jié)點(diǎn)間的實(shí)時(shí)備份,全面保護(hù)用戶數(shù)據(jù)安全,并采用自主研發(fā)的高可用控制模塊,檢測(cè)節(jié)點(diǎn)運(yùn)行是否健康,并保證兩個(gè)節(jié)點(diǎn)間的秒級(jí)切換。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0079]圖1是本申請(qǐng)實(shí)施例所述一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)結(jié)構(gòu)圖;
[0080]圖2是本申請(qǐng)實(shí)施例所述任務(wù)調(diào)度模塊中互斥檢查示意圖;
[0081]圖3是本申請(qǐng)實(shí)施例所述高可用控制模塊中故障節(jié)點(diǎn)檢測(cè)示意圖;
[0082]圖4是本申請(qǐng)實(shí)施例所述備份模塊執(zhí)行備份示意圖;
[0083]圖5是本申請(qǐng)實(shí)施例所述在線遷移模塊數(shù)據(jù)遷移示意圖;
[0084]圖6是本申請(qǐng)實(shí)施例所述域名系統(tǒng)子模塊工作示意圖;
[0085]圖7是本申請(qǐng)實(shí)施例所述虛擬服務(wù)器子模塊中IP端口映射示意圖;
[0086]圖8是本申請(qǐng)優(yōu)選實(shí)施例所述一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)示意圖;
[0087]圖9是本申請(qǐng)實(shí)施例一種遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)中的任務(wù)調(diào)度方法流程圖。
【具體實(shí)施方式】
[0088]為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說(shuō)明。
[0089]參照?qǐng)D1,給出了本申請(qǐng)實(shí)施例所述一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)結(jié)構(gòu)圖。
[0090]本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng),包括:任務(wù)調(diào)度模塊11、高可用控制模塊12、備份模塊13和在線遷移模塊14,其中,
[0091 ] 所述任務(wù)調(diào)度模塊11包括:
[0092]接收子模塊111,用于接收用戶通過(guò)網(wǎng)絡(luò)或API接口發(fā)送的任務(wù);
[0093]所述任務(wù)可以為執(zhí)行切換的任務(wù),調(diào)度給高可用控制模塊12執(zhí)行;可以為執(zhí)行備份的任務(wù),調(diào)度給備份模塊13執(zhí)行;也可以為執(zhí)行遷移的任務(wù),調(diào)度給在線遷移模塊14執(zhí)行。當(dāng)然在具體實(shí)施中。任務(wù)調(diào)度模塊11還可以調(diào)度其他的任務(wù),本申請(qǐng)對(duì)此不做限定。
[0094]API 的英文全拼為 Application Programming Interface,即應(yīng)用程序編程接口。
[0095]互斥檢查子模塊112,用于針對(duì)接收的任務(wù),通過(guò)檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,確定所述任務(wù)是否與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突;
[0096]首先任務(wù)調(diào)度模塊11從任務(wù)隊(duì)列中獲取需要處理的任務(wù),由于任務(wù)是并發(fā)處理的,在處理每一個(gè)任務(wù)前,任務(wù)調(diào)度模塊11需要判斷這個(gè)任務(wù)是否與當(dāng)前在運(yùn)行的任務(wù)有沖突,這個(gè)判斷也叫互斥檢查,可以由互斥檢查子模塊112實(shí)現(xiàn)。所述互斥檢查是通過(guò)任務(wù)的互斥鎖來(lái)解決的。
[0097]任務(wù)的互斥鎖分為兩種:獨(dú)占鎖和共享鎖。鎖是針對(duì)對(duì)象而設(shè)立的,在本申請(qǐng)中對(duì)象一般指“MYSQL實(shí)例”。本申請(qǐng)所述的實(shí)例也可以稱(chēng)為MYSQL實(shí)例。
[0098]當(dāng)某個(gè)任務(wù)對(duì)這個(gè)對(duì)象擁有獨(dú)占鎖的時(shí)候,其他任務(wù)就不能再擁有該對(duì)象的獨(dú)占鎖和共享鎖。比如,針對(duì)MYSQL實(shí)例,某些操作對(duì)其需要擁有獨(dú)占鎖的,如創(chuàng)建,刪除,即創(chuàng)建和刪除都需要獨(dú)占鎖。所以當(dāng)系統(tǒng)同時(shí)接受到對(duì)某個(gè)實(shí)例創(chuàng)建和刪除兩個(gè)任務(wù)時(shí),兩個(gè)任務(wù)是沖突的,不能并發(fā)地進(jìn)行,即當(dāng)一個(gè)創(chuàng)建任務(wù)拿到獨(dú)占鎖后,刪除任務(wù)就會(huì)等待,直到創(chuàng)建任務(wù)釋放了獨(dú)占鎖。
[0099]當(dāng)某個(gè)任務(wù)對(duì)這個(gè)對(duì)象擁有共享鎖的時(shí)候,那么其他任務(wù)則還可以對(duì)這個(gè)對(duì)象擁有共享鎖,但不能再擁有獨(dú)占鎖,比如,針對(duì)MYSQL實(shí)例,某些操作對(duì)其擁有共享鎖,如任務(wù)a:實(shí)例增加DB(data base,數(shù)據(jù)庫(kù)),任務(wù)b:實(shí)例備份。當(dāng)同時(shí)收到兩個(gè)任務(wù)時(shí),兩個(gè)任務(wù)不會(huì)沖突,可以同時(shí)執(zhí)行。
[0100]但若針對(duì)上述兩個(gè)擁有共享鎖的情況下,又有一個(gè)新的任務(wù),所述任務(wù)c為刪除MYSQL實(shí)例,則任務(wù)c會(huì)請(qǐng)求獨(dú)占鎖,而當(dāng)前擁有的共享鎖沒(méi)有釋放,那么獨(dú)占鎖是不會(huì)成功被獲取,只有等待以上兩個(gè)任務(wù)全部完成。
[0101]其中,可以將一個(gè)主機(jī)看作一個(gè)存儲(chǔ)節(jié)點(diǎn),一個(gè)存儲(chǔ)節(jié)點(diǎn)上可以運(yùn)行多個(gè)實(shí)例(或稱(chēng)主機(jī)實(shí)例,或MYSQL實(shí)例),所述實(shí)例可以是主機(jī)中的獨(dú)立進(jìn)程。
[0102]參照?qǐng)D2,給出了本申請(qǐng)實(shí)施例所述任務(wù)調(diào)度模塊中互斥檢查示意圖。
[0103]其中,任務(wù)2、任務(wù)3、任務(wù)4和任務(wù)5正在處理,Lock-S代表任務(wù)對(duì)實(shí)例擁有獨(dú)占鎖,Lock-X代表任務(wù)對(duì)實(shí)例擁有共享鎖。則任務(wù)2對(duì)實(shí)例擁有獨(dú)占鎖,任務(wù)3、任務(wù)4和任務(wù)5對(duì)實(shí)例擁有共享鎖。此時(shí)有一個(gè)任務(wù)I對(duì)實(shí)例擁有獨(dú)占鎖,但任務(wù)I與任務(wù)4沖突,需要等待任務(wù)4執(zhí)行完畢后才能執(zhí)行。
[0104]其中,互斥鎖的數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中,以便讓多個(gè)處理節(jié)點(diǎn)可以同時(shí)獲取該數(shù)據(jù)并保持?jǐn)?shù)據(jù)的一致性。[0105]調(diào)度子模塊113,用于針對(duì)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突的任務(wù),調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理;
[0106]在獲取任務(wù)所需要的互斥鎖以后,說(shuō)明所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突,此時(shí)任務(wù)可以下達(dá)到各個(gè)實(shí)例并執(zhí)行。
[0107]狀態(tài)返回子模塊114,用于任務(wù)執(zhí)行完畢后,接收并記錄返回的任務(wù)狀態(tài)數(shù)據(jù),所述任務(wù)狀態(tài)數(shù)據(jù)包括執(zhí)行成功和執(zhí)行失敗。
[0108]在執(zhí)行完成后,任務(wù)調(diào)度模塊11會(huì)根據(jù)反饋的數(shù)據(jù),將任務(wù)狀態(tài)置成“執(zhí)行成功”或“執(zhí)行失敗”,以便管理員作查詢和處理。
[0109]所述高可用控制模塊12包括:
[0110]切換子模塊121,用于接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行切換的任務(wù)后,發(fā)送將IP端口在主存儲(chǔ)節(jié)點(diǎn)和備存儲(chǔ)節(jié)點(diǎn)之間進(jìn)行切換的命令;
[0111]其中,IP的英文全拼為Internet Protocol,即網(wǎng)絡(luò)互聯(lián)協(xié)議。
[0112]本申請(qǐng)所述的系統(tǒng)中,通常會(huì)設(shè)置一個(gè)主存儲(chǔ)節(jié)點(diǎn)和一個(gè)備存儲(chǔ)節(jié)點(diǎn),主存儲(chǔ)節(jié)點(diǎn)和備存儲(chǔ)節(jié)點(diǎn)接隔一段時(shí)間進(jìn)行通信,以保證數(shù)據(jù)的一致性。當(dāng)主存儲(chǔ)節(jié)點(diǎn)需要維護(hù)或出現(xiàn)故障等問(wèn)題而無(wú)法工作時(shí),備存儲(chǔ)節(jié)點(diǎn)可以代替主存儲(chǔ)節(jié)點(diǎn)進(jìn)行工作。
[0113]例如,主存儲(chǔ)節(jié)點(diǎn)需要維護(hù),此時(shí)存儲(chǔ)節(jié)點(diǎn)不能停止工作,因此可以發(fā)送執(zhí)行切換的任務(wù),將IP端口切換至備存儲(chǔ)節(jié)點(diǎn)上。高可用控制模塊12接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行切換的任務(wù)后,發(fā)送對(duì)應(yīng)的命令給數(shù)據(jù)鏈路模塊16的虛擬服務(wù)器子模塊161,通知所述虛擬服務(wù)器子模塊161將IP端口由主存儲(chǔ)節(jié)點(diǎn)切換至備存儲(chǔ)節(jié)點(diǎn)。主存儲(chǔ)節(jié)點(diǎn)維護(hù)完成后,還可以通知所述虛擬服務(wù)器子模塊161將IP端口由備存儲(chǔ)節(jié)點(diǎn)切換回主存儲(chǔ)節(jié)點(diǎn)。
[0114]輪循子模塊122,用于間隔一定時(shí)間并發(fā)輪循各個(gè)存儲(chǔ)節(jié)點(diǎn)上的所有實(shí)例;
[0115]本申請(qǐng)所述的系統(tǒng)中存在許多存儲(chǔ)節(jié)點(diǎn),每個(gè)存儲(chǔ)節(jié)點(diǎn)上存在許多實(shí)例,因此需要足夠快地輪循集群的所有實(shí)例,例如設(shè)置為每3秒輪循一次,因此當(dāng)發(fā)現(xiàn)有存儲(chǔ)節(jié)點(diǎn)出現(xiàn)故障時(shí),可以實(shí)現(xiàn)秒級(jí)切換以保證系統(tǒng)的正常工作。由于系統(tǒng)中的實(shí)例過(guò)多,因此本申請(qǐng)采用并發(fā)輪循,以保證能夠快速的執(zhí)行輪循。
[0116]故障檢測(cè)子模塊123,用于輪循中檢測(cè)存儲(chǔ)節(jié)點(diǎn)是否存在故障;
[0117]所述切換子模塊124,還用于針對(duì)故障的存儲(chǔ)節(jié)點(diǎn),采用無(wú)故障的存儲(chǔ)節(jié)點(diǎn)接管故障存儲(chǔ)節(jié)點(diǎn)的任務(wù)。
[0118]現(xiàn)有技術(shù)的高可用控制軟件,是裝載在兩個(gè)存儲(chǔ)節(jié)點(diǎn)之上的,此種方法面臨的一個(gè)問(wèn)題就是腦裂,一旦出現(xiàn)這種現(xiàn)象,兩個(gè)存儲(chǔ)相同實(shí)例的主、備存儲(chǔ)節(jié)點(diǎn)都會(huì)被激活,此時(shí)就有可能導(dǎo)致主、備實(shí)例之間數(shù)據(jù)沖突或不一致的情況。
[0119]本申請(qǐng)所述的系統(tǒng)是以第三方身份去判斷存儲(chǔ)節(jié)點(diǎn)是否在正常運(yùn)行,因此可以避免出現(xiàn)腦裂現(xiàn)象。當(dāng)發(fā)現(xiàn)存在故障的存儲(chǔ)節(jié)點(diǎn)時(shí)可以采用無(wú)故障的存儲(chǔ)節(jié)點(diǎn)接管故障存儲(chǔ)節(jié)點(diǎn)的任務(wù)。
[0120]參照?qǐng)D3,給出了本申請(qǐng)實(shí)施例所述高可用控制模塊中故障節(jié)點(diǎn)檢測(cè)示意圖。
[0121]虛擬服務(wù)器子模塊162中最初將IP端口映射到備存儲(chǔ)節(jié)點(diǎn)上,高可用控制模塊12對(duì)存儲(chǔ)節(jié)點(diǎn)進(jìn)行輪循時(shí)檢測(cè)到備存儲(chǔ)節(jié)點(diǎn)A'存在故障。因此會(huì)通知虛擬服務(wù)器子模塊162將IP端口由備存儲(chǔ)節(jié)點(diǎn)A ’切換到主存儲(chǔ)節(jié)點(diǎn)A上,此時(shí)對(duì)應(yīng)的IP端口會(huì)映射到主存儲(chǔ)節(jié)點(diǎn)A上。[0122]另外本申請(qǐng)中判斷存儲(chǔ)節(jié)點(diǎn)是否出現(xiàn)故障的方法有多種,例如,檢測(cè)各個(gè)存儲(chǔ)節(jié)點(diǎn)上的實(shí)例是否存在,或檢測(cè)各個(gè)存儲(chǔ)節(jié)點(diǎn)上的實(shí)例端口是否存在響應(yīng),或?qū)嶋H的去模擬應(yīng)用執(zhí)行更新,通過(guò)上述的方法可以更加準(zhǔn)確的測(cè)檢測(cè)故障的存儲(chǔ)節(jié)點(diǎn)。
[0123]所述備份模塊13包括:
[0124]存儲(chǔ)子模塊131,用于接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行備份的任務(wù)后,根據(jù)配置將對(duì)應(yīng)的實(shí)例數(shù)據(jù)分片存儲(chǔ)到至少一個(gè)存儲(chǔ)節(jié)點(diǎn)上;
[0125]刪除子模塊132,用于根據(jù)用戶設(shè)定的備份保留策略,自動(dòng)刪除過(guò)期的備份數(shù)據(jù)。
[0126]參照?qǐng)D4,給出了本申請(qǐng)實(shí)施例所述備份模塊執(zhí)行備份示意圖。
[0127]備份模塊13在執(zhí)行備份的任務(wù)時(shí),會(huì)向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送備份任務(wù),然后接收備份數(shù)據(jù)并執(zhí)行對(duì)應(yīng)的備份操作。
[0128]遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)要處理的MYSQL實(shí)例非常多,甚至上千上萬(wàn)個(gè),都需要在一定的時(shí)間范圍內(nèi)完成。在收集備份時(shí)若沒(méi)有并發(fā)控制,整個(gè)網(wǎng)絡(luò)帶寬將被耗盡,因此備份模塊13可以控制多個(gè)執(zhí)行備份的任務(wù)并發(fā)執(zhí)行,以控制不讓執(zhí)行備份的任務(wù)耗盡資源,避免影響正常的業(yè)務(wù)。
[0129]在本申請(qǐng)中,各個(gè)存儲(chǔ)節(jié)點(diǎn)上的數(shù)據(jù)可以分片存儲(chǔ),具體執(zhí)行中。可以將一個(gè)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)分散到多個(gè)不同的備份存儲(chǔ)節(jié)點(diǎn)上,以讓備份集存儲(chǔ)足夠分散。這種方法一方面提高了備份的效率,另一方面讓備份集更安全。通??梢源鎯?chǔ)數(shù)據(jù)的設(shè)備看作存儲(chǔ)節(jié)點(diǎn),例如,將一個(gè)存儲(chǔ)數(shù)據(jù)的計(jì)算機(jī)看作一個(gè)存儲(chǔ)節(jié)點(diǎn)。
[0130]處于容災(zāi)的考慮,通常各個(gè)存儲(chǔ)節(jié)點(diǎn)可以分布在不同的機(jī)房中。本申請(qǐng)支持跨機(jī)房異地備份,本申請(qǐng)所述的系統(tǒng)可以讓備份模塊內(nèi)的多個(gè)備份控制節(jié)點(diǎn)(MASTER)分散在不同的機(jī)房?jī)?nèi)。例如,根據(jù)預(yù)置的規(guī)則,智能地根據(jù)備份策略進(jìn)行異地備份。
[0131]下面論述在線遷移模塊14,首先,觸發(fā)執(zhí)行遷移的任務(wù)產(chǎn)生的情況包括:
[0132]I)存儲(chǔ)節(jié)點(diǎn)壓力過(guò)大,有時(shí)候在一個(gè)存儲(chǔ)節(jié)點(diǎn)上面可能會(huì)啟動(dòng)多個(gè)實(shí)例,但隨著業(yè)務(wù)壓力增加,主機(jī)已經(jīng)不能承受如此多實(shí)例,因此需要將某些實(shí)例給遷移到其他的存儲(chǔ)節(jié)點(diǎn)上;
[0133]2)用戶需要更多的資源,用戶在最初時(shí)申請(qǐng)了資源比較小的實(shí)例,后來(lái)隨著業(yè)務(wù)的增多,導(dǎo)致需要更多的資源,此時(shí)不能停止用戶的業(yè)務(wù),因此只能把存儲(chǔ)業(yè)務(wù)數(shù)據(jù)的實(shí)例遷移到另外的存儲(chǔ)節(jié)點(diǎn)上;
[0134]3)用于實(shí)例恢復(fù),用戶有時(shí)想把數(shù)據(jù)還原到歷史的某個(gè)時(shí)間點(diǎn)上,此時(shí)不能直接在用戶當(dāng)前的實(shí)例中恢復(fù),因此會(huì)把用戶的數(shù)據(jù)恢復(fù)到另外的存儲(chǔ)節(jié)點(diǎn)上面,然后再作切換。
[0135]所述在線遷移模塊14包括:
[0136]獲取子模塊141,用于接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行遷移的任務(wù)后,從備份模塊中獲取原始存儲(chǔ)節(jié)點(diǎn)的備份實(shí)例數(shù)據(jù);
[0137]執(zhí)行遷移的任務(wù)可以將實(shí)例數(shù)據(jù)從第一個(gè)存儲(chǔ)節(jié)點(diǎn)遷移到第二個(gè)存儲(chǔ)節(jié)點(diǎn)上,則第一個(gè)存儲(chǔ)節(jié)點(diǎn)為原始存儲(chǔ)節(jié)點(diǎn),第二個(gè)存儲(chǔ)節(jié)點(diǎn)為目標(biāo)存儲(chǔ)某節(jié)點(diǎn)。
[0138]接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行遷移的任務(wù)后,在線遷移模塊14會(huì)根據(jù)任務(wù)從備份模塊中獲取原始存儲(chǔ)節(jié)點(diǎn)在某個(gè)時(shí)間點(diǎn)的備份實(shí)例數(shù)據(jù)。例如,獲取最近一次的備份實(shí)例數(shù)據(jù),或者獲取2012年I月10日15點(diǎn)的備份實(shí)例數(shù)據(jù)。[0139]同步子模塊142,用于目標(biāo)存儲(chǔ)節(jié)點(diǎn)上的備份完成后,將原始存儲(chǔ)節(jié)點(diǎn)和目標(biāo)存儲(chǔ)節(jié)點(diǎn)的實(shí)例數(shù)據(jù)進(jìn)行同步;
[0140]通知子模塊143,用于通知備份模塊在目標(biāo)存儲(chǔ)節(jié)點(diǎn)上執(zhí)行對(duì)應(yīng)的備份操作,并發(fā)出將IP端口從原始存儲(chǔ)節(jié)點(diǎn)切換到目標(biāo)存儲(chǔ)節(jié)點(diǎn)上的通知。
[0141]上述原始存儲(chǔ)節(jié)點(diǎn)的備份實(shí)例數(shù)據(jù)后,通知子模塊143會(huì)通知備份模塊13在目標(biāo)存儲(chǔ)節(jié)點(diǎn)上執(zhí)行對(duì)應(yīng)的備份操作。
[0142]在執(zhí)行備份的這段時(shí)間里,原始存儲(chǔ)節(jié)點(diǎn)上有可能更改了存儲(chǔ)的實(shí)例數(shù)據(jù),因此目標(biāo)存儲(chǔ)節(jié)點(diǎn)上的備份完成后,可以將原始存儲(chǔ)節(jié)點(diǎn)和目標(biāo)存儲(chǔ)節(jié)點(diǎn)的實(shí)例數(shù)據(jù)進(jìn)行同步,使原始存儲(chǔ)節(jié)點(diǎn)和目標(biāo)存儲(chǔ)節(jié)點(diǎn)中的實(shí)例數(shù)據(jù)完全一致。
[0143]數(shù)據(jù)同步結(jié)束后,通知子模塊143會(huì)發(fā)送命令給數(shù)據(jù)鏈路模塊16的虛擬服務(wù)器子模塊161,通知所述虛擬服務(wù)器子模塊161將IP端口由原始存儲(chǔ)節(jié)點(diǎn)切換至目標(biāo)存儲(chǔ)節(jié)點(diǎn)。
[0144]其中,數(shù)據(jù)同步的操作是非必要的,有些觸發(fā)執(zhí)行遷移的任務(wù)產(chǎn)生的情況可能不執(zhí)行數(shù)據(jù)同步,例如,若由于用戶是為了數(shù)據(jù)還原到歷史的某個(gè)時(shí)間點(diǎn)上,而觸發(fā)執(zhí)行遷移的任務(wù),則此時(shí)不需要后進(jìn)行數(shù)據(jù)同步。
[0145]參照?qǐng)D5,給出了本申請(qǐng)實(shí)施例所述在線遷移模塊數(shù)據(jù)遷移示意圖。
[0146]在線遷移模塊接收到執(zhí)行遷移的任務(wù)后,1.向備份模塊13獲取備份;2.備份模塊13傳送備份到對(duì)應(yīng)的目標(biāo)存儲(chǔ)節(jié)點(diǎn);3.在所述目標(biāo)存儲(chǔ)節(jié)點(diǎn)上進(jìn)行實(shí)例的數(shù)據(jù)恢復(fù);4.原始存儲(chǔ)節(jié)點(diǎn)和目標(biāo)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行同步;5.在線遷移模塊通知虛擬服務(wù)器子模塊162將IP端口由原始存儲(chǔ)節(jié)點(diǎn)切換到目標(biāo)存儲(chǔ)節(jié)點(diǎn)上;6.銷(xiāo)毀所述實(shí)例對(duì)應(yīng)的IP端口與原始存儲(chǔ)節(jié)點(diǎn)的映射關(guān)系。
[0147]其中,在線遷移模塊14依賴(lài)于備份模塊13,在進(jìn)行遷移操作時(shí),首先要獲得對(duì)應(yīng)實(shí)例的一個(gè)備份數(shù)據(jù),不然遷移無(wú)從說(shuō)起。所述備份數(shù)據(jù)需要向備份模塊13去獲取,備份模塊13會(huì)通知在線遷移模塊14是否存在備份,并確定是否需要立即執(zhí)行備份操作,如果確實(shí)需要,則備份模塊13就會(huì)下發(fā)備份指令,即時(shí)產(chǎn)生一個(gè)備份數(shù)據(jù)。
[0148]本申請(qǐng)所述的執(zhí)行遷移的任務(wù)具有可持續(xù)操作性。首先可以將執(zhí)行遷移的任務(wù)分成若干個(gè)小原子操作,所述原子操作是不可分割的,即整個(gè)執(zhí)行遷移的任務(wù)是由在線遷移模塊來(lái)主導(dǎo)的。執(zhí)行中,在線遷移模塊可以接收到每一步完成的狀態(tài)并記錄下來(lái),若在某一步操作中出現(xiàn)異常,經(jīng)過(guò)修復(fù)后,在線遷移模塊可以由異常處繼續(xù)執(zhí)行后面的任務(wù)。
[0149]優(yōu)選的,所述任務(wù)調(diào)度模塊11、高可用控制模塊12、備份模塊13和線遷移模塊14,都是由若干個(gè)處理節(jié)點(diǎn)構(gòu)成的集群,所述的每個(gè)模塊還包括:
[0150]節(jié)點(diǎn)檢測(cè)子模塊,通過(guò)處理節(jié)點(diǎn)之間的心跳通信,檢測(cè)各個(gè)處理節(jié)點(diǎn)是否正常運(yùn)行;
[0151]節(jié)點(diǎn)切換子模塊,針對(duì)非正常運(yùn)行的處理節(jié)點(diǎn),切換至正常運(yùn)行的處理節(jié)點(diǎn),并接管對(duì)應(yīng)所述非正常運(yùn)行的處理節(jié)點(diǎn)的任務(wù)。
[0152]本申請(qǐng)中任務(wù)調(diào)度模塊11、高可用控制模塊12、備份模塊13和線遷移模塊14不是單一的處理節(jié)點(diǎn),而是有多個(gè)處理節(jié)點(diǎn)構(gòu)成的集群。由于他們都是整個(gè)系統(tǒng)中非常重要的一部分,自身的高可用性的維護(hù)也是非常重要的,因此都具有自身的高可用保護(hù)功能,可以由節(jié)點(diǎn)檢測(cè)子模塊和節(jié)點(diǎn)切換子模塊完成。
[0153]其中,高可用性(High Availability)通常來(lái)描述一個(gè)系統(tǒng)經(jīng)過(guò)專(zhuān)門(mén)的設(shè)計(jì),從而減少停工時(shí)間,而保持其服務(wù)的高度可用性。
[0154]上述的任務(wù)調(diào)度模塊11、高可用控制模塊12、備份模塊13和線遷移模塊14,除了執(zhí)行上述各自的功能以外,還會(huì)檢測(cè)自身的各個(gè)處理節(jié)點(diǎn)之間的心跳通信進(jìn)行,以查看各個(gè)處理節(jié)點(diǎn)是否正常。針對(duì)非正常運(yùn)行的處理節(jié)點(diǎn),切換至正常運(yùn)行的處理節(jié)點(diǎn),并接管對(duì)應(yīng)所述非正常運(yùn)行的處理節(jié)點(diǎn)的任務(wù),以保證各個(gè)任務(wù)的正常執(zhí)行。
[0155]則對(duì)應(yīng)任務(wù)調(diào)度模塊11包括節(jié)點(diǎn)檢測(cè)子模塊115和節(jié)點(diǎn)切換子模塊116,高可用控制模塊12包括節(jié)點(diǎn)檢測(cè)子模塊125和節(jié)點(diǎn)切換子模塊126,備份模塊13包括節(jié)點(diǎn)檢測(cè)子模塊133和節(jié)點(diǎn)切換子模塊134,線遷移模塊14包括節(jié)點(diǎn)檢測(cè)子模塊144和節(jié)點(diǎn)切換子模塊 145。
[0156]所述的系統(tǒng)還包括監(jiān)控模塊15,可以使用PYTHON語(yǔ)言自組開(kāi)發(fā),主要負(fù)責(zé)整個(gè)系統(tǒng)內(nèi)事務(wù)正常運(yùn)轉(zhuǎn)的檢查,以及實(shí)例相關(guān)狀態(tài)數(shù)據(jù)和性能數(shù)據(jù)的收集。
[0157]其中,所述監(jiān)控模塊15包括:
[0158]一致性檢測(cè)子模塊151,用于在系統(tǒng)運(yùn)行過(guò)程中檢測(cè)并清理存儲(chǔ)節(jié)點(diǎn)和對(duì)應(yīng)模塊中不一致的數(shù)據(jù);
[0159]所述系統(tǒng)的一致性檢查,即在系統(tǒng)運(yùn)行過(guò)程中,可能會(huì)出現(xiàn)存儲(chǔ)節(jié)點(diǎn)與系統(tǒng)對(duì)應(yīng)各個(gè)模塊中的數(shù)據(jù)不一致的情況,這有可能是任務(wù)在執(zhí)行過(guò)程中遺留下來(lái)的問(wèn)題,因此需要清理這些不一致數(shù)據(jù),以防止系統(tǒng)內(nèi)資源混亂。
[0160]狀態(tài)及性能監(jiān)控子模塊152,用于收集并監(jiān)控所有存儲(chǔ)節(jié)點(diǎn)和實(shí)例的狀態(tài)數(shù)據(jù)和性能數(shù)據(jù);
[0161]監(jiān)控模塊可以收集所有存儲(chǔ)節(jié)點(diǎn)和實(shí)例狀態(tài)數(shù)據(jù),例如實(shí)例是否可用,復(fù)制進(jìn)程是否正常,存儲(chǔ)節(jié)點(diǎn)是否可用等。
[0162]監(jiān)控模塊還可以收集存儲(chǔ)節(jié)點(diǎn)和實(shí)例的性能數(shù)據(jù),例如存儲(chǔ)節(jié)點(diǎn)的CPU (CentralProcessing Unit)負(fù)載,IO (Input/Output)使用率,存儲(chǔ)節(jié)點(diǎn)的MEM (memory,主物理內(nèi)存)使用占比,實(shí)例內(nèi)存使用率,實(shí)例CPU使用率,實(shí)例所占IO資源等。
[0163]空間檢查子模塊153,用于當(dāng)檢測(cè)到用戶的使用空間超出預(yù)設(shè)范圍后,將用戶權(quán)限修改為只讀;
[0164]若檢測(cè)到用戶所使用空間超出預(yù)設(shè)范圍,根據(jù)具體的情況和設(shè)置,可以將用戶的權(quán)限更改成只讀。
[0165]流量統(tǒng)計(jì)子模塊154,用于統(tǒng)計(jì)每個(gè)存儲(chǔ)節(jié)點(diǎn)上各個(gè)實(shí)例的網(wǎng)絡(luò)流量數(shù)據(jù);
[0166]監(jiān)控模塊還可以收集匯總網(wǎng)絡(luò)流量信息。系統(tǒng)在實(shí)際執(zhí)行中需要對(duì)每個(gè)實(shí)例所使用的網(wǎng)絡(luò)流量進(jìn)行統(tǒng)計(jì),以作分析匯總??梢栽诿總€(gè)存儲(chǔ)節(jié)點(diǎn)上執(zhí)行收集,并把所有數(shù)據(jù)集中到監(jiān)控模塊的服務(wù)端進(jìn)行匯總;
[0167]故障報(bào)警子模塊155,用于當(dāng)檢測(cè)到異常情況時(shí),執(zhí)行故障報(bào)警操作。
[0168]監(jiān)控模塊具有異常報(bào)警功能,當(dāng)檢測(cè)到異常情況時(shí),監(jiān)控模塊可以執(zhí)行故障報(bào)警操作,及時(shí)地通知維護(hù)人員處理。比如有存儲(chǔ)節(jié)點(diǎn)的物理硬件有故障,有可能還會(huì)導(dǎo)致宕機(jī),或者系統(tǒng)在運(yùn)行過(guò)程中某個(gè)任務(wù)失敗等。
[0169]所述的系統(tǒng)還包括:數(shù)據(jù)鏈路模塊16,用于在用戶訪問(wèn)實(shí)例時(shí)處理數(shù)據(jù)鏈路的問(wèn)題。
[0170]用戶在成功申請(qǐng)一個(gè)實(shí)例后,可以得到對(duì)應(yīng)的信息,例如:[0171]主機(jī):abed,mysql.rds.com ;端口:3306 ;用戶:userl ;密碼:passwdl。
[0172]域名系統(tǒng)子模塊161,用于將網(wǎng)絡(luò)中所有主機(jī)的域名轉(zhuǎn)換為對(duì)應(yīng)IP地址并保存;
[0173]為了用戶能夠通過(guò)INTERNET (國(guó)際互聯(lián)絡(luò))訪問(wèn)對(duì)應(yīng)的實(shí)例,本申請(qǐng)所述的系統(tǒng)需要把用戶指定的域名廣播到廣域網(wǎng)上,這正是域名系統(tǒng)子模塊161(Domain Name Service,DNS)的作用。當(dāng)系統(tǒng)成功建立一個(gè)域名后,域名系統(tǒng)子模塊161將網(wǎng)絡(luò)中所有主機(jī)的域名轉(zhuǎn)換為對(duì)應(yīng)IP地址并保存,還負(fù)責(zé)把其廣播出去,當(dāng)然域名信息被改后或刪除,域名系統(tǒng)子模塊161同樣會(huì)把變更信息廣播出去,以便讓每個(gè)用戶都知道。
[0174]參照?qǐng)D6,給出了本申請(qǐng)實(shí)施例所述域名系統(tǒng)子模塊工作示意圖。
[0175]由分布在3個(gè)不同機(jī)房的服務(wù)器構(gòu)成所述域名系統(tǒng)子模塊161,可以通過(guò)API端口對(duì)IP端口執(zhí)行創(chuàng)建、刪除、修改和查詢等操作,然后將操作完成后的IP端口廣播到網(wǎng)絡(luò)中,用戶登錄域名時(shí)可以轉(zhuǎn)換為對(duì)應(yīng)IP地址。
[0176]所述DNS集群可以由多臺(tái)高性能服務(wù)器(PC SERVER)組成,例如由3臺(tái)高性能服務(wù)器構(gòu)成,并分布在不同的機(jī)房中,因此只有當(dāng)三個(gè)機(jī)房的三臺(tái)服務(wù)器同時(shí)停止服務(wù),整個(gè)DNS服務(wù)才會(huì)發(fā)生故障,這樣的可能性只有99.9999%,因此系統(tǒng)運(yùn)行非常的安全和穩(wěn)定。
[0177]虛擬服務(wù)器子模塊162,用于構(gòu)建并存儲(chǔ)公網(wǎng)IP端口和真實(shí)IP端口之間的映射關(guān)系,實(shí)現(xiàn)各個(gè)存儲(chǔ)節(jié)點(diǎn)的負(fù)載均衡,防止DDOS分布式拒絕服務(wù)攻擊,并進(jìn)行流量控制。
[0178]用戶通過(guò)域名系統(tǒng)子模塊161解析到所要訪問(wèn)的公網(wǎng)IP后,就需要虛擬服務(wù)器子模塊162 了。
[0179]首先簡(jiǎn)單介紹一下虛擬服務(wù)器子模塊162,虛擬服務(wù)器是Linux Virtual Server,英文縮寫(xiě)為L(zhǎng)VS,即Linux虛擬服務(wù)器,是一個(gè)虛擬的服務(wù)器集群。
[0180]目前Linux虛擬服務(wù)器有三種IP負(fù)載均衡技術(shù),分別為VS/NAT(Virtual Servervia Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換實(shí)現(xiàn)虛擬服務(wù)器);VS/TUN (VirtualServer via IP TunnelingIP,隧道實(shí)現(xiàn)虛擬服務(wù)器);VS/DR (Virtual Server via DirectRouting,直接路由實(shí)現(xiàn)虛擬服務(wù)器)。
[0181]本申請(qǐng)中可以使用了其中的VS/DR技術(shù),作為前端訪問(wèn)的第一層,其承載著IP映射,端口轉(zhuǎn)發(fā),防火墻,流量控制等功能。
[0182]本申請(qǐng)中用戶看到的端口是公網(wǎng)IP的服務(wù)端口,這是因?yàn)楸旧暾?qǐng)采用了多實(shí)例技術(shù)及端口映射技術(shù),因此實(shí)例真正的服務(wù)端口可能并不會(huì)與公網(wǎng)IP的服務(wù)端口一樣。這樣做的有點(diǎn)包括:
[0183]I)出于安全考慮,本申請(qǐng)并不會(huì)把運(yùn)行實(shí)例的私網(wǎng)物理主機(jī)直接暴露給用戶和網(wǎng)絡(luò),因此需要實(shí)現(xiàn)IP映射;
[0184]2)可能在一臺(tái)主機(jī)即一個(gè)存儲(chǔ)節(jié)點(diǎn)上,可能啟動(dòng)了幾十個(gè)甚至上百個(gè)實(shí)例,因此所以并不能保證公網(wǎng)IP端口與實(shí)際運(yùn)行的存儲(chǔ)節(jié)點(diǎn)的IP端口是保持一致的;
[0185]2)用戶可以根據(jù)自己的需要設(shè)置對(duì)應(yīng)的IP端口,這可能出于方便或安全因素,總之本申請(qǐng)可以向用戶提供了用戶想要的各種環(huán)境。
[0186]參照?qǐng)D7,給出了本申請(qǐng)實(shí)施例所述虛擬服務(wù)器子模塊中IP端口映射示意圖。
[0187]用戶登錄公網(wǎng)的IP端口:110.18.11.12:3306,通過(guò)虛擬服務(wù)器子模塊162可以映射到對(duì)應(yīng)真實(shí)的IP端口 192.18.0.45。其中,在虛擬服務(wù)器子模塊162中存儲(chǔ)有公網(wǎng)的IP端口和真實(shí)的IP端口的映射關(guān)系,例如圖7中通過(guò)公網(wǎng)的IP端口后面的3306,即可映射到對(duì)應(yīng)真實(shí)的IP端口上。
[0188]當(dāng)然端口映射只是虛擬服務(wù)器子模塊162對(duì)應(yīng)功能的一部分而已,其還具有負(fù)載均衡,防DDOS攻擊,流量控制等功能。
[0189]例如,某個(gè)用戶的實(shí)例,由于遭到了黑客的攻擊,黑客會(huì)不斷地大量向該服務(wù)端口發(fā)送請(qǐng)求,而真正用戶的請(qǐng)求就會(huì)被中斷或響應(yīng)緩慢。此時(shí)通過(guò)虛擬服務(wù)器子模塊162的流量探測(cè)功能可以發(fā)現(xiàn)這種行為,并把目標(biāo)IP置于黑名單中。
[0190]另外,有些用戶的流量確實(shí)非常的大,需要進(jìn)行控制以免影響其他用戶的使用,此時(shí)需要用到虛擬服務(wù)器子模塊162的流量控制功能。
[0191]參照?qǐng)D8,給出了本申請(qǐng)優(yōu)選實(shí)施例所述一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)示意圖。
[0192]本申請(qǐng)包括兩種操作方法,一是用戶數(shù)據(jù)操作體系,二是實(shí)例管理操作體系。
[0193]用戶操作數(shù)據(jù)體系:用戶可以通過(guò)Mysql-client或第三方數(shù)據(jù)庫(kù)管理工具通過(guò)虛擬服務(wù)器子模塊162連接到對(duì)應(yīng)的用戶實(shí)例進(jìn)行數(shù)據(jù)操作??梢詫?duì)某個(gè)存儲(chǔ)節(jié)點(diǎn)進(jìn)行增加表,刪除表,增加數(shù)據(jù),刪除數(shù)據(jù),更改數(shù)據(jù)等操作。如為方便管理我們給用戶提供域名+PORT的連接串,用戶只要能夠連接網(wǎng)絡(luò),就可以連接到對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)(數(shù)據(jù)庫(kù))。即圖8中用戶通過(guò)虛擬服務(wù)器子模塊162對(duì)存儲(chǔ)節(jié)點(diǎn)執(zhí)行操作的數(shù)據(jù)通路,由直線..一”構(gòu)成數(shù)據(jù)通路。操作證行結(jié)束后數(shù)據(jù)和反饋信息會(huì)直接由存儲(chǔ)節(jié)點(diǎn)返回給用戶。
[0194]其中,所述用戶實(shí)例是在平臺(tái)上存在的虛擬概念,一個(gè)用戶實(shí)例對(duì)應(yīng)兩個(gè)實(shí)例。
[0195]實(shí)例管理操作體系:用戶可以通過(guò)WEB/ΑΡΙ對(duì)自己的實(shí)例進(jìn)行操作;比如增加實(shí)例,刪除實(shí)例,備份,查看性能數(shù)據(jù)等。即圖8中用戶通過(guò)WEB/ΑΡΙ連接到任務(wù)調(diào)度模塊11進(jìn)行任務(wù)調(diào)度的數(shù)據(jù)通路,由直線“一一”構(gòu)成數(shù)據(jù)通路。
[0196]其中,還包括任務(wù)調(diào)度模塊調(diào)度各個(gè)模塊執(zhí)行對(duì)應(yīng)的任務(wù)的數(shù)據(jù)通路,由直線 構(gòu)成數(shù)據(jù)通路。
[0197]其中,API的英文全拼為Application Programming Interface,即應(yīng)用程序編程接口。WEB指的是網(wǎng)絡(luò)。
[0198]現(xiàn)有技術(shù)采用虛擬機(jī)的RDS服務(wù)中,實(shí)例進(jìn)程建立在獨(dú)立的虛擬機(jī)上,數(shù)據(jù)庫(kù)存儲(chǔ)使用EBS (Elastic Block Store,彈性塊存儲(chǔ)技術(shù))共享存儲(chǔ)。由于每個(gè)虛擬機(jī)都要運(yùn)行操作系統(tǒng)(Operating System, OS),開(kāi)銷(xiāo)很大,因此其單主機(jī)的利用率比較低。
[0199]本申請(qǐng)采用多實(shí)例技術(shù),在單主機(jī)的資源利用率來(lái)看比虛擬機(jī)技術(shù)高20以上,另外針對(duì)單主機(jī)可分割性而言,本申請(qǐng)由于不需要為每個(gè)實(shí)例分配OS所需要CPU,內(nèi)存,磁盤(pán)資源,所以對(duì)相同配置下,本申請(qǐng)可以在能在單主機(jī)上運(yùn)行更多的“數(shù)據(jù)庫(kù)實(shí)例”。
[0200]虛擬機(jī)的RDS服務(wù)的存儲(chǔ)使用掛載EBS的模式,其最大的問(wèn)題是性能會(huì)受約束(如,網(wǎng)絡(luò)延時(shí)、EBS本身內(nèi)部同步等)。而本申請(qǐng)采用的是本地高性能磁盤(pán)陣列,在響應(yīng)時(shí)間和性能上占絕對(duì)優(yōu)勢(shì)。
[0201]基于云技術(shù)的概念,可以建立本申請(qǐng)所述的數(shù)據(jù)庫(kù)遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)。首先介紹
云計(jì)算。
[0202]所述云計(jì)算(cloud computing)是基于互聯(lián)網(wǎng)的服務(wù)的增加、使用和交付模式,通常涉及通過(guò)互聯(lián)網(wǎng)來(lái)提供動(dòng)態(tài)易擴(kuò)展且經(jīng)常是虛擬化的資源。云計(jì)算提供商往往提供通用的網(wǎng)絡(luò)業(yè)務(wù)應(yīng)用,可以通過(guò)瀏覽器等軟件或者其他Web服務(wù)來(lái)訪問(wèn),而軟件和數(shù)據(jù)都存儲(chǔ)在服務(wù)器上。通過(guò)使計(jì)算分布在大量的分布式計(jì)算機(jī)上,而非本地計(jì)算機(jī)或遠(yuǎn)程服務(wù)器中,使得企業(yè)數(shù)據(jù)中心的運(yùn)行將與互聯(lián)網(wǎng)更相似。這使得企業(yè)能夠?qū)①Y源切換到需要的應(yīng)用上,根據(jù)需求訪問(wèn)計(jì)算機(jī)和存儲(chǔ)系統(tǒng)。
[0203]隨著云計(jì)算的推廣,基于云計(jì)算的戰(zhàn)略部署和應(yīng)用中,本申請(qǐng)可以運(yùn)用云數(shù)據(jù)庫(kù)為用戶提供數(shù)據(jù)庫(kù)的遠(yuǎn)程服務(wù)。
[0204]綜上所述,由于用戶服務(wù)器和數(shù)據(jù)庫(kù)的周期是非常長(zhǎng)的,建立的方法非常繁瑣,并且效率也較低。并且,后期維護(hù)中無(wú)法確保硬件升級(jí)時(shí),數(shù)據(jù)庫(kù)是否能夠支撐業(yè)務(wù)的執(zhí)行,數(shù)據(jù)遷移的穩(wěn)定性也得不到保證。因此,本申請(qǐng)?zhí)岢鲆环N數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng),包括:任務(wù)調(diào)度模塊、高可用控制模塊、備份模塊和在線遷移模塊。通過(guò)任務(wù)調(diào)度模塊可以調(diào)度任務(wù)在各模塊中穩(wěn)定、有序的執(zhí)行。同使用該系統(tǒng)還可以實(shí)現(xiàn)數(shù)據(jù)的備份和遷移,以及各存儲(chǔ)節(jié)點(diǎn)的快速切換。對(duì)用戶而言,使用本申請(qǐng)無(wú)需自建服務(wù)器和數(shù)據(jù)庫(kù),節(jié)省了時(shí)間提高了效率,同時(shí)若用戶業(yè)務(wù)量增大,只需要增加存儲(chǔ)節(jié)點(diǎn)即可,數(shù)據(jù)遷移等問(wèn)題都可以由系統(tǒng)完成,用戶使用非常方便,效率較高。
[0205]其次,現(xiàn)有技術(shù)中存在虛擬平臺(tái)的RDS服務(wù),是將實(shí)例建立在虛擬機(jī)上,但是虛擬機(jī)中的資源不能滿足于高壓力的需求,并且當(dāng)某些用戶需要去維護(hù)數(shù)據(jù)庫(kù)時(shí),但他們使用的虛擬機(jī)由于IO能力不夠,不能承受起其業(yè)務(wù)帶來(lái)的壓力。本申請(qǐng)將實(shí)例建立在物理機(jī)上,所能提供的IO能力遠(yuǎn)超虛擬機(jī)至少10倍以上,能夠更高的承受起其業(yè)務(wù)帶來(lái)的壓力。
[0206]再次,虛擬平臺(tái)本身不提供數(shù)據(jù)庫(kù)備份,用戶需要自己去制定備份計(jì)劃,并把備份數(shù)據(jù)放到其他位置存儲(chǔ)。而本申請(qǐng)自帶了備份模塊,用戶可以自由配置備份保留策略以備份時(shí)間,不需考慮備份、異機(jī)存儲(chǔ)等問(wèn)題。
[0207]再次,用戶使用虛擬平臺(tái)時(shí),通常只會(huì)申請(qǐng)一個(gè)虛擬機(jī)來(lái)承擔(dān)前端業(yè)務(wù)和數(shù)據(jù)庫(kù)服務(wù)。其中,若前端業(yè)務(wù)丟了,因?yàn)槎际且恍┡渲眯缘奈募?,不?huì)造成重大的影響。而數(shù)據(jù)庫(kù)則是真正的價(jià)值所在,若虛擬機(jī)數(shù)據(jù)丟失,就會(huì)產(chǎn)生重大的影響。而本申請(qǐng)除了在每天晚上提供異機(jī)備份外,還提供雙節(jié)點(diǎn)間的實(shí)時(shí)備份,全面保護(hù)用戶數(shù)據(jù)安全,并采用自主研發(fā)的高可用控制模塊,檢測(cè)節(jié)點(diǎn)運(yùn)行是否健康,并保證兩個(gè)節(jié)點(diǎn)間的秒級(jí)切換。
[0208]參照?qǐng)D9,給出了本申請(qǐng)實(shí)施例一種遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)中的任務(wù)調(diào)度方法流程圖。
[0209]相應(yīng)的,本申請(qǐng)還提供了一種遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)中的任務(wù)調(diào)度方法,包括:
[0210]步驟101,任務(wù)調(diào)度模塊接收用戶通過(guò)網(wǎng)絡(luò)或API接口發(fā)送的任務(wù);
[0211]步驟102,通過(guò)檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,確定所述任務(wù)是否與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突;
[0212]其中,檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,其中所述互斥鎖包括獨(dú)占鎖和共孚鎖;
[0213]若所述任務(wù)針對(duì)實(shí)例擁有獨(dú)占鎖,并且當(dāng)前運(yùn)行的任務(wù)沒(méi)有占用所述實(shí)例,則所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突;
[0214]若所述任務(wù)針對(duì)實(shí)例擁有獨(dú)占鎖,但當(dāng)前運(yùn)行的任務(wù)占用了所述實(shí)例,則所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)有沖突;
[0215]若檢測(cè)所述任務(wù)對(duì)應(yīng)的實(shí)例擁有共享鎖,則所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突。
[0216]若所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突,則執(zhí)行步驟104 ;若所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)有沖突,則執(zhí)行步驟103。
[0217]步驟103,等待當(dāng)前運(yùn)行的任務(wù)運(yùn)行完畢;[0218]步驟104,調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理。
[0219]其中,
[0220]若所述任務(wù)為執(zhí)行切換的任務(wù),則調(diào)度所述任務(wù)到高可用控制模塊,執(zhí)行步驟105 ;
[0221]若所述任務(wù)為執(zhí)行備份的任務(wù),則調(diào)度所述任務(wù)到備份模塊,執(zhí)行步驟106 ;
[0222]若所述任務(wù)為執(zhí)行遷移的任務(wù),則調(diào)度所述任務(wù)到在線遷移模塊,執(zhí)行步驟107。
[0223]步驟105,通知虛擬服務(wù)器子模塊將IP端口在主存儲(chǔ)節(jié)點(diǎn)和備存儲(chǔ)節(jié)點(diǎn)之間進(jìn)行切換。
[0224]步驟106,備份模塊根據(jù)配置將對(duì)應(yīng)的實(shí)例數(shù)據(jù)分片存儲(chǔ)到至少一個(gè)存儲(chǔ)節(jié)點(diǎn)上。
[0225]步驟107,獲取備份模塊中原始存儲(chǔ)節(jié)點(diǎn)的備份實(shí)例數(shù)據(jù);
[0226]步驟108,通知備份模塊在目標(biāo)存儲(chǔ)節(jié)點(diǎn)上執(zhí)行對(duì)應(yīng)的備份操作;
[0227]步驟109,目標(biāo)存儲(chǔ)節(jié)點(diǎn)上的備份完成后,將原始存儲(chǔ)節(jié)點(diǎn)和目標(biāo)存儲(chǔ)節(jié)點(diǎn)的實(shí)例數(shù)據(jù)進(jìn)行同步;
[0228]步驟110,通知虛擬服務(wù)器子模塊將IP端口從原始存儲(chǔ)節(jié)點(diǎn)切換到目標(biāo)存儲(chǔ)節(jié)點(diǎn)上。
[0229]步驟111,接收并記錄返回的任務(wù)狀態(tài)數(shù)據(jù),所述任務(wù)狀態(tài)數(shù)據(jù)包括執(zhí)行成功和執(zhí)行失敗。
[0230]優(yōu)選的,所述高可用控制模塊的處理方法還包括:
[0231]步驟201,高可用控制模塊間隔一定時(shí)間并發(fā)輪循各個(gè)存儲(chǔ)節(jié)點(diǎn)上的所有實(shí)例;
[0232]步驟202,輪循中檢測(cè)存儲(chǔ)節(jié)點(diǎn)是否存在故障;
[0233]步驟203,若存儲(chǔ)節(jié)點(diǎn)存在故障,則采用采用無(wú)故障的存儲(chǔ)節(jié)點(diǎn)接管故障存儲(chǔ)節(jié)點(diǎn)的任務(wù);
[0234]其中,所述檢測(cè)存儲(chǔ)節(jié)點(diǎn)是否存在故障方法包括:
[0235]檢測(cè)各個(gè)存儲(chǔ)節(jié)點(diǎn)上的實(shí)例是否存在,或,檢測(cè)各個(gè)存儲(chǔ)節(jié)點(diǎn)上的實(shí)例端口是否存在響應(yīng),或,模擬應(yīng)用執(zhí)行更新操作。
[0236]所選的所述的方法還包括:
[0237]監(jiān)控模塊檢測(cè)整個(gè)系統(tǒng)內(nèi)事務(wù)正常運(yùn)轉(zhuǎn),并收集實(shí)例相關(guān)狀態(tài)數(shù)據(jù)和性能數(shù)據(jù)。
[0238]監(jiān)控模塊檢測(cè)對(duì)系統(tǒng)進(jìn)行一致性檢測(cè),狀態(tài)及性能監(jiān)控,空間檢查,流量統(tǒng)計(jì)和故
障報(bào)警等
[0239]數(shù)據(jù)鏈路模塊在用戶訪問(wèn)實(shí)例時(shí)處理數(shù)據(jù)鏈路的問(wèn)題。
[0240]包括:將網(wǎng)絡(luò)中所有主機(jī)的域名轉(zhuǎn)換為對(duì)應(yīng)IP地址并保存,構(gòu)建并存儲(chǔ)公網(wǎng)IP端口和真實(shí)IP端口之間的映射關(guān)系,實(shí)現(xiàn)各個(gè)存儲(chǔ)節(jié)點(diǎn)的負(fù)載均衡,防止DDOS分布式拒絕服務(wù)攻擊,并進(jìn)行流量控制等。
[0241]對(duì)于方法實(shí)施例而言,由于其與系統(tǒng)實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)系統(tǒng)實(shí)施例的部分說(shuō)明即可。
[0242]本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。
[0243]本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類(lèi)型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。[0244]最后,還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。
[0245]以上對(duì)本申請(qǐng)所提供的一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng),以及一種遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)中的任務(wù)調(diào)度方法,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
【權(quán)利要求】
1.一種數(shù)據(jù)庫(kù)的遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng),其特征在于,包括:任務(wù)調(diào)度模塊、高可用控制模塊、備份模塊和在線遷移模塊,其中, 所述任務(wù)調(diào)度模塊包括: 接收子模塊,用于接收用戶通過(guò)網(wǎng)絡(luò)或API接口發(fā)送的任務(wù); 互斥檢查子模塊,用于針對(duì)接收的任務(wù),通過(guò)檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,確定所述任務(wù)是否與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突; 調(diào)度子模塊,用于針對(duì)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突的任務(wù),調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理; 所述高可用控制模塊包括: 切換子模塊,用于接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行切換的任務(wù)后,發(fā)送將IP端口在主存儲(chǔ)節(jié)點(diǎn)和備存儲(chǔ)節(jié)點(diǎn)之間進(jìn)行切換的命令; 所述備份模塊包括: 存儲(chǔ)子模塊,用于接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行備份的任務(wù)后,根據(jù)配置將對(duì)應(yīng)的實(shí)例數(shù)據(jù)分片存儲(chǔ)到至少一個(gè)存儲(chǔ)節(jié)點(diǎn)上; 所述在線遷移模塊包括: 獲取子模塊,用于接收到任務(wù)調(diào)度模塊調(diào)度的執(zhí)行遷移的任務(wù)后,從備份模塊中獲取原始存儲(chǔ)節(jié)點(diǎn)的備份實(shí)例數(shù)據(jù); 同步子模塊,用于目標(biāo)存`儲(chǔ)節(jié)點(diǎn)上的備份完成后,將原始存儲(chǔ)節(jié)點(diǎn)和目標(biāo)存儲(chǔ)節(jié)點(diǎn)的實(shí)例數(shù)據(jù)進(jìn)行同步; 通知子模塊,用于通知備份模塊在目標(biāo)存儲(chǔ)節(jié)點(diǎn)上執(zhí)行對(duì)應(yīng)的備份操作,并發(fā)出將IP端口從原始存儲(chǔ)節(jié)點(diǎn)切換到目標(biāo)存儲(chǔ)節(jié)點(diǎn)上的通知。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述高可用控制模塊,還包括: 輪循子模塊,用于間隔一定時(shí)間并發(fā)輪循各個(gè)存儲(chǔ)節(jié)點(diǎn)上的所有實(shí)例; 故障檢測(cè)子模塊,用于輪循中檢測(cè)存儲(chǔ)節(jié)點(diǎn)是否存在故障; 所述切換子模塊,還用于針對(duì)故障的存儲(chǔ)節(jié)點(diǎn),采用無(wú)故障的存儲(chǔ)節(jié)點(diǎn)接管故障存儲(chǔ)節(jié)點(diǎn)的任務(wù)。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述任務(wù)調(diào)度模塊、高可用控制模塊、備份模塊和線遷移模塊,都是由若干個(gè)處理節(jié)點(diǎn)構(gòu)成的集群,所述的每個(gè)模塊還包括: 節(jié)點(diǎn)檢測(cè)子模塊,通過(guò)處理節(jié)點(diǎn)之間的心跳通信,檢測(cè)各個(gè)處理節(jié)點(diǎn)是否正常運(yùn)行; 節(jié)點(diǎn)切換子模塊,針對(duì)非正常運(yùn)行的處理節(jié)點(diǎn),切換至正常運(yùn)行的處理節(jié)點(diǎn),并接管對(duì)應(yīng)所述非正常運(yùn)行的處理節(jié)點(diǎn)的任務(wù)。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述的系統(tǒng)還包括監(jiān)控模塊,其中,所述監(jiān)控模塊包括: 一致性檢測(cè)子模塊,用于在系統(tǒng)運(yùn)行過(guò)程中檢測(cè)并清理存儲(chǔ)節(jié)點(diǎn)和對(duì)應(yīng)模塊中不一致的數(shù)據(jù); 狀態(tài)及性能監(jiān)控子模塊,用于收集并監(jiān)控所有存儲(chǔ)節(jié)點(diǎn)和實(shí)例的狀態(tài)數(shù)據(jù)和性能數(shù)據(jù); 空間檢查子模塊,用于當(dāng)檢測(cè)到用戶的使用空間超出預(yù)設(shè)范圍后,將用戶權(quán)限修改為只讀;流量統(tǒng)計(jì)子模塊,用于統(tǒng)計(jì)每個(gè)存儲(chǔ)節(jié)點(diǎn)上各個(gè)實(shí)例的網(wǎng)絡(luò)流量數(shù)據(jù); 故障報(bào)警子模塊,用于當(dāng)檢測(cè)到異常情況時(shí),執(zhí)行故障報(bào)警操作。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述的系統(tǒng)還包括:數(shù)據(jù)鏈路模塊,用于在用戶訪問(wèn)實(shí)例時(shí)處理數(shù)據(jù)鏈路的問(wèn)題,包括: 域名系統(tǒng)子模塊,用于將網(wǎng)絡(luò)中所有主機(jī)的域名轉(zhuǎn)換為對(duì)應(yīng)IP地址并保存; 虛擬服務(wù)器子模塊,用于構(gòu)建并存儲(chǔ)公網(wǎng)IP端口和真實(shí)IP端口之間的映射關(guān)系,實(shí)現(xiàn)各個(gè)存儲(chǔ)節(jié)點(diǎn)的負(fù)載均衡,防止DDOS分布式拒絕服務(wù)攻擊,并進(jìn)行流量控制。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述任務(wù)調(diào)度模塊還包括: 狀態(tài)返回子模塊,用于任務(wù)執(zhí)行完畢后,接收并記錄返回的任務(wù)狀態(tài)數(shù)據(jù),所述任務(wù)狀態(tài)數(shù)據(jù)包括執(zhí)行成功和執(zhí)行失敗。
7.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述備份模塊還包括: 刪除子模塊,用于根據(jù)用戶設(shè)定的備份保留策略,自動(dòng)刪除過(guò)期的備份數(shù)據(jù);
8.—種遠(yuǎn)程數(shù)據(jù)服務(wù)系統(tǒng)中的任務(wù)調(diào)度方法,其特征在于,包括權(quán)利要求1至7任一所述的系統(tǒng),所述的方法包括: 任務(wù)調(diào)度模塊接收用戶通過(guò)網(wǎng)絡(luò)或API接口發(fā)送的任務(wù); 通過(guò)檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,確定所述任務(wù)是否與當(dāng)前運(yùn)行的任務(wù)無(wú)沖關(guān); 若所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突,則調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理;` 若所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)有沖突,則等待當(dāng)前運(yùn)行的任務(wù)運(yùn)行完畢后,調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理; 其中, 若所述任務(wù)為執(zhí)行切換的任務(wù),則調(diào)度所述任務(wù)到高可用控制模塊; 若所述任務(wù)為執(zhí)行備份的任務(wù),則調(diào)度所述任務(wù)到備份模塊; 若所述任務(wù)為執(zhí)行遷移的任務(wù),則調(diào)度所述任務(wù)到在線遷移模塊。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,通過(guò)檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,確定所述任務(wù)是否與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突,包括: 檢測(cè)所述任務(wù)針對(duì)實(shí)例所擁有的互斥鎖,其中所述互斥鎖包括獨(dú)占鎖和共享鎖; 若所述任務(wù)針對(duì)實(shí)例擁有獨(dú)占鎖,并且當(dāng)前運(yùn)行的任務(wù)沒(méi)有占用所述實(shí)例,則所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突; 若所述任務(wù)針對(duì)實(shí)例擁有獨(dú)占鎖,但當(dāng)前運(yùn)行的任務(wù)占用了所述實(shí)例,則所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)有沖突; 若檢測(cè)所述任務(wù)對(duì)應(yīng)的實(shí)例擁有共享鎖,則所述任務(wù)與當(dāng)前運(yùn)行的任務(wù)無(wú)沖突。
10.根據(jù)權(quán)利要求8或9任一所述的方法,其特征在于,調(diào)度所述任務(wù)到相應(yīng)的模塊進(jìn)行處理之后,還包括: 接收并記錄返回的任務(wù)狀態(tài)數(shù)據(jù),所述任務(wù)狀態(tài)數(shù)據(jù)包括執(zhí)行成功和執(zhí)行失敗。
11.根據(jù)權(quán)利要求8所述的方法,其特征在于,調(diào)度所述任務(wù)到高可用控制模塊之后,還包括: 通知虛擬服務(wù)器子模塊將IP端口在主存儲(chǔ)節(jié)點(diǎn)和備存儲(chǔ)節(jié)點(diǎn)之間進(jìn)行切換。
12.根據(jù)權(quán)利要求8所述的方法,其特征在于,調(diào)度所述任務(wù)到備份模塊之后,還包括:備份模塊根據(jù)配置將對(duì)應(yīng)的實(shí)例數(shù)據(jù)分片存儲(chǔ)到至少一個(gè)存儲(chǔ)節(jié)點(diǎn)上。
13.根據(jù)權(quán)利要求8所述的方法,其特征在于,調(diào)度所述任務(wù)到在線遷移模塊之后,還包括: 獲取備份模塊中原始存儲(chǔ)節(jié)點(diǎn)的備份實(shí)例數(shù)據(jù); 通知備份模塊在目標(biāo)存儲(chǔ)節(jié)點(diǎn)上執(zhí)行對(duì)應(yīng)的備份操作; 目標(biāo)存儲(chǔ)節(jié)點(diǎn)上的備份完成后,將原始存儲(chǔ)節(jié)點(diǎn)和目標(biāo)存儲(chǔ)節(jié)點(diǎn)的實(shí)例數(shù)據(jù)進(jìn)行同步。 通知虛擬服務(wù)器子模塊將IP端口從原始存儲(chǔ)節(jié)點(diǎn)切換到目標(biāo)存儲(chǔ)節(jié)點(diǎn)。
14.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述高可用控制模塊的處理方法還包括: 高可用控制模塊間隔一定時(shí)間并發(fā)輪循各個(gè)存儲(chǔ)節(jié)點(diǎn)上的所有實(shí)例; 輪循中檢測(cè)存儲(chǔ)節(jié)點(diǎn)是否存在故障; 若存儲(chǔ)節(jié)點(diǎn)存在故障,則采用采用無(wú)故障的存儲(chǔ)節(jié)點(diǎn)接管故障存儲(chǔ)節(jié)點(diǎn)的任務(wù); 其中,所述檢測(cè)存儲(chǔ)節(jié)點(diǎn)是否存在故障方法包括: 檢測(cè)各個(gè)存儲(chǔ)節(jié)點(diǎn)上的實(shí)例是否存在,或,檢測(cè)各個(gè)存儲(chǔ)節(jié)點(diǎn)上的實(shí)例端口是否存在響應(yīng),或,模擬應(yīng)用執(zhí)行更新操作。
15.根據(jù)權(quán)利要求8所述的方法,其特征在于,還包括: 監(jiān)控模塊檢測(cè)整個(gè)系統(tǒng)內(nèi)事務(wù)正常運(yùn)轉(zhuǎn),并收集實(shí)例相關(guān)狀態(tài)數(shù)據(jù)和性能數(shù)據(jù); 數(shù)據(jù)鏈路模塊在用戶訪問(wèn)實(shí)例時(shí)處理數(shù)據(jù)鏈路的問(wèn)題。
【文檔編號(hào)】G06F17/30GK103677967SQ201210322629
【公開(kāi)日】2014年3月26日 申請(qǐng)日期:2012年9月3日 優(yōu)先權(quán)日:2012年9月3日
【發(fā)明者】何云飛, 阮若夷, 鐘云, 胡旭亮, 周光輝 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司