CN117493179A - 流量录制回放方法、装置、存储介质及电子设备 - Google Patents

流量录制回放方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN117493179A
CN117493179A CN202311437475.2A CN202311437475A CN117493179A CN 117493179 A CN117493179 A CN 117493179A CN 202311437475 A CN202311437475 A CN 202311437475A CN 117493179 A CN117493179 A CN 117493179A
Authority
CN
China
Prior art keywords
request message
abnormal
exception
message
playback
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311437475.2A
Other languages
English (en)
Inventor
傅星楠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Netease Cloud Music Technology Co Ltd
Original Assignee
Hangzhou Netease Cloud Music Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Netease Cloud Music Technology Co Ltd filed Critical Hangzhou Netease Cloud Music Technology Co Ltd
Priority to CN202311437475.2A priority Critical patent/CN117493179A/zh
Publication of CN117493179A publication Critical patent/CN117493179A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开实施方式涉及一种流量录制回放方法、流量录制回放装置、存储介质与电子设备,涉及软件开发和软件测试技术领域。所述方法包括:服务器对异常请求消息进行拦截,并根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;响应于接收到回放所述异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向所述回放异常请求消息中注入所述录制数据;执行所述回放异常请求消息,并在执行结束后注入所述异常请求消息的响应消息,以复现所述异常请求消息。如此,不仅能够应用于查询类场景,也能在变更类场景复现成功;并且在一定程度上减少了计算机、人力资源的浪费。

Description

流量录制回放方法、装置、存储介质及电子设备
技术领域
本公开的实施方式涉及软件开发和软件测试技术领域,更具体地,本公开的实施方式涉及一种流量录制回放方法、流量录制回放装置、计算机可读存储介质及电子设备。
背景技术
本部分旨在为本公开的实施方式提供背景或上下文,此处的描述不因为包括在本部分中就承认是现有技术。
流量拷贝是指,在用户访问系统的过程中,将进入和流出的数据复制下来并保存,待后续使用,即离线拷贝模式;也可以将拷贝的数据转发到其他系统,即实时拷贝模式。
故障回放是指将存在问题的请求进行再次重复请求,但是不影响相关存储介质。
相关技术中,采用流量拷贝的方式,将网络请求的地址、参数全量保存下来,当发现有异常或者逻辑问题的时候,将对应的流量进行重新请求。
或者,使用多套环境进行故障重放,准备多套的数据、应用环境;比如:在测试环境发现故障后进行记录,需要复现故障时去回归测试环境进行复现。
发明内容
然而,对于查询类场景,可以完美复现问题,但对于变更类场景,可能导致数据无效或者数据失效而导致复现失败;并且,存在较大的计算机、人力资源的浪费。
为此,非常需要一种改进的流量录制回放方法,以在一定程度上覆盖更多的场景,节约计算机、人力资源成本。
在本上下文中,本公开的实施方式期望提供一种流量录制回放方法、流量录制回放装置、计算机可读存储介质及电子设备。
根据本公开的第一方面,提供一种流量录制回放方法,应用于服务器,所述方法包括:对异常请求消息进行拦截,并根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;响应于接收到回放所述异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向所述回放异常请求消息中注入所述录制数据;执行所述回放异常请求消息,并在执行结束后注入所述异常请求消息的响应消息,以复现所述异常请求消息。
在一种实施方式中,所述对异常请求消息进行拦截,并根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据,包括:对请求消息进行拦截,并根据所述预设采集规则对所述请求消息携带的请求信息进行采集和保存;执行所述请求消息,并拦截所述请求消息的响应消息,响应于根据所述请求消息的响应消息判断所述请求消息为异常请求消息,从保存的请求消息携带的请求信息中回调并保存与所述异常请求消息携带的异常请求信息相关的信息,得到所述录制数据。
在一种实施方式中,所述请求消息的响应消息携带状态码,所述根据所述请求消息的响应消息判断所述请求消息是否异常请求消息,包括:判断所述请求消息的响应消息携带的状态码是否为预设值,在所述状态码不为预设值时,确定所述请求消息异常。
在一种实施方式中,所述获取并保存与所述异常请求消息携带的异常请求信息相关的信息,得到录制数据,包括:对所述异常请求信息进行回调,并通过回调的所述异常请求信息获取所述异常请求信息的上下文信息;根据Trace ID对所述异常请求信息的上下文信息按照时间顺序进行组装和保存,得到所述录制数据;所述Trace ID用于唯一标识所述异常请求消息。
在一种实施方式中,在所述对请求消息进行拦截之后,所述方法还包括:根据所述请求消息生成Trace ID。
在一种实施方式中,所述执行所述请求消息,包括:通过不同的协议执行所述请求消息;所述协议至少包括超文本传输协议。
在一种实施方式中,所述服务器为多个,在所述根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存之前,所述方法还包括:多个所述服务器各自接收对应的所述预设采集规则;不同服务器接收的所述预设采集规则不同;对应的,所述执行所述请求消息,并拦截所述请求消息的响应消息,包括:多个所述服务器执行所述请求消息,并拦截每一所述服务器的输出的所述请求消息的响应消息。
在一种实施方式中,所述对异常请求消息进行拦截,包括:通过预设的Agent对所述异常请求消息进行拦截。
在一种实施方式中,在所述响应于接收到回放所述异常请求消息的控制指令对回放异常请求消息进行拦截之前,所述方法还包括:通过预设的Agent判断是否接收到回放所述异常请求消息的控制指令。
在一种实施方式中,所述录制数据包括入参和出参,所述服务器为多个,所述通过探针向所述回放异常请求消息中注入所述录制数据,包括:通过探针将所述入参注入所述回放异常请求消息,以使所述入参随所述回放异常请求消息输入多个所述服务器;将所述出参注入所述回放异常请求消息,以使所述出参随所述回放异常请求消息从多个所述服务器输出。
根据本公开的第二方面,提供一种流量录制回放装置,录制数据获取模块,被配置为对异常请求消息进行拦截,并根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;录制数据注入模块,被配置为响应于接收到回放所述异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向所述回放异常请求消息中注入所述录制数据;异常复现模块,被配置为执行所述回放异常请求消息,并在执行结束后注入所述异常请求消息的响应消息,以复现所述异常请求消息。
在一种实施方式中,所述录制数据获取模块被配置为:对请求消息进行拦截,并根据所述预设采集规则对所述请求消息携带的请求信息进行采集和保存;执行所述请求消息,并拦截所述请求消息的响应消息,响应于根据所述请求消息的响应消息判断所述请求消息为异常请求消息,从保存的请求消息携带的请求信息中回调并保存与所述异常请求消息携带的异常请求信息相关的信息,得到所述录制数据。
在一种实施方式中,所述录制数据获取模块被配置为:判断所述请求消息的响应消息携带的状态码是否为预设值,在所述状态码不为预设值时,确定所述请求消息异常。
在一种实施方式中,所述录制数据获取模块被配置为:对所述异常请求信息进行回调,并通过回调的所述异常请求信息获取所述异常请求信息的上下文信息;根据TraceID对所述异常请求信息的上下文信息按照时间顺序进行组装和保存,得到所述录制数据;所述Trace ID用于唯一标识所述异常请求消息。
在一种实施方式中,所述录制数据获取模块还被配置为:根据所述请求消息生成Trace ID。
在一种实施方式中,所述异常复现模块被配置为:通过不同的协议执行所述请求消息;所述协议至少包括超文本传输协议。
在一种实施方式中,所述服务器为多个,所述录制数据获取模块还被配置为:多个所述服务器各自接收对应的所述预设采集规则;不同服务器接收的所述预设采集规则不同;对应的,所述异常复现模块被配置为:多个所述服务器执行所述请求消息,并拦截每一所述服务器的输出的所述请求消息的响应消息。
在一种实施方式中,所述录制数据获取模块被配置为:通过预设的Agent对所述异常请求消息进行拦截。
在一种实施方式中,所述录制数据注入模块被配置为:通过预设的Agent判断是否接收到回放所述异常请求消息的控制指令。
在一种实施方式中,所述录制数据包括入参和出参,所述服务器为多个,所述录制数据注入模块被配置为:通过探针将所述入参注入所述回放异常请求消息,以使所述入参随所述回放异常请求消息输入多个所述服务器;将所述出参注入所述回放异常请求消息,以使所述出参随所述回放异常请求消息从多个所述服务器输出。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种方法。
根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一种方法。
根据本公开实施方式的流量录制回放方法、流量录制回放装置、计算机可读存储介质及电子设备,服务器对异常请求消息进行拦截,并根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;响应于接收到回放所述异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向所述回放异常请求消息中注入所述录制数据;执行所述回放异常请求消息,并在执行结束后注入所述异常请求消息的响应消息,以复现所述异常请求消息。如此,(1)由于是故障链路上各服务节点根据预设采集规则直接对异常请求信息的相关信息进行采集,而不是对所有请求的相关信息进行复制,当发现异常时再重新请求,因此,不仅能够应用于查询类场景,也能在变更类场景复现成功;(2)由于可以通过回调的方式只保存故障链路的信息,因此,在一定程度上减少了计算机、人力资源的浪费。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
图1示出本公开实施方式中一种流量录制回放流程架构示意图;
图2示出本公开实施方式中一种流量录制回放方法的流程图;
图3示出本公开实施方式中一种流量录制回放方法中获取录制数据的流程图;
图4示出本公开实施方式中一种流量录制回放方法中获取录制数据的流程图;
图5示出本公开实施方式中一种流量录制回放方法中注入录制数据的流程图;
图6示出本公开实施方式中一种流量录制回放装置的结构示意图;
图7示出本公开实施方式中一种电子设备的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本公开的实施方式,提供一种流量录制回放方法、流量录制回放装置、计算机可读存储介质及电子设备。
在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本公开的若干代表性实施方式,详细阐述本公开的原理和精神。
发明概述
相关技术一,采用流量拷贝的方式,将网络请求的地址、参数全量保存下来,当发现有异常或者逻辑问题的时候,将对应的流量进行重新请求。
上述方法存在以下问题:
(1)对于查询类场景,可以完美复现问题,但对于变更类场景,可能导致数据无效或者数据失效而导致复现失败;
(2)采用的流量拷贝方式,对网络性能存在一定影响;
(3)采用的流量重放方案会存在时效性,可能因为依赖的数据发生变化而导致复现失败。
相关技术二,使用多套环境进行故障重放,准备多套的数据、应用环境;比如:在测试环境发生故障后进行记录,需要复现故障时去回归测试环境进行复现。
上述方法存在以下问题:
(1)存在比较大的计算机、人力资源浪费,需要部署多套环境以及多套相同的数据,这堆普通单点的服务而言资源浪费尚可控,但对于大型的分布式多集群的应用来说资源浪费是巨大的;
(2)多套环境保持一致性的难度非常大,日常开发迭代过程中不可避免会操作这几套环境中的资源,无法保证100%的场景复现。
鉴于上述内容,本公开提供一种应流量录制回放方法、应流量录制回放装置、计算机可读存储介质及电子设备,服务系统对异常请求消息进行拦截,并根据预设采集规则对与异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;响应于接收到回放异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向回放异常请求消息中注入录制数据;执行回放异常请求消息,并在执行结束后注入异常请求消息的响应消息,以复现异常请求消息。如此,(1)由于是故障链路上各服务节点根据预设采集规则直接对异常请求信息的相关信息进行采集,而不是对所有请求的相关信息进行复制,当发现异常时再重新请求,因此,不仅能够应用于查询类场景,也能在变更类场景复现成功;(2)由于可以通过回调的方式只保存故障链路的信息,因此,在一定程度上减少了计算机、人力资源的浪费。
在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施方式。
应用场景总览
需要注意的是,下述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
本公开可以应用于任何需要流量录制回放,以复现故障的场景,比如:服务A出现故障,那么,需要对服务A的整个链路上的信息进行采集、保存以及回放;具体的,可以先对异常请求消息进行拦截,并根据预设采集规则对与异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;再响应于接收到回放异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向回放异常请求消息中注入录制数据;再执行回放异常请求消息,并在执行结束后注入异常请求消息的响应消息,以复现异常请求消息。
示例性方法
下面结合图1对本示例性实施方式运行环境的系统架构与应用场景进行示例性说明。
图1示出了系统架构的示意图,该系统架构100可以包括服务系统110。其中,服务系统110可以泛指提供流量录制回放相关服务的后台系统(如流量录制回放系统),服务系统110可以对异常请求消息进行拦截,并根据预设采集规则对与异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;响应于接收到回放异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向回放异常请求消息中注入录制数据;执行回放异常请求消息,并在执行结束后注入异常请求消息的响应消息,以复现异常请求消息。服务系统110可以是一台服务器或多台服务器形成的集群。
本公开的示例性实施方式首先提供一种流量录制回放方法,可以包括:
对异常请求消息进行拦截,并根据预设采集规则对与异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;
响应于接收到回放异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向回放异常请求消息中注入录制数据;
执行回放异常请求消息,并在执行结束后注入异常请求消息的响应消息,以复现异常请求消息。
图2示出了该流量录制回放方法的示例性流程,下面分别对图2中的每个步骤进行具体说明。
参考图2,步骤S210中,对异常请求消息进行拦截,并根据预设采集规则对与异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据。
其中,预设采集规则可以用于采集异常请求消息的相关信息,也可以用于采集正常请求消息的相关请求信息,以及异常请求消息的相关请求信息,此处不做限定。在实际操作中,预设采集规则可以根据业务需求进行配置。
在实际操作中,可以通过平台管理员配置好预设采集规则,然后将配置好的预设采集规则下发至各服务节点;用户或者开放平台发起的请求消息到达服务节点后,服务节点会按照预设采集规则开启异常请求消息的拦截和保存,将符合预设采集规则的故障的整个链路信息均保存在存储系统中。请求信息包括URL、时间、机器IP、域名等信息;与请求信息相关的信息包括入参、出参等参数。同理,与异常请求信息相关的信息同上与请求信息相关的信息,此处不再赘述。
可以通过预设的Agent对异常请求消息进行拦截。
继续参考图2,步骤S220中,响应于接收到回放异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向回放异常请求消息中注入录制数据。
其中,在执行本步骤之前,一般会向服务节点重新发送请求消息,然后,服务节点判定请求消息是否为回放异常请求消息,在服务节点判定请求消息为回放异常请求消息的情况下,执行本步骤。具体的,可以通过预设的Agent判断是否接收到回放异常请求消息的控制指令。
探针指的是Java Agent探针技术,Java Agent探针技术是一种能够动态修改Java字节码的技术,常用于程序调试、热部署、性能诊断分析等场景。它通过在应用程序运行时动态加载代理程序(Agent),获取应用程序的运行状态、性能指标、异常信息等数据,帮助开发人员诊断和解决问题。Java Agent探针可以捕获和分析程序运行时的错误和异常信息,以及检查线程是否阻塞等问题。它是一种Java字节码增强技术,允许在Java应用程序运行时动态地修改应用程序的字节码,以实现一些特定的功能。探针技术是Java Agent中常用的一种技术,可以在运行时收集应用程序的上下文信息,例如方法调用、参数、返回值等,以便进行性能分析、调试、监控等操作。
继续参考图2,步骤S230中,执行回放异常请求消息,并在执行结束后注入异常请求消息的响应消息,以复现异常请求消息。
其中,本步骤中“向回放异常请求消息的响应消息中注入异常请求消息的响应消息”的执行时机为“回放异常请求消息”执行完之后,可以理解为异常请求消息调用结束后。
异常请求消息的响应消息,可以理解为异常请求消息的结果,或者故障发生时的结果。
在一种实施方式中,在实际操作中,根据请求消息的响应消息(比如:状态码)才能判断该请求消息是否异常请求消息,因此,可以先将所有的请求消息携带的请求信息的相关信息进行保存,在判定请求消息为异常请求消息之后,从保存的请求消息携带的请求信息中调用异常请求消息携带的异常请求信息的相关信息;具体的,参考图3,上述步骤S210可以进一步包括以下步骤S310和S320:
步骤S310、对请求消息进行拦截,并根据预设采集规则对请求消息携带的请求信息进行采集和保存。
其中,可以通过在应用软件中提前部署的Agent对请求消息进行拦截。
步骤S320、执行请求消息,并拦截请求消息的响应消息,响应于根据请求消息的响应消息判断请求消息为异常请求消息,从保存的请求消息携带的请求信息中回调并保存与异常请求消息携带的异常请求信息相关的信息,得到录制数据。
其中,在实际操作中,响应消息中携带状态码,根据状态码可以判断请求消息是否是异常请求消息;在请求消息是异常请求消息的情况下,从步骤S310保存的请求消息携带的请求信息中回调并保存异常请求消息携带的异常请求信息相关的信息;也可以在请求消息为异常请求消息的时候,回调并保留保存的请求信息的相关信息,在请求消息为正常请求消息的时候,删除保存的请求信息的相关信息,以节约存储资源。
在一种实施方式中,请求消息的响应消息携带状态码,因此,根据响应消息能够判断请求消息是否是异常请求消息;具体的,上述步骤S320中的“根据请求消息的响应消息判断请求消息为异常请求消息”可以进一步包括以下步骤:
判断请求消息的响应消息携带的状态码是否为预设值,在状态码不为预设值时,确定请求消息异常。
其中,状态码是可以配置的;一般的,状态码根据协议的改变而改变,如果使用的是超文本传输协议,那么用http的进行判断,当值为200时表示成功,即请求消息为正常请求消息;当为其他值时表示失败,即请求消息为异常请求消息。
在实际操作中,还可以使用其他协议,进而通过为协议配置业务码来判断请求消息是否是异常请求消息。
在一种实施方式中,异常请求信息的相关信息需要按照通过链路中各节点的顺序进行排列;具体的,参考图4,上述步骤S320中的“回调并保存与异常请求消息携带的异常请求信息相关的信息,得到录制数据”可以进一步包括以下步骤S410和S420:
步骤S410、对异常请求信息进行回调,并通过回调的异常请求信息获取异常请求信息的上下文信息。
其中,回调可以采用异步回调的方式;即,将保存的请求信息通过异步的方式保存下来;进一步的,可以对保存的请求信息进行持久化。
在一种实施方式中,为了区分不同请求消息,可以生成唯一表示该请求消息的标识;具体的,该流量录制回放方法还可以进一步包括以下步骤:
根据请求消息生成Trace ID。
其中,在实际操作中,本步骤可以在拦截请求消息时执行,即,在步骤S210中“对异常请求消息进行拦截”时执行;具体的,可以使用开源的组件,在拦截请求消息时,生成唯一表示该请求消息的Trace ID,采用全链路追踪技术将Trace ID放在上下文中,贯穿整个请求消息的生命周期;进而,可以通过Trace ID获取异常请求信息的上下文信息;即,异常请求消息经过链路中各节点的入参、出参等上下文信息。
步骤S420、根据Trace ID对异常请求信息的上下文信息按照时间顺序进行组装和保存,得到录制数据。
其中,Trace ID用于唯一标识异常请求消息。
按照时间顺序将所有上下文信息进行排列,即可复现异常请求消息的请求过程。
在一种实施方式中,不同请求消息使用的协议可能不同;具体的,上述步骤S320中的“执行请求消息”可以进一步包括以下步骤:
通过不同的协议执行请求消息。
其中,协议至少包括超文本传输协议。
比较常见的协议是超文本传输协议;当然,也可以使用自研的网络请求协议,此处不做限定。
在一种实施方式中,服务器为多个;具体的,参考图5,在上述步骤S210中的“根据预设采集规则对与异常请求消息携带的异常请求信息相关的信息进行保存”之前,该流量录制回放方法还可以进一步包括以下步骤:
多个服务器各自接收对应的预设采集规则。
其中,不同服务器接收的预设采集规则不同。
多个服务器可以理解为多个服务节点;多个服务节点组成一条链路;因此,不同服务节点执行的内容不同,接收到的预设采集规则也不同;具体的,可以各接收预设采集规则的一部分,且该部分预设采集规则与该服务节点的执行内容相匹配。
对应的,上述步骤S320中的“执行请求消息,并拦截请求消息的响应消息”可以进一步包括以下步骤:
多个服务器执行请求消息,并拦截每一服务器的输出的请求消息的响应消息。
其中,每一服务器输出的请求消息的响应消息可以理解为服务节点的出参;即,在链路由多个服务节点组成的情况下,需要将该链路上每一服务节点的入参、出参都进行拦截和保存。
在一种实施方式中,录制数据包括入参和出参,服务器为多个;具体的,参考图5,上述步骤S220中的“通过探针向回放异常请求消息中注入录制数据”可以进一步包括以下步骤:
步骤S510、通过探针将所述入参注入回放异常请求消息,以使入参随回放异常请求消息输入多个服务器。
其中,服务器为多个,可以理解为需要复现障碍的链路有多个服务节点,因此,在实际操作中,按时间顺序以及服务节点的先后顺序,将入参输入多个服务器。
步骤S520、将出参注入回放异常请求消息,以使出参随回放异常请求消息从多个服务器输出。
其中,服务器为多个,可以理解为需要复现障碍的链路有多个服务节点,因此,在实际操作中,按时间顺序以及服务节点的先后顺序,将出参从多个服务器输出。
示例性装置
在介绍了本公开示例性实施方式的流量录制回放方法之后,接下来,参考图6对本公开示例性实施方式的流量录制回放装置进行说明。
参考图6所示,流量录制回放装置600,包括:
录制数据获取模块610,被配置为对异常请求消息进行拦截,并根据预设采集规则对与异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;录制数据注入模块620,被配置为响应于接收到回放异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向回放异常请求消息中注入录制数据;异常复现模块630,被配置为执行回放异常请求消息,并在执行结束后注入异常请求消息的响应消息,以复现异常请求消息。
在一种实施方式中,录制数据获取模块610被配置为:对请求消息进行拦截,并根据预设采集规则对请求消息携带的请求信息进行采集和保存;执行请求消息,并拦截请求消息的响应消息,响应于根据请求消息的响应消息判断请求消息为异常请求消息,从保存的请求消息携带的请求信息中回调并保存与异常请求消息携带的异常请求信息相关的信息,得到录制数据。
在一种实施方式中,录制数据获取模块610被配置为:判断请求消息的响应消息携带的状态码是否为预设值,在状态码不为预设值时,确定请求消息异常。
在一种实施方式中,录制数据获取模块610被配置为:对异常请求信息进行回调,并通过回调的异常请求信息获取异常请求信息的上下文信息;根据Trace ID对异常请求信息的上下文信息按照时间顺序进行组装和保存,得到录制数据;Trace ID用于唯一标识异常请求消息。
在一种实施方式中,录制数据获取模块610还被配置为:根据请求消息生成TraceID。
在一种实施方式中,异常复现模块630被配置为:通过不同的协议执行请求消息;协议至少包括超文本传输协议。
在一种实施方式中,服务器为多个,录制数据获取模块610还被配置为:多个服务器各自接收对应的预设采集规则;不同服务器接收的预设采集规则不同;对应的,异常复现模块630被配置为:多个服务器执行请求消息,并拦截每一服务器的输出的请求消息的响应消息。
在一种实施方式中,录制数据获取模块610被配置为:通过预设的Agent对异常请求消息进行拦截。
在一种实施方式中,录制数据注入模块620被配置为:通过预设的Agent判断是否接收到回放异常请求消息的控制指令。
在一种实施方式中,录制数据包括入参和出参,服务器为多个,录制数据注入模块620被配置为:通过探针将入参注入回放异常请求消息,以使入参随回放异常请求消息输入多个服务器;将出参注入回放异常请求消息,以使出参随回放异常请求消息从多个服务器输出。
示例性存储介质
下面对本公开示例性实施方式的存储介质进行说明。
本示例性实施方式中,可以通过程序产品实现上述方法,如可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
该程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RE等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言-诸如Java、C++等,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性电子设备
参考图7对本公开示例性实施方式的电子设备进行说明。
图7显示的电子设备700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:至少一个处理单元710、至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730、显示单元740。
其中,存储单元存储有程序代码,程序代码可以被处理单元710执行,使得处理单元710执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元710可以执行如图1所示的方法步骤等。
存储单元720可以包括易失性存储单元,例如随机存取存储单元(RAM)721和/或高速缓存存储单元722,还可以进一步包括只读存储单元(ROM)723。
存储单元720还可以包括具有一组(至少一个)程序模块725的程序/实用工具724,这样的程序模块725包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以包括数据总线、地址总线和控制总线。
电子设备700也可以与一个或多个外部设备2000(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(I/O)接口750进行。电子设备700还包括显示单元740,其连接到输入/输出(I/O)接口750,用于进行显示。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种流量录制回放方法,应用于服务器,其特征在于,所述方法包括:
对异常请求消息进行拦截,并根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;
响应于接收到回放所述异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向所述回放异常请求消息中注入所述录制数据;
执行所述回放异常请求消息,并在执行结束后注入所述异常请求消息的响应消息,以复现所述异常请求消息。
2.根据权利要求1所述的方法,其特征在于,所述对异常请求消息进行拦截,并根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据,包括:
对请求消息进行拦截,并根据所述预设采集规则对所述请求消息携带的请求信息进行采集和保存;
执行所述请求消息,并拦截所述请求消息的响应消息,响应于根据所述请求消息的响应消息判断所述请求消息为异常请求消息,从保存的请求消息携带的请求信息中回调并保存与所述异常请求消息携带的异常请求信息相关的信息,得到所述录制数据。
3.根据权利要求2所述的方法,其特征在于,所述请求消息的响应消息携带状态码,所述根据所述请求消息的响应消息判断所述请求消息是否异常请求消息,包括:
判断所述请求消息的响应消息携带的状态码是否为预设值,在所述状态码不为预设值时,确定所述请求消息异常。
4.根据权利要求2所述的方法,其特征在于,所述获取并保存与所述异常请求消息携带的异常请求信息相关的信息,得到录制数据,包括:
对所述异常请求信息进行回调,并通过回调的所述异常请求信息获取所述异常请求信息的上下文信息;
根据链路标识TraceID对所述异常请求信息的上下文信息按照时间顺序进行组装和保存,得到所述录制数据;所述TraceID用于唯一标识所述异常请求消息。
5.根据权利要求2所述的方法,其特征在于,在所述对请求消息进行拦截之后,所述方法还包括:
根据所述请求消息生成TraceID。
6.根据权利要求2所述的方法,其特征在于,所述执行所述请求消息,包括:
通过不同的协议执行所述请求消息;所述协议至少包括超文本传输协议。
7.根据权利要求2所述的方法,其特征在于,所述服务器为多个,在所述根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存之前,所述方法还包括:
多个所述服务器各自接收对应的所述预设采集规则;不同服务器接收的所述预设采集规则不同;
对应的,所述执行所述请求消息,并拦截所述请求消息的响应消息,包括:
多个所述服务器执行所述请求消息,并拦截每一所述服务器的输出的所述请求消息的响应消息。
8.一种流量录制回放装置,其特征在于,所述装置包括:
录制数据获取模块,被配置为对异常请求消息进行拦截,并根据预设采集规则对与所述异常请求消息携带的异常请求信息相关的信息进行保存,得到录制数据;
录制数据注入模块,被配置为响应于接收到回放所述异常请求消息的控制指令,对回放异常请求消息进行拦截,并通过探针向所述回放异常请求消息中注入所述录制数据;
异常复现模块,被配置为执行所述回放异常请求消息,并在执行结束后注入所述异常请求消息的响应消息,以复现所述异常请求消息。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~7任一项所述的方法。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~7任一项所述的方法。
CN202311437475.2A 2023-10-31 2023-10-31 流量录制回放方法、装置、存储介质及电子设备 Pending CN117493179A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311437475.2A CN117493179A (zh) 2023-10-31 2023-10-31 流量录制回放方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311437475.2A CN117493179A (zh) 2023-10-31 2023-10-31 流量录制回放方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN117493179A true CN117493179A (zh) 2024-02-02

Family

ID=89680856

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311437475.2A Pending CN117493179A (zh) 2023-10-31 2023-10-31 流量录制回放方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN117493179A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117729253A (zh) * 2024-02-18 2024-03-19 上海任意门科技有限公司 一种聊天场景复现方法、系统、存储介质和电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117729253A (zh) * 2024-02-18 2024-03-19 上海任意门科技有限公司 一种聊天场景复现方法、系统、存储介质和电子设备
CN117729253B (zh) * 2024-02-18 2024-05-03 上海任意门科技有限公司 一种聊天场景复现方法、系统、存储介质和电子设备

Similar Documents

Publication Publication Date Title
US7698691B2 (en) Server application state
KR102268355B1 (ko) 클라우드 배치 기반구조 검증 엔진
Chen Path-based failure and evolution management
US8473919B2 (en) System and method for repeating program flow for debugging and testing
US7340726B1 (en) Systems and methods for performing static analysis on source code
CN117493179A (zh) 流量录制回放方法、装置、存储介质及电子设备
US20200250019A1 (en) Method, device and computer program product for monitoring access request
US20190080016A1 (en) Systems and methods for updating data pipelines
CN106776318A (zh) 一种测试脚本录制方法及系统
CN112241370B (zh) 一种api接口类的校验方法、系统及装置
CN112799939A (zh) 增量代码覆盖率测试方法及装置、存储介质、电子设备
Chen et al. Using runtime paths for macroanalysis
CN111309570A (zh) 压力测试方法、介质、装置和计算设备
CN108647284B (zh) 记录用户行为的方法及装置、介质和计算设备
Nguyen et al. Insight: In-situ online service failure path inference in production computing infrastructures
US11263115B2 (en) Problem diagnosis technique of memory corruption based on regular expression generated during application compiling
CN112015467A (zh) 埋点方法、介质、装置和计算设备
CN115514677B (zh) 服务器拨测方法及系统
Xiang et al. Debugging openstack problems using a state graph approach
CN113626288A (zh) 故障处理方法、系统、装置、存储介质和电子设备
CN113986263A (zh) 代码自动化测试方法、装置、电子设备、存储介质
Tuncer et al. ConfEx: a framework for automating text-based software configuration analysis in the cloud
Tuncer et al. Confex: An analytics framework for text-based software configurations in the cloud
Da Silva et al. XML schema based fault set definition to improve fault injection tools interoperability
US8977901B1 (en) Generating service call patterns for systems under test

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination