本申請(qǐng)涉及電子技術(shù)領(lǐng)域,特別涉及一種實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性方法及裝置。
背景技術(shù):
傳統(tǒng)金融計(jì)算模型是基于金融數(shù)據(jù)中心集中式計(jì)算架構(gòu),在特定地點(diǎn)設(shè)有按照地理方式劃分的數(shù)據(jù)中心。每個(gè)特定地點(diǎn)的數(shù)據(jù)中心只處理一部分地區(qū)的數(shù)據(jù)計(jì)算和處理工作。傳統(tǒng)金融數(shù)據(jù)中心集中式計(jì)算架構(gòu)雖然能夠比較好的完成銀行現(xiàn)有業(yè)務(wù)的處理,但是由于沒(méi)有分布式架構(gòu),和金融云計(jì)算模型,沒(méi)有動(dòng)態(tài)發(fā)展和應(yīng)用彈性支持而導(dǎo)致在金融新業(yè)務(wù)和新機(jī)構(gòu)的開(kāi)拓上不能很好的滿足要求。
針對(duì)上述問(wèn)題,現(xiàn)有技術(shù)中出現(xiàn)了分布式的金融系統(tǒng),能夠很好地解決上述問(wèn)題,但是在分布式系統(tǒng)中進(jìn)行業(yè)務(wù)模擬時(shí)(例如貸款業(yè)務(wù)的模擬),由于不同應(yīng)用服務(wù)器的時(shí)間不同步,并且數(shù)據(jù)庫(kù)的時(shí)間與應(yīng)用服務(wù)器的時(shí)間無(wú)法同步,造成了業(yè)務(wù)模擬無(wú)法順利完成的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例的目的是提供一種實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性方法及裝置,用于解決現(xiàn)有技術(shù)修改數(shù)據(jù)庫(kù)服務(wù)器時(shí)間造成數(shù)據(jù)庫(kù)崩潰而無(wú)法取得數(shù)據(jù)庫(kù)服務(wù)器與應(yīng)用服務(wù)器的時(shí)間一致,從而無(wú)法完成業(yè)務(wù)模擬工作的問(wèn)題,對(duì)于分布式系統(tǒng)而言,特別是對(duì)金融領(lǐng)域中涉及到業(yè)務(wù)模擬的應(yīng)用場(chǎng)景來(lái)說(shuō),本申請(qǐng)的技術(shù)方案可以靈活的根據(jù)需要進(jìn)行金融業(yè)務(wù)模擬,在任意期望的時(shí)間內(nèi),保證業(yè)務(wù)發(fā)生時(shí)間與記賬時(shí)間的一致性,從而確保業(yè)務(wù)不會(huì)因業(yè)務(wù)發(fā)生時(shí)間與記賬時(shí)間的不一致導(dǎo)致業(yè)務(wù)失敗。
本申請(qǐng)實(shí)施例提供了一種實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性的方法,包括:
根據(jù)設(shè)定的目標(biāo)時(shí)間,將應(yīng)用服務(wù)器的時(shí)間進(jìn)行同步;
計(jì)算得到所述目標(biāo)時(shí)間與數(shù)據(jù)庫(kù)服務(wù)器時(shí)間之間的時(shí)間偏移量,將所述時(shí)間偏移量發(fā)送給所述應(yīng)用服務(wù)器;
根據(jù)所述時(shí)間偏移量,將所述應(yīng)用服務(wù)器生成的數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)進(jìn)行修改,以實(shí)現(xiàn)分布式系統(tǒng)中跨時(shí)域的一致性。
本申請(qǐng)實(shí)施例還提供了一種實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性的裝置,包括:
應(yīng)用服務(wù)器同步單元,用于根據(jù)設(shè)定的目標(biāo)時(shí)間,將應(yīng)用服務(wù)器的時(shí)間進(jìn)行同步;
時(shí)間偏移量計(jì)算單元,用于計(jì)算得到所述目標(biāo)時(shí)間與數(shù)據(jù)庫(kù)服務(wù)器時(shí)間之間的時(shí)間偏移量,將所述時(shí)間偏移量發(fā)送給所述應(yīng)用服務(wù)器;
時(shí)間函數(shù)修改單元,用于根據(jù)所述時(shí)間偏移量,將所述應(yīng)用服務(wù)器生成的數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)進(jìn)行修改,以實(shí)現(xiàn)分布式系統(tǒng)中跨時(shí)域的一致性。
由以上本申請(qǐng)實(shí)施例提供的技術(shù)方案可見(jiàn),可以解決現(xiàn)有技術(shù)中頻繁修改數(shù)據(jù)庫(kù)服務(wù)器時(shí)間造成數(shù)據(jù)庫(kù)崩潰,從而無(wú)法完成業(yè)務(wù)模擬工作的問(wèn)題,對(duì)于分布式系統(tǒng)而言,特別是對(duì)金融領(lǐng)域中涉及到業(yè)務(wù)模擬的應(yīng)用場(chǎng)景來(lái)說(shuō),本申請(qǐng)的技術(shù)方案可以靈活的根據(jù)需要進(jìn)行金融業(yè)務(wù)模擬,在任意期望的時(shí)間內(nèi),保證業(yè)務(wù)發(fā)生時(shí)間與記賬時(shí)間的一致性,從而確保業(yè)務(wù)不會(huì)因業(yè)務(wù)發(fā)生時(shí)間與記賬時(shí)間的不一致導(dǎo)致業(yè)務(wù)失敗。
當(dāng)然實(shí)施本申請(qǐng)的任一產(chǎn)品或者方法必不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
附圖說(shuō)明
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1所示為本申請(qǐng)實(shí)施例一種實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性方法的流程圖;
圖2所示為本申請(qǐng)實(shí)施例一種實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性的裝置結(jié)構(gòu)示意圖;
圖3所示為本申請(qǐng)實(shí)施例實(shí)現(xiàn)金融統(tǒng)跨時(shí)域一致性分布系統(tǒng)的結(jié)構(gòu)示意圖;
圖4所示為本申請(qǐng)實(shí)施例分布式金融系統(tǒng)實(shí)現(xiàn)跨時(shí)域一致性的方法流程圖。
具體實(shí)施方式
本申請(qǐng)實(shí)施例提供一種實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性方法及裝置。
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
如圖1所示為本申請(qǐng)實(shí)施例一種實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性方法的流程圖。
在該圖1中為本申請(qǐng)針對(duì)于分布式金融系統(tǒng)中出現(xiàn)的時(shí)間不同步的問(wèn)題所提出的技術(shù)方案,在進(jìn)行業(yè)務(wù)模擬時(shí),可以將所有業(yè)務(wù)涉及的應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)的業(yè)務(wù)時(shí)間進(jìn)行同步,以實(shí)現(xiàn)業(yè)務(wù)模擬,例如為了檢驗(yàn)金融系統(tǒng)中某些用戶的賬戶安全性,需要在設(shè)定的時(shí)間(通 常為未來(lái)的某個(gè)時(shí)間)模擬業(yè)務(wù)并對(duì)用戶的賬戶進(jìn)行操作,檢查在設(shè)定時(shí)間用戶的賬戶狀態(tài)。
在本實(shí)施例的圖中包括:
步驟101,根據(jù)設(shè)定的目標(biāo)時(shí)間,將應(yīng)用服務(wù)器的時(shí)間進(jìn)行同步。
步驟102,計(jì)算得到所述目標(biāo)時(shí)間與數(shù)據(jù)庫(kù)服務(wù)器時(shí)間之間的時(shí)間偏移量,將所述時(shí)間偏移量發(fā)送給所述應(yīng)用服務(wù)器。
步驟103,根據(jù)所述時(shí)間偏移量,將所述應(yīng)用服務(wù)器生成的數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)進(jìn)行修改,以實(shí)現(xiàn)分布式系統(tǒng)中跨時(shí)域的一致性。
作為申請(qǐng)的一個(gè)實(shí)施例,所述應(yīng)用服務(wù)器包括與業(yè)務(wù)模擬中的業(yè)務(wù)相關(guān)的應(yīng)用服務(wù)器,所述數(shù)據(jù)庫(kù)服務(wù)器包括與業(yè)務(wù)模擬中的業(yè)務(wù)相關(guān)的數(shù)據(jù)庫(kù)服務(wù)器。在實(shí)施的場(chǎng)景中,分布式系統(tǒng)中可能包括多個(gè)分布設(shè)置的應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器,在進(jìn)行業(yè)務(wù)模擬時(shí),例如進(jìn)行貸款業(yè)務(wù)的模擬時(shí),只需要涉及貸款業(yè)務(wù)相關(guān)的應(yīng)用服務(wù)器和相應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器,其它與貸款業(yè)務(wù)模擬無(wú)關(guān)的應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器不用時(shí)間同步,當(dāng)然也可以將分布式系統(tǒng)中的所有應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行時(shí)間同步。
作為申請(qǐng)的一個(gè)實(shí)施例,所述應(yīng)用服務(wù)器包括分布式系統(tǒng)中的多個(gè)應(yīng)用服務(wù)器,所述數(shù)據(jù)庫(kù)服務(wù)器包括分布式系統(tǒng)中的一個(gè)或者多個(gè)數(shù)據(jù)庫(kù)服務(wù)器。
作為申請(qǐng)的一個(gè)實(shí)施例,根據(jù)設(shè)定的目標(biāo)時(shí)間,將應(yīng)用服務(wù)器的時(shí)間進(jìn)行同步中還具體包括:選擇一臺(tái)應(yīng)用服務(wù)器作為時(shí)間服務(wù)器,將該時(shí)間服務(wù)器的時(shí)間調(diào)整到所述目標(biāo)時(shí)間,以該時(shí)間服務(wù)器的時(shí)間作為基準(zhǔn),將其余應(yīng)用服務(wù)器的時(shí)間與該時(shí)間服務(wù)器進(jìn)行時(shí)間同步。
其中,作為可選的實(shí)施例,可以以目標(biāo)時(shí)間作為同步的目標(biāo),直接向業(yè)務(wù)相關(guān)的應(yīng)用服務(wù)器發(fā)送調(diào)整系統(tǒng)時(shí)間的控制指令或者腳本,令所有業(yè)務(wù)相關(guān)的應(yīng)用服務(wù)器的時(shí)間進(jìn)行同步,即不需要選擇一臺(tái)應(yīng)用服務(wù)器作為時(shí)間服務(wù)器即可實(shí)現(xiàn)應(yīng)用服務(wù)器的時(shí)間同步。
作為申請(qǐng)的一個(gè)實(shí)施例,以該時(shí)間服務(wù)器的時(shí)間作為基準(zhǔn),將其余應(yīng)用服務(wù)器的時(shí)間與該時(shí)間服務(wù)器進(jìn)行時(shí)間同步還進(jìn)一步包括,以一時(shí)間間隔為周期,將其余應(yīng)用服務(wù)器的時(shí)間與該時(shí)間服務(wù)器進(jìn)行時(shí)間同步。其中,時(shí)間間隔可以為10分鐘、15分鐘等,由于各個(gè)應(yīng)用服務(wù)器的硬件差異,可能在一次時(shí)間同步后隨著時(shí)間的推移,各個(gè)應(yīng)用服務(wù)器的時(shí)間可能還會(huì)出現(xiàn)不同步的問(wèn)題,此時(shí)通過(guò)周期性的同步應(yīng)用服務(wù)器的時(shí)間,可以確保時(shí)間同步的準(zhǔn)確性,以便于后面的時(shí)間偏移量的計(jì)算。
作為申請(qǐng)的一個(gè)實(shí)施例,計(jì)算得到所述目標(biāo)時(shí)間與數(shù)據(jù)庫(kù)服務(wù)器時(shí)間之間的時(shí)間偏移量,將所述時(shí)間偏移量發(fā)送給所述應(yīng)用服務(wù)器還具體包括:獲取數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間,將所述目標(biāo)時(shí)間減去所述數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間得到所述時(shí)間偏移量,將所述時(shí)間偏移量推送給所述應(yīng)用服務(wù)器,得到數(shù)據(jù)庫(kù)時(shí)間偏移指令的應(yīng)用服務(wù)器在執(zhí)行數(shù)據(jù)庫(kù)SQL指令時(shí),會(huì)將SQ L指令中的時(shí)間函數(shù),進(jìn)行時(shí)間偏移,從而達(dá)到依賴數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間(即從SQL指令中獲取的時(shí)間)即使不修改數(shù)據(jù)庫(kù)服務(wù)器時(shí)間也能取得與應(yīng)用服務(wù)器時(shí)間的一致。
其中,可以通過(guò)現(xiàn)有技術(shù)中數(shù)據(jù)庫(kù)獲取時(shí)間的指令獲得數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間,例如某金融業(yè)務(wù)通過(guò)SQL指令:select now()from dual來(lái)獲取數(shù)據(jù)庫(kù)服務(wù)器時(shí)間作為業(yè)務(wù)時(shí)間,該SQL中,now()為數(shù)據(jù)庫(kù)時(shí)間函數(shù),針對(duì)于現(xiàn)有技術(shù)中不同的數(shù)據(jù)庫(kù)該獲取時(shí)間的指令可能不同,在此不再贅述。
作為申請(qǐng)的一個(gè)實(shí)施例,根據(jù)所述時(shí)間偏移量,將所述應(yīng)用服務(wù)器生成的數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)進(jìn)行修改還具體包括,將所述應(yīng)用服務(wù)器生成的數(shù)據(jù)庫(kù)操作指令中的與業(yè)務(wù)相關(guān)的時(shí)間函數(shù)進(jìn)行修改。
在應(yīng)用服務(wù)器生成的數(shù)據(jù)庫(kù)操作指令中可能包括若干時(shí)間函數(shù),在本申請(qǐng)中只需要修改或者替換與業(yè)務(wù)模擬相關(guān)的時(shí)間函數(shù),而不必修改所有時(shí)間函數(shù),其中,對(duì)時(shí)間函數(shù)的修改可以為將數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)加上時(shí)間偏移量得到修改后的時(shí)間。
通過(guò)上述本申請(qǐng)實(shí)施例的方法,可以解決現(xiàn)有技術(shù)中頻繁修改數(shù)據(jù)庫(kù)服務(wù)器時(shí)間造成數(shù)據(jù)庫(kù)崩潰,從而無(wú)法完成業(yè)務(wù)模擬工作的問(wèn)題,對(duì)于分布式系統(tǒng)而言,特別是對(duì)金融領(lǐng)域中涉及到業(yè)務(wù)模擬的應(yīng)用場(chǎng)景來(lái)說(shuō),本申請(qǐng)的技術(shù)方案可以靈活的根據(jù)需要進(jìn)行金融業(yè)務(wù)模擬,獲得賬戶在將來(lái)一段時(shí)間的狀態(tài),確保用戶和金融機(jī)構(gòu)的信息安全。
如圖2所示為本申請(qǐng)實(shí)施例一種實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性的裝置結(jié)構(gòu)示意圖。
在該圖中示出了在分布式系統(tǒng)中實(shí)現(xiàn)跨時(shí)域一致性的裝置結(jié)構(gòu),在該裝置中實(shí)施上述圖1實(shí)施例的方法時(shí),例如時(shí)間偏移量的計(jì)算和修改數(shù)據(jù)庫(kù)操作指令的時(shí)間函數(shù)等部件均可以采用軟件或者實(shí)現(xiàn)相應(yīng)功能的硬件邏輯電路實(shí)現(xiàn),可以集成于各個(gè)應(yīng)用服務(wù)器中,或者還可以單獨(dú)設(shè)置一臺(tái)或者多臺(tái)計(jì)算機(jī)完成上述功能。
該裝置包括應(yīng)用服務(wù)器同步單元201,用于根據(jù)設(shè)定的目標(biāo)時(shí)間,將應(yīng)用服務(wù)器的時(shí)間進(jìn)行同步。
時(shí)間偏移量計(jì)算單元202,用于計(jì)算得到所述目標(biāo)時(shí)間與數(shù)據(jù)庫(kù)服務(wù)器時(shí)間之間的時(shí)間偏移量,將所述時(shí)間偏移量發(fā)送給所述應(yīng)用服務(wù)器。
時(shí)間函數(shù)修改單元203,用于根據(jù)所述時(shí)間偏移量,將所述應(yīng)用服務(wù)器生成的數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)進(jìn)行修改,以實(shí)現(xiàn)分布式系統(tǒng)中跨時(shí)域的一致性。
作為申請(qǐng)的一個(gè)實(shí)施例,所述應(yīng)用服務(wù)器包括與業(yè)務(wù)模擬中的業(yè)務(wù)相關(guān)的應(yīng)用服務(wù)器,所述數(shù)據(jù)庫(kù)服務(wù)器包括與業(yè)務(wù)模擬中的業(yè)務(wù)相關(guān)的數(shù)據(jù)庫(kù)服務(wù)器。
作為申請(qǐng)的一個(gè)實(shí)施例,所述應(yīng)用服務(wù)器包括分布式系統(tǒng)中的多個(gè)應(yīng)用服務(wù)器,所述數(shù)據(jù)庫(kù)服務(wù)器包括分布式系統(tǒng)中的一個(gè)或者多個(gè)數(shù)據(jù)庫(kù)服務(wù)器。
作為申請(qǐng)的一個(gè)實(shí)施例,所述應(yīng)用服務(wù)器同步單元201具體用于選擇一臺(tái)應(yīng)用服務(wù)器作為時(shí)間服務(wù)器,將該時(shí)間服務(wù)器的時(shí)間調(diào)整到所述目標(biāo)時(shí)間,以該時(shí)間服務(wù)器的時(shí)間作為基準(zhǔn),將其余應(yīng)用服務(wù)器的時(shí)間與該時(shí)間服務(wù)器進(jìn)行時(shí)間同步。
作為申請(qǐng)的一個(gè)實(shí)施例,還包括一計(jì)時(shí)器204,用于提供一時(shí)間間隔,所述應(yīng)用服務(wù)器同步單元201以該時(shí)間間隔為周期,將其余應(yīng)用服務(wù)器的時(shí)間與該時(shí)間服務(wù)器進(jìn)行時(shí)間同步。
作為申請(qǐng)的一個(gè)實(shí)施例,時(shí)間偏移量計(jì)算單元202具體用于獲取數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間,將所述目標(biāo)時(shí)間減去所述數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間得到所述時(shí)間偏移量,將所述時(shí)間偏移量推送給所述應(yīng)用服務(wù)器。
作為申請(qǐng)的一個(gè)實(shí)施例,時(shí)間函數(shù)修改單元203具體用于將所述應(yīng)用服務(wù)器生成的數(shù)據(jù)庫(kù)操作指令中的與業(yè)務(wù)相關(guān)的時(shí)間函數(shù)進(jìn)行修改。
通過(guò)上述本申請(qǐng)實(shí)施例的裝置,可以解決現(xiàn)有技術(shù)中頻繁修改數(shù)據(jù)庫(kù)服務(wù)器時(shí)間造成數(shù)據(jù)庫(kù)崩潰,從而無(wú)法完成業(yè)務(wù)模擬工作的問(wèn)題,對(duì)于分布式系統(tǒng)而言,特別是對(duì)金融領(lǐng)域中涉及到業(yè)務(wù)模擬的應(yīng)用場(chǎng)景來(lái)說(shuō),本申請(qǐng)的技術(shù)方案可以靈活的根據(jù)需要進(jìn)行金融業(yè)務(wù)模擬,獲得賬戶在將來(lái)一段時(shí)間的狀態(tài),確保用戶和金融機(jī)構(gòu)的信息安全。
如圖3所示為本申請(qǐng)實(shí)施例實(shí)現(xiàn)金融統(tǒng)跨時(shí)域一致性分布系統(tǒng)的結(jié)構(gòu)示意圖。
在本實(shí)施例中,以金融應(yīng)用場(chǎng)景為例對(duì)如何實(shí)現(xiàn)分布式系統(tǒng)跨時(shí)域一致性的實(shí)現(xiàn)方案進(jìn)行說(shuō)明。該分布式金融系統(tǒng)包括,模擬金融業(yè)務(wù)301,該模擬金融業(yè)務(wù)301分別與應(yīng)用服務(wù)器302、應(yīng)用服務(wù)器303及數(shù)據(jù)庫(kù)服務(wù)器304,其中以應(yīng)用服務(wù)器302設(shè)置為時(shí)間服務(wù)器,作為該業(yè)務(wù)模擬過(guò)程中的時(shí)間基準(zhǔn),所述應(yīng)用服務(wù)器302和應(yīng)用服務(wù)器303以及數(shù)據(jù)庫(kù)服務(wù)器304都是與該業(yè)務(wù)模擬相關(guān)的設(shè)備,在整個(gè)分布式金融系統(tǒng)中還包括其它應(yīng)用服務(wù)器或者數(shù)據(jù)庫(kù)服務(wù)器。
本申請(qǐng)的裝置在本例中分散于應(yīng)用服務(wù)器302和應(yīng)用服務(wù)器303中,或者為獨(dú)立的計(jì)算機(jī),本領(lǐng)域技術(shù)人員可以理解的是,作為本申請(qǐng)的裝置可以是執(zhí)行相應(yīng)功能的軟件模塊,也可以是實(shí)現(xiàn)相應(yīng)功能的邏輯電路,并不拘泥于位于一個(gè)空間位置的裝置,還可以以功能單元、模塊的方式分散的位于分布式金融系統(tǒng)中的相關(guān)服務(wù)器之中,或者為服務(wù)器的底層框架結(jié)構(gòu)。
在本實(shí)施例中,根據(jù)設(shè)定應(yīng)用服務(wù)器302為時(shí)間服務(wù)器,其它應(yīng)用服務(wù)器需要根據(jù)該應(yīng)用服務(wù)器302的時(shí)間為基準(zhǔn)進(jìn)行時(shí)間同步,分布式金融系統(tǒng)實(shí)現(xiàn)跨時(shí)域一致性的方法流程圖請(qǐng)參考圖4所示。
結(jié)合參考圖3及圖4,當(dāng)金融業(yè)務(wù)模擬(貸款業(yè)務(wù)模擬)中需要將業(yè)務(wù)時(shí)間調(diào)整到未來(lái)的某個(gè)時(shí)間(目標(biāo)時(shí)間),例如目標(biāo)時(shí)間為2015年4月2日15:30,應(yīng)用服務(wù)器302的時(shí)間 為2015年4月1日15:30,應(yīng)用服務(wù)器303的時(shí)間為2015年4月1日15:32,數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間為2015年4月1日15:33,需要在數(shù)據(jù)庫(kù)服務(wù)器304中添加新的利息數(shù)據(jù)。
步驟401,根據(jù)設(shè)定的信息,確定目標(biāo)時(shí)間及貸款業(yè)務(wù)模擬。
本步驟中,可以根據(jù)用戶通過(guò)鼠標(biāo)、鍵盤等輸入設(shè)備輸入的設(shè)定信息確定目標(biāo)時(shí)間和貸款業(yè)務(wù)模擬,從而可以根據(jù)類似于業(yè)務(wù)模擬名稱與相關(guān)聯(lián)設(shè)備列表的方式得到與該貸款業(yè)務(wù)模擬相關(guān)的應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器,為了簡(jiǎn)單明了的描述本申請(qǐng)的技術(shù)方案,該貸款業(yè)務(wù)相關(guān)的應(yīng)用服務(wù)器為應(yīng)用服務(wù)器302和應(yīng)用服務(wù)器303,相關(guān)聯(lián)的數(shù)據(jù)庫(kù)服務(wù)器為數(shù)據(jù)庫(kù)服務(wù)器304,時(shí)間服務(wù)器為應(yīng)用服務(wù)器302。
步驟402,將目標(biāo)時(shí)間發(fā)送至?xí)r間服務(wù)器,所述時(shí)間服務(wù)器調(diào)整系統(tǒng)時(shí)間至目標(biāo)時(shí)間,在本例中應(yīng)用服務(wù)器302將系統(tǒng)時(shí)間調(diào)整為2015年4月2日15:30。
步驟403,應(yīng)用服務(wù)器獲得時(shí)間服務(wù)器的時(shí)間,并將自身系統(tǒng)時(shí)間與時(shí)間服務(wù)器的時(shí)間同步。
在本步驟中,應(yīng)用服務(wù)器303可以主動(dòng)獲取時(shí)間服務(wù)器的時(shí)間,從而實(shí)現(xiàn)時(shí)間同步,還可以由時(shí)間服務(wù)器主動(dòng)向應(yīng)用服務(wù)器303發(fā)送時(shí)間同步指令,其中包括時(shí)間服務(wù)器的時(shí)間,令應(yīng)用服務(wù)器303根據(jù)該時(shí)間進(jìn)行時(shí)間同步。
具體的,應(yīng)用服務(wù)器303將自身的時(shí)間2015年4月1日15:32同步為時(shí)間服務(wù)器的時(shí)間2015年4月2日15:30。
步驟404,應(yīng)用服務(wù)器周期性的與時(shí)間服務(wù)器進(jìn)行時(shí)間同步。
本步驟中,應(yīng)用服務(wù)器303可以根據(jù)自身的計(jì)時(shí)器計(jì)算一時(shí)間間隔,每當(dāng)經(jīng)過(guò)該時(shí)間間隔后,主動(dòng)從時(shí)間服務(wù)器獲取時(shí)間,以進(jìn)行時(shí)間同步,或者時(shí)間服務(wù)器自身具有計(jì)時(shí)器計(jì)算一時(shí)間間隔,每當(dāng)經(jīng)過(guò)該時(shí)間間隔后,主動(dòng)向應(yīng)用服務(wù)器303發(fā)送包括時(shí)間的同步指令,以使所示應(yīng)用服務(wù)器303進(jìn)行時(shí)間同步。
具體的,經(jīng)過(guò)同步的應(yīng)用服務(wù)器303在10分鐘后的時(shí)間為2015年4月2日15:41,按照本步驟的方式以10分鐘為時(shí)間間隔周期性的與時(shí)間服務(wù)器同步,此時(shí)時(shí)間服務(wù)器時(shí)間為2015年4月2日15:40,同步之后的結(jié)果應(yīng)用服務(wù)器303的時(shí)間為2015年4月2日15:40。
步驟405,獲取時(shí)間服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間。
其中,可以通過(guò)向數(shù)據(jù)庫(kù)服務(wù)器304發(fā)送時(shí)間獲取指令來(lái)獲取數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間,例如數(shù)據(jù)庫(kù)指令:select now()from dual,該指令即為獲取數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間。
在本例中,所述數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間根據(jù)前述為2015年4月1日15:33,時(shí)間服務(wù)器時(shí)間為2015年4月2日15:30。
步驟406,計(jì)算所述時(shí)間服務(wù)器時(shí)間與數(shù)據(jù)庫(kù)服務(wù)器時(shí)間的差值,得到時(shí)間偏移量。
具體的,根據(jù)時(shí)間服務(wù)器時(shí)間為2015年4月2日15:30和數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間為2015年4月1日15:33,得到時(shí)間偏移量為23小時(shí)57分。
步驟407,將時(shí)間偏移量推送給與業(yè)務(wù)模擬相關(guān)的應(yīng)用服務(wù)器。
在本步驟中,將時(shí)間偏移量放入多線程中,推送給與貸款業(yè)務(wù)模擬相關(guān)的所有應(yīng)用服務(wù)器,在本例中,只有應(yīng)用服務(wù)器302和應(yīng)用服務(wù)器303,而應(yīng)用服務(wù)器302為時(shí)間服務(wù)器,如果時(shí)間偏移量的計(jì)算是在時(shí)間服務(wù)器上計(jì)算的,那么本步驟中只需要將時(shí)間偏移量放入線程中推送給應(yīng)用服務(wù)器303,如果貸款業(yè)務(wù)模擬還與其它應(yīng)用服務(wù)器相關(guān),那么就可以通過(guò)多線程的方式同時(shí)將時(shí)間偏移量推送給所有相關(guān)的應(yīng)用服務(wù)器,其中,與業(yè)務(wù)相關(guān)的應(yīng)用服務(wù)器包括,在分布式系統(tǒng)中,某些應(yīng)用服務(wù)器的業(yè)務(wù)時(shí)間需要依賴于數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間,這些應(yīng)用服務(wù)器為與業(yè)務(wù)相關(guān)的應(yīng)用服務(wù)器。
可以在獨(dú)立的一個(gè)設(shè)備上執(zhí)行上述步驟405至步驟407,也可以在應(yīng)用服務(wù)器303上執(zhí)行上述步驟,作為較佳的實(shí)施例,可以在時(shí)間服務(wù)器上執(zhí)行上述步驟。
步驟408,將與業(yè)務(wù)模擬相關(guān)的應(yīng)用服務(wù)器生成的數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)進(jìn)行修改。
由于本實(shí)施例為貸款業(yè)務(wù)模擬,每一天都將會(huì)產(chǎn)生貸款利息,應(yīng)用服務(wù)器303生成在數(shù)據(jù)庫(kù)中添加計(jì)息記錄的數(shù)據(jù)庫(kù)操作指令,該數(shù)據(jù)庫(kù)操作指令中包括計(jì)息的時(shí)間函數(shù),例如,select now()from dual,將該數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)進(jìn)行修改,即,select DATE_AD D(now(),INTERVAL A MINUTE)from dual,其中,now()函數(shù)為獲取數(shù)據(jù)庫(kù)服務(wù)器時(shí)間的函數(shù),INTERVAL A MINUTE為時(shí)間偏移量,DATE_ADD()為在數(shù)據(jù)庫(kù)時(shí)間上加上時(shí)間偏移量的函數(shù),dual為數(shù)據(jù)庫(kù)表格,可以看到,進(jìn)行時(shí)間偏移,可以模擬任意期望的時(shí)間。
其中,應(yīng)用服務(wù)器可以通過(guò)識(shí)別數(shù)據(jù)庫(kù)操作指令中時(shí)間函數(shù)方法名的方式來(lái)確定需要修改哪個(gè)時(shí)間函數(shù),例如OB和mysql的時(shí)間函數(shù)有:now()/current_time()/current_timestamp()/strict_current_timestamp()等,這些時(shí)間函數(shù)可以靈活的支持配置,哪些需要時(shí)間偏移,哪些不需要時(shí)間偏移。此時(shí),不需要改變數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間就可以實(shí)現(xiàn)將數(shù)據(jù)庫(kù)中記錄的業(yè)務(wù)時(shí)間與應(yīng)用服務(wù)器的時(shí)間同步,保證在金融業(yè)務(wù)模擬時(shí)的跨時(shí)域一致性。
在另一個(gè)實(shí)施例中,在某個(gè)業(yè)務(wù)模擬中,如果涉及多個(gè)數(shù)據(jù)庫(kù)服務(wù)器和多個(gè)應(yīng)用服務(wù)器,其中一些應(yīng)用服務(wù)器需要在某一個(gè)或者幾個(gè)數(shù)據(jù)庫(kù)服務(wù)器中進(jìn)行操作,每個(gè)數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間可能都不相同,那么在步驟405中需要獲得所有數(shù)據(jù)庫(kù)服務(wù)器的時(shí)間和時(shí)間服務(wù)器的時(shí)間。
在步驟406中,將時(shí)間服務(wù)器的時(shí)間分別與多個(gè)數(shù)據(jù)庫(kù)服務(wù)器時(shí)間做差,得到多個(gè)時(shí)間偏移量,并記錄每個(gè)時(shí)間偏移量與其對(duì)應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器的匹配關(guān)系。
在步驟407中,根據(jù)與業(yè)務(wù)模擬相關(guān)的應(yīng)用服務(wù)器及相應(yīng)的數(shù)據(jù)庫(kù)服務(wù)器,將相應(yīng)的時(shí)間偏移量推送給應(yīng)用服務(wù)器。
在本步驟中,一個(gè)應(yīng)用服務(wù)器可能需要向幾個(gè)數(shù)據(jù)庫(kù)服務(wù)器發(fā)送數(shù)據(jù)庫(kù)操作指令,發(fā)送給各個(gè)數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)均需要進(jìn)行不同的修改,即,數(shù)據(jù)庫(kù)服務(wù)器A的時(shí)間與目標(biāo)時(shí)間之間的時(shí)間偏移量為A,數(shù)據(jù)庫(kù)服務(wù)器B的時(shí)間與目標(biāo)時(shí)間之間的時(shí)間偏移量為B,數(shù)據(jù)庫(kù)服務(wù)器C的時(shí)間與目標(biāo)時(shí)間之間的時(shí)間偏移量為C,將這些不同的時(shí)間偏移量發(fā)送給應(yīng)用服務(wù)器。
步驟408,將應(yīng)用服務(wù)器發(fā)送給不同數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)庫(kù)操作指令中的時(shí)間函數(shù)按照相應(yīng)的時(shí)間偏移量進(jìn)行修改。
具體的,應(yīng)用服務(wù)器發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器A的數(shù)據(jù)庫(kù)操作指令中時(shí)間函數(shù)根據(jù)時(shí)間偏移量A進(jìn)行修改,應(yīng)用服務(wù)器發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器B的數(shù)據(jù)庫(kù)操作指令中時(shí)間函數(shù)根據(jù)時(shí)間偏移量B進(jìn)行修改,應(yīng)用服務(wù)器發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器C的數(shù)據(jù)庫(kù)操作指令中時(shí)間函數(shù)根據(jù)時(shí)間偏移量C進(jìn)行修改,
通過(guò)上述本申請(qǐng)實(shí)施例中的方法和裝置,可以實(shí)現(xiàn)分布式系統(tǒng)中的時(shí)間調(diào)整、切換,特別對(duì)于金融級(jí)的分布式系統(tǒng)中的業(yè)務(wù)模擬時(shí),可以避免數(shù)據(jù)庫(kù)服務(wù)器的崩潰,從而可以檢測(cè)金融系統(tǒng)的數(shù)據(jù)和信息的安全性。
對(duì)于一個(gè)技術(shù)的改進(jìn)可以很明顯地區(qū)分是硬件上的改進(jìn)(例如,對(duì)二極管、晶體管、開(kāi)關(guān)等電路結(jié)構(gòu)的改進(jìn))還是軟件上的改進(jìn)(對(duì)于方法流程的改進(jìn))。然而,隨著技術(shù)的發(fā)展,當(dāng)今的很多方法流程的改進(jìn)已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進(jìn)。設(shè)計(jì)人員幾乎都通過(guò)將改進(jìn)的方法流程編程到硬件電路中來(lái)得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說(shuō)一個(gè)方法流程的改進(jìn)就不能用硬件實(shí)體模塊來(lái)實(shí)現(xiàn)。例如,可編程邏輯器件(Programmable Logic Device,PLD)(例如現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA))就是這樣一種集成電路,其邏輯功能由用戶對(duì)器件編程來(lái)確定。由設(shè)計(jì)人員自行編程來(lái)把一個(gè)數(shù)字系統(tǒng)“集成”在一片PLD上,而不需要請(qǐng)芯片制造廠商來(lái)設(shè)計(jì)和制作專用的集成電路芯片2。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logic compiler)”軟件來(lái)實(shí)現(xiàn),它與程序開(kāi)發(fā)撰寫時(shí)所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語(yǔ)言來(lái)撰寫,此稱之為硬件描述語(yǔ)言(Hardware Description Language,HDL),而HDL也并非僅有一種,而是有許多種,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的 是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)與Verilog2。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語(yǔ)言稍作邏輯編程并編程到集成電路中,就可以很容易得到實(shí)現(xiàn)該邏輯方法流程的硬件電路。
控制器可以按任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲(chǔ)可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門、開(kāi)關(guān)、專用集成電路(Application Specific Integrated Circuit,ASIC)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存儲(chǔ)器控制器還可以被實(shí)現(xiàn)為存儲(chǔ)器的控制邏輯的一部分。
本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過(guò)將方法步驟進(jìn)行邏輯編程來(lái)使得控制器以邏輯門、開(kāi)關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來(lái)實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)。或者甚至,可以將用于實(shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。
上述實(shí)施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來(lái)實(shí)現(xiàn)。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
本申請(qǐng)可用于眾多通用或?qū)S玫挠?jì)算機(jī)系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂 盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(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ì)中。
雖然通過(guò)實(shí)施例描繪了本申請(qǐng),本領(lǐng)域普通技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本申請(qǐng)的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請(qǐng)的精神。