本發(fā)明涉及數(shù)據(jù)處理,特別涉及一種支持業(yè)務溯源的微服務處理系統(tǒng)。
背景技術:
1、由微服務架構(gòu)的原理我們可知:基于微服務架構(gòu)實現(xiàn)的處理系統(tǒng)具備拓展性好、迭代快等優(yōu)勢,但也存在對出錯業(yè)務進行逆向溯源難度較大的問題。一旦某個業(yè)務在流轉(zhuǎn)過程中發(fā)生錯誤則需要花費大量的人力資源去分析、篩選各節(jié)點的本地日志,并在得到所有相關日志之后才能啟動后續(xù)的調(diào)試工作。微服務處理系統(tǒng)的結(jié)構(gòu)越復雜、則業(yè)務溯源難度越大且出錯業(yè)務的調(diào)試效率越低。
技術實現(xiàn)思路
1、本發(fā)明的目的,就是針對現(xiàn)有技術的缺陷,提供一種支持業(yè)務溯源的微服務處理系統(tǒng),該系統(tǒng)包括:多個第一客戶端、第一業(yè)務接入端、第一業(yè)務標識庫、多個第一業(yè)務流轉(zhuǎn)網(wǎng)絡、第一業(yè)務日志庫和第一業(yè)務溯源端;本發(fā)明系統(tǒng)在傳統(tǒng)的微服務處理系統(tǒng)上增加了第一業(yè)務標識庫、第一業(yè)務日志庫和第一業(yè)務溯源端;并通過第一業(yè)務標識庫為每個第一客戶端發(fā)起的每個第一業(yè)務請求分配一個唯一的全局業(yè)務標識;并在第一業(yè)務流轉(zhuǎn)網(wǎng)絡的業(yè)務節(jié)點流轉(zhuǎn)過程中,先由首節(jié)點將全局業(yè)務標識作為對應的父節(jié)點業(yè)務標識、并在當前父節(jié)點業(yè)務標識的基礎上增加當前節(jié)點的標識增項構(gòu)成對應的自身節(jié)點業(yè)務標識,再由下一級調(diào)用節(jié)點將上一級節(jié)點的節(jié)點業(yè)務標識作為對應的父節(jié)點業(yè)務標識、并在當前父節(jié)點業(yè)務標識的基礎上增加當前節(jié)點的標識增項構(gòu)成對應的自身節(jié)點業(yè)務標識,依次遞推即可從每條業(yè)務鏈上的任一流轉(zhuǎn)節(jié)點出發(fā)反推出當次業(yè)務流轉(zhuǎn)過的所有節(jié)點信息;并在第一業(yè)務流轉(zhuǎn)網(wǎng)絡的業(yè)務節(jié)點流轉(zhuǎn)過程中,在各個流轉(zhuǎn)節(jié)點上產(chǎn)生的節(jié)點業(yè)務日志里加入與當前節(jié)點對應的父節(jié)點業(yè)務標識和自身節(jié)點業(yè)務標識,并將各個節(jié)點業(yè)務日志存入第一業(yè)務日志庫;并由第一業(yè)務日志庫對各個節(jié)點業(yè)務日志的日志狀態(tài)進行識別,并在識別出錯誤狀態(tài)的節(jié)點業(yè)務日志之后將當前錯誤日志送至第一業(yè)務溯源端;并由第一業(yè)務溯源端從當前錯誤日志出發(fā)對當次業(yè)務鏈流轉(zhuǎn)過的所有流轉(zhuǎn)節(jié)點的節(jié)點業(yè)務日志序列進行逐級追溯直到獲得首節(jié)點的日志序列之后停止,并按從首節(jié)點到出錯節(jié)點的排序方向由得到的各級節(jié)點業(yè)務日志序列組成對應的業(yè)務鏈日志序列,并將該業(yè)務鏈日志序列送至預設的調(diào)試通知接口。本發(fā)明系統(tǒng)可對在任意流轉(zhuǎn)節(jié)點上出錯的業(yè)務流進行逆向溯源,通過本發(fā)明系統(tǒng)可以降低微服務處理系統(tǒng)的業(yè)務溯源難度、提高出錯業(yè)務的調(diào)試效率。
2、為實現(xiàn)上述目的,本發(fā)明實施例提供了一種支持業(yè)務溯源的微服務處理系統(tǒng),所述系統(tǒng)包括:多個第一客戶端、第一業(yè)務接入端、第一業(yè)務標識庫、多個第一業(yè)務流轉(zhuǎn)網(wǎng)絡、第一業(yè)務日志庫和第一業(yè)務溯源端;
3、各個所述第一客戶端與所述第一業(yè)務接入端;所述第一客戶端用于向所述第一業(yè)務接入端發(fā)送第一業(yè)務請求;并接收所述第一業(yè)務接入端回發(fā)的第一業(yè)務反饋;所述第一業(yè)務請求包括第一業(yè)務接口;
4、所述第一業(yè)務接入端分別與所述第一業(yè)務標識庫和各個所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡連接;所述第一業(yè)務接入端用于在接收到所述第一業(yè)務請求時,將當前所述第一業(yè)務請求的請求時間作為對應的第一請求時間;并從所述第一業(yè)務請求中提取出對應的所述第一業(yè)務接口;并將攜帶了所述第一請求時間和所述第一業(yè)務接口的第一全局標識申請向所述第一業(yè)務標識庫發(fā)送;并接收所述第一業(yè)務標識庫回發(fā)的第一業(yè)務全局標識;并由所述第一業(yè)務全局標識和所述第一業(yè)務請求組成對應的第一業(yè)務內(nèi)部請求向與所述第一業(yè)務接口對應的所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡發(fā)送;并將所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡回發(fā)的所述第一業(yè)務反饋向所述第一客戶端回發(fā);
5、所述第一業(yè)務標識庫用于使用redis數(shù)據(jù)庫存儲多個第一業(yè)務標識記錄;所述第一業(yè)務標識記錄包括第一業(yè)務接口字段和第一業(yè)務全局標識字段;
6、所述第一業(yè)務標識庫還用于在同時接收到一個或多個所述第一全局標識申請時,為當次接收的各個所述第一全局標識申請創(chuàng)建一個對應的第一全局標識處理線程;并由各個所述第一全局標識處理線程根據(jù)所述第一全局標識申請進行全局標識生成和業(yè)務標識記錄設置處理得到對應的所述第一業(yè)務全局標識向所述第一業(yè)務接入端回發(fā);
7、各個所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡分別與所述第一業(yè)務日志庫連接;所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡包括多個第一流轉(zhuǎn)節(jié)點;所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡中的所述第一流轉(zhuǎn)節(jié)點按預設的業(yè)務流微服務調(diào)用規(guī)則進行連接;所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡用于根據(jù)所述第一業(yè)務內(nèi)部請求進行業(yè)務流程處理得到對應的所述第一業(yè)務反饋向所述第一業(yè)務接入端回發(fā);所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡還用于在每次業(yè)務流程處理過程中,對過程日志進行采集得到對應的第一節(jié)點業(yè)務日志存入所述第一業(yè)務日志庫;
8、所述第一業(yè)務日志庫與所述第一業(yè)務溯源端連接;所述第一業(yè)務日志庫用于保存所述第一節(jié)點業(yè)務日志;所述第一業(yè)務日志庫還用于對接收到的所述第一節(jié)點業(yè)務日志的日志狀態(tài)進行識別得到對應的第一日志狀態(tài);并在所述第一日志狀態(tài)為錯誤狀態(tài)時,將攜帶了當前所述第一節(jié)點業(yè)務日志的第一業(yè)務溯源申請向所述第一業(yè)務溯源端發(fā)送;所述第一日志狀態(tài)包括成功狀態(tài)和錯誤狀態(tài);
9、所述第一業(yè)務溯源端用于從接收到的所述第一業(yè)務溯源申請中提取出對應的所述第一節(jié)點業(yè)務日志;并根據(jù)所述第一節(jié)點業(yè)務日志的業(yè)務標識對所述第一業(yè)務日志庫進行業(yè)務鏈日志追溯得到對應的第一業(yè)務鏈日志序列;并將所述第一業(yè)務鏈日志序列向預設的調(diào)試通知接口發(fā)送。
10、優(yōu)選的,所述第一業(yè)務標識庫具體用在所述由各個所述第一全局標識處理線程根據(jù)所述第一全局標識申請進行全局標識生成和業(yè)務標識記錄設置處理得到對應的所述第一業(yè)務全局標識向所述第一業(yè)務接入端回發(fā)時,由所述第一全局標識處理線程從所述第一全局標識申請中提取出對應的所述第一請求時間和所述第一業(yè)務接口;
11、并基于預設的分布式鎖處理機制,對所述redis數(shù)據(jù)庫中所述第一業(yè)務接口字段與所述第一業(yè)務接口匹配的所述第一業(yè)務標識記錄進行記錄鎖定處理得到對應的第一鎖定結(jié)果;并在所述第一鎖定結(jié)果為鎖定失敗時,在等待一個指定時長之后繼續(xù)基于所述分布式鎖處理機制對所述redis數(shù)據(jù)庫中所述第一業(yè)務接口字段與所述第一業(yè)務接口匹配的所述第一業(yè)務標識記錄進行記錄鎖定處理直到所述第一鎖定結(jié)果為鎖定成功為止;并在所述第一鎖定結(jié)果為鎖定成功時,將當前鎖定的所述第一業(yè)務標識記錄作為對應的當前鎖定記錄;所述第一鎖定結(jié)果包括鎖定成功和鎖定失??;
12、并對所述第一請求時間進行時間戳格式轉(zhuǎn)換得到對應的第一請求時間戳;并將所述第一請求時間戳減去預設的第一起始時間戳的差作為對應的第一時間戳;并將預設的第一對應關系列表中,第二業(yè)務接口字段與所述第一業(yè)務接口匹配的第一對應關系記錄的第一業(yè)務附加標識字段提取出來作為對應的第一業(yè)務附加標識;所述第一對應關系列表包括多個所述第一對應關系記錄;所述第一對應關系記錄包括所述第二業(yè)務接口字段和所述第一業(yè)務附加標識字段;
13、并對當前時間是否為預設的單日序號清零時間進行識別;若是,則設置一個新的第一業(yè)務序號為預設的單日起始序號;若否,則將所述當前鎖定記錄的所述第一業(yè)務全局標識字段的所述第一業(yè)務序號提取出來作為對應的前一業(yè)務序號,并將所述前一業(yè)務序號加1的和作為新的所述第一業(yè)務序號;
14、并由所述第一時間戳、所述第一業(yè)務附加標識和新的所述第一業(yè)務序號組成一個新的所述第一業(yè)務全局標識;并基于新的所述第一業(yè)務全局標識對所述當前鎖定記錄的所述第一業(yè)務全局標識字段進行重置;
15、并在重置成功后,基于預設的鎖定記錄解鎖機制對所述當前鎖定記錄進行解鎖;并將新的所述第一業(yè)務全局標識向所述第一業(yè)務接入端回發(fā)。
16、優(yōu)選的,所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡具體用于在所述根據(jù)所述第一業(yè)務內(nèi)部請求進行業(yè)務流程處理得到對應的所述第一業(yè)務反饋向所述第一業(yè)務接入端回發(fā)時,將網(wǎng)絡中的第一個所述第一流轉(zhuǎn)節(jié)點記為對應的首節(jié)點,并將除所述首節(jié)點之外的其他任一所述第一流轉(zhuǎn)節(jié)點記為對應的過程節(jié)點;
17、并由所述首節(jié)點接收所述第一業(yè)務內(nèi)部請求;并將所述第一業(yè)務內(nèi)部請求的所述第一業(yè)務全局標識提取出來作為對應的第一父節(jié)點業(yè)務標識;并為當前的所述第一業(yè)務內(nèi)部請求創(chuàng)建一個對應的第一會話實例;并為所述第一會話實例分配一個對應的第一會話標識;并將本地預置的節(jié)點標識作為對應的第一節(jié)點標識;并基于所述第一節(jié)點標識、所述第一會話標識和預設的節(jié)點業(yè)務標識增項規(guī)則對所述第一父節(jié)點業(yè)務標識進行標識信息增項處理得到對應的當前節(jié)點業(yè)務標識;并由所述第一會話實例基于本地的節(jié)點業(yè)務處理代碼根據(jù)所述第一業(yè)務內(nèi)部請求進行本節(jié)點業(yè)務處理得到對應的所述第一業(yè)務反饋向所述第一業(yè)務接入端回發(fā);并在所述第一會話實例的所述本節(jié)點業(yè)務處理的處理過程中若需對其他所述過程節(jié)點進行服務調(diào)用時,將當次調(diào)用的所述過程節(jié)點記為對應的當前子節(jié)點,并將當次調(diào)用所需的傳遞參數(shù)作為對應的第一調(diào)用參數(shù),并將所述當前節(jié)點業(yè)務標識作為對應的第一節(jié)點業(yè)務標識,并由得到的所述第一節(jié)點業(yè)務標識和所述第一調(diào)用參數(shù)組成對應的第一業(yè)務節(jié)點請求向所述當前子節(jié)點發(fā)送,并基于所述當前子節(jié)點返回的第一節(jié)點反饋進行后續(xù)業(yè)務處理;
18、并在任一所述過程節(jié)點被所述首節(jié)點或另一個所述過程節(jié)點調(diào)用時,將當次調(diào)用自身的所述首節(jié)點或另一個所述過程節(jié)點記為對應的當前父節(jié)點;并將所述當前父節(jié)點發(fā)送的所述第一業(yè)務節(jié)點請求的所述第一節(jié)點業(yè)務標識提取出來作為對應的所述第一父節(jié)點業(yè)務標識;并為當前的所述第一業(yè)務節(jié)點請求創(chuàng)建一個對應的所述第一會話實例;并為所述第一會話實例分配一個對應的所述第一會話標識;并基于所述第一節(jié)點標識、所述第一會話標識和預設的節(jié)點業(yè)務標識增項規(guī)則對所述第一父節(jié)點業(yè)務標識進行標識信息增項處理得到對應的當前節(jié)點業(yè)務標識;并由所述第一會話實例基于本地的節(jié)點業(yè)務處理代碼根據(jù)所述第一業(yè)務節(jié)點請求進行本節(jié)點業(yè)務處理得到對應的所述第一節(jié)點反饋向所述當前父節(jié)點回發(fā);并在所述第一會話實例的所述本節(jié)點業(yè)務處理的處理過程中若需對其他所述過程節(jié)點進行服務調(diào)用時,將當次調(diào)用的其他所述過程節(jié)點記為對應的當前子節(jié)點,并將當次調(diào)用所需的傳遞參數(shù)作為對應的所述第一調(diào)用參數(shù),并將所述當前節(jié)點業(yè)務標識作為對應的所述第一節(jié)點業(yè)務標識,并由得到的所述第一節(jié)點業(yè)務標識和所述第一調(diào)用參數(shù)組成對應的所述第一業(yè)務節(jié)點請求向所述當前子節(jié)點發(fā)送,并基于所述當前子節(jié)點返回的所述第一節(jié)點反饋進行后續(xù)業(yè)務處理。
19、進一步的,所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡的任一所述第一流轉(zhuǎn)節(jié)點具體用于在所述基于所述第一節(jié)點標識、所述第一會話標識和預設的節(jié)點業(yè)務標識增項規(guī)則對所述第一父節(jié)點業(yè)務標識進行標識信息增項處理得到對應的當前節(jié)點業(yè)務標識時,對當前時間是否為預設的單日計數(shù)器清零時間進行識別;若是,則將本地預置的第一計數(shù)器的計數(shù)值清零,并將清零后的所述第一計數(shù)器的計數(shù)值作為對應的第一計數(shù)值;若否,則對所述第一計數(shù)器的計數(shù)值加1,并將加1后的所述第一計數(shù)器的計數(shù)值作為對應的所述第一計數(shù)值;并對當前時間進行時間戳格式轉(zhuǎn)換得到對應的第二時間戳;并由預設的信息分隔符、所述第一節(jié)點標識、所述第一計數(shù)值、所述第一會話標識和所述第二時間戳組成一個對應的第一標識增項;并由所述第一父節(jié)點業(yè)務標識和所述第一標識增項組成一個對應的所述當前節(jié)點業(yè)務標識。
20、優(yōu)選的,所述第一業(yè)務流轉(zhuǎn)網(wǎng)絡具體用于在所述對過程日志進行采集得到對應的第一節(jié)點業(yè)務日志存入所述第一業(yè)務日志庫時,由網(wǎng)絡中的各個所述第一流轉(zhuǎn)節(jié)點的各個所述第一會話實例在對應的所述本節(jié)點業(yè)務處理的處理過程中對各個預先指定的業(yè)務處理步驟的步驟功能說明、步驟執(zhí)行時間和步驟執(zhí)行狀態(tài)進行信息采集得到一組對應的第一處理步驟說明、第一步驟執(zhí)行時間和第一步驟執(zhí)行狀態(tài);并由當前所述第一會話實例對應的所述第一父節(jié)點業(yè)務標識和所述第一節(jié)點業(yè)務標識與每組所述第一處理步驟說明、所述第一步驟執(zhí)行時間和所述第一步驟執(zhí)行狀態(tài)組成一個對應的所述第一節(jié)點業(yè)務日志存入所述第一業(yè)務日志庫;所述第一節(jié)點業(yè)務日志包括所述第一父節(jié)點業(yè)務標識、所述第一節(jié)點業(yè)務標識、所述第一處理步驟說明、所述第一步驟執(zhí)行時間和所述第一步驟執(zhí)行狀態(tài);所述第一步驟執(zhí)行狀態(tài)包括成功狀態(tài)和錯誤狀態(tài)。
21、優(yōu)選的,所述第一業(yè)務日志庫具體用于在所述對各個所述第一節(jié)點業(yè)務日志的日志狀態(tài)進行識別得到對應的第一日志狀態(tài)時,對所述第一節(jié)點業(yè)務日志的所述第一步驟執(zhí)行狀態(tài)進行識別;若所述第一步驟執(zhí)行狀態(tài)為成功狀態(tài)則設置對應的所述第一日志狀態(tài)為成功狀態(tài);若所述第一步驟執(zhí)行狀態(tài)為錯誤狀態(tài)則設置對應的所述第一日志狀態(tài)為錯誤狀態(tài)。
22、優(yōu)選的,所述第一業(yè)務溯源端具體用于在所述根據(jù)所述第一節(jié)點業(yè)務日志的業(yè)務標識對所述第一業(yè)務日志庫進行業(yè)務鏈日志追溯得到對應的第一業(yè)務鏈日志序列時:
23、步驟71,從所述第一節(jié)點業(yè)務日志中提取出對應的所述第一父節(jié)點業(yè)務標識和所述第一節(jié)點業(yè)務標識作為對應的當前父節(jié)點業(yè)務標識和當前節(jié)點業(yè)務標識;并初始化一個內(nèi)容為空的所述第一業(yè)務鏈日志序列;
24、步驟72,并將所述第一業(yè)務日志庫中所有所述第一父節(jié)點業(yè)務標識和所述第一節(jié)點業(yè)務標識與對應的所述當前父節(jié)點業(yè)務標識和所述當前節(jié)點業(yè)務標識匹配的所述第一節(jié)點業(yè)務日志提取出來按時間先后順序排序組成一個對應的第一節(jié)點業(yè)務日志序列;并將本次得到的所述第一節(jié)點業(yè)務日志序列添加到所述第一業(yè)務鏈日志序列的序列頭部;
25、步驟73,并對所述當前節(jié)點業(yè)務標識對應的所述第一流轉(zhuǎn)節(jié)點是否為所述首節(jié)點進行識別;若否,則轉(zhuǎn)至步驟74;若是,則轉(zhuǎn)至步驟75;
26、步驟74,將所述第一業(yè)務日志庫中任一所述第一節(jié)點業(yè)務標識與所述當前父節(jié)點業(yè)務標識匹配的所述第一節(jié)點業(yè)務日志作為對應的第一日志;并將所述第一日志的所述第一父節(jié)點業(yè)務標識和所述第一節(jié)點業(yè)務標識提取作為新的所述當前父節(jié)點業(yè)務標識和所述當前節(jié)點業(yè)務標識;并返回步驟72;
27、步驟75,將最新的所述第一業(yè)務鏈日志序列作為本次業(yè)務鏈日志追溯的追溯結(jié)果輸出。
28、本發(fā)明實施例提供了一種支持業(yè)務溯源的微服務處理系統(tǒng),該系統(tǒng)包括:多個第一客戶端、第一業(yè)務接入端、第一業(yè)務標識庫、多個第一業(yè)務流轉(zhuǎn)網(wǎng)絡、第一業(yè)務日志庫和第一業(yè)務溯源端;本發(fā)明系統(tǒng)在傳統(tǒng)的微服務處理系統(tǒng)上增加了第一業(yè)務標識庫、第一業(yè)務日志庫和第一業(yè)務溯源端;并通過第一業(yè)務標識庫為每個第一客戶端發(fā)起的每個第一業(yè)務請求分配一個唯一的全局業(yè)務標識;并在第一業(yè)務流轉(zhuǎn)網(wǎng)絡的業(yè)務節(jié)點流轉(zhuǎn)過程中,先由首節(jié)點將全局業(yè)務標識作為對應的父節(jié)點業(yè)務標識、并在當前父節(jié)點業(yè)務標識的基礎上增加當前節(jié)點的標識增項構(gòu)成對應的自身節(jié)點業(yè)務標識,再由下一級調(diào)用節(jié)點將上一級節(jié)點的節(jié)點業(yè)務標識作為對應的父節(jié)點業(yè)務標識、并在當前父節(jié)點業(yè)務標識的基礎上增加當前節(jié)點的標識增項構(gòu)成對應的自身節(jié)點業(yè)務標識,依次遞推即可從每條業(yè)務鏈上的任一流轉(zhuǎn)節(jié)點出發(fā)反推出當次業(yè)務流轉(zhuǎn)過的所有節(jié)點信息;并在第一業(yè)務流轉(zhuǎn)網(wǎng)絡的業(yè)務節(jié)點流轉(zhuǎn)過程中,在各個流轉(zhuǎn)節(jié)點上產(chǎn)生的節(jié)點業(yè)務日志里加入與當前節(jié)點對應的父節(jié)點業(yè)務標識和自身節(jié)點業(yè)務標識,并將各個節(jié)點業(yè)務日志存入第一業(yè)務日志庫;并由第一業(yè)務日志庫對各個節(jié)點業(yè)務日志的日志狀態(tài)進行識別,并在識別出錯誤狀態(tài)的節(jié)點業(yè)務日志之后將當前錯誤日志送至第一業(yè)務溯源端;并由第一業(yè)務溯源端從當前錯誤日志出發(fā)對當次業(yè)務鏈流轉(zhuǎn)過的所有流轉(zhuǎn)節(jié)點的節(jié)點業(yè)務日志序列進行逐級追溯直到獲得首節(jié)點的日志序列之后停止,并按從首節(jié)點到出錯節(jié)點的排序方向由得到的各級節(jié)點業(yè)務日志序列組成對應的業(yè)務鏈日志序列,并將該業(yè)務鏈日志序列送至預設的調(diào)試通知接口。本發(fā)明系統(tǒng)可對在任意流轉(zhuǎn)節(jié)點上出錯的業(yè)務流進行逆向溯源,通過本發(fā)明系統(tǒng)既減少了大量的人力資源消耗、又降低了微服務處理系統(tǒng)的業(yè)務溯源難度、還提高了出錯業(yè)務的調(diào)試效率。