本申請(qǐng)實(shí)施例涉及測(cè)試,尤其涉及一種流量回放方法、裝置、計(jì)算機(jī)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
::1、流量錄制的重要性不言而喻,不管是研發(fā)還是測(cè)試,都希望獲取線上的真實(shí)流量用于壓測(cè)或功能回歸測(cè)試。通過(guò)流量錄制可以省去大量的測(cè)試case構(gòu)造工作,同時(shí)case覆蓋更全面更真實(shí)。在通過(guò)流量錄制和回放來(lái)進(jìn)行測(cè)試時(shí),流量鏈路的完整性是比較關(guān)鍵的,一次接口請(qǐng)求往往會(huì)發(fā)出幾次下游依賴請(qǐng)求,如何將這些請(qǐng)求關(guān)聯(lián)成一條完整的請(qǐng)求鏈路對(duì)回放能否成功至關(guān)重要。2、目前主流的鏈路追蹤框架,都是在發(fā)送請(qǐng)求的時(shí)候,將相關(guān)鏈路信息注入到請(qǐng)求頭中,作為請(qǐng)求的一部分傳輸。然而,數(shù)據(jù)庫(kù)請(qǐng)求等請(qǐng)求協(xié)議并沒(méi)有攜帶額外信息的請(qǐng)求頭,因此,利用這些鏈路追蹤框架能抓取到的鏈路并不完整。3、需要說(shuō)明的是,上述內(nèi)容并不必然是現(xiàn)有技術(shù),也不用于限制本申請(qǐng)的專利保護(hù)范圍。技術(shù)實(shí)現(xiàn)思路1、本申請(qǐng)實(shí)施例提供一種流量回放方法、裝置、計(jì)算機(jī)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、計(jì)算機(jī)程序產(chǎn)品,以解決或緩解上面提出的一項(xiàng)或更多項(xiàng)技術(shù)問(wèn)題。2、本申請(qǐng)實(shí)施例的一個(gè)方面提供了一種流量回放方法,所述方法包括:3、監(jiān)聽(tīng)目標(biāo)主容器的端口,以獲取所述目標(biāo)主容器的業(yè)務(wù)請(qǐng)求流量,其中,所述業(yè)務(wù)請(qǐng)求流量包括追蹤標(biāo)識(shí);4、在獲取到第一業(yè)務(wù)請(qǐng)求流量的情況下,根據(jù)追蹤標(biāo)識(shí)記錄所述第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求和第一返回?cái)?shù)據(jù),并在所述第一下游請(qǐng)求包含數(shù)據(jù)庫(kù)請(qǐng)求的情況下,將所述第一業(yè)務(wù)請(qǐng)求流量的第一追蹤標(biāo)識(shí)注入到所述數(shù)據(jù)庫(kù)請(qǐng)求的結(jié)構(gòu)化查詢語(yǔ)句中,其中,所述第一業(yè)務(wù)請(qǐng)求流量為當(dāng)前的業(yè)務(wù)請(qǐng)求流量;5、根據(jù)所述第一業(yè)務(wù)請(qǐng)求流量、所述第一下游請(qǐng)求、所述第一返回?cái)?shù)據(jù)和所述第一追蹤標(biāo)識(shí)生成流量文件;6、回放所述流量文件,根據(jù)所述第一追蹤標(biāo)識(shí)攔截所述第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求并轉(zhuǎn)發(fā)到模擬服務(wù)端,以使所述模擬服務(wù)端根據(jù)所述第一下游請(qǐng)求返回所述第一返回?cái)?shù)據(jù)至所述目標(biāo)主容器。7、可選地,所述將所述第一業(yè)務(wù)請(qǐng)求流量的第一追蹤標(biāo)識(shí)注入到所述數(shù)據(jù)庫(kù)請(qǐng)求的結(jié)構(gòu)化查詢語(yǔ)句中,包括:8、利用所述目標(biāo)主容器中的第一sdk將所述第一業(yè)務(wù)請(qǐng)求流量的第一追蹤標(biāo)識(shí)注入到所述數(shù)據(jù)庫(kù)請(qǐng)求的結(jié)構(gòu)化查詢語(yǔ)句的行首中,其中,所述第一sdk與所述目標(biāo)主容器對(duì)應(yīng)業(yè)務(wù)的語(yǔ)言類型相適應(yīng)。9、可選地,所述監(jiān)聽(tīng)目標(biāo)主容器的端口,以獲取所述目標(biāo)主容器的業(yè)務(wù)請(qǐng)求流量,包括:10、監(jiān)聽(tīng)所述目標(biāo)主容器的端口的流量,在當(dāng)前流量的目標(biāo)ip地址和端口為所述目標(biāo)主容器的業(yè)務(wù)地址的情況下,確定獲取到所述目標(biāo)主容器的業(yè)務(wù)請(qǐng)求流量。11、可選地,所述在獲取到第一業(yè)務(wù)請(qǐng)求流量的情況下,根據(jù)追蹤標(biāo)識(shí)記錄所述第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求和第一返回?cái)?shù)據(jù),包括:12、在當(dāng)前流量的源ip地址為所述目標(biāo)主容器的ip地址,且對(duì)應(yīng)的追蹤標(biāo)識(shí)為所述第一追蹤標(biāo)識(shí)的情況下,確定當(dāng)前流量為所述第一下游請(qǐng)求。13、可選地,所述回放所述流量文件,根據(jù)所述第一追蹤標(biāo)識(shí)攔截所述第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求并轉(zhuǎn)發(fā)到模擬服務(wù)端,包括:14、在接收到回放所述流量文件的目標(biāo)信號(hào)的情況下,更新所述目標(biāo)主容器的iptables,并啟動(dòng)與所述目標(biāo)主容器在同一個(gè)容器組的服務(wù)代理進(jìn)程;15、啟動(dòng)所述模擬服務(wù)端,回放所述流量文件;16、通過(guò)更新后的iptables將所述第一下游請(qǐng)求攔截至所述服務(wù)代理進(jìn)程;17、通過(guò)所述服務(wù)代理進(jìn)程將所述第一下游請(qǐng)求轉(zhuǎn)發(fā)至所述模擬服務(wù)端。18、可選地,所述方法還包括:19、在回放結(jié)束的情況下,向所述模擬服務(wù)端發(fā)送關(guān)閉模擬功能的信號(hào);20、復(fù)原所述目標(biāo)主容器的iptables,并釋放所述服務(wù)代理進(jìn)程。21、本申請(qǐng)實(shí)施例的另一個(gè)方面提供了一種流量回放裝置,所述裝置包括:22、監(jiān)聽(tīng)模塊,用于監(jiān)聽(tīng)目標(biāo)主容器的端口,以獲取所述目標(biāo)主容器的業(yè)務(wù)請(qǐng)求流量,其中,所述業(yè)務(wù)請(qǐng)求流量包括追蹤標(biāo)識(shí);23、注入模塊,用于在獲取到第一業(yè)務(wù)請(qǐng)求流量的情況下,根據(jù)追蹤標(biāo)識(shí)記錄所述第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求和第一返回?cái)?shù)據(jù),并在所述第一下游請(qǐng)求包含數(shù)據(jù)庫(kù)請(qǐng)求的情況下,將所述第一業(yè)務(wù)請(qǐng)求流量的第一追蹤標(biāo)識(shí)注入到所述數(shù)據(jù)庫(kù)請(qǐng)求的結(jié)構(gòu)化查詢語(yǔ)句中,其中,所述第一業(yè)務(wù)請(qǐng)求流量為當(dāng)前的業(yè)務(wù)請(qǐng)求流量;24、生成模塊,用于根據(jù)所述第一業(yè)務(wù)請(qǐng)求流量、所述第一下游請(qǐng)求、所述第一返回?cái)?shù)據(jù)和所述第一追蹤標(biāo)識(shí)生成流量文件;25、回放模塊,用于回放所述流量文件,根據(jù)所述第一追蹤標(biāo)識(shí)攔截所述第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求并轉(zhuǎn)發(fā)到模擬服務(wù)端,以使所述模擬服務(wù)端根據(jù)所述第一下游請(qǐng)求返回所述第一返回?cái)?shù)據(jù)至所述目標(biāo)主容器。26、本申請(qǐng)實(shí)施例的另一個(gè)方面提供了一種計(jì)算機(jī)設(shè)備,包括:至少一個(gè)處理器;及與所述至少一個(gè)處理器通信連接的存儲(chǔ)器;其中:所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器能夠執(zhí)行如上所述的方法。27、本申請(qǐng)實(shí)施例的另一個(gè)方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有計(jì)算機(jī)指令,所述計(jì)算機(jī)指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上所述的方法。28、本申請(qǐng)實(shí)施例的另一個(gè)方面提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上所述的方法。29、本申請(qǐng)實(shí)施例采用上述技術(shù)方案可以包括如下優(yōu)勢(shì):30、通過(guò)監(jiān)聽(tīng)目標(biāo)主容器的端口,以獲取目標(biāo)主容器的帶有追蹤標(biāo)識(shí)的業(yè)務(wù)請(qǐng)求流量,在獲取到第一業(yè)務(wù)請(qǐng)求流量的情況下,根據(jù)追蹤標(biāo)識(shí)記錄第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求和第一返回?cái)?shù)據(jù),并在第一下游請(qǐng)求包括數(shù)據(jù)庫(kù)請(qǐng)求的情況下,將第一業(yè)務(wù)請(qǐng)求流量的第一追蹤標(biāo)識(shí)注入到數(shù)據(jù)庫(kù)請(qǐng)求的結(jié)構(gòu)化查詢語(yǔ)句中,根據(jù)第一業(yè)務(wù)請(qǐng)求流量、第一下游請(qǐng)求、第一返回?cái)?shù)據(jù)和第一追蹤標(biāo)識(shí)生成流量文件;回放流量文件,根據(jù)第一追蹤標(biāo)識(shí)攔截第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求并轉(zhuǎn)發(fā)到模擬服務(wù)端,以使模擬服務(wù)端根據(jù)第一下游請(qǐng)求,通過(guò)將追蹤標(biāo)識(shí)注入到數(shù)據(jù)庫(kù)請(qǐng)求的結(jié)構(gòu)化查詢語(yǔ)句中,可以追蹤數(shù)據(jù)庫(kù)這些沒(méi)有攜帶請(qǐng)求頭對(duì)應(yīng)的鏈路,從而不僅可以追蹤到攜帶有請(qǐng)求頭對(duì)應(yīng)的鏈路,也可以追蹤到?jīng)]有攜帶請(qǐng)求頭對(duì)應(yīng)的鏈路,使追蹤的鏈路較為完整。技術(shù)特征:1.一種流量回放方法,其特征在于,所述方法包括:2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述第一業(yè)務(wù)請(qǐng)求流量的第一追蹤標(biāo)識(shí)注入到所述數(shù)據(jù)庫(kù)請(qǐng)求的結(jié)構(gòu)化查詢語(yǔ)句中,包括:3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述監(jiān)聽(tīng)目標(biāo)主容器的端口,以獲取所述目標(biāo)主容器的業(yè)務(wù)請(qǐng)求流量,包括:4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述在獲取到第一業(yè)務(wù)請(qǐng)求流量的情況下,根據(jù)追蹤標(biāo)識(shí)記錄所述第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求和第一返回?cái)?shù)據(jù),包括:5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述回放所述流量文件,根據(jù)所述第一追蹤標(biāo)識(shí)攔截所述第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求并轉(zhuǎn)發(fā)到模擬服務(wù)端,包括:6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括:7.一種流量回放裝置,其特征在于,所述裝置包括:8.?一種計(jì)算機(jī)設(shè)備,其特征在于,包括:9.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有計(jì)算機(jī)指令,所述計(jì)算機(jī)指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至6中任一項(xiàng)所述的方法。10.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,其特征在于,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1至6中任一項(xiàng)所述方法的步驟。技術(shù)總結(jié)本申請(qǐng)實(shí)施例了提供一種流量回放方法,該方法包括:監(jiān)聽(tīng)目標(biāo)主容器的端口,以獲取目標(biāo)主容器的業(yè)務(wù)請(qǐng)求流量;在獲取到第一業(yè)務(wù)請(qǐng)求流量的情況下,根據(jù)第一業(yè)務(wù)請(qǐng)求流量的追蹤標(biāo)識(shí)記錄第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求和第一返回?cái)?shù)據(jù),并在第一下游請(qǐng)求包含數(shù)據(jù)庫(kù)請(qǐng)求的情況下,將第一業(yè)務(wù)請(qǐng)求流量的第一追蹤標(biāo)識(shí)注入到數(shù)據(jù)庫(kù)請(qǐng)求的結(jié)構(gòu)化查詢語(yǔ)句中;根據(jù)第一業(yè)務(wù)請(qǐng)求流量、第一下游請(qǐng)求、第一返回?cái)?shù)據(jù)和第一追蹤標(biāo)識(shí)生成流量文件;回放流量文件,根據(jù)第一追蹤標(biāo)識(shí)攔截第一業(yè)務(wù)請(qǐng)求流量對(duì)應(yīng)的第一下游請(qǐng)求并轉(zhuǎn)發(fā)到模擬服務(wù)端,以使模擬服務(wù)端根據(jù)第一下游請(qǐng)求返回第一返回?cái)?shù)據(jù)至目標(biāo)主容器。本申請(qǐng)實(shí)施例的技術(shù)方案使追蹤的鏈路較為完整。技術(shù)研發(fā)人員:徐光耀,江正,何之真,嚴(yán)寬,朱錕煒受保護(hù)的技術(shù)使用者:上?;秒娦畔⒖萍加邢薰炯夹g(shù)研發(fā)日:技術(shù)公布日:2024/12/30