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