本發(fā)明實(shí)施例涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種控制交易數(shù)據(jù)量的方法和裝置。
背景技術(shù):
區(qū)塊鏈技術(shù)是通過(guò)去中心化和去信任的方式集體維護(hù)一個(gè)可靠數(shù)據(jù)庫(kù)的技術(shù)方案,更通俗一點(diǎn)說(shuō),區(qū)塊鏈技術(shù)就是一種全民參與記賬的方式。
在區(qū)塊鏈網(wǎng)絡(luò)中,區(qū)塊鏈網(wǎng)絡(luò)中的某個(gè)記賬節(jié)點(diǎn)會(huì)接收到應(yīng)用發(fā)送的交易數(shù)據(jù),該記賬節(jié)點(diǎn)會(huì)將接收到的交易數(shù)據(jù)向其他記賬節(jié)點(diǎn)廣播,各記賬節(jié)點(diǎn)在接收到一定量的交易數(shù)據(jù)后,會(huì)進(jìn)行記賬,記賬成功的記賬節(jié)點(diǎn)會(huì)生成交易數(shù)據(jù)的區(qū)塊,以供區(qū)塊鏈網(wǎng)絡(luò)中的其他節(jié)點(diǎn)下載區(qū)塊,從而達(dá)到全民參與記賬的方式。隨著業(yè)務(wù)的發(fā)展,交易系統(tǒng)的交易量逐漸增長(zhǎng),某段時(shí)間會(huì)出現(xiàn)交易高峰,當(dāng)大量的交易數(shù)據(jù)涌入?yún)^(qū)塊鏈網(wǎng)絡(luò)中,這時(shí)區(qū)塊鏈網(wǎng)絡(luò)的廣播能力及記賬節(jié)點(diǎn)處理交易數(shù)據(jù)的能力就會(huì)出現(xiàn)瓶頸,造成業(yè)務(wù)無(wú)法正常運(yùn)行,甚至產(chǎn)生廣播風(fēng)暴?,F(xiàn)有技術(shù)會(huì)通過(guò)自定義規(guī)則放棄記錄部分?jǐn)?shù)據(jù)來(lái)保證網(wǎng)絡(luò)中對(duì)交易的處理能力,這樣會(huì)導(dǎo)致部分交易數(shù)據(jù)出現(xiàn)丟失。
綜上所述,現(xiàn)有技術(shù)中存在當(dāng)出現(xiàn)大量交易數(shù)據(jù)時(shí)區(qū)塊鏈網(wǎng)絡(luò)無(wú)法有效處理的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種控制交易數(shù)據(jù)量的方法和裝置,用以解決現(xiàn)有技術(shù)中當(dāng)出現(xiàn)大量交易數(shù)據(jù)時(shí)區(qū)塊鏈網(wǎng)絡(luò)無(wú)法有效處理的問(wèn)題。
本發(fā)明實(shí)施例提供一種控制交易數(shù)據(jù)量的方法,包括:
獲取多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù)并在存儲(chǔ)區(qū)中存儲(chǔ)交易數(shù)據(jù);
獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力;
根據(jù)處理交易數(shù)據(jù)的能力,確定向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送的交易數(shù)據(jù)量N;
從存儲(chǔ)區(qū)中獲取N個(gè)未發(fā)送的交易數(shù)據(jù);
將N個(gè)未發(fā)送的交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)。
可選地,獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力,包括:
獲取設(shè)定時(shí)間段內(nèi)區(qū)塊鏈網(wǎng)絡(luò)處理的交易數(shù)據(jù)量;
根據(jù)設(shè)定時(shí)間段內(nèi)區(qū)塊鏈網(wǎng)絡(luò)處理的交易數(shù)據(jù)量,確定區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力。
可選地,在區(qū)塊鏈網(wǎng)絡(luò)啟動(dòng)時(shí),向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送設(shè)定數(shù)量的交易數(shù)據(jù),設(shè)定數(shù)量是根據(jù)區(qū)塊鏈網(wǎng)絡(luò)中各節(jié)點(diǎn)的網(wǎng)絡(luò)帶寬及各節(jié)點(diǎn)的設(shè)備處理能力設(shè)定的。
可選地,在存儲(chǔ)區(qū)中存儲(chǔ)交易數(shù)據(jù),包括:
在存儲(chǔ)區(qū)中持久化存儲(chǔ)交易數(shù)據(jù),并標(biāo)記交易數(shù)據(jù)為未發(fā)送狀態(tài);
從存儲(chǔ)區(qū)中獲取N個(gè)未發(fā)送的交易數(shù)據(jù),包括:
按照交易數(shù)據(jù)的時(shí)間信息,從存儲(chǔ)區(qū)中獲取N個(gè)狀態(tài)為未發(fā)送的交易數(shù)據(jù);;
將N個(gè)未發(fā)送的交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò),包括:
將N個(gè)交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)并將存儲(chǔ)的N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送。
可選地,將N個(gè)交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)并將存儲(chǔ)的N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送之后,還包括:
在區(qū)塊鏈網(wǎng)絡(luò)中處理完畢N個(gè)交易數(shù)據(jù)后,將存儲(chǔ)區(qū)中N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已處理;若在設(shè)定時(shí)間段內(nèi),N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送,則根據(jù)區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力重復(fù)發(fā)送N個(gè)交易數(shù)據(jù)。
本發(fā)明實(shí)施例還提供一種控制交易數(shù)據(jù)量的裝置,包括:
第一獲取單元:用于獲取多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù);
存儲(chǔ)單元:用于在存儲(chǔ)區(qū)中存儲(chǔ)交易數(shù)據(jù);
第二獲取單元:用于獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力;
確定單元:用于根據(jù)處理交易數(shù)據(jù)的能力,確定向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送的交易數(shù)據(jù)量N;
第三獲取單元:用于從存儲(chǔ)區(qū)中獲取N個(gè)未發(fā)送的交易數(shù)據(jù);
發(fā)送單元:用于將N個(gè)未發(fā)送的交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)。
可選地,第二獲取單元具體用于:
獲取設(shè)定時(shí)間段內(nèi)區(qū)塊鏈網(wǎng)絡(luò)處理的交易數(shù)據(jù)量;
根據(jù)設(shè)定時(shí)間段內(nèi)所述區(qū)塊鏈網(wǎng)絡(luò)處理的交易數(shù)據(jù)量,確定區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力。
可選地,發(fā)送單元還用于:
在區(qū)塊鏈網(wǎng)絡(luò)啟動(dòng)時(shí),向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送設(shè)定數(shù)量的交易數(shù)據(jù),設(shè)定數(shù)量是根據(jù)區(qū)塊鏈網(wǎng)絡(luò)中各節(jié)點(diǎn)的網(wǎng)絡(luò)帶寬及各節(jié)點(diǎn)的設(shè)備處理能力設(shè)定的。
可選地,存儲(chǔ)單元具體用于:
在存儲(chǔ)區(qū)中持久化存儲(chǔ)所述交易數(shù)據(jù),并標(biāo)記交易數(shù)據(jù)為未發(fā)送狀態(tài);
第三獲取單元具體用于:按照交易數(shù)據(jù)的時(shí)間信息,從存儲(chǔ)區(qū)中獲取N個(gè)狀態(tài)為未發(fā)送的交易數(shù)據(jù);
發(fā)送單元具體用于:將N個(gè)交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)并將存儲(chǔ)的N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送。
可選地,發(fā)送單元還用于:
在區(qū)塊鏈網(wǎng)絡(luò)中處理完畢N個(gè)交易數(shù)據(jù)后,將存儲(chǔ)區(qū)中N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已處理;若在設(shè)定時(shí)間段內(nèi),N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送,則根據(jù)區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力重復(fù)發(fā)送N個(gè)交易數(shù)據(jù)。
本發(fā)明實(shí)施例中提供了一種控制交易數(shù)據(jù)量的方法和裝置,獲取多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù)并在存儲(chǔ)區(qū)中存儲(chǔ)交易數(shù)據(jù);獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力;根據(jù)處理交易數(shù)據(jù)的能力,確定向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送的交易數(shù)據(jù)量N;從存儲(chǔ)區(qū)中獲取N個(gè)未發(fā)送的交易數(shù)據(jù);將N個(gè)未發(fā)送的交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)。本發(fā)明實(shí)施例中根據(jù)獲取的多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù),將這些交易數(shù)據(jù)在發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)之前先將這些交易數(shù)據(jù)在存儲(chǔ)區(qū)中持久化存儲(chǔ)起來(lái)和實(shí)時(shí)監(jiān)控區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力,能夠保證交易數(shù)據(jù)量在記賬節(jié)點(diǎn)寫(xiě)入?yún)^(qū)塊的能力內(nèi),進(jìn)而保證交易數(shù)據(jù)不被丟失,確定從存儲(chǔ)區(qū)需要獲取的交易數(shù)據(jù)量N可控的發(fā)送給區(qū)塊鏈網(wǎng)絡(luò),能夠有效防止因發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)的交易數(shù)據(jù)量超過(guò)區(qū)塊鏈網(wǎng)絡(luò)所能處理交易數(shù)據(jù)的能力而容易使區(qū)塊鏈網(wǎng)絡(luò)出現(xiàn)癱瘓導(dǎo)致廣播風(fēng)暴的現(xiàn)象。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)要介紹。
圖1為本發(fā)明實(shí)施例提供了一種控制交易數(shù)據(jù)量的系統(tǒng)示意圖;
圖2為本發(fā)明實(shí)施例提供了一種控制交易數(shù)據(jù)量的方法示意圖;
圖3為本發(fā)明實(shí)施例提供的一種控制交易數(shù)據(jù)量的裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
為了更好地理解本方案中的系統(tǒng)整體架構(gòu),下面對(duì)系統(tǒng)的整體架構(gòu)作一下說(shuō)明,系統(tǒng)的架構(gòu)圖如下圖1所示:
圖1示例性示出了本發(fā)明實(shí)施例提供的一種控制交易數(shù)據(jù)量的系統(tǒng)示意圖,如圖1所示,包括多個(gè)應(yīng)用、流量控制器和區(qū)塊鏈網(wǎng)絡(luò)。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例在應(yīng)用與區(qū)塊鏈網(wǎng)絡(luò)之間增加了處理單元,如圖1中的流量控制器,從而解決了應(yīng)用中的大量交易數(shù)據(jù)涌入?yún)^(qū)塊鏈網(wǎng)絡(luò),流量控制器又包括:流量控制模塊、存儲(chǔ)區(qū)。其中,在具體實(shí)施中,存儲(chǔ)區(qū)可以是消息隊(duì)列。流量控制器獲取應(yīng)用的多個(gè)交易數(shù)據(jù)并存儲(chǔ)起來(lái),流量控制器可以周期性從各應(yīng)用中獲取交易數(shù)據(jù),也可以是多個(gè)應(yīng)用將交易數(shù)據(jù)發(fā)送給流量控制器;流量控制器實(shí)時(shí)監(jiān)控區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力,從而確定需要向區(qū)塊鏈網(wǎng)絡(luò)推送的交易數(shù)據(jù)量。本發(fā)明實(shí)施例中根據(jù)區(qū)塊鏈網(wǎng)絡(luò)當(dāng)前處理交易數(shù)據(jù)的能力確定后續(xù)向區(qū)塊鏈網(wǎng)絡(luò)推送的交易數(shù)據(jù)量,從而解決了現(xiàn)有技術(shù)中多個(gè)應(yīng)用將大量的交易數(shù)據(jù)直接提交到區(qū)塊鏈網(wǎng)絡(luò),導(dǎo)致區(qū)塊鏈網(wǎng)絡(luò)癱瘓或出現(xiàn)廣播風(fēng)暴的現(xiàn)象。
圖2示例性示出了本發(fā)明實(shí)施例提供的一種控制交易數(shù)據(jù)量的方法流程示意圖,如圖2所示,包括以下步驟:
步驟S101:獲取多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù)并在存儲(chǔ)區(qū)中存儲(chǔ)交易數(shù)據(jù);
步驟S102:獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力;
步驟S103:根據(jù)處理交易數(shù)據(jù)的能力,確定向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送的交易數(shù)據(jù)量N;
步驟S104:從存儲(chǔ)區(qū)中獲取N個(gè)未發(fā)送的交易數(shù)據(jù);
步驟S105:將N個(gè)未發(fā)送的交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)。
應(yīng)理解,本發(fā)明實(shí)施例的技術(shù)方案可以應(yīng)用于各種互聯(lián)網(wǎng)金融體系中,例如比特幣系統(tǒng)等,所進(jìn)行交易的介質(zhì)可以是比特幣、以太幣、萊特幣等。
上述實(shí)施例中,獲取多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù)可以是應(yīng)用完成交易后立即發(fā)送,也可以是應(yīng)用周期性發(fā)送,也可以是周期性從各應(yīng)用中獲取交易數(shù)據(jù)。其中,只要能夠產(chǎn)生交易記錄的應(yīng)用均適用于本發(fā)明的實(shí)施例,比如支付寶、淘寶等;存儲(chǔ)的數(shù)據(jù)是一個(gè)對(duì)象,例如,如果是轉(zhuǎn)賬的話,對(duì)象中會(huì)包括時(shí)間、轉(zhuǎn)賬雙方賬號(hào)、轉(zhuǎn)賬金額等信息,如果是一段文字記錄,對(duì)象中會(huì)包括信息內(nèi)容和信息發(fā)送者的標(biāo)識(shí);存儲(chǔ)的類型可以是文件存儲(chǔ)、緩存、關(guān)系型數(shù)據(jù)存儲(chǔ)、非關(guān)系型數(shù)據(jù)存儲(chǔ)等,用于保障交易數(shù)據(jù)的可用性,存儲(chǔ)的類型包括這些類型但不限于這些類型,還可以是其它類型。
可選地,獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力,包括:獲取設(shè)定時(shí)間段內(nèi)區(qū)塊鏈網(wǎng)絡(luò)處理的交易數(shù)據(jù)量;根據(jù)設(shè)定時(shí)間段內(nèi)區(qū)塊鏈網(wǎng)絡(luò)處理的交易數(shù)據(jù)量,確定區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力。具體來(lái)說(shuō),可以周期性統(tǒng)計(jì)區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力,如區(qū)塊鏈網(wǎng)絡(luò)周期性上報(bào)記賬節(jié)點(diǎn)在一定時(shí)間內(nèi)新增的交易記錄等。其中,區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力可以是區(qū)塊鏈網(wǎng)絡(luò)的吞吐量,流量控制器獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力可以通過(guò)以下方式獲?。?/p>
方式一:流量控制模塊將K個(gè)交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò),流量控制模塊記錄發(fā)送時(shí)間;區(qū)塊鏈網(wǎng)絡(luò)在處理完K個(gè)交易數(shù)據(jù)后,向流量控制模塊反饋時(shí)間信息,從而得到了K個(gè)交易數(shù)據(jù)的處理時(shí)間。此處處理完交易數(shù)據(jù)的時(shí)間為各記賬節(jié)點(diǎn)均已下載了該K個(gè)交易數(shù)據(jù)的區(qū)塊。比如,區(qū)塊鏈網(wǎng)絡(luò)在設(shè)定時(shí)間段20秒內(nèi)共處理了500個(gè)交易數(shù)據(jù),那么區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力為500/20個(gè)每秒;
方式二:區(qū)塊鏈網(wǎng)絡(luò)記錄一個(gè)區(qū)塊內(nèi)的第一個(gè)交易數(shù)據(jù)的接收時(shí)間至該區(qū)塊的生成時(shí)間,得到該區(qū)塊內(nèi)的交易數(shù)據(jù)的處理時(shí)間,從而得到區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力。區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力可以通過(guò)統(tǒng)計(jì)多個(gè)區(qū)塊的信息得到一個(gè)平均的處理交易數(shù)據(jù)的能力。比如,在20秒內(nèi)區(qū)塊鏈網(wǎng)絡(luò)處理了500個(gè)交易,第一個(gè)交易被提交到區(qū)塊鏈網(wǎng)絡(luò)的時(shí)間戳是1723456983,在整個(gè)區(qū)塊鏈網(wǎng)絡(luò)中被存在了3個(gè)區(qū)塊中,假如是區(qū)塊1、區(qū)塊2、區(qū)塊3,最后一個(gè)區(qū)塊3生成的時(shí)間戳是1723457012,那么接收500個(gè)交易數(shù)據(jù)中的第一個(gè)交易至生成500個(gè)交易數(shù)據(jù)的最后一個(gè)區(qū)塊3的時(shí)間段為1723457012-1723456983秒,因此,區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力為500/29個(gè)每秒。其中,第一個(gè)交易被提交到區(qū)塊鏈網(wǎng)絡(luò)的時(shí)間以及最后一個(gè)區(qū)塊生成的時(shí)間在區(qū)塊和區(qū)塊中的交易中都是有字段標(biāo)識(shí)的。
通過(guò)流量監(jiān)控器實(shí)時(shí)監(jiān)控區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力去計(jì)算必要的數(shù)據(jù),能夠保證區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)是在自己的能力范圍內(nèi),并非是現(xiàn)有技術(shù)中沒(méi)有考慮區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力,而直接將大量的交易數(shù)據(jù)涌向區(qū)塊鏈網(wǎng)絡(luò)有可能造成區(qū)塊鏈網(wǎng)絡(luò)出現(xiàn)癱瘓的現(xiàn)象。
可選地,在區(qū)塊鏈網(wǎng)絡(luò)啟動(dòng)時(shí),向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送設(shè)定數(shù)量的交易數(shù)據(jù),設(shè)定數(shù)量是根據(jù)區(qū)塊鏈網(wǎng)絡(luò)中各節(jié)點(diǎn)的網(wǎng)絡(luò)帶寬及各節(jié)點(diǎn)的設(shè)備處理能力設(shè)定的。具體來(lái)說(shuō),當(dāng)區(qū)塊鏈網(wǎng)絡(luò)啟動(dòng)的時(shí)候,流量監(jiān)控服務(wù)會(huì)去監(jiān)控區(qū)塊鏈網(wǎng)絡(luò),如果發(fā)現(xiàn)區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力為0,那么消息隊(duì)列向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送設(shè)定數(shù)量的交易數(shù)據(jù)。其中,具體實(shí)施中,設(shè)定數(shù)量的交易數(shù)據(jù)是由測(cè)試得到的,在區(qū)塊鏈網(wǎng)絡(luò)上線前都會(huì)做相應(yīng)的壓力測(cè)試,會(huì)測(cè)出在保證區(qū)塊鏈網(wǎng)絡(luò)正常運(yùn)行情況下的穩(wěn)定吞吐量;當(dāng)區(qū)塊鏈網(wǎng)絡(luò)啟動(dòng)的時(shí)候,如果區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力為0,這是由于剛開(kāi)始未想向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送交易數(shù)據(jù)。
可選地,在存儲(chǔ)區(qū)中存儲(chǔ)交易數(shù)據(jù),包括:在存儲(chǔ)區(qū)中持久化存儲(chǔ)交易數(shù)據(jù),并標(biāo)記交易數(shù)據(jù)為未發(fā)送狀態(tài);從存儲(chǔ)區(qū)中獲取N個(gè)未發(fā)送的交易數(shù)據(jù),包括:按照交易數(shù)據(jù)的時(shí)間信息,從存儲(chǔ)區(qū)中獲取N個(gè)狀態(tài)為未發(fā)送的交易數(shù)據(jù);將N個(gè)未發(fā)送的交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò),包括:將N個(gè)交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)并將存儲(chǔ)的N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送。其中,存儲(chǔ)區(qū)可以是消息隊(duì)列。具體來(lái)說(shuō),消息隊(duì)列接收多個(gè)應(yīng)用發(fā)送過(guò)來(lái)的交易數(shù)據(jù),比如為500個(gè)交易數(shù)據(jù),消息隊(duì)列將這500個(gè)交易數(shù)據(jù)標(biāo)記為未發(fā)送狀態(tài),其中,可以是多個(gè)應(yīng)用發(fā)送交易數(shù)據(jù)給消息隊(duì)列,也可以是消息隊(duì)列從多個(gè)應(yīng)用中獲取交易數(shù)據(jù);然后通過(guò)流量控制模塊監(jiān)控區(qū)塊鏈網(wǎng)絡(luò)的吞吐量得到區(qū)塊鏈網(wǎng)絡(luò)的處理數(shù)據(jù)的能力假如是200個(gè)交易數(shù)據(jù),根據(jù)區(qū)塊鏈網(wǎng)絡(luò)的處理數(shù)據(jù)的能力接著去調(diào)整消息隊(duì)列的流量游標(biāo)大??;最后消息隊(duì)列按照交易數(shù)據(jù)的時(shí)間先后順序?qū)?00個(gè)交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò),同時(shí)消息隊(duì)列會(huì)將存儲(chǔ)的這200個(gè)交易數(shù)據(jù)標(biāo)記為已發(fā)送。其中,在具體實(shí)施中,消息隊(duì)列是不斷向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送交易數(shù)據(jù)的。流量控制模塊會(huì)根據(jù)向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送交易數(shù)據(jù)量而調(diào)節(jié)消息隊(duì)列的流量游標(biāo)大小,控制消息隊(duì)列模塊向區(qū)塊鏈網(wǎng)絡(luò)每秒發(fā)送的交易數(shù)據(jù),可以看出,通過(guò)流量控制模塊監(jiān)控調(diào)節(jié)消息隊(duì)列模塊發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)中的交易數(shù)據(jù)量,進(jìn)而防止由于交易數(shù)據(jù)過(guò)多而造成部分交易數(shù)據(jù)被忽略的現(xiàn)象。
可選地,從消息隊(duì)列中獲取N個(gè)交易數(shù)據(jù)并發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)之后,還包括:在區(qū)塊鏈網(wǎng)絡(luò)中處理完畢N個(gè)交易數(shù)據(jù)后,將存儲(chǔ)區(qū)中N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已處理;若在設(shè)定時(shí)間段內(nèi),N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送,則根據(jù)區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力重復(fù)發(fā)送N個(gè)交易數(shù)據(jù)。具體來(lái)說(shuō),從消息隊(duì)列獲取200個(gè)交易數(shù)據(jù)并發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)之后,消息隊(duì)列會(huì)將這200個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已處理;如果在設(shè)定的時(shí)間段內(nèi),假如20秒內(nèi),200個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送,一般情況下,當(dāng)區(qū)塊鏈網(wǎng)絡(luò)接收到消息隊(duì)列發(fā)送的交易數(shù)據(jù)并已經(jīng)處理后,會(huì)反饋一個(gè)已處理的消息給消息隊(duì)列,若沒(méi)有反饋消息給消息隊(duì)列,那么根據(jù)區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力消息隊(duì)列會(huì)重復(fù)發(fā)送這200個(gè)交易數(shù)據(jù)。另外,當(dāng)下次消息隊(duì)列發(fā)送交易數(shù)據(jù)給區(qū)塊鏈網(wǎng)絡(luò)時(shí),消息隊(duì)列會(huì)將上次標(biāo)記為已處理的交易數(shù)據(jù)過(guò)濾掉。將在消息隊(duì)列已經(jīng)發(fā)送的交易數(shù)據(jù)標(biāo)記為已處理,避免交易數(shù)據(jù)的重復(fù)發(fā)送,能夠提高網(wǎng)絡(luò)處理交易數(shù)據(jù)的效率。
從上述內(nèi)容可看出:本發(fā)明實(shí)施例中提供一種控制交易數(shù)據(jù)量的方法和裝置,獲取多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù)并在存儲(chǔ)區(qū)中存儲(chǔ)交易數(shù)據(jù);獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力;根據(jù)處理交易數(shù)據(jù)的能力,確定向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送的交易數(shù)據(jù)量N;從存儲(chǔ)區(qū)中獲取N個(gè)未發(fā)送的交易數(shù)據(jù);將N個(gè)未發(fā)送的交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)。本發(fā)明實(shí)施例中根據(jù)獲取的多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù),將這些交易數(shù)據(jù)在發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)之前先將這些交易數(shù)據(jù)在存儲(chǔ)區(qū)中持久化存儲(chǔ)起來(lái)和通過(guò)實(shí)時(shí)監(jiān)控區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力,能夠保證交易數(shù)據(jù)量在記賬節(jié)點(diǎn)寫(xiě)入?yún)^(qū)塊的能力內(nèi),進(jìn)而保證交易數(shù)據(jù)不被丟失,確定從存儲(chǔ)區(qū)需要獲取的交易數(shù)據(jù)量N可控的并發(fā)送給區(qū)塊鏈網(wǎng)絡(luò),能夠有效防止因發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)的交易數(shù)據(jù)量超過(guò)區(qū)塊鏈網(wǎng)絡(luò)所能處理交易數(shù)據(jù)的能力而容易使區(qū)塊鏈網(wǎng)絡(luò)出現(xiàn)癱瘓導(dǎo)致廣播風(fēng)暴的現(xiàn)象。
圖3示例性示出了本發(fā)明實(shí)施例提供的一種控制交易數(shù)據(jù)量的裝置結(jié)構(gòu)示意圖。
基于相同構(gòu)思,本發(fā)明實(shí)施例提供的一種控制交易數(shù)據(jù)量的裝置,如圖3所示,該裝置包括第一獲取單元201、存儲(chǔ)單元202、第二獲取單元203、確定單元204、第三獲取單元205和發(fā)送單元206。其中:
第一獲取單元201:用于獲取多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù);
存儲(chǔ)單元202:用于在存儲(chǔ)區(qū)中存儲(chǔ)交易數(shù)據(jù);
第二獲取單元203:用于獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力;
確定單元204:用于根據(jù)處理交易數(shù)據(jù)的能力,確定向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送的交易數(shù)據(jù)量N;
第三獲取單元205:用于從存儲(chǔ)區(qū)中獲取N個(gè)未發(fā)送的交易數(shù)據(jù);
發(fā)送單元206:用于將N個(gè)未發(fā)送的交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)。
可選地,第二獲取單元具體用于:
獲取設(shè)定時(shí)間段內(nèi)區(qū)塊鏈網(wǎng)絡(luò)處理的交易數(shù)據(jù)量;根據(jù)設(shè)定時(shí)間段內(nèi)區(qū)塊鏈網(wǎng)絡(luò)處理的交易數(shù)據(jù)量,確定區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力。
可選地,發(fā)送單元還用于:
在區(qū)塊鏈網(wǎng)絡(luò)啟動(dòng)時(shí),向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送設(shè)定數(shù)量的交易數(shù)據(jù),設(shè)定數(shù)量是根據(jù)區(qū)塊鏈網(wǎng)絡(luò)中各節(jié)點(diǎn)的網(wǎng)絡(luò)帶寬及各節(jié)點(diǎn)的設(shè)備處理能力設(shè)定的。
可選地,存儲(chǔ)單元具體用于:
在存儲(chǔ)區(qū)中持久化存儲(chǔ)交易數(shù)據(jù),并標(biāo)記交易數(shù)據(jù)為未發(fā)送狀態(tài);
第三獲取單元具體用于:按照交易數(shù)據(jù)的時(shí)間信息,從存儲(chǔ)區(qū)中獲取N個(gè)狀態(tài)為未發(fā)送的交易數(shù)據(jù);
發(fā)送單元具體用于:將N個(gè)交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)并將存儲(chǔ)的N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送。
可選地,發(fā)送單元還用于:
在區(qū)塊鏈網(wǎng)絡(luò)中處理完畢N個(gè)交易數(shù)據(jù)后,將存儲(chǔ)區(qū)中N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已處理;若在設(shè)定時(shí)間段內(nèi),N個(gè)交易數(shù)據(jù)的狀態(tài)標(biāo)記為已發(fā)送,則根據(jù)區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力重復(fù)發(fā)送N個(gè)交易數(shù)據(jù)。
從上述內(nèi)容可看出:本發(fā)明實(shí)施例中提供一種控制交易數(shù)據(jù)量的方法和裝置,獲取多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù)并在存儲(chǔ)區(qū)中存儲(chǔ)交易數(shù)據(jù);獲取區(qū)塊鏈網(wǎng)絡(luò)的處理交易數(shù)據(jù)的能力;根據(jù)處理交易數(shù)據(jù)的能力,確定向區(qū)塊鏈網(wǎng)絡(luò)發(fā)送的交易數(shù)據(jù)量N;從存儲(chǔ)區(qū)中獲取N個(gè)未發(fā)送的交易數(shù)據(jù);將N個(gè)未發(fā)送的交易數(shù)據(jù)發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)。本發(fā)明實(shí)施例中根據(jù)獲取的多個(gè)應(yīng)用發(fā)送的交易數(shù)據(jù),將這些交易數(shù)據(jù)在發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)之前先將這些交易數(shù)據(jù)在存儲(chǔ)區(qū)中持久化存儲(chǔ)起來(lái)和通過(guò)實(shí)時(shí)監(jiān)控區(qū)塊鏈網(wǎng)絡(luò)處理交易數(shù)據(jù)的能力,能夠保證交易數(shù)據(jù)量在記賬節(jié)點(diǎn)寫(xiě)入?yún)^(qū)塊的能力內(nèi),進(jìn)而保證交易數(shù)據(jù)不被丟失,確定從存儲(chǔ)區(qū)需要獲取的交易數(shù)據(jù)量N可控的并發(fā)送給區(qū)塊鏈網(wǎng)絡(luò),能夠有效防止因發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)的交易數(shù)據(jù)量超過(guò)區(qū)塊鏈網(wǎng)絡(luò)所能處理交易數(shù)據(jù)的能力而容易使區(qū)塊鏈網(wǎng)絡(luò)出現(xiàn)癱瘓導(dǎo)致廣播風(fēng)暴的現(xiàn)象。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(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è)方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。