本發(fā)明涉及數(shù)據(jù)管理領(lǐng)域,具體涉及一種基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理系統(tǒng)和一種基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理方法。
背景技術(shù):
健康檢測數(shù)據(jù)用于記錄個人的身體狀況等多項健康檢測數(shù)據(jù),為以后的疾病溯源起著至關(guān)重要作用,因此健康檢測數(shù)據(jù)需要進行長期保存。
現(xiàn)有的健康病歷、電子病歷等健康檢測數(shù)據(jù)的存儲管理,普遍采用中心存儲方式,適用于各家公司研發(fā)的封閉系統(tǒng)使用,適合單次或少數(shù)幾次診療健康檢測數(shù)據(jù)的管理,由于數(shù)據(jù)采用集中存儲、集中處理的方式,對于數(shù)據(jù)存儲系統(tǒng)的性能、穩(wěn)定性和安全性要求較高,從而導(dǎo)致數(shù)據(jù)管理成本高,由于數(shù)據(jù)間沒有相互依賴關(guān)系,沒有校驗方法,因此無法發(fā)現(xiàn)檢測數(shù)據(jù)的缺失,無法保證數(shù)據(jù)的完備性,同時對基于互聯(lián)網(wǎng)的開放式、高并發(fā)和用戶數(shù)據(jù)暴增的業(yè)務(wù)場景支撐不足。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理系統(tǒng)和一種基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理方法,有效保證用戶健康檢測數(shù)據(jù)在分布式系統(tǒng)上長期存儲的安全性、完備性和可靠性。
為達到以上目的,本發(fā)明采取的技術(shù)方案是,包括:
多個終端節(jié)點,每個終端節(jié)點對應(yīng)一承載用戶健康檢測的服務(wù)終端設(shè)備,所述服務(wù)終端設(shè)備用于生成健康檢測數(shù)據(jù)并緩存;
多個超級節(jié)點,所述超級節(jié)點為已累計運行一指定時間,且系統(tǒng)資源豐裕度達一指定值的終端節(jié)點,所述系統(tǒng)資源豐裕度為磁盤容量和cpu利用率;
至少一個用戶組,所述用戶組包括至少一個超級節(jié)點,所述用戶組內(nèi)超級節(jié)點用以存儲用戶的健康檢測數(shù)據(jù),當(dāng)所述用戶組內(nèi)超級節(jié)點為多個時,所述用戶組內(nèi)各超級節(jié)點間健康檢測數(shù)據(jù)相同;以及
一根節(jié)點服務(wù)器,所述根節(jié)點服務(wù)器用于根據(jù)終端節(jié)點的運行時間和系統(tǒng)資源豐裕度將終端節(jié)點轉(zhuǎn)為超級節(jié)點,并組建用戶組,所述根節(jié)點服務(wù)器還用于用戶組內(nèi)各超級節(jié)點間存儲的健康檢測數(shù)據(jù)的同步。
在上述技術(shù)方案的基礎(chǔ)上,還包括超級服務(wù)節(jié)點,所述超級服務(wù)節(jié)點用于存儲所有用戶組內(nèi)的健康檢測數(shù)據(jù)。
在上述技術(shù)方案的基礎(chǔ)上,
所述健康檢測數(shù)據(jù)以區(qū)塊鏈形式存儲于超級節(jié)點中;
每個區(qū)塊鏈對應(yīng)一用戶的健康檢測數(shù)據(jù);
所述區(qū)塊鏈由多個數(shù)據(jù)塊組成,每個數(shù)據(jù)塊對應(yīng)用戶的一單次健康檢測數(shù)據(jù);
所述區(qū)塊鏈中,數(shù)據(jù)塊按照數(shù)據(jù)塊所對應(yīng)單次健康檢測數(shù)據(jù)的生成時間先后排列。
在上述技術(shù)方案的基礎(chǔ)上,
所述數(shù)據(jù)塊由首字段、中間數(shù)據(jù)字段和尾字段組成;
所述中間數(shù)據(jù)字段為用戶的單次健康檢測數(shù)據(jù);
所述尾字段為當(dāng)前數(shù)據(jù)塊的哈希值,計算數(shù)據(jù)塊中除尾字段外其它所有字段數(shù)據(jù)生成當(dāng)前數(shù)據(jù)塊的哈希值;
所述首字段為前一數(shù)據(jù)塊尾字段寫入的哈希值;
所述區(qū)塊鏈中,第一個數(shù)據(jù)塊的首字段為用戶標(biāo)識字段和特定數(shù)據(jù)標(biāo)識字段。
在上述技術(shù)方案的基礎(chǔ)上,當(dāng)新的終端節(jié)點加入健康檢測數(shù)據(jù)管理系統(tǒng)時,所述根節(jié)點服務(wù)器為新的終端節(jié)點分配一用戶組。
在上述技術(shù)方案的基礎(chǔ)上,當(dāng)一用戶組內(nèi)的用戶數(shù)量達到預(yù)設(shè)最大值,則生成一新用戶組,并將用戶數(shù)量達預(yù)設(shè)閥值的用戶組內(nèi)系統(tǒng)資源豐裕度最大的終端節(jié)點標(biāo)記為新用戶組內(nèi)的超級節(jié)點。
在上述技術(shù)方案的基礎(chǔ)上,當(dāng)一用戶組內(nèi)的用戶數(shù)量少于預(yù)設(shè)最小值,則將其它所含超級節(jié)點數(shù)最少的用戶組標(biāo)記目標(biāo)用戶組,將用戶數(shù)量少于預(yù)設(shè)值的用戶組內(nèi)所有超級節(jié)點移動至目標(biāo)用戶組,然后目標(biāo)用戶組內(nèi)超級節(jié)點間進行數(shù)據(jù)同步。
在上述技術(shù)方案的基礎(chǔ)上,
所述超級節(jié)點定期向所述根節(jié)點服務(wù)器報告自身運行狀態(tài),以及響應(yīng)根節(jié)點服務(wù)器的運行狀態(tài)查詢指令;
若所述超級節(jié)點的運行狀態(tài)未報告次數(shù)以及運行狀態(tài)查詢指令未響應(yīng)次數(shù)達到設(shè)定值,則所述超級節(jié)點降級為終端節(jié)點;
所述運行狀態(tài)包含超級節(jié)點自身的系統(tǒng)資源豐裕度、運行時間以及健康檢測數(shù)據(jù)允許存儲量。
本發(fā)明還提供一種基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理方法,包括:
s1:用戶在服務(wù)終端設(shè)備登錄,轉(zhuǎn)到s2;
s2:根節(jié)點服務(wù)器根據(jù)用戶標(biāo)識檢索現(xiàn)有用戶信息,判斷當(dāng)前登錄用戶是否為新用戶,若是,則轉(zhuǎn)到s3,若否,則轉(zhuǎn)到s6;
s3:生成一新區(qū)塊鏈,且新區(qū)塊鏈包括一數(shù)據(jù)塊,同時為當(dāng)前用戶生成一唯一的用戶標(biāo)識字段,并將特定數(shù)據(jù)標(biāo)識字段以及新生成的用戶標(biāo)識字段放入新區(qū)塊鏈數(shù)據(jù)塊的首字段中,轉(zhuǎn)到s4;
s4:計算新區(qū)塊鏈內(nèi)數(shù)據(jù)塊的哈希值,并將計算得到的哈希值存儲至新區(qū)塊鏈內(nèi)數(shù)據(jù)塊的尾字段,轉(zhuǎn)到s5;
s5:將新區(qū)塊鏈分配于一用戶組的超級節(jié)點中,同時將新區(qū)塊鏈同步至該用戶組內(nèi)其它超級節(jié)點,當(dāng)前登錄用戶變?yōu)槔嫌脩?,轉(zhuǎn)到s2;
s6:服務(wù)終端設(shè)備根據(jù)根節(jié)點服務(wù)器,從相應(yīng)用戶組的超級節(jié)點獲取當(dāng)前登錄用戶對應(yīng)的區(qū)塊鏈數(shù)據(jù)至用戶當(dāng)前登錄的服務(wù)終端設(shè)備中,轉(zhuǎn)到s7;
s7:根據(jù)用戶當(dāng)前次健康檢測數(shù)據(jù)生成一數(shù)據(jù)塊,并將生成的數(shù)據(jù)塊添加至用戶對應(yīng)的區(qū)塊鏈中,轉(zhuǎn)到s8;
s8:服務(wù)終端設(shè)備上傳用戶的區(qū)塊鏈至之前保存該區(qū)塊鏈的超級節(jié)點中,相應(yīng)用戶組的超級節(jié)點間進行數(shù)據(jù)同步,并結(jié)束。
在上述技術(shù)方案的基礎(chǔ)上,周期性校驗用戶組中各超級節(jié)點內(nèi)的區(qū)塊鏈,具體為:
s901:獲取全部用戶組中超級節(jié)點中的區(qū)塊鏈;
s902:依次比對用戶組內(nèi)超級節(jié)點的單個區(qū)塊鏈中相鄰兩數(shù)據(jù)塊中后者數(shù)據(jù)塊首字段寫入的哈希值是否為前者數(shù)據(jù)塊尾字段寫入的哈希值,若是,則結(jié)束,若否,則對比同一用戶組內(nèi)其它超級節(jié)點的區(qū)塊鏈數(shù)據(jù),將正確的區(qū)塊鏈數(shù)據(jù)覆蓋該錯誤超級節(jié)點內(nèi)的區(qū)塊鏈數(shù)據(jù)并結(jié)束。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
(1)終端節(jié)點對應(yīng)一承載用戶健康檢測的服務(wù)終端設(shè)備,并將業(yè)務(wù)量大的終端節(jié)點生成為超級節(jié)點,多個超級節(jié)點進行健康檢測數(shù)據(jù)的存儲,即采用分布式的數(shù)據(jù)存儲方式,有效降低了數(shù)據(jù)遺失的風(fēng)險,降低對數(shù)據(jù)存儲設(shè)備的管理成本。
(2)通過分布式服務(wù)的方式,充分利用各個服務(wù)終端設(shè)備資源,在根服務(wù)器的管理下,實時響應(yīng)數(shù)據(jù)存儲要求和數(shù)據(jù)處理要求,能夠有效支撐基于互聯(lián)網(wǎng)的開放式、高并發(fā)、且用戶數(shù)據(jù)暴增的業(yè)務(wù)場景。
(3)用戶對應(yīng)的健康檢測數(shù)據(jù)使用區(qū)塊鏈的方式進行存儲,提供了一套標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu),方便數(shù)據(jù)交換,同時,采用區(qū)塊鏈原理的數(shù)據(jù)鏈校驗方法,防止用戶數(shù)據(jù)在存儲過程中出現(xiàn)差錯,避免數(shù)據(jù)在長期保存和傳輸過程中的遺失。
附圖說明
圖1為本發(fā)明一種基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為一種基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理方法的流程圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明作進一步詳細(xì)說明。
參見圖1所示,本發(fā)明提供一種基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理系統(tǒng),包括:多個終端節(jié)點、多個超級節(jié)點、至少一個用戶組和一根節(jié)點服務(wù)器,每個終端節(jié)點對應(yīng)一承載用戶健康檢測的服務(wù)終端設(shè)備,服務(wù)終端設(shè)備用于生成健康檢測數(shù)據(jù)并緩存,即服務(wù)終端設(shè)備會緩存多個用戶的健康檢測數(shù)據(jù);超級節(jié)點為已累計運行一指定時間,且系統(tǒng)資源豐裕度達一指定值的終端節(jié)點,指定時間和系統(tǒng)資源豐裕度的指定值為人為設(shè)定,系統(tǒng)資源豐裕度為磁盤容量和cpu(centralprocessingunit,中央處理器)利用率,即終端節(jié)點的磁盤中已存儲的健康檢測數(shù)據(jù)量和終端節(jié)點的cpu的利用率;用戶組包括至少一個超級節(jié)點,優(yōu)選的,一個用戶組內(nèi)有三個超級節(jié)點,用戶組內(nèi)超級節(jié)點用以存儲用戶的健康檢測數(shù)據(jù),當(dāng)用戶組內(nèi)超級節(jié)點為多個時,用戶組內(nèi)各超級節(jié)點間健康檢測數(shù)據(jù)相同;根節(jié)點服務(wù)器用于根據(jù)終端節(jié)點的運行時間和系統(tǒng)資源豐裕度將終端節(jié)點轉(zhuǎn)為超級節(jié)點,并組建用戶組,根節(jié)點服務(wù)器還用于用戶組內(nèi)各超級節(jié)點間存儲的健康檢測數(shù)據(jù)的同步,具體的數(shù)據(jù)同步過稱為:各超級節(jié)點復(fù)制其它超級節(jié)點中的自身所不含有的數(shù)據(jù)至自身,進行數(shù)據(jù)同步同步,最終用戶組內(nèi)各超級節(jié)點間的數(shù)據(jù)相同。
本健康檢測數(shù)據(jù)管理系統(tǒng)還包括超級服務(wù)節(jié)點,超級服務(wù)節(jié)點用于存儲所有用戶組內(nèi)的健康檢測數(shù)據(jù),超級服務(wù)節(jié)點的作用類似于一備份服務(wù)器。
當(dāng)新的終端節(jié)點加入健康檢測數(shù)據(jù)管理系統(tǒng)時,根節(jié)點服務(wù)器為新的終端節(jié)點分配一用戶組,相當(dāng)于各終端節(jié)點隸屬于不同的用戶組,但一個用戶組中最多只有3個超級節(jié)點。
健康檢測數(shù)據(jù)以區(qū)塊鏈形式存儲于超級節(jié)點中,具體的,區(qū)塊鏈按照一定算法分布存儲于超級節(jié)點中;每個區(qū)塊鏈對應(yīng)一用戶的健康檢測數(shù)據(jù);區(qū)塊鏈由多個數(shù)據(jù)塊組成,每個數(shù)據(jù)塊對應(yīng)用戶的一單次健康檢測數(shù)據(jù);區(qū)塊鏈中,數(shù)據(jù)塊按照數(shù)據(jù)塊所對應(yīng)單次健康檢測數(shù)據(jù)的生成時間先后排列。
數(shù)據(jù)塊由首字段、中間數(shù)據(jù)字段和尾字段組成;中間數(shù)據(jù)字段為用戶的單次健康檢測數(shù)據(jù);尾字段為當(dāng)前數(shù)據(jù)塊的哈希值,計算數(shù)據(jù)塊中除尾字段外其它所有字段數(shù)據(jù)生成當(dāng)前數(shù)據(jù)塊的哈希值;首字段為前一數(shù)據(jù)塊尾字段寫入的哈希值;區(qū)塊鏈中,第一個數(shù)據(jù)塊的首字段為用戶標(biāo)識字和特定數(shù)據(jù)標(biāo)識字段,該首字段為一特殊結(jié)構(gòu),定義為字符串“thisisarootnode.”加一個16字節(jié)長度的用戶標(biāo)識字段,共32字節(jié),特定數(shù)據(jù)標(biāo)識字段可以人為設(shè)定,此處“thisisarootnode.”即為特定數(shù)據(jù)標(biāo)識字段,用戶標(biāo)識可以為用戶的手機號或身份證號。依靠后一數(shù)據(jù)塊中首字段記錄的哈希值與前一數(shù)據(jù)塊中尾字段記錄的哈希值比對校驗,從而判斷兩數(shù)據(jù)塊間是否存在數(shù)據(jù)塊遺失,從而判斷是否有健康檢測數(shù)據(jù)遺失。
數(shù)據(jù)塊中還包括數(shù)據(jù)時間字段、長度字段、設(shè)備標(biāo)識字段和醫(yī)師標(biāo)識字段,數(shù)據(jù)時間字段用于表示數(shù)據(jù)塊生成時間,長度字段用于表示用戶單次健康檢測數(shù)據(jù)的長度,設(shè)備標(biāo)識字段用于表示生成該數(shù)據(jù)塊的服務(wù)終端設(shè)備標(biāo)號,醫(yī)師標(biāo)識字段用于表示該次健康檢測的醫(yī)師的編號。具體的,數(shù)據(jù)塊可以為以下表格所述組成結(jié)構(gòu):
當(dāng)一用戶組內(nèi)的用戶數(shù)量達到預(yù)設(shè)最大值,則生成一新用戶組,并將用戶數(shù)量達預(yù)設(shè)閥值的用戶組內(nèi)的系統(tǒng)資源豐裕度最大的終端節(jié)點標(biāo)記為新用戶組內(nèi)的超級節(jié)點,該過程由根服務(wù)器控制完成。
當(dāng)一用戶組內(nèi)的用戶數(shù)量少于預(yù)設(shè)最小值,則將其它所含超級節(jié)點數(shù)最少的用戶組標(biāo)記目標(biāo)用戶組,將用戶數(shù)量少于預(yù)設(shè)值的用戶組內(nèi)所有超級節(jié)點移動至目標(biāo)用戶組,然后目標(biāo)用戶組內(nèi)超級節(jié)點間進行數(shù)據(jù)同步,該過程由根服務(wù)器控制完成。
超級節(jié)點定期向根節(jié)點服務(wù)器報告自身運行狀態(tài),以及響應(yīng)根節(jié)點服務(wù)器的運行狀態(tài)查詢指令;若超級節(jié)點的運行狀態(tài)未報告次數(shù)以及運行狀態(tài)查詢指令未響應(yīng)次數(shù)達到設(shè)定值,則超級節(jié)點降級為終端節(jié)點,以此來檢測超級節(jié)點的活躍度;運行狀態(tài)包含超級節(jié)點自身的系統(tǒng)資源豐裕度、運行時間以及健康檢測數(shù)據(jù)允許存儲量,健康檢測數(shù)據(jù)允許存儲量即超級節(jié)點自身還允許存儲健康檢測數(shù)據(jù)的空余容量。
超級服務(wù)節(jié)點從根服務(wù)器獲取全部的用戶組信息,并依次獲取每個用戶組內(nèi)的超級節(jié)點信息,超級服務(wù)節(jié)點向用戶組內(nèi)的超級節(jié)點發(fā)送查詢請求,獲取用戶組中單個超級節(jié)點內(nèi)全部用戶的區(qū)塊鏈信息,并依次比對單個區(qū)塊鏈中相鄰數(shù)據(jù)塊的哈希值,依據(jù)后一數(shù)據(jù)塊中首字段記錄的哈希值是否是前一數(shù)據(jù)塊中尾字段記錄的哈希值,若是,則該條區(qū)塊鏈沒有差錯,則將該條區(qū)塊鏈對應(yīng)的健康檢測數(shù)據(jù)復(fù)制至超級服務(wù)節(jié)點中;若否,則該條區(qū)塊鏈有差錯,則使用同一用戶組中其它超級節(jié)點存儲的數(shù)據(jù)更新該條區(qū)塊鏈所對應(yīng)超級節(jié)點的數(shù)據(jù),并將更新后的數(shù)據(jù)復(fù)制至超級服務(wù)節(jié)點。重復(fù)上述過程,完成用戶組中健康檢測數(shù)據(jù)的同步。
本發(fā)明還提供一種基于上述基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理系統(tǒng)的基于區(qū)塊鏈技術(shù)的健康檢測數(shù)據(jù)管理方法,包括:
s1:用戶在服務(wù)終端設(shè)備登錄,轉(zhuǎn)到s2;
s2:根節(jié)點服務(wù)器根據(jù)用戶標(biāo)識檢索現(xiàn)有用戶信息,即根據(jù)當(dāng)前登錄用戶的標(biāo)識(手機號、身份證號)在超級節(jié)點的區(qū)塊鏈的用戶標(biāo)識字段中檢索,判斷當(dāng)前登錄用戶是否為新用戶,若是,則轉(zhuǎn)到s3,若否,則轉(zhuǎn)到s6;
s3:生成一新區(qū)塊鏈,且新區(qū)塊鏈包括一數(shù)據(jù)塊,同時為當(dāng)前用戶生成一唯一的用戶標(biāo)識字段,并將生成的用戶標(biāo)識字段放入新區(qū)塊鏈數(shù)據(jù)塊的首字段中,轉(zhuǎn)到s4;
s4:計算新區(qū)塊鏈內(nèi)數(shù)據(jù)塊的哈希值,并將計算得到的哈希值存儲至新區(qū)塊鏈內(nèi)數(shù)據(jù)塊的尾字段,轉(zhuǎn)到s5;
s5:將新區(qū)塊鏈分配于一用戶組的超級節(jié)點中,同時將新區(qū)塊鏈同步至該用戶組內(nèi)其它超級節(jié)點,相當(dāng)于給當(dāng)前登錄用戶分配了一區(qū)塊鏈,分配的區(qū)塊鏈含有用戶的標(biāo)識,且區(qū)塊鏈已保存至超級節(jié)點中,因此,當(dāng)前登錄用戶變?yōu)槔嫌脩?,轉(zhuǎn)到s2;
s6:服務(wù)終端設(shè)備根據(jù)根節(jié)點服務(wù)器,從相應(yīng)用戶組的超級節(jié)點獲取當(dāng)前登錄用戶對應(yīng)的區(qū)塊鏈數(shù)據(jù)至用戶當(dāng)前登錄的服務(wù)終端設(shè)備中。若當(dāng)前登錄用戶未老用戶,則根節(jié)點服務(wù)器會給服務(wù)終端設(shè)備返回一相應(yīng)反饋信息。轉(zhuǎn)到s7;
s7:根據(jù)用戶當(dāng)前次健康檢測數(shù)據(jù)生成一數(shù)據(jù)塊,并將生成的數(shù)據(jù)塊添加至用戶對應(yīng)的區(qū)塊鏈中,轉(zhuǎn)到s8;
s8:服務(wù)終端設(shè)備上傳用戶的區(qū)塊鏈至之前保存該區(qū)塊鏈的超級節(jié)點中,相應(yīng)用戶組的超級節(jié)點間進行數(shù)據(jù)同步,并結(jié)束。
還包括周期性校驗用戶組中各超級節(jié)點內(nèi)的區(qū)塊鏈的步驟,具體為:
s901:獲取全部用戶組中超級節(jié)點中的區(qū)塊鏈;
s902:依次比對用戶組內(nèi)超級節(jié)點的單個區(qū)塊鏈中相鄰兩數(shù)據(jù)塊中后者數(shù)據(jù)塊首字段寫入的哈希值是否為前者數(shù)據(jù)塊尾字段寫入的哈希值,若是,則結(jié)束,若否,則對比同一用戶組內(nèi)其它超級節(jié)點的區(qū)塊鏈數(shù)據(jù),將正確的區(qū)塊鏈數(shù)據(jù)覆蓋該錯誤超級節(jié)點內(nèi)的區(qū)塊鏈數(shù)據(jù)并結(jié)束,因同一用戶組中超級節(jié)點間的數(shù)據(jù)是相同的,故在同一用戶組中,當(dāng)一超級節(jié)點存儲的區(qū)塊鏈數(shù)據(jù)出現(xiàn)錯誤,則可將其它超級節(jié)點中正確的區(qū)塊鏈數(shù)據(jù)復(fù)制過來,進行替換。
本發(fā)明不局限于上述實施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。