所屬的技術(shù)人員能夠理解,本技術(shù)的各個方面可以實現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本技術(shù)的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、微代碼等),或硬件和軟件方面結(jié)合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。與上述方法實施例基于同一發(fā)明構(gòu)思,本技術(shù)實施例中還提供了一種電子設(shè)備。在一種實施例中,該電子設(shè)備可以是服務(wù)器,如圖4所示的服務(wù)器120。在該實施例中,電子設(shè)備的結(jié)構(gòu)可以如圖15所示,包括存儲器1501,通訊模塊1503以及一個或多個處理器1502。存儲器1501,用于存儲處理器1502執(zhí)行的計算機(jī)程序。存儲器1501可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng),以及運(yùn)行即時通訊功能所需的程序等;存儲數(shù)據(jù)區(qū)可存儲各種即時通訊信息和操作指令集等。存儲器1501可以是易失性存儲器(volatile?memory),例如隨機(jī)存取存儲器(random-access?memory,ram);存儲器1501也可以是非易失性存儲器(non-volatilememory),例如只讀存儲器,快閃存儲器(flash?memory),硬盤(hard?disk?drive,hdd)或固態(tài)硬盤(solid-state?drive,ssd);或者存儲器1501是能夠用于攜帶或存儲具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的計算機(jī)程序并能夠由計算機(jī)存取的任何其他介質(zhì),但不限于此。存儲器1501可以是上述存儲器的組合。處理器1502,可以包括一個或多個中央處理單元(central?processing?unit,cpu)或者為數(shù)字處理單元等等。處理器1502,用于調(diào)用存儲器1501中存儲的計算機(jī)程序時實現(xiàn)上述數(shù)據(jù)同步方法。通訊模塊1503用于與終端設(shè)備和其他服務(wù)器進(jìn)行通信。本技術(shù)實施例中不限定上述存儲器1501、通訊模塊1503和處理器1502之間的具體連接介質(zhì)。本技術(shù)實施例在圖15中以存儲器1501和處理器1502之間通過總線1504連接,總線1504在圖15中以粗線描述,其它部件之間的連接方式,僅是進(jìn)行示意性說明,并不引以為限??偩€1504可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于描述,圖15中僅用一條粗線描述,但并不描述僅有一根總線或一種類型的總線。存儲器1501中存儲有計算機(jī)存儲介質(zhì),計算機(jī)存儲介質(zhì)中存儲有計算機(jī)可執(zhí)行指令,計算機(jī)可執(zhí)行指令用于實現(xiàn)本技術(shù)實施例的數(shù)據(jù)同步方法。處理器1502用于執(zhí)行上述的數(shù)據(jù)同步方法,如圖5所示。在示例性實施例中,本技術(shù)還提供了一種包括計算機(jī)程序的存儲介質(zhì),例如包括計算機(jī)程序的存儲器1501,上述計算機(jī)程序可由電子設(shè)備的處理器1502執(zhí)行以完成上述數(shù)據(jù)同步方法??蛇x地,存儲介質(zhì)可以是非臨時性計算機(jī)可讀存儲介質(zhì),例如,非臨時性計算機(jī)可讀存儲介質(zhì)可以是rom、隨機(jī)存取存儲器(ram)、cd-rom、磁帶、軟盤和光數(shù)據(jù)存儲設(shè)備等。在另一種實施例中,電子設(shè)備也可以是其他電子設(shè)備,如圖4所示的終端設(shè)備110。在該實施例中,電子設(shè)備的結(jié)構(gòu)可以如圖16所示,包括:通信組件1610、存儲器1620、顯示單元1630、攝像頭1640、傳感器1650、音頻電路1660、藍(lán)牙模塊1670、處理器1680等部件。通信組件1610用于與服務(wù)器進(jìn)行通信。在一些實施例中,可以包括電路無線保真(wireless?fidelity,wifi)模塊,wifi模塊屬于短距離無線傳輸技術(shù),電子設(shè)備通過wifi模塊可以幫助對象收發(fā)信息。存儲器1620可用于存儲軟件程序及數(shù)據(jù)。處理器1680通過運(yùn)行存儲在存儲器1620的軟件程序或數(shù)據(jù),從而執(zhí)行終端設(shè)備110的各種功能以及數(shù)據(jù)處理。存儲器1620可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。存儲器1620存儲有使得終端設(shè)備110能運(yùn)行的操作系統(tǒng)。本技術(shù)中存儲器1620可以存儲操作系統(tǒng)及各種應(yīng)用程序,還可以存儲執(zhí)行本技術(shù)實施例數(shù)據(jù)同步方法的計算機(jī)程序。顯示單元1630還可用于顯示由對象輸入的信息或提供給對象的信息以及終端設(shè)備110的各種菜單的圖形對象界面(graphical?user?interface,gui)。具體地,顯示單元1630可以包括設(shè)置在終端設(shè)備110正面的顯示屏1632。其中,顯示屏1632可以采用液晶顯示器、發(fā)光二極管等形式來配置。顯示單元1630還可用于接收輸入的數(shù)字或字符信息,產(chǎn)生與終端設(shè)備110的對象設(shè)置以及功能控制有關(guān)的信號輸入,具體地,顯示單元1630可以包括設(shè)置在終端設(shè)備110正面的觸控屏1631,可收集對象在其上或附近的觸摸操作,例如點擊按鈕,拖動滾動框等。其中,觸控屏1631可以覆蓋在顯示屏1632之上,也可以將觸控屏1631與顯示屏1632集成而實現(xiàn)終端設(shè)備110的輸入和輸出功能,集成后可以簡稱觸摸顯示屏。本技術(shù)中顯示單元1630可以顯示應(yīng)用程序以及對應(yīng)的操作步驟。攝像頭1640可用于捕獲靜態(tài)圖像,對象可以將攝像頭1640拍攝的圖像通過應(yīng)用發(fā)布。攝像頭1640可以是一個,也可以是多個。物體通過鏡頭生成光學(xué)圖像投射到感光元件。感光元件可以是電荷耦合器件(charge?coupled?device,ccd)或互補(bǔ)金屬氧化物半導(dǎo)體(complementary?metal-oxide-semiconductor,cmos)光電晶體管。感光元件把光信號轉(zhuǎn)換成電信號,之后將電信號傳遞給處理器1680轉(zhuǎn)換成數(shù)字圖像信號。終端設(shè)備還可以包括至少一種傳感器1650,比如加速度傳感器1651、距離傳感器1652、指紋傳感器1653、溫度傳感器1654。終端設(shè)備還可配置有陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器、光傳感器、運(yùn)動傳感器等其他傳感器。音頻電路1660、揚(yáng)聲器1661、傳聲器1662可提供對象與終端設(shè)備110之間的音頻接口。音頻電路1660可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P(yáng)聲器1661,由揚(yáng)聲器1661轉(zhuǎn)換為聲音信號輸出。終端設(shè)備110還可配置音量按鈕,用于調(diào)節(jié)聲音信號的音量。另一方面,傳聲器1662將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路1660接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出至通信組件1610以發(fā)送給比如另一終端設(shè)備110,或者將音頻數(shù)據(jù)輸出至存儲器1620以便進(jìn)一步處理。藍(lán)牙模塊1670用于通過藍(lán)牙協(xié)議來與其他具有藍(lán)牙模塊的藍(lán)牙設(shè)備進(jìn)行信息交互。例如,終端設(shè)備可以通過藍(lán)牙模塊1670與同樣具備藍(lán)牙模塊的可穿戴電子設(shè)備(例如智能手表)建立藍(lán)牙連接,從而進(jìn)行數(shù)據(jù)交互。處理器1680是終端設(shè)備的控制中心,利用各種接口和線路連接整個終端設(shè)備的各個部分,通過運(yùn)行或執(zhí)行存儲在存儲器1620內(nèi)的軟件程序,以及調(diào)用存儲在存儲器1620內(nèi)的數(shù)據(jù),執(zhí)行終端設(shè)備的各種功能和處理數(shù)據(jù)。在一些實施例中,處理器1680可包括一個或多個處理單元;處理器1680還可以集成應(yīng)用處理器和基帶處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、對象界面和應(yīng)用程序等,基帶處理器主要處理無線通信??梢岳斫獾氖牵鲜龌鶐幚砥饕部梢圆患傻教幚砥?680中。本技術(shù)中處理器1680可以運(yùn)行操作系統(tǒng)、應(yīng)用程序、對象界面顯示及觸控響應(yīng),以及本技術(shù)實施例的數(shù)據(jù)同步方法。另外,處理器1680與顯示單元1630耦接。在一些可能的實施方式中,本技術(shù)提供的數(shù)據(jù)同步方法的各個方面還可以實現(xiàn)為一種程序產(chǎn)品的形式,其包括計算機(jī)程序,當(dāng)程序產(chǎn)品在電子設(shè)備上運(yùn)行時,計算機(jī)程序用于使電子設(shè)備執(zhí)行本說明書上述描述的根據(jù)本技術(shù)各種示例性實施方式的數(shù)據(jù)同步方法中的步驟,例如,電子設(shè)備可以執(zhí)行如圖5中所示的步驟。程序產(chǎn)品可以采用一個或多個可讀介質(zhì)的任意組合??勺x介質(zhì)可以是可讀信號介質(zhì)或者可讀存儲介質(zhì)??勺x存儲介質(zhì)例如可以是但不限于電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合??勺x存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式盤、硬盤、隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、光纖、便攜式緊湊盤只讀存儲器(cd-rom)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。本技術(shù)的實施方式的程序產(chǎn)品可以采用便攜式緊湊盤只讀存儲器(cd-rom)并包括計算機(jī)程序,并可以在電子設(shè)備上運(yùn)行。然而,本技術(shù)的程序產(chǎn)品不限于此,在本文件中,可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被命令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用??勺x信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了可讀計算機(jī)程序。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合??勺x信號介質(zhì)還可以是可讀存儲介質(zhì)以外的任何可讀介質(zhì),該可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由命令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序??勺x介質(zhì)上包含的計算機(jī)程序可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括但不限于無線、有線、光纜、rf等等,或者上述的任意合適的組合??梢砸砸环N或多種程序設(shè)計語言的任意組合來編寫用于執(zhí)行本技術(shù)操作的計算機(jī)程序,程序設(shè)計語言包括面向?qū)ο蟮某绦蛟O(shè)計語言—諸如java、c++等,還包括常規(guī)的過程式程序設(shè)計語言—諸如“c”語言或類似的程序設(shè)計語言。計算機(jī)程序可以完全地在用戶電子設(shè)備上執(zhí)行、部分地在用戶電子設(shè)備上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶電子設(shè)備上部分在遠(yuǎn)程電子設(shè)備上執(zhí)行、或者完全在遠(yuǎn)程電子設(shè)備或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程電子設(shè)備的情形中,遠(yuǎn)程電子設(shè)備可以通過任意種類的網(wǎng)絡(luò)包括局域網(wǎng)(lan)或廣域網(wǎng)(wan)連接到對象電子設(shè)備,或者,可以連接到外部電子設(shè)備(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本技術(shù)的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本技術(shù)可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本技術(shù)可采用在一個或多個其中包含有計算機(jī)可用計算機(jī)程序的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。盡管已描述了本技術(shù)的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本技術(shù)范圍的所有變更和修改。顯然,本領(lǐng)域的技術(shù)人員可以對本技術(shù)進(jìn)行各種改動和變型而不脫離本技術(shù)的精神和范圍。這樣,倘若本技術(shù)的這些修改和變型屬于本技術(shù)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本技術(shù)也意圖包含這些改動和變型在內(nèi)。
背景技術(shù):
1、隨著區(qū)塊鏈技術(shù)的發(fā)展,基于區(qū)塊鏈的應(yīng)用逐漸落地。目前,在基于區(qū)塊鏈的業(yè)務(wù)系統(tǒng)中,終端設(shè)備可以向業(yè)務(wù)方的后端服務(wù)發(fā)送業(yè)務(wù)數(shù)據(jù),后端服務(wù)將業(yè)務(wù)數(shù)據(jù)中的關(guān)鍵數(shù)據(jù)進(jìn)行上鏈,以保證數(shù)據(jù)的不可篡改性。例如,以終端設(shè)備申請注冊鏈上對象為例,終端設(shè)備向后端服務(wù)發(fā)送的業(yè)務(wù)數(shù)據(jù)可以是對象信息。
2、后端服務(wù)將上述關(guān)鍵數(shù)據(jù)進(jìn)行上鏈的過程包括:利用本地存儲的用于上鏈的證書和私鑰,將關(guān)鍵數(shù)據(jù)構(gòu)造交易元數(shù)據(jù)后進(jìn)行簽名,最后構(gòu)造交易,將交易發(fā)送到區(qū)塊鏈節(jié)點中;待區(qū)塊鏈節(jié)點打包區(qū)塊,并對交易的執(zhí)行達(dá)成共識后,等待獲得交易執(zhí)行的結(jié)果以及交易的返回值(為鏈上數(shù)據(jù)),例如,該返回值可以是對象地址,代表對象在鏈上的身份(存儲在區(qū)塊鏈中);最后,將獲得的鏈上數(shù)據(jù)和上述業(yè)務(wù)數(shù)據(jù)保存到鏈下數(shù)據(jù)庫中,以便后續(xù)進(jìn)行數(shù)據(jù)查詢。
3、然而,上述基于區(qū)塊鏈的業(yè)務(wù)系統(tǒng)存在以下問題:
4、在后端服務(wù)成功將業(yè)務(wù)數(shù)據(jù)的關(guān)鍵數(shù)據(jù)上鏈后,準(zhǔn)備將返回的鏈上數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)插入鏈下數(shù)據(jù)庫時,鏈下數(shù)據(jù)庫出現(xiàn)宕機(jī)或者短時間內(nèi)不可用,而無法將返回的鏈上數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)插入鏈下數(shù)據(jù)庫,使得鏈下數(shù)據(jù)庫丟失數(shù)據(jù),從而導(dǎo)致鏈上數(shù)據(jù)和鏈下數(shù)據(jù)庫的數(shù)據(jù)不一致,后續(xù)業(yè)務(wù)方基于鏈下數(shù)據(jù)庫的數(shù)據(jù)發(fā)起的一些交易,在鏈上可能會執(zhí)行失敗。
技術(shù)實現(xiàn)思路
1、本技術(shù)實施例提供一種數(shù)據(jù)同步方法、裝置、電子設(shè)備和存儲介質(zhì),用以保證鏈上數(shù)據(jù)和鏈下數(shù)據(jù)庫的數(shù)據(jù)一致性,以便鏈上交易成功執(zhí)行。
2、一方面,本技術(shù)實施例提供的一種數(shù)據(jù)同步方法,所述方法包括:
3、分別檢測區(qū)塊鏈網(wǎng)絡(luò)中各區(qū)塊鏈節(jié)點各自產(chǎn)生的新區(qū)塊,每個所述新區(qū)塊用于保存基于業(yè)務(wù)數(shù)據(jù)構(gòu)造的交易的交易結(jié)果;
4、在檢測到所述各區(qū)塊鏈節(jié)點中任一區(qū)塊鏈節(jié)點產(chǎn)生的新區(qū)塊時,對所述新區(qū)塊中的交易結(jié)果進(jìn)行處理之前,從數(shù)據(jù)庫中查詢所述新區(qū)塊的上一區(qū)塊的交易處理狀態(tài);其中,所述數(shù)據(jù)庫用于存儲已處理的區(qū)塊的交易處理狀態(tài);
5、若查詢到所述上一區(qū)塊的交易處理狀態(tài)為未完成狀態(tài),則繼續(xù)對所述上一區(qū)塊中的交易結(jié)果進(jìn)行處理,直至將獲得的交易返回數(shù)據(jù)以及相應(yīng)的業(yè)務(wù)數(shù)據(jù)存儲至所述數(shù)據(jù)庫,并將所述數(shù)據(jù)庫中所述上一區(qū)塊的交易處理狀態(tài)由未完成狀態(tài)更新為完成狀態(tài)。
6、一方面,本技術(shù)實施例提供的一種數(shù)據(jù)同步裝置,所述裝置包括:
7、檢測模塊,用于分別檢測區(qū)塊鏈網(wǎng)絡(luò)中各區(qū)塊鏈節(jié)點各自產(chǎn)生的新區(qū)塊,每個所述新區(qū)塊用于保存基于業(yè)務(wù)數(shù)據(jù)構(gòu)造的交易的交易結(jié)果;
8、查詢模塊,用于在檢測到所述各區(qū)塊鏈節(jié)點中任一區(qū)塊鏈節(jié)點產(chǎn)生的新區(qū)塊時,對所述新區(qū)塊中的交易結(jié)果進(jìn)行處理之前,從數(shù)據(jù)庫中查詢所述新區(qū)塊的上一區(qū)塊的交易處理狀態(tài);其中,所述數(shù)據(jù)庫用于存儲已處理的區(qū)塊的交易處理狀態(tài);
9、第一處理模塊,用于若所述上一區(qū)塊的交易處理狀態(tài)為未完成狀態(tài),則繼續(xù)對所述上一區(qū)塊中的交易結(jié)果進(jìn)行處理,直至將獲得的交易返回數(shù)據(jù)以及相應(yīng)的業(yè)務(wù)數(shù)據(jù)存儲至所述數(shù)據(jù)庫,并將所述數(shù)據(jù)庫中所述上一區(qū)塊的交易處理狀態(tài)由未完成狀態(tài)更新為完成狀態(tài)。
10、可選的,所述裝置還包括:
11、第二處理模塊,用于若所述上一區(qū)塊的交易處理狀態(tài)為完成狀態(tài),則開始對所述新區(qū)塊中的交易結(jié)果進(jìn)行處理,并將所述新區(qū)塊的交易處理狀態(tài)設(shè)置為未完成狀態(tài)后保存至所述數(shù)據(jù)庫中;
12、存儲模塊,用于在對所述新區(qū)塊中的交易結(jié)果處理完成時,將獲得的交易返回數(shù)據(jù)以及相應(yīng)的業(yè)務(wù)數(shù)據(jù)存儲至所述數(shù)據(jù)庫,以及將所述數(shù)據(jù)庫中的所述新區(qū)塊的交易處理狀態(tài)由未完成狀態(tài)更新為完成狀態(tài)。
13、可選的,所述新區(qū)塊具有相應(yīng)的區(qū)塊標(biāo)記,且所述新區(qū)塊中包括多個交易結(jié)果,每個交易結(jié)果具有相應(yīng)的交易標(biāo)記,所述新區(qū)塊的交易處理狀態(tài)包括:多個交易結(jié)果各自的包含區(qū)塊標(biāo)記和交易標(biāo)記的處理狀態(tài);
14、所述第二處理模塊具體用于:
15、每當(dāng)對所述新區(qū)塊中的一個交易結(jié)果進(jìn)行處理時,將所述一個交易結(jié)果的處理狀態(tài)設(shè)置為未完成狀態(tài),并將所述一個交易結(jié)果的處理狀態(tài)保存至所述數(shù)據(jù)庫中;
16、所述存儲模塊具體用于:
17、每當(dāng)對所述新區(qū)塊中的一個交易結(jié)果處理完成時,將所述一個交易結(jié)果的交易返回數(shù)據(jù)以及相應(yīng)的業(yè)務(wù)數(shù)據(jù)存儲至所述數(shù)據(jù)庫,以及將所述數(shù)據(jù)庫中所述一個交易結(jié)果的處理狀態(tài)由未完成狀態(tài)更新為完成狀態(tài)。
18、可選的,所述上一區(qū)塊具有相應(yīng)的區(qū)塊標(biāo)記,且所述上一區(qū)塊中包括多個交易結(jié)果,每個交易結(jié)果具有相應(yīng)的交易標(biāo)記,所述上一區(qū)塊的交易處理狀態(tài)包括:多個交易結(jié)果各自的包含區(qū)塊標(biāo)記和交易標(biāo)記的處理狀態(tài);
19、所述第一處理模塊具體用于:
20、若所述上一區(qū)塊中的交易處理狀態(tài)為未完成狀態(tài),則繼續(xù)對所述上一區(qū)塊中未完成處理的至少一個交易結(jié)果,依次執(zhí)行以下操作:
21、在對所述上一區(qū)塊中的一個交易結(jié)果進(jìn)行處理時,將所述一個交易結(jié)果的處理狀態(tài)設(shè)置為未完成狀態(tài),并將所述一個交易結(jié)果的處理狀態(tài)保存至所述數(shù)據(jù)庫中;
22、在對所述一個交易結(jié)果處理完成時,將所述一個交易結(jié)果的交易返回數(shù)據(jù)以及相應(yīng)的業(yè)務(wù)數(shù)據(jù)存儲至所述數(shù)據(jù)庫,以及將所述數(shù)據(jù)庫中所述一個交易結(jié)果的處理狀態(tài)由未完成狀態(tài)更新為完成狀態(tài)。
23、可選的,所述檢測模塊具體用于:
24、通過多個檢測器分別檢測所述各區(qū)塊鏈節(jié)點各自產(chǎn)生的新區(qū)塊;其中,每個區(qū)塊鏈節(jié)點對應(yīng)至少一個檢測器;
25、所述查詢模塊具體用于:
26、在通過所述多個檢測器,分別檢測到相應(yīng)的區(qū)塊鏈節(jié)點產(chǎn)生的新區(qū)塊時,通過所述多個檢測器中的任一檢測器對所述新區(qū)塊中的交易結(jié)果進(jìn)行處理之前,從數(shù)據(jù)庫中查詢所述新區(qū)塊的上一區(qū)塊的交易處理狀態(tài)。
27、可選的,所述查詢模塊具體包括:
28、調(diào)用子模塊,用于通過所述多個檢測器分別調(diào)用遠(yuǎn)程字典服務(wù)redis的指定命令;其中,所述指定命令用于在所述redis中緩存所述新區(qū)塊的區(qū)塊標(biāo)記;
29、緩存子模塊,用于在通過所述多個檢測器中的目標(biāo)檢測器成功調(diào)用到所述redis的指定命令后,將所述新區(qū)塊的區(qū)塊標(biāo)記緩存至所述redis;
30、查詢子模塊,用于通過所述目標(biāo)檢測器對所述新區(qū)塊中的交易結(jié)果進(jìn)行處理之前,從數(shù)據(jù)庫中查詢所述新區(qū)塊的上一區(qū)塊的交易處理狀態(tài)。
31、可選的,所述調(diào)用子模塊還用于:
32、通過所述多個檢測器中除所述目標(biāo)檢測器之外的其它檢測器,每隔第一設(shè)定時長繼續(xù)調(diào)用所述redis的指定命令;
33、所述裝置還包括:
34、第一返回模塊,用于通過所述其它檢測器每次調(diào)用所述redis的指定命令時,若通過所述redis確定緩存有所述新區(qū)塊的區(qū)塊標(biāo)記,則通過所述redis向所述其它檢測器返回調(diào)用失敗信息。
35、可選的,所述裝置還包括:
36、刪除模塊,用于通過所述redis在第二設(shè)定時長之后,將緩存的所述新區(qū)塊的區(qū)塊標(biāo)記刪除;
37、第二返回模塊,用于在通過所述多個檢測器中除所述目標(biāo)檢測器之外的其它檢測器,繼續(xù)調(diào)用所述redis的指定命令時,通過所述redis確定未緩存所述新區(qū)塊的區(qū)塊標(biāo)記,向所述其它檢測器中的任一檢測器返回調(diào)用成功信息;
38、第三處理模塊,用于通過所述其它檢測器中的任一檢測器,從所述數(shù)據(jù)庫中獲取所述新區(qū)塊的交易處理狀態(tài),并在確定所述新區(qū)塊的交易處理狀態(tài)為未完成狀態(tài)時,繼續(xù)對所述新區(qū)塊中的交易結(jié)果進(jìn)行處理。
39、可選的,所述裝置還包括:
40、發(fā)送模塊,用于通過業(yè)務(wù)服務(wù)模塊將業(yè)務(wù)數(shù)據(jù)中的關(guān)鍵數(shù)據(jù)構(gòu)造為相應(yīng)的交易,并將所述交易發(fā)送至所述各區(qū)塊鏈節(jié)點中的任一區(qū)塊鏈節(jié)點,以使所述任一區(qū)塊鏈節(jié)點構(gòu)造新區(qū)塊,以保存執(zhí)行所述交易獲得的交易結(jié)果;
41、構(gòu)造模塊,用于通過所述業(yè)務(wù)服務(wù)模塊獲得所述交易結(jié)果的交易標(biāo)識,將所述業(yè)務(wù)數(shù)據(jù)中的非關(guān)鍵數(shù)據(jù)構(gòu)造為上下文數(shù)據(jù),并將所述上下文數(shù)據(jù)與所述交易標(biāo)識對應(yīng)緩存至所述redis中;
42、所述存儲模塊還用于:
43、在通過所述目標(biāo)檢測器對所述新區(qū)塊中的交易結(jié)果處理完成時,基于所述交易標(biāo)識從所述redis中獲取所述上下文數(shù)據(jù),并將獲取到的交易返回數(shù)據(jù)和所述上下文數(shù)據(jù)存儲至所述數(shù)據(jù)庫中。
44、可選的,所述裝置還包括:
45、緩存模塊,用于通過所述目標(biāo)檢測器,將獲取到的交易返回數(shù)據(jù)緩存至所述redis中的上下文數(shù)據(jù)中,獲得完整的業(yè)務(wù)數(shù)據(jù);
46、第三返回模塊,用于通過所述業(yè)務(wù)服務(wù)模塊,基于所述交易標(biāo)識從所述redis中獲取所述完整的業(yè)務(wù)數(shù)據(jù),并對所述完整的業(yè)務(wù)數(shù)據(jù)進(jìn)行處理。
47、可選的,所述裝置還包括:
48、獲取模塊,用于在通過所述目標(biāo)檢測器對所述新區(qū)塊中的交易結(jié)果進(jìn)行處理過程中,若所述目標(biāo)檢測器重啟,則通過所述目標(biāo)檢測器從所述數(shù)據(jù)庫中獲取所述新區(qū)塊的交易處理狀態(tài);
49、第四處理模塊,用于通過所述目標(biāo)檢測器確定所述新區(qū)塊的交易處理狀態(tài)為未完成狀態(tài)時,繼續(xù)對所述新區(qū)塊中的交易結(jié)果進(jìn)行處理。
50、本技術(shù)實施例提供的一種電子設(shè)備,包括處理器和存儲器,其中,所述存儲器存儲有計算機(jī)程序,當(dāng)所述計算機(jī)程序被所述處理器執(zhí)行時,使得所述處理器執(zhí)行上述任意一種數(shù)據(jù)同步方法的步驟。
51、本技術(shù)實施例提供一種計算機(jī)可讀存儲介質(zhì),其包括計算機(jī)程序,當(dāng)計算機(jī)程序在電子設(shè)備上運(yùn)行時,計算機(jī)程序用于使電子設(shè)備執(zhí)行上述任意一種數(shù)據(jù)同步方法的步驟。
52、本技術(shù)實施例提供一種計算機(jī)程序產(chǎn)品,計算機(jī)程序產(chǎn)品包括計算機(jī)程序,計算機(jī)程序存儲在計算機(jī)可讀存儲介質(zhì)中;當(dāng)電子設(shè)備的處理器從計算機(jī)可讀存儲介質(zhì)讀取計算機(jī)程序時,處理器執(zhí)行計算機(jī)程序,使得電子設(shè)備執(zhí)行上述任意一種數(shù)據(jù)同步方法的步驟。
53、本技術(shù)采用上述技術(shù)方案,至少具有以下有益效果:
54、本技術(shù)實施例提供了一種數(shù)據(jù)同步方法、裝置、電子設(shè)備和存儲介質(zhì),在檢測到區(qū)塊鏈網(wǎng)絡(luò)中的任一區(qū)塊鏈節(jié)點產(chǎn)生新區(qū)塊時,對新區(qū)塊中的交易結(jié)果進(jìn)行處理之前,先從數(shù)據(jù)庫中查詢該新區(qū)塊的上一區(qū)塊的交易處理狀態(tài),如果該交易處理狀態(tài)為未完成狀態(tài),則繼續(xù)對上一區(qū)塊中的交易結(jié)果進(jìn)行處理,在處理完成時,將獲得的交易返回數(shù)據(jù)以及相應(yīng)的業(yè)務(wù)數(shù)據(jù)存儲至數(shù)據(jù)庫,并將上一區(qū)塊的交易處理狀態(tài)更新為完成狀態(tài)。這樣,在每次檢測到新區(qū)塊時,先確保上一區(qū)塊的交易結(jié)果處理完成并將相應(yīng)數(shù)據(jù)存儲至數(shù)據(jù)庫,可以避免數(shù)據(jù)庫丟失數(shù)據(jù),保證鏈上數(shù)據(jù)和鏈下數(shù)據(jù)庫的數(shù)據(jù)一致性,以便鏈上交易成功執(zhí)行。
55、本技術(shù)的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本技術(shù)而了解。本技術(shù)的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。