本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別是涉及一種多區(qū)塊鏈的分片處理方法和裝置。
背景技術(shù):
區(qū)塊鏈的應(yīng)用級(jí)代碼是指在區(qū)塊鏈的應(yīng)用領(lǐng)域所調(diào)用的應(yīng)用層面的代碼。區(qū)塊鏈的應(yīng)用領(lǐng)域包括智能合約、證券交易和電子商務(wù)等。應(yīng)用級(jí)代碼初始化后被存儲(chǔ)在區(qū)塊鏈中,通過應(yīng)用級(jí)代碼可以在區(qū)塊鏈上進(jìn)行交易,交易結(jié)果保存在區(qū)塊鏈中。在傳統(tǒng)的區(qū)塊鏈平臺(tái)中,通常只有一個(gè)區(qū)塊鏈,區(qū)塊鏈涵蓋了多種業(yè)務(wù)類型,通過這一區(qū)塊鏈可以進(jìn)行多種業(yè)務(wù)類型的電子交易。如果在同一時(shí)間內(nèi)向這一區(qū)塊鏈發(fā)起了海量的交易請(qǐng)求,無疑會(huì)對(duì)區(qū)塊鏈的性能帶來極大影響,甚至?xí)?dǎo)致區(qū)塊鏈平臺(tái)宕機(jī)。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)上述技術(shù)問題,提供一種在面對(duì)海量交易請(qǐng)求時(shí)能夠有效提高區(qū)塊鏈性能的多區(qū)塊鏈的分片處理方法和裝置。
一種多區(qū)塊鏈的分片處理方法,所述方法包括:
接收應(yīng)用客戶端發(fā)送的交易請(qǐng)求,所述交易請(qǐng)求中攜帶了應(yīng)用客戶端參數(shù),所述應(yīng)用客戶端參數(shù)包括業(yè)務(wù)類型;
獲取多個(gè)區(qū)塊鏈的區(qū)塊鏈標(biāo)識(shí),所述區(qū)塊鏈具有對(duì)應(yīng)的業(yè)務(wù)類型,所述區(qū)塊鏈上部署了應(yīng)用級(jí)代碼;
對(duì)所述應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與所述交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí);
將所述交易請(qǐng)求分配至與已選擇的區(qū)塊鏈標(biāo)識(shí)對(duì)應(yīng)的區(qū)塊鏈,使得所述區(qū)塊鏈上部署的應(yīng)用級(jí)代碼根據(jù)所述應(yīng)用客戶端參數(shù)完成交易。
在其中一個(gè)實(shí)施例中,所述應(yīng)用客戶端參數(shù)還包括業(yè)務(wù)標(biāo)識(shí),所述對(duì)所述應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與所述交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)的步驟包括:
若與所述交易請(qǐng)求中攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)為多個(gè),則根據(jù)所述業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合;
根據(jù)哈希結(jié)果集合選擇與所述交易請(qǐng)求對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)。
在其中一個(gè)實(shí)施例中,所述應(yīng)用客戶端參數(shù)還包括業(yè)務(wù)標(biāo)識(shí),所述對(duì)所述應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與所述交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)的步驟包括:
若與所述交易請(qǐng)求中攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)為多個(gè),則將相同業(yè)務(wù)類型的區(qū)塊鏈作為物理區(qū)塊鏈,并將物理區(qū)塊鏈分為多個(gè)虛擬區(qū)塊鏈;
獲取所述多個(gè)虛擬區(qū)塊鏈對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí);
根據(jù)所述業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)虛擬區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合;
根據(jù)哈希結(jié)果集合選擇與所述交易請(qǐng)求對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí)。
在其中一個(gè)實(shí)施例中,所述對(duì)所述應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與所述交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)的步驟包括:
當(dāng)區(qū)塊鏈的數(shù)量發(fā)生變化時(shí),獲取映射表,所述映射表包括應(yīng)用客戶端參數(shù)與區(qū)塊鏈標(biāo)識(shí)之間的映射關(guān)系,所述應(yīng)用客戶端參數(shù)包括業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí);
根據(jù)所述映射關(guān)系以及所述交易請(qǐng)求中攜帶的業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí)在所述映射表中檢索對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí),將檢索到的區(qū)塊鏈標(biāo)識(shí)記錄為已選擇的區(qū)塊鏈標(biāo)識(shí)。
在其中一個(gè)實(shí)施例中,所述方法還包括:
接收所述應(yīng)用客戶端發(fā)送的事件消息流獲取請(qǐng)求;
將所述事件消息流獲取請(qǐng)求發(fā)送至所述交易請(qǐng)求所分配的區(qū)塊鏈;
當(dāng)所述區(qū)塊鏈通過應(yīng)用級(jí)代碼執(zhí)行交易時(shí),獲取對(duì)應(yīng)的事件消息流,將所述事件消息流返回至應(yīng)用客戶端。
一種多區(qū)塊鏈的分片處理裝置,所述裝置包括:
應(yīng)用級(jí)代碼分片服務(wù)端,用于接收應(yīng)用客戶端的交易請(qǐng)求,所述交易請(qǐng)求中攜帶了應(yīng)用客戶端參數(shù),所述應(yīng)用客戶端參數(shù)包括業(yè)務(wù)類型;獲取多個(gè)區(qū)塊鏈的區(qū)塊鏈標(biāo)識(shí),所述區(qū)塊鏈具有對(duì)應(yīng)的業(yè)務(wù)類型,所述區(qū)塊鏈上部署了應(yīng)用級(jí)代碼;對(duì)所述應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與所述交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí);
應(yīng)用級(jí)代碼分片客戶端,用于將所述交易請(qǐng)求分配至與已選擇的區(qū)塊鏈標(biāo)識(shí)對(duì)應(yīng)的區(qū)塊鏈,使得所述區(qū)塊鏈上部署的應(yīng)用級(jí)代碼根據(jù)所述應(yīng)用客戶端參數(shù)完成交易。
在其中一個(gè)實(shí)施例中,所述應(yīng)用客戶端參數(shù)還包括業(yè)務(wù)標(biāo)識(shí),所述應(yīng)用級(jí)代碼分片服務(wù)端還用于若與所述交易請(qǐng)求中攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)為多個(gè),則根據(jù)所述業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合;根據(jù)哈希結(jié)果集合選擇與所述交易請(qǐng)求對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)。
在其中一個(gè)實(shí)施例中,所述應(yīng)用客戶端參數(shù)還包括業(yè)務(wù)標(biāo)識(shí),所述應(yīng)用級(jí)代碼分片服務(wù)端還用于若與所述交易請(qǐng)求中攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)為多個(gè),則將相同業(yè)務(wù)類型的區(qū)塊鏈作為物理區(qū)塊鏈,并將物理區(qū)塊鏈分為多個(gè)虛擬區(qū)塊鏈;獲取所述多個(gè)虛擬區(qū)塊鏈對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí);根據(jù)所述業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)虛擬區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合;根據(jù)哈希結(jié)果集合選擇與所述交易請(qǐng)求對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí)。
在其中一個(gè)實(shí)施例中,所述應(yīng)用級(jí)代碼分片服務(wù)端還用于當(dāng)區(qū)塊鏈的數(shù)量發(fā)生變化時(shí),獲取映射表,所述映射表包括應(yīng)用客戶端參數(shù)與區(qū)塊鏈標(biāo)識(shí)之間的映射關(guān)系,所述應(yīng)用客戶端參數(shù)包括業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí);根據(jù)所述映射關(guān)系以及所述交易請(qǐng)求中攜帶的業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí)在所述映射表中檢索對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí),將檢索到的區(qū)塊鏈標(biāo)識(shí)記錄為已選擇的區(qū)塊鏈標(biāo)識(shí)。
在其中一個(gè)實(shí)施例中,所述裝置還包括:
事件消息服務(wù)端,用于接收所述應(yīng)用客戶端發(fā)送的事件消息流獲取請(qǐng)求;將所述事件消息流獲取請(qǐng)求發(fā)送至所述交易請(qǐng)求所分配的區(qū)塊鏈;
事件消息客戶端,用于當(dāng)所述區(qū)塊鏈通過應(yīng)用級(jí)代碼執(zhí)行交易時(shí),獲取對(duì)應(yīng)的事件消息流,將所述事件消息流返回至應(yīng)用客戶端。
上述多區(qū)塊鏈的分片處理方法和裝置,在接收到應(yīng)用客戶端的交易請(qǐng)求之后,對(duì)交易請(qǐng)求中攜帶的應(yīng)用客戶端參數(shù)進(jìn)行解析,在多個(gè)區(qū)塊鏈標(biāo)識(shí)中選擇與交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí),從而將交易請(qǐng)求分配至已選擇出的區(qū)塊鏈標(biāo)識(shí)所對(duì)應(yīng)的區(qū)塊鏈,以此使得區(qū)塊鏈上部署的應(yīng)用級(jí)代碼根據(jù)應(yīng)用客戶端參數(shù)完成交易。由于區(qū)塊鏈具有對(duì)應(yīng)的業(yè)務(wù)類型,交易請(qǐng)求會(huì)被分配至業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈,在面對(duì)海量交易請(qǐng)求時(shí),能夠使得不同業(yè)務(wù)類型的交易在不同的區(qū)塊鏈中進(jìn)行,有效提高了區(qū)塊鏈的性能。
附圖說明
圖1為一個(gè)實(shí)施例中多區(qū)塊鏈的分片處理方法的應(yīng)用環(huán)境圖;
圖2為一個(gè)實(shí)施例中多區(qū)塊鏈的分片處理方法的流程圖;
圖3為一個(gè)實(shí)施例中多區(qū)塊鏈的分片處理系統(tǒng)的連接示意圖;
圖4為一個(gè)實(shí)施例中服務(wù)器的結(jié)構(gòu)示意圖;
圖5為一個(gè)實(shí)施例中多區(qū)塊鏈的分片處理裝置的結(jié)構(gòu)示意圖;
圖6為另一個(gè)實(shí)施例中多區(qū)塊鏈的分片處理裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明實(shí)施例中所提供的多區(qū)塊鏈的分片處理處理方法可以應(yīng)用于如圖1所示的應(yīng)用環(huán)境中。其中,客戶終端102通過網(wǎng)絡(luò)與服務(wù)器104進(jìn)行連接??蛻艚K端102上安裝了應(yīng)用客戶端。每種應(yīng)用客戶端可以用來進(jìn)行一種業(yè)務(wù)類型的交易。服務(wù)器104上運(yùn)行了應(yīng)用級(jí)代碼分片服務(wù)端以及多個(gè)應(yīng)用級(jí)代碼分片客戶端。其中,應(yīng)用級(jí)代碼分片客戶端與區(qū)塊鏈一一對(duì)應(yīng)。應(yīng)用級(jí)代碼分片服務(wù)端接收應(yīng)用客戶端發(fā)送的交易請(qǐng)求。交易請(qǐng)求中攜帶了應(yīng)用客戶端參數(shù)。應(yīng)用級(jí)代碼分片服務(wù)端對(duì)應(yīng)用客戶端參數(shù)進(jìn)行解析,得到其包含的業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和交易數(shù)據(jù)。應(yīng)用級(jí)代碼分片服務(wù)端獲取多個(gè)區(qū)塊鏈的區(qū)塊鏈標(biāo)識(shí),在這多個(gè)區(qū)塊鏈標(biāo)識(shí)中選擇與交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)。區(qū)塊鏈與應(yīng)用級(jí)代碼分片客戶端是一一對(duì)應(yīng)的,應(yīng)用級(jí)代碼分片服務(wù)端根據(jù)已選出的區(qū)塊鏈標(biāo)識(shí)選擇相應(yīng)的應(yīng)用級(jí)代碼分片客戶端,將交易請(qǐng)求轉(zhuǎn)發(fā)至應(yīng)用級(jí)代碼分片客戶端。應(yīng)用級(jí)代碼分片客戶端根據(jù)交易請(qǐng)求調(diào)用對(duì)應(yīng)的區(qū)塊鏈的外部接口,以此調(diào)用區(qū)塊鏈上部署的應(yīng)用級(jí)代碼根據(jù)應(yīng)用客戶端參數(shù)來執(zhí)行交易。由于區(qū)塊鏈具有對(duì)應(yīng)的業(yè)務(wù)類型,交易請(qǐng)求會(huì)被分配至業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈,在面對(duì)海量交易請(qǐng)求時(shí),能夠使得不同業(yè)務(wù)類型的交易在不同的區(qū)塊鏈中進(jìn)行,有效提高了區(qū)塊鏈的性能。
在一個(gè)實(shí)施例中,如圖2所示,提供了一種多區(qū)塊鏈的分片處理方法,以該方法應(yīng)用于圖1中的服務(wù)器為例進(jìn)行說明,具體包括:
步驟202,接收應(yīng)用客戶端發(fā)送的交易請(qǐng)求,所述交易請(qǐng)求中攜帶了應(yīng)用客戶端參數(shù),所述應(yīng)用客戶端參數(shù)包括業(yè)務(wù)類型。
步驟204,獲取多個(gè)區(qū)塊鏈的區(qū)塊鏈標(biāo)識(shí),區(qū)塊鏈具有對(duì)應(yīng)的業(yè)務(wù)類型,區(qū)塊鏈上部署了應(yīng)用級(jí)代碼。
步驟206,對(duì)應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)。
步驟208,將交易請(qǐng)求分配至與已選擇的區(qū)塊鏈標(biāo)識(shí)對(duì)應(yīng)的區(qū)塊鏈,使得區(qū)塊鏈上部署的應(yīng)用級(jí)代碼根據(jù)應(yīng)用客戶端參數(shù)完成交易。
客戶終端上安裝了應(yīng)用客戶端。每種應(yīng)用客戶端可以用來進(jìn)行一種業(yè)務(wù)類型的交易??蛻艚K端通過不同的應(yīng)用客戶端可以進(jìn)行不同業(yè)務(wù)類型的交易。同一個(gè)客戶終端上可以安裝一個(gè)應(yīng)用客戶端,也可以安裝多個(gè)應(yīng)用客戶端。
在區(qū)塊鏈平臺(tái)中,按照業(yè)務(wù)類型生成多個(gè)區(qū)塊鏈。每個(gè)區(qū)塊鏈都具有對(duì)應(yīng)的業(yè)務(wù)類型,同一業(yè)務(wù)類型也可以對(duì)應(yīng)多個(gè)區(qū)塊鏈。每個(gè)區(qū)塊鏈都可以具有相應(yīng)的區(qū)塊鏈標(biāo)識(shí)。例如,區(qū)塊鏈標(biāo)識(shí)可以是區(qū)塊鏈的編號(hào)。每個(gè)區(qū)塊鏈上可以按照預(yù)設(shè)規(guī)則部署應(yīng)用級(jí)代碼,區(qū)塊鏈為應(yīng)用級(jí)代碼提供了多類外部接口。外部接口包括初始化接口、交易調(diào)用接口、交易結(jié)果查詢接口和區(qū)塊鏈狀態(tài)查詢接口等。區(qū)塊鏈的使用者可以通過應(yīng)用客戶端和服務(wù)器調(diào)用這些外部接口時(shí)可以調(diào)用指定的區(qū)塊鏈上部署的應(yīng)用級(jí)代碼,從而可以使得每個(gè)區(qū)塊鏈分別執(zhí)行與其業(yè)務(wù)類型對(duì)應(yīng)的交易。這也可以稱為應(yīng)用級(jí)代碼的分片。
服務(wù)器上運(yùn)行了應(yīng)用級(jí)代碼分片服務(wù)端以及多個(gè)應(yīng)用級(jí)代碼分片客戶端。其中,應(yīng)用級(jí)代碼分片客戶端與區(qū)塊鏈一一對(duì)應(yīng)。在應(yīng)用級(jí)代碼分片服務(wù)端以及多個(gè)應(yīng)用級(jí)代碼分片客戶端啟動(dòng)時(shí),應(yīng)用級(jí)代碼分片服務(wù)端與多個(gè)應(yīng)用客戶端建立連接,應(yīng)用級(jí)代碼分片客戶端與一一對(duì)應(yīng)的區(qū)塊鏈上所部署的應(yīng)用級(jí)代碼建立連接。
服務(wù)器上運(yùn)行的應(yīng)用級(jí)代碼分片服務(wù)端接收應(yīng)用客戶端發(fā)送的交易請(qǐng)求。交易請(qǐng)求中攜帶了應(yīng)用客戶端參數(shù)。應(yīng)用級(jí)代碼分片服務(wù)端對(duì)應(yīng)用客戶端參數(shù)進(jìn)行解析,得到其包含的業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和交易數(shù)據(jù)。其中,交易數(shù)據(jù)包括交易對(duì)象、交易金額和交易日期等。應(yīng)用級(jí)代碼分片服務(wù)端獲取多個(gè)區(qū)塊鏈的區(qū)塊鏈標(biāo)識(shí),在這多個(gè)區(qū)塊鏈標(biāo)識(shí)中選擇與交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)。具體地,如果與交易請(qǐng)求中攜帶的業(yè)務(wù)類型所對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)只有一個(gè),則將該區(qū)塊鏈標(biāo)識(shí)記錄為已選出的區(qū)塊鏈標(biāo)識(shí)。如果與交易請(qǐng)求中攜帶的業(yè)務(wù)類型所對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)有多個(gè),則應(yīng)用級(jí)代碼分片服務(wù)端根據(jù)區(qū)塊鏈標(biāo)識(shí)進(jìn)行負(fù)載均衡處理,在多個(gè)相同業(yè)務(wù)類型的區(qū)塊鏈標(biāo)識(shí)中選擇其中一個(gè),并將選擇出的區(qū)塊鏈標(biāo)識(shí)記錄為已選出的區(qū)塊鏈標(biāo)識(shí)。
由于區(qū)塊鏈與應(yīng)用級(jí)代碼分片客戶端是一一對(duì)應(yīng)的,應(yīng)用級(jí)代碼分片服務(wù)端根據(jù)已選出的區(qū)塊鏈標(biāo)識(shí)選擇相應(yīng)的應(yīng)用級(jí)代碼分片客戶端,將交易請(qǐng)求轉(zhuǎn)發(fā)至應(yīng)用級(jí)代碼分片客戶端。以此在確保區(qū)塊鏈負(fù)載均衡性和數(shù)據(jù)一致性的基礎(chǔ)上能夠選擇合適的應(yīng)用級(jí)代碼客戶端來處理交易請(qǐng)求。應(yīng)用級(jí)代碼分片客戶端根據(jù)交易請(qǐng)求調(diào)用對(duì)應(yīng)的區(qū)塊鏈的外部接口,以此調(diào)用區(qū)塊鏈上部署的應(yīng)用級(jí)代碼根據(jù)應(yīng)用客戶端參數(shù)來執(zhí)行交易??梢杂行П苊庠诓煌膮^(qū)塊鏈之間遷移數(shù)據(jù),以及由于數(shù)據(jù)遷移帶來的額外負(fù)載等問題。
本實(shí)施例中,在接收到應(yīng)用客戶端的交易請(qǐng)求之后,對(duì)交易請(qǐng)求中攜帶的應(yīng)用客戶端參數(shù)進(jìn)行解析,在多個(gè)區(qū)塊鏈標(biāo)識(shí)中選擇與交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí),從而將交易請(qǐng)求分配至已選擇出的區(qū)塊鏈標(biāo)識(shí)所對(duì)應(yīng)的區(qū)塊鏈,以此使得區(qū)塊鏈上部署的應(yīng)用級(jí)代碼根據(jù)應(yīng)用客戶端參數(shù)完成交易。由于區(qū)塊鏈具有對(duì)應(yīng)的業(yè)務(wù)類型,交易請(qǐng)求會(huì)被分配至業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈,在面對(duì)海量交易請(qǐng)求時(shí),能夠使得不同業(yè)務(wù)類型的交易在不同的區(qū)塊鏈中進(jìn)行,有效提高了區(qū)塊鏈的性能。
在一個(gè)實(shí)施例中,對(duì)應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)的步驟包括:若與交易請(qǐng)求中攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)為多個(gè),則根據(jù)業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合;根據(jù)哈希結(jié)果集合選擇與交易請(qǐng)求對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)。
本實(shí)施例中,服務(wù)器與多個(gè)區(qū)塊鏈建立了連接,與多個(gè)應(yīng)用客戶端建立了連接。當(dāng)區(qū)塊鏈的數(shù)量不變時(shí),無論應(yīng)用客戶端的數(shù)量是否發(fā)生變化,服務(wù)器都需要確保區(qū)塊鏈之間的數(shù)據(jù)不會(huì)發(fā)生遷移,并且需要確保區(qū)塊鏈的負(fù)載均衡性和數(shù)據(jù)一致性。也就是說,服務(wù)器需要確保多個(gè)區(qū)塊鏈能夠被均勻的調(diào)用,并且將同一個(gè)應(yīng)用客戶端發(fā)送的交易請(qǐng)求都分配至同一個(gè)區(qū)塊鏈。
具體地,服務(wù)器上運(yùn)行的應(yīng)用級(jí)代碼分片服務(wù)端對(duì)應(yīng)用客戶端參數(shù)進(jìn)行解析,得到相應(yīng)的業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí)。若與交易請(qǐng)求中攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)為多個(gè),則應(yīng)用級(jí)代碼分片服務(wù)端獲取相同業(yè)務(wù)類型的多個(gè)區(qū)塊鏈標(biāo)識(shí)。應(yīng)用級(jí)代碼分片服務(wù)端利用業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合。例如,采用最高隨機(jī)權(quán)重的哈希算法對(duì)業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和區(qū)塊鏈標(biāo)識(shí)進(jìn)行一致性哈希計(jì)算,得到相應(yīng)的哈希結(jié)果。
如果服務(wù)器上運(yùn)行的應(yīng)用級(jí)代碼分片服務(wù)端接收到多個(gè)相同業(yè)務(wù)類型的交易請(qǐng)求,應(yīng)用級(jí)代碼分片服務(wù)端對(duì)每個(gè)交易請(qǐng)求中攜帶的應(yīng)用客戶端參數(shù)進(jìn)行解析,得到每個(gè)應(yīng)用客戶端輸入的業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí)。應(yīng)用級(jí)代碼分片服務(wù)端對(duì)每個(gè)應(yīng)用客戶端輸入的業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)以及每個(gè)區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,到相應(yīng)的哈希結(jié)果集合。服務(wù)器通過負(fù)載均衡方式和哈希結(jié)果一致性的方式在哈希結(jié)果集合中選擇每個(gè)交易請(qǐng)求相應(yīng)的區(qū)塊鏈標(biāo)識(shí)。
應(yīng)用級(jí)代碼分片服務(wù)端對(duì)哈希結(jié)果進(jìn)行負(fù)載均衡處理,在相同業(yè)務(wù)類型的多個(gè)區(qū)塊鏈標(biāo)識(shí)中選擇與交易請(qǐng)求對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)。從而可以實(shí)現(xiàn)多個(gè)區(qū)塊鏈的均衡使用,有效確保區(qū)塊鏈的負(fù)載均衡性。而且能夠?qū)崿F(xiàn)將同一應(yīng)用客戶端的交易請(qǐng)求分配至同一區(qū)塊鏈,由此有效確保區(qū)塊鏈的數(shù)據(jù)一致性。通過為應(yīng)用客戶端發(fā)送的交易請(qǐng)求選擇一個(gè)合適的區(qū)塊鏈,能夠確保區(qū)塊鏈的數(shù)量不變化時(shí),不論應(yīng)用客戶端的數(shù)據(jù)量是否發(fā)生變化,都不會(huì)引起區(qū)塊鏈之間的數(shù)據(jù)遷移,即不會(huì)出現(xiàn)一個(gè)區(qū)塊鏈的交易數(shù)據(jù)遷移到另一個(gè)區(qū)塊鏈上的情形。
在其中一個(gè)實(shí)施例中,對(duì)應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)的步驟包括:若與交易請(qǐng)求中攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)為多個(gè),則將相同業(yè)務(wù)類型的區(qū)塊鏈作為物理區(qū)塊鏈,并將物理區(qū)塊鏈分為多個(gè)虛擬區(qū)塊鏈;獲取多個(gè)虛擬區(qū)塊鏈對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí);根據(jù)業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)虛擬區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合;根據(jù)哈希結(jié)果集合選擇與交易請(qǐng)求對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí)。
當(dāng)服務(wù)器上運(yùn)行的應(yīng)用級(jí)代碼分片服務(wù)端接收到多個(gè)相同業(yè)務(wù)類型的交易請(qǐng)求,而且相同業(yè)務(wù)類型的交易請(qǐng)求的數(shù)量大于相同業(yè)務(wù)類型的區(qū)塊鏈的數(shù)量時(shí),服務(wù)器上運(yùn)行的應(yīng)用級(jí)代碼分片服務(wù)端可以將相同業(yè)務(wù)類型的區(qū)塊鏈作為物理區(qū)塊鏈。應(yīng)用級(jí)代碼分片服務(wù)端將每個(gè)物理區(qū)塊鏈分為多個(gè)虛擬區(qū)塊鏈,并且對(duì)每個(gè)虛擬區(qū)塊鏈生成相應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí)。應(yīng)用級(jí)代碼分片服務(wù)端根據(jù)業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)虛擬區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合。服務(wù)器通過負(fù)載均衡方式和哈希結(jié)果一致性的方式在哈希結(jié)果集合中選擇每個(gè)交易請(qǐng)求相應(yīng)的區(qū)塊鏈標(biāo)識(shí)。
應(yīng)用級(jí)代碼分片服務(wù)端對(duì)哈希結(jié)果進(jìn)行負(fù)載均衡處理,在相同業(yè)務(wù)類型的多個(gè)虛擬區(qū)塊鏈標(biāo)識(shí)中選擇與交易請(qǐng)求對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí)。將選擇出的虛擬區(qū)塊鏈標(biāo)識(shí)記錄為已選擇的虛擬區(qū)塊鏈標(biāo)識(shí)。應(yīng)用級(jí)代碼分片服務(wù)端將多個(gè)交易請(qǐng)求分別轉(zhuǎn)發(fā)至與已選擇的虛擬區(qū)塊鏈標(biāo)識(shí)一一對(duì)應(yīng)的應(yīng)用級(jí)代碼分片客戶端。通過應(yīng)用級(jí)代碼分片客戶端將交易請(qǐng)求分配至對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí),根據(jù)虛擬區(qū)塊鏈標(biāo)識(shí)來訪問虛擬區(qū)塊鏈所映射的物理區(qū)塊鏈。由此能夠在相同業(yè)務(wù)類型的交易請(qǐng)求的數(shù)量大于相同業(yè)務(wù)類型的區(qū)塊鏈的數(shù)量時(shí)實(shí)現(xiàn)多個(gè)區(qū)塊鏈的均衡使用,有效確保區(qū)塊鏈的負(fù)載均衡性。并且能夠?qū)崿F(xiàn)將同一應(yīng)用客戶端的交易請(qǐng)求分配至同一區(qū)塊鏈,有效確保了區(qū)塊鏈的數(shù)據(jù)一致性。通過為應(yīng)用客戶端發(fā)送的交易請(qǐng)求選擇一個(gè)合適的區(qū)塊鏈,能夠確保區(qū)塊鏈的數(shù)量不變化時(shí),不論應(yīng)用客戶端的數(shù)據(jù)量是否發(fā)生變化,都不會(huì)引起區(qū)塊鏈之間的數(shù)據(jù)遷移。
在一個(gè)實(shí)施例中,對(duì)應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)的步驟包括:當(dāng)區(qū)塊鏈的數(shù)量發(fā)生變化時(shí),獲取映射表,映射表包括應(yīng)用客戶端參數(shù)與區(qū)塊鏈標(biāo)識(shí)之間的映射關(guān)系,應(yīng)用客戶端參數(shù)包括業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí);根據(jù)映射關(guān)系以及交易請(qǐng)求中攜帶的業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí)在映射表中檢索對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí),將檢索到的區(qū)塊鏈標(biāo)識(shí)記錄為已選擇的區(qū)塊鏈標(biāo)識(shí)。
本實(shí)施例中,與服務(wù)器連接的區(qū)塊鏈數(shù)量可能會(huì)發(fā)生變化,例如,區(qū)塊鏈與服務(wù)器之間的連接出現(xiàn)故障,致使區(qū)塊鏈不可用,區(qū)塊鏈的數(shù)量會(huì)減少?;蛘咴黾优c服務(wù)器建立連接的區(qū)塊鏈,區(qū)塊鏈的數(shù)量會(huì)增加。服務(wù)器可以預(yù)先建立應(yīng)用客戶端參數(shù)與區(qū)塊鏈標(biāo)識(shí)之間的映射關(guān)系表,其中,應(yīng)用客戶端參數(shù)包括業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí)。
當(dāng)服務(wù)器上運(yùn)行的應(yīng)用級(jí)代碼分片服務(wù)端接收應(yīng)用客戶端發(fā)送的交易請(qǐng)求時(shí),根據(jù)映射關(guān)系以及交易請(qǐng)求中攜帶的業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí)在映射表中檢索對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí),將檢索得到的區(qū)塊鏈標(biāo)識(shí)記錄為已選擇的區(qū)塊鏈標(biāo)識(shí)。從而將交易請(qǐng)求分配至已選擇的區(qū)塊鏈標(biāo)識(shí)。進(jìn)而實(shí)現(xiàn)了區(qū)塊鏈的負(fù)載均衡性和數(shù)據(jù)一致性。通過為應(yīng)用客戶端發(fā)送的交易請(qǐng)求選擇一個(gè)合適的區(qū)塊鏈,能夠確保應(yīng)用客戶端的數(shù)據(jù)量發(fā)生變化時(shí),不會(huì)引起區(qū)塊鏈之間的數(shù)據(jù)遷移。
進(jìn)一步的,映射表存儲(chǔ)在服務(wù)器的磁盤存儲(chǔ)器中,并且可以緩存在內(nèi)存中,便于為交易請(qǐng)求選擇合適的區(qū)塊鏈標(biāo)識(shí)時(shí)能夠快速讀取。如果新增了應(yīng)用客戶端參數(shù)和/或者區(qū)塊鏈標(biāo)識(shí),則服務(wù)器上運(yùn)行的應(yīng)用級(jí)代碼分片服務(wù)端可以根據(jù)新增的應(yīng)用客戶端參數(shù)和/或區(qū)塊鏈標(biāo)識(shí)對(duì)映射表進(jìn)行更新,并且可以將更新后的映射表緩存至內(nèi)存。
在一個(gè)實(shí)施例中,該方法還包括:接收應(yīng)用客戶端發(fā)送的事件消息流獲取請(qǐng)求;將事件消息流獲取請(qǐng)求發(fā)送至交易請(qǐng)求所分配的區(qū)塊鏈;當(dāng)區(qū)塊鏈通過應(yīng)用級(jí)代碼執(zhí)行交易時(shí),獲取對(duì)應(yīng)的事件消息流,將事件消息流返回至應(yīng)用客戶端。
本實(shí)施例中,服務(wù)器上除了運(yùn)行應(yīng)用級(jí)代碼分片服務(wù)端和應(yīng)用級(jí)代碼分片客戶端之外,還運(yùn)行了事件消息服務(wù)端和事件消息客戶端。其中,事件消息客戶端可以是多個(gè),可以與區(qū)塊鏈一一對(duì)應(yīng)。服務(wù)器上運(yùn)行的應(yīng)用級(jí)代碼分片服務(wù)端、應(yīng)用級(jí)代碼分片客戶端、事件消息服務(wù)端和事件消息客戶端可以統(tǒng)稱為多區(qū)塊鏈分片處理系統(tǒng)。當(dāng)多區(qū)塊鏈分片處理系統(tǒng)啟動(dòng)時(shí),應(yīng)用級(jí)代碼分片服務(wù)端與多個(gè)應(yīng)用客戶端建立連接,事件消息服務(wù)端與多個(gè)應(yīng)用客戶端建立連接,應(yīng)用級(jí)代碼分片客戶端與一一對(duì)應(yīng)的區(qū)塊鏈上所部署的應(yīng)用級(jí)代碼建立連接,事件消息客戶端與一一對(duì)應(yīng)的區(qū)塊鏈上所部署的應(yīng)用級(jí)代碼建立連接,如圖3所示。每個(gè)區(qū)塊鏈可以分別與應(yīng)用級(jí)代碼分片客戶端與事件消息客戶端一一對(duì)應(yīng)。多區(qū)塊鏈分片處理系統(tǒng)在啟動(dòng)后即會(huì)建立上述連接,避免在執(zhí)行應(yīng)用級(jí)代碼和事件處理時(shí)才建立連接而引起的額外網(wǎng)絡(luò)連接負(fù)擔(dān)。
多區(qū)塊鏈分片處理系統(tǒng)對(duì)區(qū)塊鏈與應(yīng)用級(jí)代碼分片客戶端之間的連接以及區(qū)塊鏈與事件消息客戶端之間的連接進(jìn)行監(jiān)控。當(dāng)區(qū)塊鏈與應(yīng)用級(jí)代碼分片客戶端或與事件消息客戶端之間的連接中斷,則斷開連接的區(qū)塊鏈不可用,不能處理交易以及事件消息流。待區(qū)塊鏈的網(wǎng)絡(luò)連接恢復(fù)后,可以再次作為可用的區(qū)塊鏈。
事件包括應(yīng)用客戶端與應(yīng)用級(jí)代碼分片服務(wù)端通信時(shí)觸發(fā)的事件、應(yīng)用客戶端與事件消息服務(wù)端通信時(shí)觸發(fā)的事件,以及區(qū)塊鏈上部署的應(yīng)用級(jí)代碼在執(zhí)行交易時(shí)所觸發(fā)的事件。例如,注冊(cè)、注銷和拒絕等以及交易狀態(tài)和區(qū)塊鏈狀況等。傳統(tǒng)的方式中,區(qū)塊鏈上部署的應(yīng)用級(jí)代碼可以通過同步或異步的方式向服務(wù)器返回注冊(cè)、注銷和拒絕等通信事件的信息。但是交易狀態(tài)等用戶感興趣事件的消息,需要用戶通過應(yīng)用客戶端主動(dòng)查詢才能得到。
本實(shí)施例中,多個(gè)應(yīng)用客戶端與多個(gè)區(qū)塊鏈之間通過事件消息流的方式進(jìn)行通信。在事件消息服務(wù)端與應(yīng)用客戶端建立連接之后,應(yīng)用客戶端可以向事件消息服務(wù)端注冊(cè)感興趣的事件,例如,交易狀態(tài)和區(qū)塊鏈狀態(tài)等。應(yīng)用客戶端向應(yīng)用級(jí)代碼分片服務(wù)端發(fā)送交易請(qǐng)求時(shí),還可以向事件消息服務(wù)端發(fā)送事件消息流獲取請(qǐng)求,應(yīng)用級(jí)代碼分片服務(wù)端根據(jù)交易請(qǐng)求中攜帶的業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí)選擇相應(yīng)的區(qū)塊鏈。應(yīng)用級(jí)代碼分片客戶端將應(yīng)用客戶端的交易請(qǐng)求分配至已選擇的區(qū)塊鏈。事件消息服務(wù)端將應(yīng)用客戶端發(fā)送的事件消息流獲取請(qǐng)求轉(zhuǎn)發(fā)至事件消息客戶端,事件消息客戶端將事件消息流獲取請(qǐng)求發(fā)送至處理交易請(qǐng)求的區(qū)塊鏈。也就是說,交易請(qǐng)求與事件消息流獲取請(qǐng)求被分配至同一個(gè)區(qū)塊鏈。
當(dāng)區(qū)塊鏈通過應(yīng)用級(jí)代碼執(zhí)行交易時(shí),事件客戶端采用同步或異步的方式調(diào)用應(yīng)用級(jí)代碼的外部接口,獲取事件消息流。事件客戶端將獲取到的事件消息流返回至事件服務(wù)端,事件服務(wù)端將事件消息流發(fā)送至對(duì)應(yīng)的應(yīng)用客戶端。由此不需再通過應(yīng)用客戶端對(duì)感興趣的事件進(jìn)行查詢,可以直接獲悉用戶感興趣事件的消息,為用戶提供了方便。
多個(gè)應(yīng)用客戶端與多個(gè)區(qū)塊鏈之間可以通過雙向事件消息流的方式進(jìn)行通信。事件服務(wù)端可以并發(fā)讀取多個(gè)應(yīng)用客戶端的事件消息流,并且通過事件客戶端將讀取到的事件消息流發(fā)送至對(duì)應(yīng)的區(qū)塊鏈。事件客戶端也可以通過并發(fā)的形式讀取區(qū)塊鏈的事件消息流,通過事件服務(wù)端將事件消息流并發(fā)發(fā)送至應(yīng)用客戶端。并發(fā)包括進(jìn)程并發(fā)處理、線程并發(fā)處理以及協(xié)程并發(fā)處理等。通過并發(fā)的形式對(duì)應(yīng)用客戶端與區(qū)塊鏈之間的事件消息流進(jìn)行讀寫操作,能夠有效提高應(yīng)用客戶端與區(qū)塊鏈之間的通信效率。
在一個(gè)實(shí)施例中,服務(wù)器上可以運(yùn)行多個(gè)多區(qū)塊鏈分片處理系統(tǒng),多個(gè)多區(qū)塊鏈分片處理系統(tǒng)可以形成多區(qū)塊鏈分片處理集群。應(yīng)用客戶端和區(qū)塊鏈可以與多區(qū)塊鏈分片處理集群中的一個(gè)多區(qū)塊鏈分片處理系統(tǒng)建立連接。當(dāng)連接的多區(qū)塊鏈分片處理系統(tǒng)出現(xiàn)故障時(shí),可以切換至多區(qū)塊鏈分片處理集群中其他多區(qū)塊鏈分片處理系統(tǒng)來繼續(xù)執(zhí)行交易和事件消息流處理。由此通過集群模式消除了多區(qū)塊鏈分片處理系統(tǒng)的單點(diǎn)故障,有效提高了多區(qū)塊鏈分片處理的性能。
在一個(gè)實(shí)施例中,如圖4所示,提供了一種服務(wù)器400,包括通過系統(tǒng)總線連接的處理器401、內(nèi)存儲(chǔ)器402、非易失性存儲(chǔ)介質(zhì)403和網(wǎng)絡(luò)接口404。其中,該服務(wù)器的非易失性存儲(chǔ)介質(zhì)403中存儲(chǔ)有操作系統(tǒng)4031和多區(qū)塊鏈的分片處理處理裝置4032,多區(qū)塊鏈的分片處理裝置4032用于實(shí)現(xiàn)能夠有效減少客戶數(shù)據(jù)屏蔽處理的耗時(shí),提高屏蔽處理效率。服務(wù)器400的處理器401用于提供計(jì)算和控制能力,被配置為執(zhí)行一種多區(qū)塊鏈的分片處理方法。服務(wù)器400的內(nèi)存儲(chǔ)器402為非易失性存儲(chǔ)介質(zhì)中的客戶數(shù)據(jù)屏蔽處理裝置4032的運(yùn)行提供環(huán)境,內(nèi)存儲(chǔ)器402中可儲(chǔ)存有計(jì)算機(jī)可讀指令,該計(jì)算機(jī)可讀指令被處理器執(zhí)行時(shí),可使得處理器執(zhí)行一種多區(qū)塊鏈的分片處理方法。服務(wù)器400的網(wǎng)絡(luò)接口404用于據(jù)以與外部的客戶終端通過網(wǎng)絡(luò)連接通信,比如接收客戶終端上傳的交易請(qǐng)求,向客戶終端發(fā)送事件消息流等。服務(wù)器400可以用獨(dú)立的服務(wù)器或者是多個(gè)服務(wù)器組成的服務(wù)器集群來實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員可以理解,圖4中示出的結(jié)構(gòu),僅僅是與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的服務(wù)器的限定,具體地,服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
在一個(gè)實(shí)施例中,如圖5所示,提供了一種多區(qū)塊鏈的分片處理裝置500,包括:應(yīng)用級(jí)代碼分片服務(wù)端502和應(yīng)用級(jí)代碼分片客戶端504,其中:
應(yīng)用級(jí)代碼分片服務(wù)端502,用于接收應(yīng)用客戶端的交易請(qǐng)求,交易請(qǐng)求中攜帶了應(yīng)用客戶端參數(shù),應(yīng)用客戶端參數(shù)包括業(yè)務(wù)類型;獲取多個(gè)區(qū)塊鏈的區(qū)塊鏈標(biāo)識(shí),區(qū)塊鏈具有對(duì)應(yīng)的業(yè)務(wù)類型,區(qū)塊鏈上部署了應(yīng)用級(jí)代碼;對(duì)應(yīng)用客戶端參數(shù)進(jìn)行解析,選擇與交易請(qǐng)求攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)。
應(yīng)用級(jí)代碼分片客戶端504,用于將交易請(qǐng)求分配至與已選擇的區(qū)塊鏈標(biāo)識(shí)對(duì)應(yīng)的區(qū)塊鏈,使得區(qū)塊鏈上部署的應(yīng)用級(jí)代碼根據(jù)應(yīng)用客戶端參數(shù)完成交易。
在一個(gè)實(shí)施例中,應(yīng)用客戶端參數(shù)還包括業(yè)務(wù)標(biāo)識(shí),應(yīng)用級(jí)代碼分片服務(wù)端502還用于若與交易請(qǐng)求中攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)為多個(gè),則根據(jù)業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合;根據(jù)哈希結(jié)果集合選擇與交易請(qǐng)求對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)。
在一個(gè)實(shí)施例中,應(yīng)用客戶端參數(shù)還包括業(yè)務(wù)標(biāo)識(shí),應(yīng)用級(jí)代碼分片服務(wù)端502還用于若與交易請(qǐng)求中攜帶的業(yè)務(wù)類型對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí)為多個(gè),則將相同業(yè)務(wù)類型的區(qū)塊鏈作為物理區(qū)塊鏈,并將物理區(qū)塊鏈分為多個(gè)虛擬區(qū)塊鏈;獲取多個(gè)虛擬區(qū)塊鏈對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí);根據(jù)業(yè)務(wù)類型、業(yè)務(wù)標(biāo)識(shí)和每個(gè)虛擬區(qū)塊鏈標(biāo)識(shí)分別進(jìn)行哈希計(jì)算,得到相應(yīng)的哈希結(jié)果集合;根據(jù)哈希結(jié)果集合選擇與交易請(qǐng)求對(duì)應(yīng)的虛擬區(qū)塊鏈標(biāo)識(shí)。
在一個(gè)實(shí)施例中,應(yīng)用級(jí)代碼分片服務(wù)端502還用于當(dāng)區(qū)塊鏈的數(shù)量發(fā)生變化時(shí),獲取映射表,映射表包括應(yīng)用客戶端參數(shù)與區(qū)塊鏈標(biāo)識(shí)之間的映射關(guān)系,應(yīng)用客戶端參數(shù)包括業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí);根據(jù)映射關(guān)系以及交易請(qǐng)求中攜帶的業(yè)務(wù)類型和業(yè)務(wù)標(biāo)識(shí)在映射表中檢索對(duì)應(yīng)的區(qū)塊鏈標(biāo)識(shí),將檢索到的區(qū)塊鏈標(biāo)識(shí)記錄為已選擇的區(qū)塊鏈標(biāo)識(shí)。
在一個(gè)實(shí)施例中,如圖6所示,該裝置還包括:事件消息服務(wù)端506和事件消息客戶端508,其中:
事件消息服務(wù)端506,用于接收應(yīng)用客戶端發(fā)送的事件消息流獲取請(qǐng)求;將事件消息流獲取請(qǐng)求發(fā)送至交易請(qǐng)求所分配的區(qū)塊鏈。
事件消息客戶端508,用于當(dāng)區(qū)塊鏈通過應(yīng)用級(jí)代碼執(zhí)行交易時(shí),獲取對(duì)應(yīng)的事件消息流,將事件消息流返回至應(yīng)用客戶端。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成。所述的程序可存儲(chǔ)于一非易失性計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)等。
以上實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡(jiǎn)潔,未對(duì)上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
以上實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。