本技術(shù)涉及數(shù)據(jù)處理與金融科技領(lǐng)域,尤其涉及服務(wù)請求的處理方法、裝置、計算機設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、隨著信息技術(shù)的飛速發(fā)展,特別是云計算、大數(shù)據(jù)及物聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用,軟件系統(tǒng)架構(gòu)正經(jīng)歷著從單體架構(gòu)向分布式架構(gòu)乃至微服務(wù)架構(gòu)的深刻轉(zhuǎn)變。微服務(wù)架構(gòu)以其高度的模塊化、可擴展性和靈活性,成為構(gòu)建復(fù)雜、大型應(yīng)用系統(tǒng)的首選方案。在微服務(wù)架構(gòu)中,系統(tǒng)被拆分為一系列獨立部署、獨立擴展、圍繞業(yè)務(wù)能力構(gòu)建的小型服務(wù),這些服務(wù)之間通過輕量級的通信機制(如restful?api、grpc等)相互協(xié)作,共同支撐起整個系統(tǒng)的功能。
2、然而,微服務(wù)架構(gòu)在帶來諸多優(yōu)勢的同時,也引入了新的挑戰(zhàn),尤其是在服務(wù)間的通信與調(diào)用過程中。由于服務(wù)分布在不同的物理或邏輯節(jié)點上,通過網(wǎng)絡(luò)進(jìn)行交互,因此不可避免地會受到網(wǎng)絡(luò)延遲、服務(wù)不可用、消息丟失或重復(fù)等問題的影響。特別是在高并發(fā)、高負(fù)載的場景下,這些問題可能更加突出,導(dǎo)致服務(wù)調(diào)用出現(xiàn)不確定性,進(jìn)而引發(fā)一系列連鎖反應(yīng),如請求重試、消息重復(fù)消費等。
3、在涉及金融交易、訂單處理、庫存管理等關(guān)鍵業(yè)務(wù)場景中,請求的重復(fù)執(zhí)行尤為致命。以支付交易為例,若因網(wǎng)絡(luò)抖動或服務(wù)暫時不可用導(dǎo)致支付請求被多次發(fā)送至支付系統(tǒng),而支付系統(tǒng)未能有效識別并處理這些重復(fù)請求,就可能造成用戶資金的重復(fù)扣除或超額支付,嚴(yán)重?fù)p害用戶利益和企業(yè)信譽。此外,重復(fù)操作還可能引發(fā)數(shù)據(jù)不一致、業(yè)務(wù)邏輯混亂等問題,對系統(tǒng)的穩(wěn)定性和可靠性構(gòu)成嚴(yán)重威脅。
4、因此,如何在微服務(wù)架構(gòu)下有效防止服務(wù)調(diào)用過程中的請求重復(fù)執(zhí)行,確保業(yè)務(wù)處理的正確性和一致性,成為當(dāng)前亟待解決的技術(shù)難題。
技術(shù)實現(xiàn)思路
1、本技術(shù)實施例的目的在于提出一種服務(wù)請求的處理方法、裝置、計算機設(shè)備及存儲介質(zhì),以解決如何在微服務(wù)架構(gòu)下有效防止服務(wù)調(diào)用過程中的請求重復(fù)執(zhí)行,確保業(yè)務(wù)處理的正確性和一致性的技術(shù)問題。
2、為了解決上述技術(shù)問題,本技術(shù)實施例提供一種服務(wù)請求的處理方法,采用了如下所述的技術(shù)方案:
3、判斷在目標(biāo)接口中是否接收到由客戶端發(fā)出的服務(wù)請求;其中,所述目標(biāo)接口為添加了預(yù)設(shè)的冪等注解的接口,所述服務(wù)請求中攜帶令牌;
4、若是,基于預(yù)設(shè)的目標(biāo)切面對所述服務(wù)請求進(jìn)行攔截,并從所述服務(wù)請求中提取出所述令牌;
5、基于預(yù)設(shè)的認(rèn)證中心對所述令牌進(jìn)行合法校驗;
6、若所述令牌通過合法校驗,則從預(yù)設(shè)的分布式鎖服務(wù)中獲取鎖,并接收所述分布式鎖服務(wù)返回的鎖獲取結(jié)果;
7、若所述鎖獲取結(jié)果為獲取鎖成功,則基于所述目標(biāo)接口執(zhí)行與所述服務(wù)請求對應(yīng)的業(yè)務(wù)邏輯處理,得到對應(yīng)的處理結(jié)果;
8、基于所述處理結(jié)果構(gòu)建對應(yīng)的響應(yīng)對象;
9、將所述響應(yīng)對象返回給所述客戶端。
10、進(jìn)一步的,所述基于預(yù)設(shè)的認(rèn)證中心對所述令牌進(jìn)行合法校驗的步驟,具體包括:
11、調(diào)用預(yù)設(shè)的http客戶端;
12、生成與所述令牌對應(yīng)的驗證請求;
13、基于所述http客戶端,將所述驗證請求發(fā)送至所述認(rèn)證中心;
14、接收所述認(rèn)證中心返回的與所述驗證請求對應(yīng)的響應(yīng)結(jié)果;
15、對所述響應(yīng)結(jié)果進(jìn)行解析得到對應(yīng)的解析結(jié)果;
16、基于預(yù)設(shè)的校驗規(guī)則,使用所述解析結(jié)果對所述令牌進(jìn)行合法校驗,得到與所述令牌對應(yīng)的合法校驗結(jié)果。
17、進(jìn)一步的,所述基于所述處理結(jié)果構(gòu)建對應(yīng)的響應(yīng)對象的步驟,具體包括:
18、基于所述處理結(jié)果生成對應(yīng)的狀態(tài)碼、響應(yīng)消息以及響應(yīng)體;
19、對所述狀態(tài)碼、所述響應(yīng)消息以及所述響應(yīng)體進(jìn)行整合處理,得到對應(yīng)的整合信息;
20、將所述整合信息作為所述響應(yīng)對象。
21、進(jìn)一步的,在所述判斷在目標(biāo)接口中是否接收到由客戶端發(fā)出的服務(wù)請求的步驟之前,還包括:
22、判斷是否接收到所述客戶端發(fā)送的令牌獲取請求;
23、若是,調(diào)用所述認(rèn)證中心;
24、基于所述認(rèn)證中心生成與所述客戶端對應(yīng)的令牌;
25、將所述令牌發(fā)送給所述客戶端。
26、進(jìn)一步的,在所述基于預(yù)設(shè)的認(rèn)證中心對所述令牌進(jìn)行合法校驗的步驟之后,還包括:
27、若所述令牌未通過合法校驗,則生成對應(yīng)的令牌認(rèn)證失敗信息;
28、獲取預(yù)設(shè)的第一輔助處理信息;
29、將所述令牌認(rèn)證失敗信息與所述第一輔助處理信息返回給所述客戶端。
30、進(jìn)一步的,在所述從預(yù)設(shè)的分布式鎖服務(wù)中獲取鎖,并接收所述分布式鎖服務(wù)返回的鎖獲取結(jié)果的步驟之后,還包括:
31、若所述鎖獲取結(jié)果為獲取鎖失敗,則生成與所述鎖獲取結(jié)果對應(yīng)的錯誤響應(yīng)信息;
32、獲取預(yù)設(shè)的第二輔助處理信息;
33、將所述錯誤響應(yīng)信息與所述第二輔助處理信息返回給所述客戶端。
34、進(jìn)一步的,在所述基于所述目標(biāo)接口執(zhí)行與所述服務(wù)請求對應(yīng)的業(yè)務(wù)邏輯處理,得到對應(yīng)的處理結(jié)果的步驟之后,還包括:
35、獲取預(yù)設(shè)的刪除鎖鍵命令;
36、將所述刪除鎖鍵命令發(fā)送給所述分布式鎖服務(wù)。
37、為了解決上述技術(shù)問題,本技術(shù)實施例還提供一種服務(wù)請求的處理裝置,采用了如下所述的技術(shù)方案:
38、第一判斷模塊,用于判斷在目標(biāo)接口中是否接收到由客戶端發(fā)出的服務(wù)請求;其中,所述目標(biāo)接口為添加了預(yù)設(shè)的冪等注解的接口,所述服務(wù)請求中攜帶令牌;
39、攔截模塊,用于若是,基于預(yù)設(shè)的目標(biāo)切面對所述服務(wù)請求進(jìn)行攔截,并從所述服務(wù)請求中提取出所述令牌;
40、校驗?zāi)K,用于基于預(yù)設(shè)的認(rèn)證中心對所述令牌進(jìn)行合法校驗;
41、接收模塊,用于若所述令牌通過合法校驗,則從預(yù)設(shè)的分布式鎖服務(wù)中獲取鎖,并接收所述分布式鎖服務(wù)返回的鎖獲取結(jié)果;
42、執(zhí)行模塊,用于若所述鎖獲取結(jié)果為獲取鎖成功,則基于所述目標(biāo)接口執(zhí)行與所述服務(wù)請求對應(yīng)的業(yè)務(wù)邏輯處理,得到對應(yīng)的處理結(jié)果;
43、構(gòu)建模塊,用于基于所述處理結(jié)果構(gòu)建對應(yīng)的響應(yīng)對象;
44、第一返回模塊,用于將所述響應(yīng)對象返回給所述客戶端。
45、為了解決上述技術(shù)問題,本技術(shù)實施例還提供一種計算機設(shè)備,采用了如下所述的技術(shù)方案:
46、若是,判斷在目標(biāo)接口中是否接收到由客戶端發(fā)出的服務(wù)請求;其中,所述目標(biāo)接口為添加了預(yù)設(shè)的冪等注解的接口,所述服務(wù)請求中攜帶令牌;
47、基于預(yù)設(shè)的目標(biāo)切面對所述服務(wù)請求進(jìn)行攔截,并從所述服務(wù)請求中提取出所述令牌;
48、基于預(yù)設(shè)的認(rèn)證中心對所述令牌進(jìn)行合法校驗;
49、若所述令牌通過合法校驗,則從預(yù)設(shè)的分布式鎖服務(wù)中獲取鎖,并接收所述分布式鎖服務(wù)返回的鎖獲取結(jié)果;
50、若所述鎖獲取結(jié)果為獲取鎖成功,則基于所述目標(biāo)接口執(zhí)行與所述服務(wù)請求對應(yīng)的業(yè)務(wù)邏輯處理,得到對應(yīng)的處理結(jié)果;
51、基于所述處理結(jié)果構(gòu)建對應(yīng)的響應(yīng)對象;
52、將所述響應(yīng)對象返回給所述客戶端。
53、為了解決上述技術(shù)問題,本技術(shù)實施例還提供一種計算機可讀存儲介質(zhì),采用了如下所述的技術(shù)方案:
54、判斷在目標(biāo)接口中是否接收到由客戶端發(fā)出的服務(wù)請求;其中,所述目標(biāo)接口為添加了預(yù)設(shè)的冪等注解的接口,所述服務(wù)請求中攜帶令牌;
55、若是,基于預(yù)設(shè)的目標(biāo)切面對所述服務(wù)請求進(jìn)行攔截,并從所述服務(wù)請求中提取出所述令牌;
56、基于預(yù)設(shè)的認(rèn)證中心對所述令牌進(jìn)行合法校驗;
57、若所述令牌通過合法校驗,則從預(yù)設(shè)的分布式鎖服務(wù)中獲取鎖,并接收所述分布式鎖服務(wù)返回的鎖獲取結(jié)果;
58、若所述鎖獲取結(jié)果為獲取鎖成功,則基于所述目標(biāo)接口執(zhí)行與所述服務(wù)請求對應(yīng)的業(yè)務(wù)邏輯處理,得到對應(yīng)的處理結(jié)果;
59、基于所述處理結(jié)果構(gòu)建對應(yīng)的響應(yīng)對象;
60、將所述響應(yīng)對象返回給所述客戶端。
61、與現(xiàn)有技術(shù)相比,本技術(shù)實施例主要有以下有益效果:
62、本技術(shù)首先判斷在目標(biāo)接口中是否接收到由客戶端發(fā)出的服務(wù)請求;其中,所述目標(biāo)接口為添加了預(yù)設(shè)的冪等注解的接口,所述服務(wù)請求中攜帶令牌;若是,基于預(yù)設(shè)的目標(biāo)切面對所述服務(wù)請求進(jìn)行攔截,并從所述服務(wù)請求中提取出所述令牌;然后基于預(yù)設(shè)的認(rèn)證中心對所述令牌進(jìn)行合法校驗;若所述令牌通過合法校驗,則從預(yù)設(shè)的分布式鎖服務(wù)中獲取鎖,并接收所述分布式鎖服務(wù)返回的鎖獲取結(jié)果;若所述鎖獲取結(jié)果為獲取鎖成功,則基于所述目標(biāo)接口執(zhí)行與所述服務(wù)請求對應(yīng)的業(yè)務(wù)邏輯處理,得到對應(yīng)的處理結(jié)果;后續(xù)基于所述處理結(jié)果構(gòu)建對應(yīng)的響應(yīng)對象;最后將所述響應(yīng)對象返回給所述客戶端。本技術(shù)在接收到由客戶端發(fā)出的服務(wù)請求時,通過基于目標(biāo)切面、認(rèn)證中心以及分布式鎖服務(wù)的結(jié)合使用,實現(xiàn)目標(biāo)接口的可插拔冪等操作,從而可以保證在微服務(wù)的服務(wù)調(diào)用過程中的請求重復(fù)執(zhí)行,有效地確保了服務(wù)請求處理的正確性和一致性,保證了微服務(wù)的穩(wěn)定性和可靠性。