基於區塊鏈的提議處理方法、裝置及電子設備
本發明實施例有關區塊鏈技術領域,尤其有關一種基於區塊鏈的提議處理方法、裝置及電子設備。
分散式系統是由地理上和物理上分散的各自獨立的多個節點(如伺服器、處理單元等) 組成的系統。這些節點連接在一起實現對不同資源的使用。對於分散式系統來說,系統內的多個節點並行運行,在同一時刻可能存在多個節點或同一節點的多個行程對同一資源發起併發佔用,若不進行有序控制,將會導致各種反常狀況發生。舉個簡單的例子:在提供飛機票訂購服務的分散式系統中,如果用戶A和用戶B購買了同一航班同一座位的飛機票,則會產生資源互斥的問題,引發飛機票不可訂購,或者用戶A和用戶B購買飛機票的行程損壞等現象。
針對上述問題,目前的解決方法是引用分散式鎖來有序控制同一資源的併發存取。具體來說,當同一資源被多個行程存取時,只有獲得該資源的分散式鎖的行程能夠進行存取。而分散式鎖是單獨為分散式系統在某一應用場景中所開發的程式,邏輯比較複雜且不具有泛用性,不易於搭建和維護。有鑑於此,如何以更簡單的方式在分散式系統中實現鎖服務,是當前急需解決的技術問題。
本發明實施例目的是提供一種基於區塊鏈的提議處理方法、裝置及電子設備,能夠以簡單的方式在分散式系統中實現鎖服務。
為了實現上述目的,本發明實施例是這樣實現的:
第一態樣,提供一種基於區塊鏈的提議處理方法,包括:
回應於第一用戶發起的目標提議,對所述目標提議進行分析,得到所述第一用戶提議的問題和所述問題的候選答案;
查詢區塊鏈是否記錄有所述問題的既定答案;
若查詢命中,則拒絕所述目標提議和/或將所述區塊鏈記錄的所述問題的既定答案回饋至所述第一用戶;
若查詢未命中,則向所述區塊鏈的多個區塊鏈節點發起針對所述目標提議的多方共識,並在所述多方共識通過後,接受所述目標提議,以及將所述候選答案作為所述問題的既定答案記錄至所述區塊鏈中。
第二態樣,提供一種基於區塊鏈的提議處理裝置,包括:
分析模組,回應於第一用戶發起的目標提議,對所述目標提議進行分析,得到所述第一用戶提議的問題和所述問題的候選答案;
查詢模組,查詢區塊鏈是否記錄有所述問題的既定答案;
第一提議處理模組,若查詢命中,則拒絕所述目標提議和/或將所述區塊鏈記錄的所述問題的既定答案回饋至所述第一用戶;
第二提議處理模組,若查詢未命中,則向所述區塊鏈的多個區塊鏈節點發起針對所述目標提議的多方共識,並在所述多方共識通過後,接受所述目標提議,以及將所述候選答案作為所述問題的既定答案記錄至所述區塊鏈中。
第三態樣,提供一種電子設備包括:記憶體、處理器及儲存在所述記憶體上並可在所述處理器上運行的電腦程式,所述電腦程式被所述處理器執行:
回應於第一用戶發起的目標提議,對所述目標提議進行分析,得到所述第一用戶提議的問題和所述問題的候選答案;
查詢區塊鏈是否記錄有所述問題的既定答案;
若查詢命中,則拒絕所述目標提議和/或將所述區塊鏈記錄的所述問題的既定答案回饋至所述第一用戶;
若查詢未命中,則向所述區塊鏈的多個區塊鏈節點發起針對所述目標提議的多方共識,並在所述多方共識通過後,接受所述目標提議,以及將所述候選答案作為所述問題的既定答案記錄至所述區塊鏈中。
第四態樣,提供一種電腦可讀儲存媒體,所述電腦可讀儲存媒體上儲存有電腦程式,所述電腦程式被處理器執行時實現如下步驟:
回應於第一用戶發起的目標提議,對所述目標提議進行分析,得到所述第一用戶提議的問題和所述問題的候選答案;
查詢區塊鏈是否記錄有所述問題的既定答案;
若查詢命中,則拒絕所述目標提議和/或將所述區塊鏈記錄的所述問題的既定答案回饋至所述第一用戶;
若查詢未命中,則向所述區塊鏈的多個區塊鏈節點發起針對所述目標提議的多方共識,並在所述多方共識通過後,接受所述目標提議,以及將所述候選答案作為所述問題的既定答案記錄至所述區塊鏈中。
本發明實施例的方案採用區塊鏈記錄問題和對應的既定答案。若用戶提議已有的問題和對應的候選答案,則可以從區塊鏈查詢相應的既定答案以決策是否接受用戶提議。若用戶提議的是全新的問題和對應的候選答案,則可以利用區塊鏈的多方共識技術決定是否接受用戶提議,並在接受後將用戶提議的候選答案作為提議的問題的既定答案記錄至區塊鏈中。在實際應用中,可以將分散式系統的資源佔用抽象成“資源是否可以被佔用”的問題和“資源被誰佔用或者資源已被佔用”的答案。顯然,這種方式下,區塊鏈針對一個問題記錄有唯一有效的既定答案,因此通過區塊鏈決策是否接受用戶對資源發起的佔用提議,可實現分散式鎖的功能。一方面,區塊鏈是已有的資料庫結構,不需要為分散式系統單獨開發和維護分佈鎖程式,可降低實施成本並提高泛用性。另一方面,多方共識決定問題的既定答案可以使分散式系統去中心化,保證提議採用的公平性。
為了使本技術領域的人員更好地理解本發明中的技術方案,下面將結合本發明實施例中的圖式,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本發明保護的範圍。
如前所述,現有的分散式系統引用分散式鎖,來防止不同的行程同時訪問相同資源所產生的衝突或干擾。而分散式鎖邏輯複雜,不易搭建和維護,具有較低的實用性。為此,本發明旨在提供一種以更為簡單的方式在分散式系統中實現鎖服務的技術方案。
圖1是本發明實施例基於區塊鏈的提議處理方法的流程圖。圖1所示的方法可以由下文相對應的裝置執行,包括:
步驟S102,基於第一用戶發起的目標提議,對目標提議進行分析,得到第一用戶提議的問題和問題的候選答案。
其中,目標提議攜帶有上述問題和上述候選答案。目標提議可以但不限於包括:第一用戶佔用目標資源的提議。對應分析獲得的問題可以包括:“目標資源是否被佔用?”。針對“目標資源是否被佔用?”的候選答案可以包括:“第一用戶佔用目標資源”。
為便於理解,下面對本步驟進行示例性介紹:
當第一用戶需要佔用目標資源時,可以發起“我(第一用戶)是否可以佔用目標資源” 的提議。本步驟對“我(第一用戶)是否可以佔用目標資源”進行語義分析,確定第一用戶提議的問題是“目標資源是否被佔用”以及第一用戶提議的候選答案“(若目標資源沒有被佔用)我佔用目標資源”。
應理解,分析問題和答案的方式可以由分散式系統實際提供的服務確定,由於並不唯一,本發明實施例不作具體限定。
步驟S104,查詢區塊鏈是否記錄有問題的既定答案。
其中,分散式系統通過區塊鏈記錄先前已經確定的問題的既定答案。具體地,本步驟可以將確定的既定答案與對應的問題關聯儲存在區塊鏈的區塊中。
還是以步驟S102中所舉示例作為介紹:
若目標資源在第一用戶發起目標提議前已被佔用,則區塊鏈來會記錄目標資源的佔用狀態。該佔用狀態即為“目標資源是否被佔用”的既定答案。
步驟S106,若查詢命中,則拒絕目標提議。
在本發明實施例中,一個問題僅對應有唯一有效的答案,即既定答案。顯然,若第一用戶提議的問題存在既定答案,則不能再採納第一用戶發起的目標提議。
還是以步驟S102中所舉示例作為介紹:
若區塊鏈已有“目標資源是否被佔用?”的既定答案,則可以表示其他用戶已經搶先佔用了目標資源,考慮到目標資源佔用的互斥性,應拒絕第一用戶發起的目標提議,或者在不接受第一用戶佔用目標資源的前提下,將“目標資源已被佔用”的資訊告知給第一用戶。
此外,本步驟在查詢命中後還可以將區塊鏈記錄的問題的既定答案回饋至第一用戶。
步驟S108,若查詢未命中,則向區塊鏈的多個區塊鏈節點發起針對目標提議的多方共識。
應理解,多方共識的目的是多個區塊鏈節點就第一用戶所提出的目標提議達成共識,如果未達共識,則表示不認可第一用戶所提出的候選答案,則是可以拒絕由第一用戶發起的目標提議。如果達成共識,則表示認可第一用戶所提出的候選答案,因此將候選答案作為目標提議中問題的既定答案記錄至區塊鏈中。
還是以步驟S102中所舉示例作為介紹:
假設通過區塊鏈未查詢到既定答案,則表示“目標資源未被佔用”,此時多個區塊鏈節點就第一用戶是否可以佔用目標資源進行多方共識。其中,多方共識通過,則表示接受第一用戶佔用目標資源。多方共識未通過,則表示拒絕第一用戶佔用目標資源。
步驟S110,若多方共識通過後,則接受目標提議,將候選答案作為上述問題的既定答案記錄至區塊鏈中。
還是以步驟S102中所舉示例作為介紹:
若多個區塊鏈節點認可第一用戶佔用目標資源,則本步驟將“目標資源已被(第一用戶)佔用”作為“目標資源是否可以佔用”的既定答案,儲存至區塊鏈中。後續其他用戶發起佔用目標資源的提議時,可以從區塊鏈中查詢到“目標資源已被(第一用戶)佔用”,從而拒絕其他用戶發起的佔用目標資源的提議。
基於圖1所示的提議處理方法可以知道:本發明實施例的方案採用區塊鏈記錄問題和對應的既定答案。若用戶提議已有的問題和對應的候選答案,則可以從區塊鏈查詢相應的既定答案以決策是否接受用戶提議。若用戶提議的是全新的問題和對應的候選答案,則可以利用區塊鏈的多方共識技術決定是否接受用戶提議,並在接受後將用戶提議的候選答案作為提議的問題的既定答案記錄至區塊鏈中。在實際應用中,可以將分散式系統的資源佔用抽象成“資源是否可以被佔用”的問題和“資源被誰佔用或者資源已被佔用”的答案。顯然,這種方式下,區塊鏈針對一個問題記錄有唯一有效的既定答案,因此通過區塊鏈決策是否接受用戶對資源發起的佔用提議,可實現分散式鎖的功能。一方面,區塊鏈是已有的資料庫結構,不需要為分散式系統單獨開發和維護分佈鎖程式,可降低實施成本並提高泛用性。另一方面,多方共識決定問題的既定答案可以使分散式系統去中心化,保證提議採用的公平性。
可選地,在上述基礎之上,提議後被選為既定答案的用戶可以對區塊鏈中記錄的該既定答案進行編輯或刪除。即,本發明實施例的方法還包括:
步驟S112,基於第二用戶發起的針對所述問題的編輯請求或刪除請求,判斷區塊鏈是否記錄有上述問題的既定答案以及該既定答案是否由第三用戶提議獲得的。
步驟S114,若區塊鏈記錄有上述問題的既定答案,且該既定答案是由第三用戶提議獲得的,則向第三用戶開啟用於編輯或刪除區塊鏈記錄的該既定答案的功能。
以目標資源佔用為例,提議後被選為既定答案的用戶即佔用目標資源的用戶,該用戶如果不想繼續佔用目標資源時,可以主動通過操作刪掉區塊鏈記錄的既定答案,從而使目標資源重新回到空閒狀態,能夠被其他用戶所使用。
此外,用戶佔用分散式系統中的資源也可以具有時效。本實施例的方法在將候選答案作為問題的既定答案記錄至區塊鏈中後,週期性判斷既定答案針對問題的有效性,並在判斷出既定答案針對問題失效後,刪除區塊鏈記錄的問題的既定答案。
以目標資源佔用為例,某一用戶佔用目標資源的有效時長為一周,當佔用時間達到一周後,則本發明實施例的方法可以主動刪除區塊鏈中針對該目標資源已被佔用的既定答案,以目標資源處於空閒狀態。
下面對本發明實施例的方法進行詳細介紹。
本發明實施例的方法利用區塊鏈來實現分散式鎖的功能。具體地,將資源佔用(也可以是資源存取)抽象成問題和答案,透過區塊鏈的多方共識來決定問題唯一有效的既定答案並進行記錄。當用戶針對某一資源發起佔用的提議時,抽象提取用戶提議的問題,並嘗試從區塊鏈中查詢該問題的既定答案。若查詢命中,則基於既定答案決策是否接受用戶發起的提議。若查詢未命中,則透過區塊鏈的多方共識方式,決定是否接受用戶的提議,並在接受後將用戶提議的候選答案作為提議的問題的既定答案記錄至區塊鏈中。
其中,方法的執行主體可以但不限於是分散式系統中的任意節點。作為可行的一種方案,分散式系統中的節點也作為區塊鏈中的區塊鏈節點,以參與多方共識。
對應的執行流程如圖2所示,包括:
步驟S201,接收第一用戶發起的佔用目標資源的目標提議。
步驟S202,對目標提議進行分析,確定第一用戶提議的問題和該問題對應的候選答案。
在本步驟中,可以確定第一用戶在目標提議中的意圖,以確定第一用戶提議的問題和對應候選答案。顯然,第一用戶發起目標提議的意圖是為了佔用目標資源,因此第一用戶提議的問題可以但不限是“目標資源是否被佔用?”,對應的候選答案(第一用戶的需求)可以但不限是“由第一用戶佔用目標資源”。
步驟S203,判斷區塊鏈中是否記錄有“目標資源是否被佔用”的既定答案。是,則執行步驟S204;否,則執行步驟S205。
步驟S204,拒絕第一用戶發起的目標提議,和/或,將區塊鏈記錄的“目標資源是否被佔用”的既定答案回饋至第一用戶。
如前所述,查詢命中則表示先前已經接受了其他用戶佔用目標資源的提議,因此可以直接拒絕第一用戶發起提議。
可選地,既定答案可以回饋更多的資訊,比如是哪一個用戶佔用了目標資源和/或佔用目標資源的有效時間。第一用戶接受到了既定答案後,可以瞭解目標資源的佔用情況,以便後續有需求時,重新再發起佔用目標資源的提議。
步驟S205,連接區塊鏈中的目標區塊鏈節點,向區塊鏈的多個區塊鏈節點發起針對目標提議的多方共識。
其中,分散式系統的節點可以視為區塊鏈中的區塊鏈節點。因此本步驟中,可以由分散式系統的節點負責達到針對目標提議的多方共識。
步驟S206,判斷多方共識是否通過。是,則執行步驟S207;否,則執行步驟S210。
步驟S207,判斷目標區塊鏈節點是否被選為區塊鏈中的記帳節點。是,則執行步驟S208;否,則執行步驟S209。
步驟S208,在目標區塊鏈節點對應的子區塊鏈中添加記錄有以候選答案作為問題的既定答案的區塊,並將區塊廣播至區塊鏈中的其他區塊鏈節點。
具體地,區塊的區塊頭可以配置有用於檢索既定答案的索引欄位。作為其中一個可行方案:本發明實施例的方法可以將問題編譯成字串,由字串作為區塊頭的索引欄位。對應地,既定答案可以有是字串+答案內容的組成結構。
步驟S209,接收區塊鏈中的其他節點所廣播的記錄有以候選答案作為問題的既定答案的區塊,並將該區塊添加至目標區塊鏈節點對應的子區塊鏈中。
步驟S210,拒絕第一用戶發起的目標提議,並告知第一用戶目標提議未被審核通過。
當然,實際應用中,複雜系統可能有多種不同領域和需求的共識問題,為了方便擴展及管理,防止不同領域的問題與答案相互混淆,可以在區塊鏈中對問題進行空間化。即,本發明實施例的方法在確定問題的既定答案後,將問題、問題的既定答案和問題的類別關聯記錄至區塊鏈中。問題的類別作為檢索區塊鏈中記錄的問題的既定答案的索引。
舉例介紹:
假設第一用戶發起的目標提議為“週末團體活動去爬山”,則問題可以為“週末幹什麼?”,問題的類別為“團體活動”,提議的問題的候選答案是“週末去爬山”。如果透過多方共識,通過了目標提議,則可以將問題“週末幹什麼?”、問題類型“團體活動”、既定答案“週末去爬山”三個維度關聯記錄至區塊鏈,形成空間化的資料結構。
後續在搜索“週末幹什麼”的既定答案時,可以具體引入問題類型“團體活動”作為檢索欄位,從而精確查找到“週末去爬山”。
同理,假設第一用戶發起的目標提議為“週末加班去培訓”,則問題可以為“週末幹什麼?”,問題的類別為“加班”,提議的問題的候選答案是“週末去培訓”。如果透過多方共識,通過了目標提議,則可以將問題“週末幹什麼?”、問題類型“加班”、既定答案“週末去培訓”三個維度關聯記錄至區塊鏈,形成空間化資料結果。
後續在搜索“週末幹什麼”的既定答案時,可以具體引入問題類型“加班”作為檢索欄位,從而精確查找到“週末去培訓”的加班答案,而不是上述“週末去爬山”的團體活動答案。
以上是對本發明實施例的方法的原理介紹。應理解,在不脫離本文上述原理基礎之上,還可以進行適當的變化,這些變化也應視為本發明實施例的保護範圍。比如,任何由問題和答案構成的提議都適用於本發明實施例的方法,其中,上文所述的解決分散式系統的資源佔用問題僅是方案所實現的其中一種技術效果。
下面結合實際的應用場景,對本發明實施例的方法進行詳細介紹。
在本應用場景中,分散式系統向用戶開放不同種類的用戶介面,比如:超文字傳輸協定介面、遠端程序呼叫協定介面和軟體開發套件介面等,以為用戶提供飛機票訂購服務。
假設用戶A希望購買2019-2-4號CA01的L01座位的飛機票,則可以透過上述任意一種介面發起“我是否可以訂有2019-2-4號CA01的L01座位”的提議。
對於分佈系統,不同介面對應有不同的購票平台,其他用戶也可以透過任意的購票平台購買2019-2-4號CA01的L01座位的飛機票。假設用戶A透過網頁瀏覽器(即超文字傳輸協定介面)發起“我是否可以訂有2019-2-4號CA01的L01座位”的提議,則網頁瀏覽器的節點需要確定2019-2-4號CA01的L01座位的佔用狀態。
具體地,網頁瀏覽器的節點可以將用戶A發起的“誰可以訂有2019-2-4號CA01的L01座位”的提議抽象為“2019-2-4號CA01的L01座位是否被訂有”的問題,以及“用戶A訂有2019-2-4號CA01的L01座位”的候選答案。
應理解,“用戶A訂有2019-2-4號CA01的L01座位”是用戶A為了購買飛機票提議的,並不是“誰可以訂有2019-2-4號CA01的L01座位”的唯一答案。對於購買相同飛機票的其他用戶來講,提議的候選答案可以是“其他用戶訂有2019-2-4號CA01的L01座位”。對於本應用場景來講,需要從這些候選答案中確定一個作為“誰可以訂有2019-2-4號CA01的L01座位”的唯一有效的既定答案。
網頁瀏覽器的節點在抽象獲取問題和候選答案後,從區塊鏈中查詢“誰可以訂有2019-2-4號CA01的L01座位”的既定答案。
這個查詢過程用於告知用戶A是否可以購買2019-2-4號CA01的L01座位的飛機票。
如果查詢命中,則表明2019-2-4號CA01的L01座位的已被佔用,則告知用戶A無法購買2019-2-4號CA01的L01座位的飛機票的結果。
如果未查詢命中,則需要向其他購票平台發起“用戶A是否可以購買2019-2-4號CA01的L01座位的飛機票”的多方共識。這個多方共識過程可以公平性地驗證用戶A是否符合購買2019-2-4號CA01的L01座位的飛機票的條件。
一旦多方共識通過,則表示其他購票平台認可用戶A購買2019-2-4號CA01的L01座位的飛機票的提議,並將用戶A提議的“用戶A訂有2019-2-4號CA01的L01座位”的候選答案作為“誰可以訂有2019-2-4號CA01的L01座位”的既定答案。基於區塊鏈的資料上鏈機制,負責記帳的區塊鏈節點產生記錄既定答案的區塊,所有購票平台在各自的子區塊鏈中添加該區塊。
一旦“用戶A訂有2019-2-4號CA01的L01座位”的既定答案成功上鏈,其他用戶不管是透過哪個購票平台發起購買2019-2-4號CA01的L01座位的飛機票的提議不會被通過。
此外,用戶A作為2019-2-4號CA01的L01座位的訂有者,具有對區塊鏈中記錄的“誰可以訂有2019-2-4號CA01的L01座位?”重新編輯的權利。比如,用戶A可以發起退票操作,將“用戶A訂有2019-2-4號CA01的L01座位”的既定答案從區塊鏈中刪除,從而釋放2019-2-4號CA01的L01座位的資源。
此外,若用戶A未發起退票,則在2019-2-4號CA01航班結束後,用戶A購買的飛機票不再具有時效,分散式系統可以刪掉區塊鏈中記錄有“用戶A訂有2019-2-4號CA01的L01座位”的既定答案。
此外,其他用戶也可以透過任何購票平台的介面,向區塊鏈查詢2019-2-4號CA01的L01座位是否被佔用。
綜上所述,本發明實施例的方法透過區塊鏈技術實現了分散式系統的鎖服務。其中,透過區塊鏈的多方共識演算法可以保證用戶提議能夠被公平地處理,且少於一半的區塊鏈節點不可用時,也能夠保證多方共識正常執行。此外,用戶提議在絕大部分的應用場景中都可以被抽象成問題和答案,因此本發明實施例的方案具有較高的通用性,且便於分散式系統拓展新的業務能力。此外,用戶可以透過分散式系統提供的任何平台介面發起提議,各平台介面在區塊鏈中搭建的區塊鏈節點極為靈活,使得方案實施更具有實用性。
與上述方法相對應地,如圖3所示,本發明實施例還提供一種基於區塊鏈的資訊回饋裝置300,包括:
提議分析模組310,基於第一用戶發起的目標提議,對所述目標提議進行分析,得到所述第一用戶提議的問題和所述問題的候選答案;其中,所述目標提議攜帶有所述問題和所述候選答案。
答案查詢模組320,若查詢命中,則拒絕所述目標提議。
第一提議處理模組330,若查詢命中,則拒絕所述目標提議和/或將所述區塊鏈記錄的所述問題的既定答案回饋至所述第一用戶。
第二提議處理模組340,若查詢未命中,則向所述區塊鏈的多個區塊鏈節點發起針對所述目標提議的多方共識。
資料上鏈模組350,若所述多方共識通過後,接受所述目標提議,將所述候選答案作為所述問題的既定答案記錄至所述區塊鏈中。
基於圖3所示的提議處理裝置可以知道:本發明實施例的方案採用區塊鏈記錄問題和對應的既定答案。若用戶提議已有的問題和對應的候選答案,則可以從區塊鏈查詢相應的既定答案以決策是否接受用戶提議。若用戶提議的是全新的問題和對應的候選答案,則可以利用區塊鏈的多方共識技術決定是否接受用戶提議,並在接受後將用戶提議的候選答案作為提議的問題的既定答案記錄至區塊鏈中。在實際應用中,可以將分散式系統的資源佔用抽象成“資源是否可以被佔用”的問題和“資源被誰佔用或者資源已被佔用”的答案。顯然,這種方式下,區塊鏈針對一個問題記錄有唯一有效的既定答案,因此透過區塊鏈決策是否接受用戶對資源發起的佔用提議,可實現分散式鎖的功能。一方面,區塊鏈是已有的資料庫結構,不需要為分散式系統單獨開發和維護分佈鎖程式,可降低實施成本並提高泛用性。另一方面,多方共識決定問題的既定答案可以使分散式系統去中心化,保證提議採用的公平性。
可選地,若答案查詢模組320查詢命中,則第一提議處理模組330還可以將所述區塊鏈記錄的所述問題的既定答案回饋至所述第一用戶。
可選地,本發明實施例的裝置還包括:
第一處理模組,基於第二用戶發起的針對所述問題的編輯請求或刪除請求,判斷區塊鏈是否記錄有所述問題的既定答案以及該既定答案是否由所述第三用戶提議獲得的。以及,若所述區塊鏈記錄有所述問題的既定答案,且該既定答案是由所述第三用戶提議獲得的,則向所述第三用戶開啟用於編輯或刪除所述區塊鏈記錄的該既定答案的功能。
可選地,本發明實施例的裝置還包括:
第二處理模組,在將所述候選答案作為所述問題的既定答案記錄至所述區塊鏈中後,週期性判斷所述既定答案針對所述問題的有效性,並在判斷出所述既定答案針對所述問題失效後,刪除所述區塊鏈記錄的所述問題的既定答案。
可選地,所述目標提議包括:第一用戶佔用目標資源的提議。所述問題包括:所述目標資源是否被佔用的問題。所述候選答案包括:所述目標資源被所述第一用戶佔用的答案。
可選地,資料上鏈模組具體將所述問題、所述問題的既定答案和所述問題的類別關聯記錄至所述區塊鏈中;其中,所述問題的類別作為檢索所述區塊鏈中記錄的所述問題的既定答案的索引。
可選地,所述目標提議是所述第一用戶透過以下任意一種介面所發起:
長文本傳輸協定介面、遠端程序呼叫協定介面和軟體開發套件介面。
顯然,本發明實施例的裝置可以作為上述圖1所示的方法的執行主體,因此該裝置能夠實現方法在圖1和圖2所實現的功能。由於原理相同,本文不再贅述。
圖4是本發明的一個實施例電子設備的結構示意圖。請參考圖4,在硬體層面,該電子設備包括處理器,可選地還包括內部匯流排、網路介面、記憶體。其中,記憶體可能包含內部記憶體,例如高速隨機存取記憶體(Random-Access Memory,RAM),也可能還包括非易失性記憶體(non-volatile memory),例如至少1個磁碟記憶體等。當然,該電子設備還可能包括其他業務所需要的硬體。
處理器、網路介面和記憶體可以透過內部匯流排相互連接,該內部匯流排可以是ISA(Industry Standard Architecture,工業標準架構)匯流排、PCI(Peripheral Component Interconnect,週邊組件互連標準)匯流排或EISA(Extended Industry Standard Architecture,延伸工業標準架構)匯流排等。所述匯流排可以分為位址匯流排、資料匯流排、控制匯流排等。為便於表示,圖4中僅用一個雙向箭頭表示,但並不表示僅有一根匯流排或一種類型的匯流排。
記憶體,用於存放程式。具體地,程式可以包括程式碼,所述程式碼包括電腦操作指令。記憶體可以包括記憶體和非易失性記憶體,並向處理器提供指令和資料。
處理器從非易失性記憶體中讀取對應的電腦程式到記憶體中然後運行,在邏輯層面上形成問答對資料採擷裝置。處理器,執行記憶體所存放的程式,並具體用於執行以下操作:
基於第一用戶發起的目標提議,對所述目標提議進行分析,得到所述第一用戶提議的問題和所述問題的候選答案;其中,所述目標提議攜帶有所述問題和所述候選答案;
查詢區塊鏈是否記錄有所述問題的既定答案;
若查詢命中,則拒絕所述目標提議;
若查詢未命中,則向所述區塊鏈的多個區塊鏈節點發起針對所述目標提議的多方共識;以及,
若所述多方共識通過後,則接受所述目標提議,將所述候選答案作為所述問題的既定答案記錄至所述區塊鏈中。
基於圖4所示的電子設備額可以知道:本發明實施例的方案採用區塊鏈記錄問題和對應的既定答案。若用戶提議已有的問題和對應的候選答案,則可以從區塊鏈查詢相應的既定答案以決策是否接受用戶提議。若用戶提議的是全新的問題和對應的候選答案,則可以利用區塊鏈的多方共識技術決定是否接受用戶提議,並在接受後將用戶提議的候選答案作為提議的問題的既定答案記錄至區塊鏈中。在實際應用中,可以將分散式系統的資源佔用抽象成“資源是否可以被佔用”的問題和“資源被誰佔用或者資源已被佔用”的答案。顯然,這種方式下,區塊鏈針對一個問題記錄有唯一有效的既定答案,因此透過區塊鏈決策是否接受用戶對資源發起的佔用提議,可實現分散式鎖的功能。一方面,區塊鏈是已有的資料庫結構,不需要為分散式系統單獨開發和維護分佈鎖程式,可降低實施成本並提高泛用性。另一方面,多方共識決定問題的既定答案可以使分散式系統去中心化,保證提議採用的公平性。
上述如本發明圖1所示實施例揭示的提議處理方法可以應用於處理器中,或者由處理器實現。處理器可能是一種積體電路晶片,具有信號的處理能力。在實現過程中,上述方法的各步驟可以透過處理器中的硬體的積體邏輯電路或者軟體形式的指令完成。上述的處理器可以是通用處理器,包括中央處理器(Central Processing Unit,CPU)、網路處理器(Network Processor,NP)等;還可以是數位訊號處理器(Digital Signal Processor,DSP)、特殊應用積體電路(Application Specific Integrated Circuit,ASIC)、現場可程式設計閘陣列(Field-Programmable Gate Array,FPGA)或者其他可程式設計邏輯裝置、分立閘或者電晶體邏輯裝置、分立硬體元件。可以實現或者執行本發明實施例中的揭示的各方法、步驟及邏輯方塊圖。通用處理器可以是微處理器或者該處理器也可以是任何習用的處理器等。結合本發明實施例所揭示的方法的步驟可以直接體現為硬體解碼處理器執行完成,或者用解碼處理器中的硬體及軟體模組組合執行完成。軟體模組可以位於隨機記憶體、快閃記憶體、唯讀記憶體、可程式設計唯讀記憶體或者電可讀寫可程式設計記憶體、暫存器等本領域成熟的儲存媒體中。該儲存媒體位於記憶體,處理器讀取記憶體中的資訊,結合其硬體完成上述方法的步驟。
應理解,本發明實施例的電子設備可以實現上述裝置在圖1和圖2所示的實施例的功能,本文不再贅述。
當然,除了軟體實現方式之外,本發明的電子設備並不排除其他實現方式,比如邏輯裝置抑或軟硬體結合的方式等等,也就是說以下處理流程的執行主體並不限定於各個邏輯單元,也可以是硬體或邏輯裝置。
此外,本發明實施例還提出了一種電腦可讀儲存媒體,該電腦可讀儲存媒體儲存一個或多個程式,該一個或多個程式包括指令,該指令當被包括多個應用程式的可攜式電子設備執行時,能夠使該可攜式電子設備執行圖1所示實施例的方法,並具體用於執行以下方法:
基於第一用戶發起的目標提議,對所述目標提議進行分析,得到所述第一用戶提議的問題和所述問題的候選答案;其中,所述目標提議攜帶有所述問題和所述候選答案;
查詢區塊鏈是否記錄有所述問題的既定答案;
若查詢命中,則拒絕所述目標提議;
若查詢未命中,則向所述區塊鏈的多個區塊鏈節點發起針對所述目標提議的多方共識;以及,
若所述多方共識通過後,則接受所述目標提議,將所述候選答案作為所述問題的既定答案記錄至所述區塊鏈中。
應理解,上述指令當被包括多個應用程式的可攜式電子設備執行時,能夠使上文所述的提議處理裝置實現圖1和圖2所示實施例的功能,本文不再贅述。
本領域技術人員應明白,本說明書的實施例可提供為方法、系統或電腦程式產品。因此,本說明書可採用完全硬體實施例、完全軟體實施例或結合軟體和硬體方面的實施例的形式。而且,本說明書可採用在一個或多個其中包含有電腦可用程式碼的電腦可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的電腦程式產品的形式。
上述對本說明書特定實施例進行了描述。其它實施例在所附申請專利範圍的範圍內。在一些情況下,在權利要求書中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在圖式中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多工處理和並行處理也是可以的或者可能是有利的。
以上僅為本說明書的實施例而已,並不用於限制本說明書。對於本領域技術人員來說,本說明書可以有各種更改和變化。凡在本說明書的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本說明書的請求項範圍之內。
S102:步驟
S104:步驟
S106:步驟
S108:步驟
S110:步驟
S201:步驟
S202:步驟
S203:步驟
S204:步驟
S205:步驟
S206:步驟
S208:步驟
S209:步驟
S210:步驟
300:基於區塊鏈的資訊回饋裝置
310:提議分析模組
320:答案查詢模組
330:第一提議處理模組
340:第二提議處理模組
350:資料上鏈模組
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式僅僅是本發明實施例中記載的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些圖式獲得其他的圖式。
[圖1]為本發明實施例提供的提議處理方法的第一種流程示意圖。
[圖2]為本發明實施例提供的提議處理方法的第二種流程示意圖。
[圖3]為本發明實施例提供的提議處理裝置的結構示意圖。
[圖4]為本發明實施例提供的電子設備的結構示意圖。