本技術實施例涉及但不限于計算機,尤其涉及一種基于多輪消息交換的分布式請求處理方法及相關設備。
背景技術:
1、分布式系統(tǒng)通過將計算任務分散到多個節(jié)點上執(zhí)行,從而提供高可用性、可擴展性和容錯能力。在分布式系統(tǒng)中,如何保證各個節(jié)點之間數(shù)據(jù)的一致性是一個核心問題。尤其是某些節(jié)點存在故障的情況下,如何確保每一個節(jié)點能夠對客戶端請求的響應結果建立共識信息,是分布式系統(tǒng)中的一個關鍵問題。目前,解決分布式共識問題的方案包含異步共識。
2、相關技術中,異步共識算法通過多輪次的節(jié)點交互來確定一個二進制值。在每一輪節(jié)點交互中,各個節(jié)點會先生成一個建議值,當足夠多的節(jié)點生成了相同建議值后,就根據(jù)這一建議值確定提議值,在這一過程中,節(jié)點建議值易受少數(shù)異常節(jié)點影響而頻繁改變,從而容易造成任務響應的延遲較高、資源消耗較大的問題。
技術實現(xiàn)思路
1、本技術旨在至少解決現(xiàn)有技術中存在的技術問題之一。為此,本技術提供了一種基于多輪消息交換的分布式請求處理方法及相關設備,能夠提高分布式系統(tǒng)中任務請求處理的效率。
2、為實現(xiàn)上述目的,本技術實施例的第一方面提出了一種基于多輪消息交換的分布式請求處理方法,應用于分布式系統(tǒng),所述分布式系統(tǒng)包括多個節(jié)點服務器,方法包括;
3、響應于任一所述節(jié)點服務器獲取到任務請求,根據(jù)所述任務請求生成任務共識請求消息,并在所述分布式系統(tǒng)中廣播任務共識請求消息;
4、針對每一所述節(jié)點服務器,確定對所述任務共識請求消息的接收狀態(tài),基于所述接收狀態(tài)生成首次報告消息,并在所述分布式系統(tǒng)中廣播所述首次報告消息;
5、針對每一所述節(jié)點服務器,響應于接收到的所述首次報告消息滿足預設的二次報告條件,基于所述首次報告消息生成二次報告消息,并在所述分布式系統(tǒng)中廣播所述二次報告消息;
6、針對每一所述節(jié)點服務器,根據(jù)所述首次報告消息以及所述二次報告消息生成當前投票消息,并在所述分布式系統(tǒng)中廣播所述當前投票消息;
7、針對每一所述節(jié)點服務器,根據(jù)所述首次報告消息、所述二次報告消息以及所述投票消息,得到當前共識結果;
8、響應于所述共識結果滿足預設共識條件,根據(jù)所述當前共識結果對所述任務請求執(zhí)行任務請求處理。
9、在一些實施例中,所述響應于任一所述節(jié)點服務器獲取到任務請求,根據(jù)所述任務請求生成任務共識請求消息,并在所述分布式系統(tǒng)中廣播任務共識請求消息,包括:
10、獲取任務請求;
11、在預先配置的請求序列集合中選取序列最小且未被使用過的序列號作為所述任務請求的任務請求序列號;
12、根據(jù)所述任務請求以及所述任務請求序列號生成任務共識請求消息;
13、將所述任務共識請求消息在所述分布式系統(tǒng)中進行廣播。
14、在一些實施例中,所述首次報告消息中包括首次報告值,所述首次報告值等于第一二進制值或者第二二進制值,所述針對每一所述節(jié)點服務器,確定對所述任務共識請求消息的接收狀態(tài),基于所述接收狀態(tài)生成首次報告消息,并在所述分布式系統(tǒng)中廣播所述首次報告消息,包括:
15、針對每一所述節(jié)點服務器,若所述接收狀態(tài)為已接收,則在所述分布式系統(tǒng)中廣播包含所述第一二進制值的所述首次報告消息;
16、針對每一所述節(jié)點服務器,若所述接收狀態(tài)為未接收,且存在目標數(shù)量的、序列號大于所述任務請求序列號的其他任務請求已被處理,則在所述分布式系統(tǒng)中廣播包含所述第二二進制值的所述首次報告消息。
17、在一些實施例中,所述分布式系統(tǒng)中還包括隨機生成的公共二進制值,所述針對每一所述節(jié)點服務器,響應于接收到的所述首次報告消息滿足預設的二次報告條件,基于所述首次報告消息生成二次報告消息,并在所述分布式系統(tǒng)中廣播所述二次報告消息,包括:
18、針對每一所述節(jié)點服務器,若所述節(jié)點服務器接收到所述目標數(shù)量的所述首次報告消息,且接收到的所述首次報告消息中同時包含所述第一二進制值以及所述第二二進制值,且所述節(jié)點服務器廣播的所述首次報告值與所述公共二進制值不同,則根據(jù)所述公共二進制值生成所述二次報告消息;
19、在所述分布式系統(tǒng)中廣播所述二次報告消息;其中,所述二次報告消息中包括二次報告值,所述二次報告值等于所述第一二進制值或者所述第二二進制值。
20、在一些實施例中,所述投票消息包括首次投票消息以及二次投票消息,所述針對每一所述節(jié)點服務器,根據(jù)所述首次報告消息以及所述二次報告消息生成當前投票消息,并在所述分布式系統(tǒng)中廣播所述當前投票消息,包括:
21、針對每一所述節(jié)點服務器,根據(jù)接收到的所述二次報告消息以及所述首次報告消息生成隱含報告消息;其中,所述隱含報告消息的隱含報告值與所述二次報告消息的二次報告值相異;
22、若所述首次報告消息以及所述隱含報告消息的數(shù)量之和達到所述目標數(shù)量,且對應的所述隱含報告值與所述首次報告值都相同,則在所述分布式系統(tǒng)廣播中首次投票消息;其中,所述首次投票消息的投票值等于所述首次報告值;
23、若所述首次報告消息以及所述二次報告消息的數(shù)量之和達到所述目標數(shù)量,且對應的所述首次報告值與所述二次報告值都相同,則在所述分布式系統(tǒng)中廣播二次投票消息;其中,所述二次投票消息的投票值等于所述二次報告值。
24、在一些實施例中,所述針對每一所述節(jié)點服務器,根據(jù)所述首次報告消息、所述二次報告消息以及所述投票消息,得到當前共識結果,包括:
25、針對每一所述節(jié)點服務器,當所述節(jié)點服務器接收到包含相同投票值的所述首次投票消息達到所述目標數(shù)量,或者,接收到的所述隱含報告消息以及所述首次報告消息的數(shù)目之和達到所述目標數(shù)量,且對應的所述隱含報告值以及所述首次報告值都等于當前輪次的所述公共二進制值,或者,接收到一個所述首次投票信息且投票值等于當前輪次的所述公共二進制值,根據(jù)所述投票值或者所述首次報告值生成用于指示達成共識的所述共識結果,否則進入下一輪次。
26、在一些實施例中,所述響應于所述共識結果滿足預設共識條件,根據(jù)所述當前共識結果對所述任務請求執(zhí)行任務請求處理,包括:
27、響應于所述共識結果中包括所述第一二進制值時,對所述任務請求進行提交處理;
28、響應于所述共識結果中包括所述第二二進制值時,對所述任務請求進行跳過處理。
29、在一些實施例中,當所述任務請求被跳過處理或者所述共識結果指示未達成共識時,所述方法還包括:
30、針對每一所述節(jié)點服務器,若所述節(jié)點服務器接收到所述任務共識請求消息,但未發(fā)出包含第一二進制值的所述首次報告消息或者所述二次報告消息或者所述首次投票消息或者所述二次投票消息時,則根據(jù)所述任務請求序列號在所述分布式系統(tǒng)中廣播第一確認消息;
31、針對每一所述節(jié)點服務器,若接收到的所述第一確認消息與所述首次報告值為所述第一二進制的所述首次報告消息以及所述隱含報告值為所述第一二進制的所述隱含報告消息的數(shù)量之和達到所述目標數(shù)量,或者,響應于所述服務器接收到一個所述投票值為所述第一二進制值的所述首次投票消息或者所述二次投票消息,將所述任務請求確定為穩(wěn)定狀態(tài);
32、針對每一所述節(jié)點服務器,在所述請求序列集合中重新選取一個序列最小且未被使用過的序列號,作為所述任務請求的第二請求序列號;
33、根據(jù)所述任務請求序列號以及所述第二請求序列號,生成請求重提消息,并在所述分布式系統(tǒng)中廣播請求重提消息;
34、針對每一所述節(jié)點服務器,響應于接收到所述請求重提消息,根據(jù)所述任務請求序列號對所述任務請求進行提交處理。
35、第二方面,本技術實施例提供了一種基于多輪消息交換的分布式請求處理裝置,包括:
36、第一廣播模塊,用于響應于任一所述節(jié)點服務器獲取到任務請求,根據(jù)所述任務請求生成任務共識請求消息,并在所述分布式系統(tǒng)中廣播任務共識請求消息;
37、第二廣播模塊,用于針對每一所述節(jié)點服務器,確定對所述任務共識請求消息的接收狀態(tài),基于所述接收狀態(tài)生成首次報告消息,并在所述分布式系統(tǒng)中廣播所述首次報告消息;
38、第三廣播模塊,用于針對每一所述節(jié)點服務器,響應于接收到的所述首次報告消息滿足預設的二次報告條件,基于所述首次報告消息生成二次報告消息,并在所述分布式系統(tǒng)中廣播所述二次報告消息;
39、第四廣播模塊,用于針對每一所述節(jié)點服務器,根據(jù)所述首次報告消息以及所述二次報告消息生成當前投票消息,并在所述分布式系統(tǒng)中廣播所述當前投票消息;
40、共識模塊,用于針對每一所述節(jié)點服務器,根據(jù)所述首次報告消息、所述二次報告消息以及所述投票消息,得到當前共識結果;
41、處理模塊,用于響應于所述共識結果滿足預設共識條件,根據(jù)所述當前共識結果對所述任務請求執(zhí)行任務請求處理。
42、第三方面,本技術實施例提供了一種電子設備,包括:存儲器、處理器,所述存儲器存儲有計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)如本技術第一方面實施例中任意一項所述的基于多輪消息交換的分布式請求處理方法。
43、第四方面,本技術實施例提供了一種計算機可讀存儲介質,所述存儲介質存儲有程序,所述程序被處理器執(zhí)行實現(xiàn)如本技術第一方面實施例中任意一項所述的基于多輪消息交換的分布式請求處理方法。
44、本技術實施例提出的基于多輪消息交換的分布式請求處理方法,應用于分布式系統(tǒng),分布式系統(tǒng)包括多個節(jié)點服務器,方法包括:響應于任一節(jié)點服務器獲取到任務請求,根據(jù)任務請求生成任務共識請求消息,并在分布式系統(tǒng)中廣播任務共識請求消息;針對每一節(jié)點服務器,確定對任務共識請求消息的接收狀態(tài),基于接收狀態(tài)生成首次報告消息,并在分布式系統(tǒng)中廣播首次報告消息;針對每一節(jié)點服務器,響應于接收到的首次報告消息滿足預設的二次報告條件,基于首次報告消息生成二次報告消息,并在分布式系統(tǒng)中廣播二次報告消息;針對每一節(jié)點服務器,根據(jù)首次報告消息以及二次報告消息生成當前投票消息,并在分布式系統(tǒng)中廣播當前投票消息;針對每一節(jié)點服務器,根據(jù)首次報告消息、二次報告消息以及投票消息,得到當前共識結果;響應于共識結果滿足預設共識條件,根據(jù)當前共識結果對任務請求執(zhí)行任務請求處理。
45、本技術提出的基于多輪消息交換的分布式請求處理方法,節(jié)點服務器首先廣播任務共識請求消息,隨后通過多輪的消息交換(首次報告消息、二次報告消息、投票消息)來逐步達成共識。通過引入兩階段報告機制,節(jié)點服務器不會隨意更改其報告值,而是只有在接收到的首次報告消息滿足預設的報告條件時,才會觸發(fā)二次報告消息的廣播,并可能在二次報告中更新自己的報告值。這種設計有效地限制了節(jié)點服務器更改提議的條件,防止了因輕易更改提議值而導致的共識過程延遲。此外,在投票階段,節(jié)點服務器會綜合考慮接收到的首次報告消息和二次報告消息進行投票,并且在每一輪次的共識結果輸出階段,節(jié)點服務器會綜合考慮接收到的所有消息(首次報告消息、二次報告消息以及投票消息)來做出決策。這種綜合考慮首次報告、二次報告和投票消息的機制,進一步增強了共識結果的可靠性和穩(wěn)定性,避免了單一消息類型或少數(shù)節(jié)點服務器的主導。當共識結果指示達成共識時,便可以根據(jù)共識結果處理請求。與依賴網(wǎng)絡延遲上界的同步/半同步共識算法不同,本方法屬于異步共識算法,不依賴任何延遲假設,更適用于實際的網(wǎng)絡環(huán)境。通過上述具有約束條件的兩階段報告機制和綜合決策機制,相比于現(xiàn)有的異步共識算法(這些算法中節(jié)點可能更頻繁地更改其提議),本方法在保證共識正確性的前提下,顯著提高了共識過程的穩(wěn)定性,減少了不必要的提議變更和通信開銷,降低了達成共識的延遲。綜上所述,本技術提出的方法能夠提高分布式系統(tǒng)中達成任務請求處理共識的效率。
46、本技術的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本技術而了解。本技術的目的和其他優(yōu)點可通過在說明書、權利要求書以及附圖中所特別指出的結構來實現(xiàn)和獲得。