本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)同步方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的蓬勃發(fā)展,人們?cè)絹?lái)越多的通過(guò)互聯(lián)網(wǎng)來(lái)處理各種業(yè)務(wù)。在這些業(yè)務(wù)處理的過(guò)程中,通常由用戶(hù)端向服務(wù)端提交業(yè)務(wù)請(qǐng)求,由服務(wù)端來(lái)進(jìn)行業(yè)務(wù)處理并記錄業(yè)務(wù)處理過(guò)程中所產(chǎn)生的數(shù)據(jù)。在實(shí)際應(yīng)用中,由于基于互聯(lián)網(wǎng)的業(yè)務(wù)處理請(qǐng)求較多,通常會(huì)在服務(wù)端布置多臺(tái)服務(wù)器,通過(guò)這些服務(wù)器來(lái)進(jìn)行業(yè)務(wù)處理。但是,這種通過(guò)多臺(tái)服務(wù)器處理業(yè)務(wù)請(qǐng)求的方式,通常會(huì)遇到數(shù)據(jù)不同步的問(wèn)題。例如,用戶(hù)端向服務(wù)端提交添加好友的業(yè)務(wù)請(qǐng)求,在服務(wù)端由服務(wù)器a對(duì)該業(yè)務(wù)請(qǐng)求進(jìn)行處理,并記錄該業(yè)務(wù)處理過(guò)程中所產(chǎn)生的數(shù)據(jù),但是在服務(wù)器b和服務(wù)器c中卻沒(méi)有關(guān)于該業(yè)務(wù)處理的記錄。
現(xiàn)有技術(shù)通過(guò)將服務(wù)端的多臺(tái)服務(wù)器,分別設(shè)置為主、從(master、slave)服務(wù)器的方式來(lái)解決數(shù)據(jù)同步的問(wèn)題。這種方式通常將服務(wù)端的某一臺(tái)服務(wù)器設(shè)置為主(master)服務(wù)器,該服務(wù)器之外的其它服務(wù)器設(shè)置為從(slave)服務(wù)器,并且將每臺(tái)從服務(wù)器分別和主服務(wù)器進(jìn)行連接。當(dāng)其中一臺(tái)從服務(wù)器的數(shù)據(jù)更新后,會(huì)將該更新后的數(shù)據(jù)同步到主服務(wù)器,再由主服務(wù)器將該更新后的數(shù)據(jù)同步到其它的從服務(wù)器,從而完成各服務(wù)器之間的數(shù)據(jù)同步。
然而,這種現(xiàn)有技術(shù)的問(wèn)題是,在服務(wù)端設(shè)置為主、從服務(wù)器后,各個(gè)服務(wù)器之間的數(shù)據(jù)同步過(guò)程均依賴(lài)于主服務(wù)器。當(dāng)該主服務(wù)器出現(xiàn)故障時(shí),通常會(huì)導(dǎo)致服務(wù)端的各服務(wù)器無(wú)法進(jìn)行數(shù)據(jù)同步。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)同步方法及裝置,用于解決現(xiàn)有技術(shù)中,在服務(wù)端設(shè)置主、從服務(wù)器后,各個(gè)服務(wù)器之間的數(shù)據(jù)同步依賴(lài)主服務(wù)器的問(wèn)題。
本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)同步方法,所述方法用于實(shí)現(xiàn)不同業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,所述業(yè)務(wù)服務(wù)器與分布式集群連接,所述業(yè)務(wù)服務(wù)器預(yù)先在所述分布式集群中注冊(cè)為監(jiān)聽(tīng)對(duì)象,所述方法包括:
當(dāng)所述分布式集群監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送數(shù)據(jù)同步請(qǐng)求,以便各個(gè)業(yè)務(wù)服務(wù)器在接收所述數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步。
優(yōu)選地,所述分布式集群具體為zookeeper分布式集群;則,
在所述zookeeper分布式集群中,通過(guò)下述方法將所述業(yè)務(wù)服務(wù)器注冊(cè)為監(jiān)聽(tīng)對(duì)象:
所述zookeeper分布式集群接收業(yè)務(wù)服務(wù)器發(fā)送的注冊(cè)成為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)請(qǐng)求;
所述zookeeper分布式集群通過(guò)所述業(yè)務(wù)請(qǐng)求生成用于監(jiān)聽(tīng)所述業(yè)務(wù)服務(wù)器的監(jiān)聽(tīng)節(jié)點(diǎn)。
優(yōu)選地,所述zookeeper分布式集群通過(guò)下述方法監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化:
當(dāng)所述zookeeper分布式集群監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)服務(wù)器對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)操作時(shí),確定所述業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化,所述數(shù)據(jù)操作具體為所述業(yè)務(wù)服務(wù)器根據(jù)所述業(yè)務(wù)服務(wù)器上的數(shù)據(jù)變化的結(jié)果,對(duì)所述zookeeper分布式集群上的監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行的數(shù)據(jù)操作。
優(yōu)選地,所述數(shù)據(jù)操作具體包括:數(shù)據(jù)寫(xiě)入和/或數(shù)據(jù)刪除。
優(yōu)選地,所述作為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)服務(wù)器對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)寫(xiě)入具體包括:所述業(yè)務(wù)服務(wù)器向所述zookeeper分布式集群發(fā)送加分布式鎖的業(yè)務(wù)請(qǐng)求,以便所述zookeeper分布式集群根據(jù)所述分布式鎖的使用狀態(tài)判斷是否能夠向所述業(yè)務(wù)服務(wù)器加分布式鎖;
當(dāng)所述業(yè)務(wù)服務(wù)器加分布式鎖后,對(duì)所述監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)寫(xiě)入。
優(yōu)選地,所述作為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)服務(wù)器對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)刪除具體包括:所述業(yè)務(wù)服務(wù)器刪除所述監(jiān)聽(tīng)節(jié)點(diǎn)中所述數(shù)據(jù)的存儲(chǔ)路徑。
優(yōu)選地,所述分布式集群包括至少兩個(gè)同步服務(wù)器,所述同步服務(wù)器與業(yè)務(wù)服務(wù)器連接并且各個(gè)同步服務(wù)器之間的數(shù)據(jù)能夠同步;則,
所述通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步具體包括:通過(guò)所述分布式集群中與各所述業(yè)務(wù)服務(wù)器連接的同步服務(wù)器進(jìn)行數(shù)據(jù)同步。
本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)同步方法,所述方法用于實(shí)現(xiàn)不同業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,所述業(yè)務(wù)服務(wù)器與分布式集群連接,所述業(yè)務(wù)服務(wù)器預(yù)先在所述分布式集群中注冊(cè)為監(jiān)聽(tīng)對(duì)象,所述方法包括:
作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器接收數(shù)據(jù)同步請(qǐng)求,所述數(shù)據(jù)同步請(qǐng)求為所述分布式集群在監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送的數(shù)據(jù)同步請(qǐng)求;
作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器在接收數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步。
本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)同步裝置,所述裝置用于實(shí)現(xiàn)不同業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,所述業(yè)務(wù)服務(wù)器與分布式集群連接,所述業(yè)務(wù)服務(wù)器預(yù)先在所述分布式集群中注冊(cè)為監(jiān)聽(tīng)對(duì)象,所述裝置包括:監(jiān)聽(tīng)單元和發(fā)送單元,其中:
監(jiān)聽(tīng)單元,用于所述分布式集群監(jiān)聽(tīng)作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)是否發(fā)生變化;
發(fā)送單元,用于當(dāng)所述分布式集群監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送數(shù)據(jù)同步請(qǐng)求,以便各個(gè)業(yè)務(wù)服務(wù)器在接收所述數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步。
本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)同步裝置,所述裝置用于實(shí)現(xiàn)不同業(yè)務(wù)服務(wù) 器之間的數(shù)據(jù)同步,所述業(yè)務(wù)服務(wù)器與分布式集群連接,所述業(yè)務(wù)服務(wù)器預(yù)先在所述分布式集群中注冊(cè)為監(jiān)聽(tīng)對(duì)象,所述裝置包括:接收單元和同步單元,其中:
接收單元,用于作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器接收數(shù)據(jù)同步請(qǐng)求,所述數(shù)據(jù)同步請(qǐng)求為所述分布式集群在監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送的數(shù)據(jù)同步請(qǐng)求;
同步單元,用于作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器在接收數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步。
本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:
當(dāng)分布式集群監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)服務(wù)器被進(jìn)行數(shù)據(jù)操作后,向包括所述監(jiān)聽(tīng)對(duì)象在內(nèi)的多個(gè)監(jiān)聽(tīng)對(duì)象發(fā)送數(shù)據(jù)同步請(qǐng)求,以使得各個(gè)作為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)服務(wù)器在接收數(shù)據(jù)同步請(qǐng)求后,通過(guò)分布式集群進(jìn)行數(shù)據(jù)同步。由于該方法通過(guò)分布式集群的方式來(lái)實(shí)現(xiàn)各業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,這樣可以使得,在任意一個(gè)業(yè)務(wù)服務(wù)器出現(xiàn)故障時(shí),并不會(huì)影響到其它業(yè)務(wù)服務(wù)器的正常工作,也就不會(huì)導(dǎo)致服務(wù)端由于某一臺(tái)業(yè)務(wù)服務(wù)器出現(xiàn)故障而無(wú)法工作的現(xiàn)象。因此解決了解決現(xiàn)有技術(shù)中,在服務(wù)端設(shè)置主、從服務(wù)器后,各個(gè)服務(wù)器之間的數(shù)據(jù)同步依賴(lài)主服務(wù)器的問(wèn)題。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為本申請(qǐng)實(shí)施例1提供的一種實(shí)際應(yīng)用中的業(yè)務(wù)服務(wù)器和分布式集群的連接方式示意圖;
圖2為本申請(qǐng)實(shí)施例1提供的一種數(shù)據(jù)同步方法的具體實(shí)現(xiàn)流程示意圖;
圖3為本申請(qǐng)實(shí)施例1提供的一種實(shí)際應(yīng)用中的業(yè)務(wù)服務(wù)器和zookeeper 分布式集群的連接方式示意圖;
圖4為本申請(qǐng)實(shí)施例2提供的一種數(shù)據(jù)同步方法在具體應(yīng)用場(chǎng)景下的實(shí)現(xiàn)流程示意圖;
圖5為本申請(qǐng)實(shí)施例3提供的一種數(shù)據(jù)同步方法的具體實(shí)現(xiàn)流程示意圖;
圖6為本申請(qǐng)實(shí)施例4提供的一種數(shù)據(jù)同步裝置的具體結(jié)構(gòu)示意圖;
圖7為本申請(qǐng)實(shí)施例5提供的一種數(shù)據(jù)同步裝置的具體結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
以下結(jié)合附圖,詳細(xì)說(shuō)明本申請(qǐng)各實(shí)施例提供的技術(shù)方案。
實(shí)施例1
如上所述,當(dāng)前由于互聯(lián)網(wǎng)業(yè)務(wù)量的迅速增長(zhǎng),互聯(lián)網(wǎng)業(yè)務(wù)的服務(wù)端通常會(huì)布置多臺(tái)服務(wù)器,通過(guò)這些服務(wù)器來(lái)提供服務(wù)。但是,服務(wù)端的這些服務(wù)器之間通常會(huì)遇到數(shù)據(jù)不能同步的問(wèn)題。例如,用戶(hù)向服務(wù)端發(fā)送了電子支付的業(yè)務(wù)請(qǐng)求,服務(wù)端通常會(huì)分配相應(yīng)的服務(wù)器對(duì)該業(yè)務(wù)請(qǐng)求進(jìn)行處理,并將處理該業(yè)務(wù)請(qǐng)求過(guò)程中的數(shù)據(jù)進(jìn)行記錄,這時(shí)服務(wù)端的其它服務(wù)器中并沒(méi)有該業(yè)務(wù)處理過(guò)程的相關(guān)記錄。
為了將服務(wù)端的各個(gè)服務(wù)器的數(shù)據(jù)進(jìn)行同步,現(xiàn)有技術(shù)將服務(wù)端的一臺(tái)服務(wù)器指定為主服務(wù)器,并將服務(wù)端的其它服務(wù)器指定為從服務(wù)器,各個(gè)從服務(wù)器分別與主服務(wù)器進(jìn)行連接。這樣,當(dāng)其中一臺(tái)從服務(wù)器進(jìn)行數(shù)據(jù)操作后,會(huì)將操作后的數(shù)據(jù)同步到主服務(wù)器,再由主服務(wù)器將該數(shù)據(jù)同步到其它的從服務(wù) 器,從而完成各服務(wù)器之間的數(shù)據(jù)同步。例如,從服務(wù)器a進(jìn)行數(shù)據(jù)操作后,會(huì)將該操作后的新數(shù)據(jù)同步給主服務(wù)器b,在由該主服務(wù)器b將該新數(shù)據(jù)同步給從服務(wù)器c和d。
然而,這種現(xiàn)有技術(shù)的問(wèn)題是,服務(wù)端中各個(gè)服務(wù)器之間的數(shù)據(jù)同步均依賴(lài)于主服務(wù)器。在該主服務(wù)器出現(xiàn)故障時(shí),通常會(huì)導(dǎo)致服務(wù)端的各服務(wù)器無(wú)法進(jìn)行數(shù)據(jù)同步。例如,上述的例子中,當(dāng)主服務(wù)器b出現(xiàn)故障時(shí),從服務(wù)器a無(wú)法將操作后的新數(shù)據(jù)通過(guò)主服務(wù)器b同步到從服務(wù)器c和d。此外,在實(shí)際應(yīng)用中,當(dāng)業(yè)務(wù)量較大時(shí),服務(wù)端的各從服務(wù)器之間的數(shù)據(jù)同步十分頻繁,這樣通常會(huì)使得主服務(wù)器承受巨大的運(yùn)算壓力,從而導(dǎo)致主服務(wù)器容易出現(xiàn)故障。
實(shí)施例1提供了一種數(shù)據(jù)同步方法,用于解決現(xiàn)有技術(shù)中在服務(wù)端設(shè)置主、從服務(wù)器后,各個(gè)服務(wù)器之間的數(shù)據(jù)同步依賴(lài)主服務(wù)器的問(wèn)題。需要說(shuō)明的是,通過(guò)該方法可以實(shí)現(xiàn)服務(wù)端中,不同業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,所述業(yè)務(wù)服務(wù)器與分布式集群連接,連接方式可以如圖1所示(在圖1中,業(yè)務(wù)服務(wù)器1、業(yè)務(wù)服務(wù)器2、業(yè)務(wù)服務(wù)器n分別指不同的業(yè)務(wù)服務(wù)器)。所述數(shù)據(jù)同步方法的具體流程示意圖如圖2所示,包括下述步驟:
步驟s11:各個(gè)業(yè)務(wù)服務(wù)器預(yù)先在分布式集群中分別注冊(cè)成為監(jiān)聽(tīng)對(duì)象。
在這里,業(yè)務(wù)服務(wù)器是指服務(wù)端中,用于處理用戶(hù)端提交的業(yè)務(wù)的服務(wù)器。例如,用戶(hù)端(可以為手機(jī)、pc等)向服務(wù)端提交業(yè)務(wù)請(qǐng)求,服務(wù)端中能夠處理該業(yè)務(wù)請(qǐng)求的服務(wù)器就是所說(shuō)的業(yè)務(wù)服務(wù)器。實(shí)際應(yīng)用中,在業(yè)務(wù)量較大的情況下,通常為了加快業(yè)務(wù)處理的效率,可以在服務(wù)端布置多臺(tái)業(yè)務(wù)服務(wù)器,通過(guò)這多臺(tái)業(yè)務(wù)服務(wù)器來(lái)并發(fā)和/或并行地處理這些業(yè)務(wù)。需要說(shuō)明的是,這里并不對(duì)業(yè)務(wù)服務(wù)器處理的業(yè)務(wù)做出限定,也就是說(shuō)該業(yè)務(wù)服務(wù)器處理的業(yè)務(wù)可以為支付業(yè)務(wù),也可以為即時(shí)通訊業(yè)務(wù),也可以為其它的業(yè)務(wù)。
分布式集群通常可以用于管理各業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,也即通過(guò)該分布式集群能夠?qū)Ω鳂I(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步進(jìn)行管理。在實(shí)際應(yīng)用中,通 ??梢栽诜植际郊褐邪惭b分布式應(yīng)用程序,通過(guò)所安裝的分布式應(yīng)用程序來(lái)管理各業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步。這樣的分布式應(yīng)用程序通??梢杂卸喾N,例如一種優(yōu)選的方案是chubby分布式應(yīng)用程序,另一種優(yōu)選的方案是zookeeper分布式應(yīng)用程序。為了便于閱讀和撰寫(xiě),在本申請(qǐng)后續(xù)中將zookeeper分布式應(yīng)用程序簡(jiǎn)稱(chēng)為zookeeper,將chubby分布式應(yīng)用程序簡(jiǎn)稱(chēng)為chubby,將安裝了zookeeper分布式應(yīng)用程序的分布式集群簡(jiǎn)稱(chēng)為zookeeper分布式集群,將安裝了chubby分布式應(yīng)用程序的分布式集群簡(jiǎn)稱(chēng)為chubby分布式集群。其中,zookeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序,該應(yīng)用程序能夠?yàn)榉植际郊簯?yīng)用提供一致性服務(wù)的軟件,能夠提供的功能包括:配置維護(hù)、域名服務(wù)、分布式集群數(shù)據(jù)同步、組服務(wù)等。
另外,業(yè)務(wù)服務(wù)器在分布式集群中注冊(cè)成為監(jiān)聽(tīng)對(duì)象后,該分布式集群能夠監(jiān)聽(tīng)到該業(yè)務(wù)服務(wù)器上的數(shù)據(jù)是否發(fā)生變化,并且能夠向該業(yè)務(wù)服務(wù)器發(fā)送業(yè)務(wù)請(qǐng)求。
根據(jù)分布式集群的不同,業(yè)務(wù)服務(wù)器在分布式集群中注冊(cè)成為監(jiān)聽(tīng)對(duì)象的方式也可以不同。
一種優(yōu)選的方案是,當(dāng)該分布式集群具體為zookeeper分布式集群時(shí),所述業(yè)務(wù)服務(wù)器可以通過(guò)下述步驟s111和步驟s112預(yù)先在所述zookeeper分布式集群中注冊(cè)為監(jiān)聽(tīng)對(duì)象:
步驟s111:所述zookeeper分布式集群接收業(yè)務(wù)服務(wù)器發(fā)送的注冊(cè)成為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)請(qǐng)求;
步驟s112:所述zookeeper分布式集群通過(guò)所述業(yè)務(wù)請(qǐng)求生成用于監(jiān)所述業(yè)務(wù)服務(wù)器的監(jiān)聽(tīng)節(jié)點(diǎn)。
在實(shí)際應(yīng)用中,業(yè)務(wù)服務(wù)器向zookeeper分布式集群發(fā)送的注冊(cè)成為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)請(qǐng)求的方式可以有多種。例如,業(yè)務(wù)服務(wù)器可以通過(guò)zookeeper分布式集群的客戶(hù)端,向zookeeper分布式集群發(fā)送的注冊(cè)成為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)請(qǐng)求。通常zookeeper分布式集群的客戶(hù)端還可以為curator客戶(hù)端和/或 zkclient客戶(hù)端等。
zookeeper分布式集群通過(guò)所述業(yè)務(wù)請(qǐng)求生成的監(jiān)聽(tīng)節(jié)點(diǎn)后,該監(jiān)聽(tīng)節(jié)點(diǎn)可以用于監(jiān)聽(tīng)所述業(yè)務(wù)服務(wù)器。需要強(qiáng)調(diào)的是,當(dāng)zookeeper分布式集群接收到多個(gè)業(yè)務(wù)服務(wù)器的注冊(cè)成為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)請(qǐng)求時(shí),可以生成一個(gè)監(jiān)聽(tīng)節(jié)點(diǎn),通過(guò)該監(jiān)聽(tīng)節(jié)點(diǎn)來(lái)同時(shí)監(jiān)聽(tīng)這些業(yè)務(wù)服務(wù)器,這樣可以節(jié)省監(jiān)聽(tīng)資源;也可以根據(jù)每一個(gè)注冊(cè)成為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)請(qǐng)求生成一個(gè)對(duì)應(yīng)的監(jiān)聽(tīng)節(jié)點(diǎn),通過(guò)這些監(jiān)聽(tīng)節(jié)點(diǎn)來(lái)監(jiān)聽(tīng)這些業(yè)務(wù)服務(wù)器,這樣可以使監(jiān)聽(tīng)結(jié)果更加準(zhǔn)確;也可以根據(jù)實(shí)際情況,結(jié)合這兩種生成監(jiān)聽(tīng)節(jié)點(diǎn)的方式,生成一定數(shù)量的監(jiān)聽(tīng)節(jié)點(diǎn)來(lái)監(jiān)聽(tīng)這些業(yè)務(wù)服務(wù)器。例如,業(yè)務(wù)服務(wù)器a、b、c向zookeeper分布式集群發(fā)送注冊(cè)成為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)請(qǐng)求,zookeeper分布式集群可以生成一個(gè)監(jiān)聽(tīng)節(jié)點(diǎn)d,通過(guò)該監(jiān)聽(tīng)節(jié)點(diǎn)d來(lái)監(jiān)聽(tīng)業(yè)務(wù)服務(wù)器a、b、c;也可以生成監(jiān)聽(tīng)節(jié)點(diǎn)a、b、c,通過(guò)監(jiān)聽(tīng)節(jié)點(diǎn)a、b、c分別監(jiān)聽(tīng)業(yè)務(wù)服務(wù)器a、b、c;也可以生成監(jiān)聽(tīng)節(jié)點(diǎn)e、f,通過(guò)監(jiān)聽(tīng)節(jié)點(diǎn)e監(jiān)聽(tīng)業(yè)務(wù)服務(wù)器a和b,并且通過(guò)監(jiān)聽(tīng)節(jié)點(diǎn)f監(jiān)聽(tīng)業(yè)務(wù)服務(wù)器c。
需要說(shuō)明的是,在實(shí)際應(yīng)用中,通??梢允窃趜ookeeper分布式集群在剛啟動(dòng)時(shí),或者是在業(yè)務(wù)服務(wù)器在剛啟動(dòng)時(shí),或者是在服務(wù)端有新的業(yè)務(wù)服務(wù)器加入時(shí),業(yè)務(wù)服務(wù)器可以向該zookeeper分布式集群發(fā)送注冊(cè)為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)請(qǐng)求,然后該zookeeper分布式集群根據(jù)各所述業(yè)務(wù)請(qǐng)求,生成監(jiān)聽(tīng)節(jié)點(diǎn),通過(guò)監(jiān)聽(tīng)節(jié)點(diǎn)來(lái)監(jiān)聽(tīng)業(yè)務(wù)服務(wù)器。
步驟s12:所述分布式集群監(jiān)聽(tīng)作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)是否發(fā)生變化。
如前所述,服務(wù)端的各個(gè)業(yè)務(wù)服務(wù)器通常需要進(jìn)行數(shù)據(jù)同步,以便處理用戶(hù)端提交的業(yè)務(wù)。例如,在即時(shí)通訊中,業(yè)務(wù)服務(wù)器a處理用戶(hù)端提交的刪除好友業(yè)務(wù)后,需要把該刪除好友業(yè)務(wù)產(chǎn)生的數(shù)據(jù)同步到其它業(yè)務(wù)服務(wù)器,以便該用戶(hù)端在后續(xù)中使用該即時(shí)通訊。為了將服務(wù)端的各個(gè)業(yè)務(wù)服務(wù)器進(jìn)行數(shù)據(jù)同步,分布式集群通常需要監(jiān)聽(tīng)各個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)是否發(fā)生變化。
通常來(lái)說(shuō),根據(jù)分布式集群的不同,監(jiān)聽(tīng)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)是否發(fā)生變化的方式也可以不同。一種優(yōu)選的方案是,當(dāng)分布式集群為zookeeper分布式集群時(shí),zookeeper分布式集群可以通過(guò)下述方法,監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化:當(dāng)所述zookeeper分布式集群監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)服務(wù)器對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)操作時(shí),確定所述業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化。
在這里,所述數(shù)據(jù)操作具體為所述業(yè)務(wù)服務(wù)器根據(jù)所述業(yè)務(wù)服務(wù)器上的數(shù)據(jù)變化的結(jié)果,對(duì)所述zookeeper分布式集群上的監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行的數(shù)據(jù)操作。也即,當(dāng)分布式集群為zookeeper分布式集群時(shí),業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,通常會(huì)根據(jù)數(shù)據(jù)變化的結(jié)果在zookeeper分布式集群的監(jiān)聽(tīng)節(jié)點(diǎn)上進(jìn)行相應(yīng)的數(shù)據(jù)操作,而監(jiān)聽(tīng)節(jié)點(diǎn)上的數(shù)據(jù)操作能夠被zookeeper分布式集群所監(jiān)聽(tīng)到,當(dāng)zookeeper分布式集群監(jiān)聽(tīng)到監(jiān)聽(tīng)節(jié)點(diǎn)上的數(shù)據(jù)操作時(shí),可以確定業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化。實(shí)際應(yīng)用中,zookeeper分布式集群對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)上的數(shù)據(jù)操作進(jìn)行監(jiān)聽(tīng)的方式可以有多種,例如可以周期性的輪訓(xùn)監(jiān)聽(tīng)節(jié)點(diǎn)上的數(shù)據(jù),當(dāng)發(fā)現(xiàn)監(jiān)聽(tīng)節(jié)點(diǎn)上的數(shù)據(jù)發(fā)生改變時(shí),說(shuō)明業(yè)務(wù)服務(wù)器對(duì)該監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行了數(shù)據(jù)操作。
需要說(shuō)明的是,當(dāng)每一個(gè)業(yè)務(wù)服務(wù)器均在zookeeper分布式集群中分別生成了一個(gè)對(duì)應(yīng)的監(jiān)聽(tīng)節(jié)點(diǎn)時(shí),這里業(yè)務(wù)服務(wù)器對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)操作,所說(shuō)的監(jiān)聽(tīng)節(jié)點(diǎn)可以為分布式集群中的任意一個(gè)監(jiān)聽(tīng)節(jié)點(diǎn),業(yè)務(wù)服務(wù)器也可以為服務(wù)端的業(yè)務(wù)服務(wù)器。也就是說(shuō),服務(wù)端的任意一個(gè)業(yè)務(wù)服務(wù)器對(duì)分布式集群中的任意一個(gè)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)操作,都是該zookeeper分布式集群需要監(jiān)聽(tīng)的對(duì)象。
步驟s13:當(dāng)所述分布式集群監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送數(shù)據(jù)同步請(qǐng)求。
在這里,作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化,所說(shuō)的一個(gè)業(yè)務(wù)服務(wù)器可以是服務(wù)端中任意一個(gè)業(yè)務(wù)服務(wù)器,只需要該業(yè)務(wù)服務(wù)器上的數(shù) 據(jù)發(fā)生變化并且被該分布式集群監(jiān)聽(tīng)到。
當(dāng)所述分布式集群監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送數(shù)據(jù)同步請(qǐng)求。
在實(shí)際應(yīng)用中,該數(shù)據(jù)同步的業(yè)務(wù)請(qǐng)求可以使得作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器在接收所述數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步。
步驟s14:各個(gè)業(yè)務(wù)服務(wù)器在接收所述數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步。
在各個(gè)業(yè)務(wù)服務(wù)器接收到分布式集群發(fā)送的數(shù)據(jù)同步請(qǐng)求后,可以通過(guò)該分布式集群進(jìn)行數(shù)據(jù)同步。例如,該分布式集群為zookeeper分布式集群,各個(gè)業(yè)務(wù)服務(wù)器可以直接在分布式集群中拉取數(shù)據(jù)操作后新的數(shù)據(jù),從而進(jìn)行數(shù)據(jù)同步。
需要說(shuō)明的是,在實(shí)際應(yīng)用中,通常為了提高各個(gè)業(yè)務(wù)服務(wù)器數(shù)據(jù)同步的效率,可以在分布式集群中配置多個(gè)同步服務(wù)器,這些同步服務(wù)器之間的數(shù)據(jù)能夠同步,并且每個(gè)同步服務(wù)器分別和幾個(gè)不同的業(yè)務(wù)服務(wù)器相互連接。也就是說(shuō),所述分布式集群包括至少兩個(gè)同步服務(wù)器,所述同步服務(wù)器與業(yè)務(wù)服務(wù)器相互連接,并且各所述同步服務(wù)器之間的數(shù)據(jù)能夠同步;則,在通過(guò)分布式集群進(jìn)行數(shù)據(jù)同步時(shí),所述通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步具體包括:通過(guò)所述分布式集群中與各所述業(yè)務(wù)服務(wù)器連接的同步服務(wù)器進(jìn)行數(shù)據(jù)同步。
結(jié)合圖3,以zookeeper分布式集群為例,該zookeeper分布式集群中包含兩臺(tái)zookeeper同步服務(wù)器a和b,這兩臺(tái)zookeeper同步服務(wù)器之間相互關(guān)聯(lián),能夠通過(guò)zookeeper分布式應(yīng)用程序來(lái)進(jìn)行管理,使得它們之間的數(shù)據(jù)能夠在同步的狀態(tài)。并且,zookeeper同步服務(wù)器a與業(yè)務(wù)服務(wù)器a1、業(yè)務(wù)服務(wù)器a2連接,zookeeper同步服務(wù)器b與業(yè)務(wù)服務(wù)器b1、業(yè)務(wù)服務(wù)器b2連接。這樣可以使得,業(yè)務(wù)服務(wù)器a1、業(yè)務(wù)服務(wù)器a2、業(yè)務(wù)服務(wù)器b1和業(yè)務(wù)服務(wù)器b2在接收到zookeeper分布式集群發(fā)送的數(shù)據(jù)同步請(qǐng)求后,分別通過(guò)zookeeper同步服務(wù)器a和zookeeper同步服務(wù)器b進(jìn)行數(shù)據(jù)同步。
采用實(shí)施例1提供的該方法,當(dāng)所述分布式集群監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送數(shù)據(jù)同步請(qǐng)求,以便各個(gè)業(yè)務(wù)服務(wù)器在接收所述數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步。由于該方法通過(guò)分布式集群的方式來(lái)實(shí)現(xiàn)各業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,這樣可以使得,在任意一個(gè)業(yè)務(wù)服務(wù)器出現(xiàn)故障時(shí),并不會(huì)影響到其它業(yè)務(wù)服務(wù)器的正常工作,也就不會(huì)導(dǎo)致服務(wù)端由于某一臺(tái)業(yè)務(wù)服務(wù)器出現(xiàn)故障而無(wú)法工作的現(xiàn)象。因此解決了解決現(xiàn)有技術(shù)中,在服務(wù)端設(shè)置主、從服務(wù)器后,各個(gè)服務(wù)器之間的數(shù)據(jù)同步依賴(lài)主服務(wù)器的問(wèn)題。
需要說(shuō)明的是,實(shí)施例1所提供方法的各步驟的執(zhí)行主體均可以是同一設(shè)備,或者,該方法的各步驟也可以由不同設(shè)備作為執(zhí)行主體。比如,步驟11和步驟12的執(zhí)行主體可以為設(shè)備1;又比如,步驟11的執(zhí)行主體可以為設(shè)備1,步驟12和的執(zhí)行主體可以為設(shè)備2;等等。
實(shí)施例2
在分布式集群為zookeeper分布式集群的情況下,實(shí)施例1中提到了zookeeper分布式集群可以監(jiān)聽(tīng)業(yè)務(wù)服務(wù)器對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)操作。其實(shí),在實(shí)際應(yīng)用中,這種數(shù)據(jù)操作的方式可以有多種,例如可以為數(shù)據(jù)寫(xiě)入和/或數(shù)據(jù)刪除和/或數(shù)據(jù)修改等。
例如,數(shù)據(jù)操作可以為數(shù)據(jù)寫(xiě)入。通常為了保持多個(gè)業(yè)務(wù)服務(wù)器同一個(gè)監(jiān)聽(tīng)節(jié)點(diǎn)數(shù)據(jù)寫(xiě)入的一致性,可以添加分布式鎖,通過(guò)該分布式鎖來(lái)管理或控制對(duì)該監(jiān)聽(tīng)對(duì)象的數(shù)據(jù)寫(xiě)入。因此,業(yè)務(wù)服務(wù)器對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)寫(xiě)入的優(yōu)選方案如步驟s21至步驟s23所示:
步驟s21:所述業(yè)務(wù)服務(wù)器向zookeeper分布式集群發(fā)送加分布式鎖的業(yè)務(wù)請(qǐng)求,以使得zookeeper分布式集群根據(jù)所述分布式鎖的使用狀態(tài)判斷是否能夠向所述業(yè)務(wù)服務(wù)器加分布式鎖;
步驟s22:當(dāng)所述業(yè)務(wù)服務(wù)器加分布式鎖后,對(duì)所述監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)寫(xiě) 入;
步驟s23:當(dāng)所述業(yè)務(wù)服務(wù)器加分布式鎖失敗后,拋棄待寫(xiě)入的數(shù)據(jù)。
通常來(lái)說(shuō),zookeeper分布式集群在接收到業(yè)務(wù)服務(wù)器加分布式鎖的業(yè)務(wù)請(qǐng)求后,會(huì)根據(jù)分布式鎖的使用狀態(tài),判斷是否能夠向該業(yè)務(wù)服務(wù)器加分布式鎖。分布式鎖的使用狀態(tài)可以包括使用中和未使用,使用中表示該分布式鎖正在被使用,未使用表示該分布式鎖正在空閑狀態(tài)。通常,當(dāng)分布式鎖的使用狀態(tài)為使用中時(shí),zookeeper分布式集群會(huì)拒絕該業(yè)務(wù)服務(wù)器加分布式鎖的業(yè)務(wù)請(qǐng)求,也就是說(shuō)業(yè)務(wù)服務(wù)器加分布式鎖失??;當(dāng)分布式鎖的使用狀態(tài)為未使用時(shí),zookeeper分布式集群會(huì)同意該業(yè)務(wù)服務(wù)器加分布式鎖的業(yè)務(wù)請(qǐng)求,也就是說(shuō)分布式集群響應(yīng)業(yè)務(wù)服務(wù)器加分布式鎖的業(yè)務(wù)請(qǐng)求。
當(dāng)然需要說(shuō)明的是,在zookeeper分布式集群響應(yīng)業(yè)務(wù)服務(wù)器加分布式鎖的業(yè)務(wù)請(qǐng)求后,業(yè)務(wù)服務(wù)器在加分布式鎖的過(guò)程中,通常也會(huì)由于各種原因?qū)е录渔i失敗,例如在加分布式鎖時(shí),由于連接中斷導(dǎo)致加分布式鎖的操作超時(shí)。因此,只有在業(yè)務(wù)服務(wù)器加分布式鎖完成后,才能對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)寫(xiě)入。需要說(shuō)明的是,對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)寫(xiě)入完成之后,通常還需要釋放該分布式鎖,使得后續(xù)業(yè)務(wù)服務(wù)器通過(guò)加該分布式鎖,對(duì)該監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行寫(xiě)入。
另外,數(shù)據(jù)操作也可以為數(shù)據(jù)刪除。所述業(yè)務(wù)服務(wù)器對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)刪除的優(yōu)選方案如步驟s31所示。
步驟s31:所述業(yè)務(wù)服務(wù)器刪除所述監(jiān)聽(tīng)節(jié)點(diǎn)中所述數(shù)據(jù)的存儲(chǔ)路徑。
也就是說(shuō),數(shù)據(jù)刪除過(guò)程并不需要加分布式鎖,因?yàn)橹恍鑼⒃摫O(jiān)聽(tīng)節(jié)點(diǎn)中所要?jiǎng)h除的數(shù)據(jù)的存儲(chǔ)路徑進(jìn)行刪除即可。
采用實(shí)施例2的該方法,在分布式集群具體為zookeeper分布式集群的情況下,將數(shù)據(jù)操作繼續(xù)劃分為數(shù)據(jù)寫(xiě)入、數(shù)據(jù)刪除和數(shù)據(jù)修改等,在zookeeper分布式集群監(jiān)聽(tīng)的過(guò)程中,可以根據(jù)數(shù)據(jù)操作的不同更加具有針對(duì)性的進(jìn)行監(jiān)聽(tīng)。
上述實(shí)施例1和實(shí)施例2是對(duì)本申請(qǐng)?zhí)峁┑臄?shù)據(jù)同步方法的具體說(shuō)明,為 了便于理解,本申請(qǐng)還提供了一種在實(shí)際應(yīng)用場(chǎng)景下,實(shí)施所述方法的說(shuō)明,如圖4所示。在該應(yīng)用場(chǎng)景下,分布式集群具體為zookeeper分布式集群,該zookeeper分布式集群的客戶(hù)端具體為curator客戶(hù)端,數(shù)據(jù)操作具體為數(shù)據(jù)寫(xiě)入。本申請(qǐng)的數(shù)據(jù)同步方法可以在這種應(yīng)用場(chǎng)景下使用,具體如下所示:
步驟s41:各業(yè)務(wù)服務(wù)器通過(guò)curator客戶(hù)端向zookeeper分布式集群發(fā)送注冊(cè)成為監(jiān)聽(tīng)對(duì)象的業(yè)務(wù)請(qǐng)求。
步驟s42:zookeeper分布式集群根據(jù)各所述業(yè)務(wù)請(qǐng)求,分別生成監(jiān)聽(tīng)各所述業(yè)務(wù)服務(wù)器的監(jiān)聽(tīng)節(jié)點(diǎn)。
在這里,所述zookeeper分布式集群中包含至少兩個(gè)zookeeper同步服務(wù)器,各所述zookeeper同步服務(wù)器之間相互關(guān)聯(lián),并且通過(guò)zookeeper分布式應(yīng)用程序來(lái)進(jìn)行管理,使得各所述zookeeper同步服務(wù)器之間的數(shù)據(jù)在同步狀態(tài);另外,zookeeper同步服務(wù)器和業(yè)務(wù)服務(wù)器進(jìn)行連接。
步驟s43:當(dāng)前業(yè)務(wù)服務(wù)器向zookeeper分布式集群發(fā)送對(duì)監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)寫(xiě)入的業(yè)務(wù)請(qǐng)求。
這里的當(dāng)前業(yè)務(wù)服務(wù)器可以為服務(wù)端的任意一個(gè)業(yè)務(wù)服務(wù)器,監(jiān)聽(tīng)節(jié)點(diǎn)也可以為在分布式集群中注冊(cè)的任意一個(gè)監(jiān)聽(tīng)節(jié)點(diǎn)。
步驟s44:zookeeper分布式集群根據(jù)分布式鎖的狀態(tài)對(duì)該業(yè)務(wù)請(qǐng)求加分布式鎖,當(dāng)加分布式鎖失敗時(shí),執(zhí)行步驟s45,當(dāng)加分布式鎖成功時(shí),執(zhí)行步驟s46。
該分布式鎖用于管理對(duì)所述監(jiān)聽(tīng)對(duì)象進(jìn)行數(shù)據(jù)寫(xiě)入和/或修改。
步驟s45:拋棄準(zhǔn)備寫(xiě)入該監(jiān)聽(tīng)對(duì)象的數(shù)據(jù)。
步驟s46:對(duì)所述監(jiān)聽(tīng)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)寫(xiě)入。
步驟s47:zookeeper分布式集群向各個(gè)業(yè)務(wù)服務(wù)器發(fā)送數(shù)據(jù)同步請(qǐng)求。
步驟s48:各業(yè)務(wù)服務(wù)器根據(jù)該數(shù)據(jù)同步請(qǐng)求,通過(guò)zookeeper分布式集群中與各業(yè)務(wù)服務(wù)器連接的同步服務(wù)器進(jìn)行數(shù)據(jù)同步。
上述是對(duì)該應(yīng)用場(chǎng)景下實(shí)施該數(shù)據(jù)同步方法的說(shuō)明,在實(shí)際應(yīng)用中,通常 為了使得服務(wù)端數(shù)據(jù)同步的業(yè)務(wù)邏輯更加簡(jiǎn)單,減少代碼的數(shù)量,通??梢圆捎迷搝ookeeper分布式集群來(lái)實(shí)現(xiàn)。
實(shí)施例3
實(shí)施例3提供了一種數(shù)據(jù)同步方法,用于解決現(xiàn)有技術(shù)中在服務(wù)端設(shè)置主、從服務(wù)器后,各個(gè)服務(wù)器之間的數(shù)據(jù)同步依賴(lài)主服務(wù)器的問(wèn)題。需要說(shuō)明的是,通過(guò)該方法可以實(shí)現(xiàn)服務(wù)端中,不同業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,所述業(yè)務(wù)服務(wù)器與分布式集群連接。所述方法的具體流程示意圖如圖5所示,包括下述步驟:
步驟s51:各所述業(yè)務(wù)服務(wù)器分別在分布式集群中注冊(cè)成為監(jiān)聽(tīng)對(duì)象。
該步驟s51與實(shí)施例1中的步驟s11基本相同,在這里就不再贅述。
步驟s52:作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器接收數(shù)據(jù)同步請(qǐng)求。
所述數(shù)據(jù)同步請(qǐng)求為所述分布式集群在監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送的數(shù)據(jù)同步請(qǐng)求;
步驟s53:作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器在接收數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步。
采用本申請(qǐng)實(shí)施例3所提供的該方法,分布式集群在監(jiān)聽(tīng)到某一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向各個(gè)業(yè)務(wù)服務(wù)器發(fā)送的數(shù)據(jù)同步請(qǐng)求,在各個(gè)業(yè)務(wù)服務(wù)器接收該請(qǐng)求后,通過(guò)該分布式集群進(jìn)行數(shù)據(jù)同步。由于該分布式集群能夠用于管理各業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,這樣可以使得,在任意一個(gè)業(yè)務(wù)服務(wù)器出現(xiàn)故障時(shí),并不會(huì)影響到其它業(yè)務(wù)服務(wù)器的正常工作,也就不會(huì)導(dǎo)致服務(wù)端由于某一臺(tái)業(yè)務(wù)服務(wù)器出現(xiàn)故障而無(wú)法工作的現(xiàn)象。從而解決了現(xiàn)有技術(shù)中,在服務(wù)端設(shè)置主、從服務(wù)器,導(dǎo)致各業(yè)務(wù)服務(wù)器的數(shù)據(jù)同步依賴(lài)主服務(wù)器的問(wèn)題。
實(shí)施例4
基于與實(shí)施例1相同的發(fā)明構(gòu)思,實(shí)施例4提供了一種數(shù)據(jù)同步裝置。該裝置60用于實(shí)現(xiàn)不同業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,所述業(yè)務(wù)服務(wù)器與分布式集群連接,所述業(yè)務(wù)服務(wù)器預(yù)先在所述分布式集群中注冊(cè)為監(jiān)聽(tīng)對(duì)象。如圖6所示,該裝置60包括:監(jiān)聽(tīng)單元601和發(fā)送單元602,其中:
監(jiān)聽(tīng)單元601,用于所述分布式集群監(jiān)聽(tīng)作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)是否發(fā)生變化;
發(fā)送單元602,用于當(dāng)所述分布式集群監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送數(shù)據(jù)同步請(qǐng)求,以便各個(gè)業(yè)務(wù)服務(wù)器在接收所述數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步。
采用實(shí)施例4所提供的該裝置60,由于該裝置60采用與實(shí)施例1相同的發(fā)明構(gòu)思,因此可以取得和實(shí)施例1相同的發(fā)明效果。另外,在實(shí)際應(yīng)用中該裝置60還可以通過(guò)結(jié)合具體的硬件設(shè)施,取得其它的技術(shù)效果。例如,可以增大分布式集群中各個(gè)設(shè)備的內(nèi)存,然后將需要同步的數(shù)據(jù)存儲(chǔ)在分布式集群各個(gè)設(shè)備的內(nèi)存中,這樣可以使得業(yè)務(wù)服務(wù)器在通過(guò)分布式集群進(jìn)行數(shù)據(jù)同步時(shí),速度更快。
實(shí)施例5
基于與實(shí)施例3相同的發(fā)明構(gòu)思,實(shí)施例5提供了一種數(shù)據(jù)同步裝置。該裝置用70于實(shí)現(xiàn)不同業(yè)務(wù)服務(wù)器之間的數(shù)據(jù)同步,所述業(yè)務(wù)服務(wù)器與分布式集群連接,所述業(yè)務(wù)服務(wù)器預(yù)先在所述分布式集群中注冊(cè)為監(jiān)聽(tīng)對(duì)象。如圖7所示,該裝置70包括:接收單元701和同步單元702,其中:
接收單元701,用于作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器接收數(shù)據(jù)同步請(qǐng)求,所述數(shù)據(jù)同步請(qǐng)求為所述分布式集群在監(jiān)聽(tīng)到作為監(jiān)聽(tīng)對(duì)象的一個(gè)業(yè)務(wù)服務(wù)器上的數(shù)據(jù)發(fā)生變化后,向作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器發(fā)送的數(shù)據(jù)同步請(qǐng) 求;
同步單元702,用于作為監(jiān)聽(tīng)對(duì)象的各個(gè)業(yè)務(wù)服務(wù)器在接收數(shù)據(jù)同步請(qǐng)求后,通過(guò)所述分布式集群進(jìn)行數(shù)據(jù)同步
采用實(shí)施例5提供的該裝置70,由于該裝置70基于與實(shí)施例2相同的發(fā)明構(gòu)思,因此能夠取得實(shí)施例2的技術(shù)效果。另外,在實(shí)際應(yīng)用中,該裝置70還可以通過(guò)結(jié)合硬件設(shè)備取得其它的技術(shù)效果。例如,在業(yè)務(wù)服務(wù)器對(duì)監(jiān)聽(tīng)對(duì)象進(jìn)行數(shù)據(jù)操作時(shí),由于監(jiān)聽(tīng)對(duì)象注冊(cè)在分布式集群中,因此可以改進(jìn)業(yè)務(wù)服務(wù)器和監(jiān)聽(tīng)對(duì)象的連接(物理連接)方式,以加快數(shù)據(jù)操作的速度。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使 得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性?xún)?nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類(lèi)型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(pán)(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和 硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
以上僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。