CN111984346B - 微服务环境中调用链追踪的方法、系统、装置及存储介质 - Google Patents
微服务环境中调用链追踪的方法、系统、装置及存储介质 Download PDFInfo
- Publication number
- CN111984346B CN111984346B CN202010808076.2A CN202010808076A CN111984346B CN 111984346 B CN111984346 B CN 111984346B CN 202010808076 A CN202010808076 A CN 202010808076A CN 111984346 B CN111984346 B CN 111984346B
- Authority
- CN
- China
- Prior art keywords
- byte stream
- http
- byte
- character
- sequence
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000005540 biological transmission Effects 0.000 claims abstract description 8
- 230000004044 response Effects 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 24
- 230000000977 initiatory effect Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开一种微服务环境中调用链追踪的方法,包括以下步骤:响应于JAVA应用程序的启动,获取写入的字节流;通过HTTP Output Stream Wrapper对所述字节流进行识别;若字节流被识别为HTTP字节流,则将Trace Id请求头添加至所述HTTP字节流中;将添加Trace Id请求头的HTTP字节流传输至被调用者。本发明通过拦截java底层TCP输出数据流,识别出HTTP字节流,并为HTTP字节流添加TraceId请求头,进而把TraceId传递给被调用者,实现TraceId的传播;本发明充分利用TCP/IP的持久性特性,保存识别结果,不影响非HTTP场景的数据传输效率。
Description
技术领域
本发明涉及业务数据实时监控技术领域,尤其涉及一种微服务环境中调用链追踪的方法、系统、装置及存储介质。
背景技术
在现有的技术方案中,一般都是采用成熟且灵活敏捷的微服务技术架构体系,生产环境存在几百个微服务在运行(一个微服务多机部署),然而这些微服务不是孤立存在的,它们之间有调用依赖关系,出现故障时,由于调用链比较复杂,在定位问题时运维人员仅基于文本型的日志信息去定位,这样就很难快速的定位到问题。
运维的过程中,一般成熟通用的方案是从日志中还原调用链,再借助点线图表达:一个微服务是一个点,两个微服务间的调用表示为两点之间的连线;调用失败时线是红色的,这样就可以快速定位故障点,查看故障点日志,快速找到故障原因。为了准确还原出一次请求的调用链,需要在请求到达的第一个服务上生成唯一的TraceId(调用链跟踪Id),后续发生的所有微服务调用都携带上Trace Id和自己的Service Id(微服务的唯一身份标识);所有微服务的日志中都包含了Trace Id和调用者Service Id,微服务间的调用都携带上游传来的TraceId,就是TraceId的传播过程。
实现TraceId的传播,需要实现两个阶段功能:收到调用时获取Trace Id并保存Trace Id到当前上下文;访问其它微服务发送请求时设置Trace Id参数。IT环境是一个复杂且多型态的技术环境:微服务、数据库、中间件(MQ、Rediss等)。微服务有两个主流实现方案:使用HTTP协议的Spring Cloud框架和基于TCP协议的Dubbo框架,基于HTTP协议要通过Request Header传播TraceId,存在多种情况,比较复杂,因此需要对这种实现方式进行改进。
发明内容
本发明针对现有技术中的缺点,提供了一种微服务环境中调用链追踪的方法、系统、装置及存储介质。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种微服务环境中调用链追踪的方法,包括以下步骤:
响应于JAVA应用程序的启动,获取写入的字节流;
通过HTTP Output Stream Wrapper对所述字节流进行识别;
若字节流被识别为HTTP字节流,则将Trace Id请求头添加至所述HTTP字节流中;
将添加Trace Id请求头的HTTP字节流传输至被调用者。
作为一种可实施方式,所述通过HTTP Output Stream Wrapper对所述字节流进行识别,具体为:发起HTTP字节流识别请求,基于获取到的字节流识别出HTTP字节流。
作为一种可实施方式,所述将添加Trace Id请求头添加至所述HTTP字节流中,具体为:
若字节流被判断为HTTP字节流,则判断当前字节是否在HTTP请求头的第一行结尾处;
若在第一行的结尾处,则将trace Id信息写入到当前字节的后面;
若非HTTP字节流,则跳过后续操作。
作为一种可实施方式,将HTTP字节流与状态机模型的输入相对应,基于状态机模型对写入的字节流进行识别。
作为一种可实施方式,所述基于状态机模型对写入字节流进行识别,具体步骤为:
基于状态机模型中的请求方法状态模型对输入的字节流的字节符序列进行判断,判断是否符合预期的字节符序列;
若符合预期的字节符序列,则基于空格字符状态模型判断所述符合预期的字节符序列是否为空格字符;
若为空格字符,则基于HTTP字节流状态模型判断是否为依序的预期字符序列,若为依序的预期字符序列,则为HTTP字节流。作为一种可实施方式,在判断是否为指定字节长度的依序预期字符序列的步骤之后,还包括:若为非指定字节长度的依序预期字符序列,则判断为非预期字符序列,则为非HTTP字节流。
作为一种可实施方式,在则判断指定字节长度的依序预期字符序列是否为空格字符的步骤之后,还包括:若为非空格字符,则判断所述指定字节长度的依序预期字符序列为非预期字符序列,则为非HTTP字节流。
一种微服务环境中调用链追踪的系统,包括字节流获取模块、识别模块、添加模块和传输模块;
所述字节流获取模块,响应于JAVA应用程序的启动,获取写入的字节流;
所述识别模块,用于通过HTTP Output Stream Wrapper对所述字节流进行识别;
所述添加模块,被设置为:若字节流被识别为HTTP字节流,则将Trace Id请求头添加至所述HTTP字节流中;
所述传输模块,用于将添加Trace Id请求头的HTTP字节流传输至被调用者。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现以上所述的方法步骤。
一种微服务环境中调用链追踪的装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以上所述的方法步骤。。
本发明由于采用了以上技术方案,具有显著的技术效果:
本发明公开一种方法,此方法步骤为:响应于JAVA应用程序的启动,获取写入的字节流;通过HTTP Output Stream Wrapper对所述字节流进行识别;若字节流被识别为HTTP字节流,则将Trace Id请求头添加至所述HTTP字节流中;将添加Trace Id请求头的HTTP字节流传输至被调用者。
本发明通过拦截java底层TCP输出数据流,识别出HTTP字节流,并为HTTP字节流添加TraceId请求头,进而把TraceId传递给被调用者,实现TraceId的传播;本发明充分利用TCP/IP的持久性特性,保存识别结果,不影响非HTTP场景的数据传输效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明方法的整体流程示意图;
图2是本发明系统的整体结构示意图;
图3是本发明方法基于状态机判断HTTP字节流的流程示意图;
图4是本发明方法中判断HTTP字节流的流程示意图;
图5是HTTP的请求报文格式示意图;
图6是本发明中HTTP字节流识别模式的示意图。
具体实施方式
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
实施例1:
一种微服务环境中调用链追踪的方法,如图1所示,包括以下步骤:
S100、响应于JAVA应用程序的启动,获取写入的字节流;
S200、通过HTTP Output Stream Wrapper对所述字节流进行识别;
S300、若字节流被识别为HTTP字节流,则将Trace Id请求头添加至所述HTTP字节流中;
S400、将添加Trace Id请求头的HTTP字节流传输至被调用者。
整个过程可以理解为是在Java应用程序启动时增加拦截器即利用JAVA Agent技术的premain方法,加载类时动态修改Class字节码,检查所需加载的类是否为指定类;如果是,则修改目标类的行为,如果不是,则什么也不做。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在步骤S200中,所述通过HTTP Output Stream Wrapper对所述字节流进行识别,具体为:发起HTTP字节流识别请求,基于获取到的字节流识别出HTTP字节流。
在步骤S300中,所述将添加Trace Id请求头添加至所述HTTP字节流中,具体为:
S310、若字节流被判断为HTTP字节流,则判断当前字节是否在HTTP请求头的第一行结尾处;
S310、若在第一行的结尾处,则将trace Id信息写入到当前字节的后面;
S310、若非HTTP字节流,则跳过后续操作。
在现有技术中,软件环境中除了HTTP数据流,还有JDBC、Redis、MQ之类的数据流。这些都是持久连接,因此把HTTP识别结果保存下来,对于非HTTP请求什么也不做,这样可以保护软件性能。识别出HTTP字节流之后,则需要在第一行结尾处(即回车换行后)添加TraceId,比如TraceId=XXX\13\10(\10换行符;\13回车符),等同于为HTTP请求添加了TraceId请求头,这样就实现了TraceId的传播。
在步骤S200中,将HTTP字节流与状态机模型的输入相对应,基于状态机模型对写入的字节流进行识别。
更加详细的,所述基于状态机模型对写入字节流进行识别,如图4所示,具体步骤为:
S210、基于状态机模型中的请求方法状态模型对输入的字节流的字节符序列进行判断,判断是否符合预期的字节符序列;
S220、若符合预期的字节符序列,则基于空格字符状态模型判断所述符合预期的字节符序列是否为空格字符;
S230、若为空格字符,则基于HTTP字节流状态模型判断是否为依序的预期字符序列,若为依序的预期字符序列,则为HTTP字节流。
以上步骤简单来说过程是这样的:判断输入字节流是否符合依序的预期字符序列;若是,并且下一个字节是空格字符,则状态机的状态就会转入下一个状态继续验证是否符合依序的预期字符序列;若符合验证,则为HTTP字节流。
在实际情况中,实际操作中并非所有写入的字节流都是HTTP URL允许的合法字符,也可能是不合法字符,因此,实际操作中,如果是空格字符的话,还需要进行验证是否为HTTP URL允许的合法字符这一步骤,如果验证成功,则再判断是否为依序的预期字符序列,如果是,则为HTTP字节流。
需要注意的是,在判断的时候还存在不符合假设条件的情况,即在判断是否为指定字节长度的依序预期字符序列的步骤之后,还包括:若为非指定字节长度的依序预期字符序列,则判断为非预期字符序列,则为非HTTP字节流,以及,在则判断指定字节长度的依序预期字符序列是否为空格字符的步骤之后,还包括:若为非空格字符,则判断所述指定字节长度的依序预期字符序列为非预期字符序列,则为非HTTP字节流。
在现有技术中,根据HTTP标准,识别HTTP请求可以使用多种请求方法。如图5所示,图5显示的是现有的HTTP的请求报文格式,其中URL:是个不定长的字符串;协议版本:HTTP/1.1是主流,HTTP/1.0基本没有,HTTP/0.9不用考虑。现有的请求方法有:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、PATCH、CONNECT,常用且使用的有GET、POST、HEAD。
而HTTP请求的识别模式是从HTTP请求协议格式推导出:根据流的第一个回车换行前的内容就可以识别HTTP请求。可参见图6所示,大致上将HTTP字节流分别三部分,因此,在本实施例中进行识别的时候就将识别模式字符串分为三段,并且引入状态机。
在现有技术中,状态机的状态反映了系统从开始到当前时刻的输入变化,当系统达到状态转移条件时,发生状态变更,即系统状态从某一状态转移到另一种状态。因此,在本实施例中结合了状态机模型对写入的字节流进行判断,在此,状态机模型包括三元组,分别为请求方法状态模型、空格字符状态模型以及HTTP字节流状态模型,可以将三元组对应的状态设置为:S_METHOD、S_URL、S_HTTP,参见图3所示。
更加具体地:步骤S200以及考虑到在实际操作中如果写入的字节流还可能是HTTPURL允许的合法字符或者是不合法字符,结合S_METHOD、S_URL、S_HTTP状态机,那么基于状态机模型对写入字节流进行识别具体的过程如下:
第1步:判断写入的数据是否符合预期的字节符序列(GET、POST、HEAD),不符合则判定为非HTTP字节流,如果符合,则执行第2步;
第2步:判断写入的数据是否空格字符,如果不是,则判定为非HTTP字节流,如果是空格字符,则执行第3步;
第3步:判断写入的数据是不是HTTP URL允许的合法字符,如果不是合法字符再判断是否空格字符,如果是空格字符跳转到第4步,否则判定非HTTP字节流;如果是HTTP URL允许的合法字符再判断字符计数是否小于200,当然在实际操作中200这个数据也会根据实际情况做调整,不小于则判定非HTTP字节流预期字符序列;
预期字符序列第4步:继续依序读入字节,判断读取的字节是否为预期字符序列,若不是则以非HTTP字节流结束循环,若是,则以HTTP字节流结束循环。
另外,在整个过程中,HTTP URL允许的合法字符是通过HTTP协议规定的字符。
需要声明的是:在图3中的空格表示的状态转移,也就是说,如果是HTTP流的话,则转移到下一个状态中进行判断;如果是预期字符序列的话,也转移到下一个状态中进行判断。
应该理解的是,虽然图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
实施例2:
一种微服务环境中调用链追踪的系统,包括字节流获取模块100、识别模块200、添加模块300和传输模块400;
所述字节流获取模块100,响应于JAVA应用程序的启动,获取写入的字节流;
所述识别模块200,用于通过HTTP Output Stream Wrapper对所述字节流进行识别;
所述添加模块300,被设置为:若字节流被识别为HTTP字节流,则将Trace Id请求头添加至所述HTTP字节流中;
所述传输模块400,用于将添加Trace Id请求头的HTTP字节流传输至被调用者。
于其他实施例中,所述识别模块200被设置为:发起HTTP字节流识别请求,基于获取到的字节流识别出HTTP字节流。
于其他实施例中,所述添加模块300,被设置为:若字节流被判断为HTTP字节流,则判断当前字节是否在HTTP请求头的第一行结尾处;
若在第一行的结尾处,则将trace Id信息写入到当前字节的后面;
若非HTTP字节流,则跳过后续操作。
于其他实施例中,所述识别模块200被设置为:将HTTP字节流与状态机模型的输入相对应,基于状态机模型对写入的字节流进行识别。
于其他实施例中,所述识别模块200被设置为:
基于状态机模型中的请求方法状态模型对输入字节流的字节长度进行判断,判断是否为指定字节长度的依序预期字符序列;
若为指定字节长度的依序预期字符序列,则判断所述指定字节长度的依序预期字符序列是否为空格字符;
若为空格字符,则判断是否为依序的预期字符序列,若为依序的预期字符序列,则为HTTP字节流。
于其他实施例中,所述识别模块200被设置为:在判断是否为指定字节长度的依序预期字符序列的步骤之后,还包括:若为非指定字节长度的依序预期字符序列,则判断为非预期字符序列,则为非HTTP字节流。
于其他实施例中,所述识别模块200被设置为:在则判断所述指定字节长度的依序预期字符序列是否为空格字符的步骤之后,还包括:若为非空格字符,则判断所述指定字节长度的依序预期字符序列为非预期字符序列,则为非HTTP字节流。
上述微服务环境中调用链追踪的系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备或者移动终端的处理器中,也可以以软件形式存储于计算机设备或者移动终端的存储器中,以便于处理器调用执行以上各个模块对应的操作。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
实施例3:
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下的方法步骤:
响应于JAVA应用程序的启动,获取写入的字节流;
通过HTTP Output Stream Wrapper对所述字节流进行识别;
若字节流被识别为HTTP字节流,则将Trace Id请求头添加至所述HTTP字节流中;
将添加Trace Id请求头的HTTP字节流传输至被调用者。
在一个实施例中,处理器执行计算机程序时,实现所述通过HTTP Output StreamWrapper对所述字节流进行识别,具体为:发起HTTP字节流识别请求,基于获取到的字节流识别出HTTP字节流。
在一个实施例中,处理器执行计算机程序时,实现所述将添加Trace Id请求头添加至所述HTTP字节流中,具体为:
若字节流被判断为HTTP字节流,则判断当前字节是否在HTTP请求头的第一行末尾处;
若在第一行的末尾处,则将trace Id信息写入到当前字节的后面;
若非HTTP字节流,则跳过后续操作。
在一个实施例中,处理器执行计算机程序时,实现将HTTP字节流与状态机模型的输入相对应,基于状态机模型对写入的字节流进行识别。
在一个实施例中,处理器执行计算机程序时,实现所述基于状态机模型对写入字节流进行识别,具体步骤为:
基于状态机模型中的请求方法状态模型对输入字节流的字节长度进行判断,判断是否为指定字节长度的依序预期字符序列;
若为指定字节长度的依序预期字符序列,则判断所述指定字节长度的依序预期字符序列是否为空格字符;
若为空格字符,则判断是否为依序的预期字符序列,若为依序的预期字符序列,则为HTTP字节流。
在一个实施例中,处理器执行计算机程序时,实现在判断是否为指定字节长度的依序预期字符序列的步骤之后,还包括:若为非指定字节长度的依序预期字符序列,则判断为非预期字符序列,则为非HTTP字节流。
在一个实施例中,处理器执行计算机程序时,实现在则判断所述指定字节长度的依序预期字符序列是否为空格字符的步骤之后,还包括:若为非空格字符,则判断所述指定字节长度的依序预期字符序列为非预期字符序列,则为非HTTP字节流。
实施例4:
在一个实施例中,提供了一种微服务环境中调用链追踪的装置,该微服务环境中调用链追踪的装置可以是服务器也可以是移动终端。该微服务环境中调用链追踪的装置包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该微服务环境中调用链追踪的装置的处理器用于提供计算和控制能力。该微服务环境中调用链追踪的装置的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该数据库用于存储自动生成音效并匹配视频的装置的所有数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现微服务环境中调用链追踪的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是:
说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本发明专利构思所述的构造、特征及原理所做的等效或简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。
Claims (7)
1.一种微服务环境中调用链追踪的方法,其特征在于,包括以下步骤:
响应于JAVA应用程序的启动,获取写入的字节流;
通过HTTP Output Stream Wrapper对所述字节流进行识别,具体为:发起HTTP字节流识别请求,基于获取到的字节流识别出HTTP字节流,将HTTP字节流与状态机模型的输入相对应,基于状态机模型对写入的字节流进行识别;
若字节流被识别为HTTP字节流,则将Trace Id请求头添加至所述HTTP字节流中;
将添加Trace Id请求头的HTTP字节流传输至被调用者;
其中,所述基于状态机模型对写入字节流进行识别,具体步骤为:
基于状态机模型中的请求方法状态模型对输入的字节流的字节符序列进行判断,判断是否符合预期的字节符序列;
若符合预期的字节符序列,则基于空格字符状态模型判断所述符合预期的字节符序列是否为空格字符;
若为空格字符,则基于HTTP字节流状态模型判断是否为依序的预期字符序列,若为依序的预期字符序列,则为HTTP字节流。
2.根据权利要求1所述的微服务环境中调用链追踪的方法,其特征在于,所述将添加Trace Id请求头添加至所述HTTP字节流中,具体为:
若字节流被判断为HTTP字节流,则判断当前字节是否在HTTP请求头的第一行结尾处;
若在第一行结尾处,则将trace Id信息写入到当前字节的后面;
若非HTTP字节流,则跳过后续操作。
3.根据权利要求1所述的微服务环境中调用链追踪的方法,其特征在于,在判断是否为指定字节长度的依序预期字符序列的步骤之后,还包括:若为非指定字节长度的依序预期字符序列,则判断为非预期字符序列,则为非HTTP字节流。
4.根据权利要求1所述的微服务环境中调用链追踪的方法,其特征在于,在判断指定字节长度的依序预期字符序列是否为空格字符的步骤之后,还包括:若为非空格字符,则判断所述指定字节长度的依序预期字符序列为非预期字符序列,则为非HTTP字节流。
5.一种微服务环境中调用链追踪的系统,其特征在于,包括字节流获取模块、识别模块、添加模块和传输模块;
所述字节流获取模块,响应于JAVA应用程序的启动,获取写入的字节流;
所述识别模块,用于通过HTTP Output Stream Wrapper对所述字节流进行识别,具体为:发起HTTP字节流识别请求,基于获取到的字节流识别出HTTP字节流,将HTTP字节流与状态机模型的输入相对应,基于状态机模型对写入的字节流进行识别;
所述添加模块,被设置为:若字节流被识别为HTTP字节流,则将Trace Id请求头添加至所述HTTP字节流中;
所述传输模块,用于将添加Trace Id请求头的HTTP字节流传输至被调用者;
其中,所述基于状态机模型对写入字节流进行识别,具体步骤为:
基于状态机模型中的请求方法状态模型对输入的字节流的字节符序列进行判断,判断是否符合预期的字节符序列;
若符合预期的字节符序列,则基于空格字符状态模型判断所述符合预期的字节符序列是否为空格字符;
若为空格字符,则基于HTTP字节流状态模型判断是否为依序的预期字符序列,若为依序的预期字符序列,则为HTTP字节流。
6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任意一项所述的方法步骤。
7.一种微服务环境中调用链追踪的装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任意一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010808076.2A CN111984346B (zh) | 2020-08-12 | 2020-08-12 | 微服务环境中调用链追踪的方法、系统、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010808076.2A CN111984346B (zh) | 2020-08-12 | 2020-08-12 | 微服务环境中调用链追踪的方法、系统、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984346A CN111984346A (zh) | 2020-11-24 |
CN111984346B true CN111984346B (zh) | 2023-10-27 |
Family
ID=73435365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010808076.2A Active CN111984346B (zh) | 2020-08-12 | 2020-08-12 | 微服务环境中调用链追踪的方法、系统、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984346B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010378B (zh) * | 2021-03-04 | 2023-02-03 | 万翼科技有限公司 | 微服务模块的日志处理方法及装置、存储介质、电子装置 |
CN113890904B (zh) * | 2021-09-27 | 2023-10-27 | 新华三信息安全技术有限公司 | 一种报文解析的方法、装置、计算机设备及存储介质 |
CN113760778B (zh) * | 2021-11-09 | 2022-02-08 | 浙江大学滨海产业技术研究院 | 一种基于词向量模型的微服务接口划分评价方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070038637A (ko) * | 2005-10-06 | 2007-04-11 | (주)아이피엠에스 | 자바 바이트 코드의 데이터 모니터링 시 모니터링된데이터의 호출관계 규명 방법 |
EP2779467A2 (en) * | 2013-03-15 | 2014-09-17 | Hughes Network Systems, LLC | Staged data compression, including block-level long-range compression, for data streams in a communications system |
CN106020963A (zh) * | 2016-06-07 | 2016-10-12 | 中国建设银行股份有限公司 | 一种跨系统内部服务调用方法和装置 |
CN106940719A (zh) * | 2017-03-14 | 2017-07-11 | 福建中金在线信息科技有限公司 | 一种页面跳转方法及装置 |
CN107302547A (zh) * | 2017-08-21 | 2017-10-27 | 深信服科技股份有限公司 | 一种web业务异常检测方法及装置 |
CN109921927A (zh) * | 2019-02-20 | 2019-06-21 | 苏州人之众信息技术有限公司 | 基于微服务的实时调用链跟踪方法 |
CN109992465A (zh) * | 2017-12-29 | 2019-07-09 | 中国电信股份有限公司 | 服务追踪方法、装置和计算机可读存储介质 |
CN110244991A (zh) * | 2019-05-20 | 2019-09-17 | 平安科技(深圳)有限公司 | 一种微服务依赖分析方法及装置 |
CN110262889A (zh) * | 2019-06-27 | 2019-09-20 | 深圳前海微众银行股份有限公司 | 一种链路追踪方法及装置 |
-
2020
- 2020-08-12 CN CN202010808076.2A patent/CN111984346B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070038637A (ko) * | 2005-10-06 | 2007-04-11 | (주)아이피엠에스 | 자바 바이트 코드의 데이터 모니터링 시 모니터링된데이터의 호출관계 규명 방법 |
EP2779467A2 (en) * | 2013-03-15 | 2014-09-17 | Hughes Network Systems, LLC | Staged data compression, including block-level long-range compression, for data streams in a communications system |
CN106020963A (zh) * | 2016-06-07 | 2016-10-12 | 中国建设银行股份有限公司 | 一种跨系统内部服务调用方法和装置 |
CN106940719A (zh) * | 2017-03-14 | 2017-07-11 | 福建中金在线信息科技有限公司 | 一种页面跳转方法及装置 |
CN107302547A (zh) * | 2017-08-21 | 2017-10-27 | 深信服科技股份有限公司 | 一种web业务异常检测方法及装置 |
CN109992465A (zh) * | 2017-12-29 | 2019-07-09 | 中国电信股份有限公司 | 服务追踪方法、装置和计算机可读存储介质 |
CN109921927A (zh) * | 2019-02-20 | 2019-06-21 | 苏州人之众信息技术有限公司 | 基于微服务的实时调用链跟踪方法 |
CN110244991A (zh) * | 2019-05-20 | 2019-09-17 | 平安科技(深圳)有限公司 | 一种微服务依赖分析方法及装置 |
CN110262889A (zh) * | 2019-06-27 | 2019-09-20 | 深圳前海微众银行股份有限公司 | 一种链路追踪方法及装置 |
Non-Patent Citations (3)
Title |
---|
利用Servlet过滤器实现动态网页的快速存取;徐伟魄, 李治柱;微型电脑应用(第12期);49-52 * |
基于微服务网关Zuul的TCP功能扩展和限流研究;李浪;《中国优秀硕士学位论文全文数据库 信息科技辑》;I138-253 * |
徐伟魄,李治柱.利用Servlet过滤器实现动态网页的快速存取.微型电脑应用.2004,(第12期),49-52. * |
Also Published As
Publication number | Publication date |
---|---|
CN111984346A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111984346B (zh) | 微服务环境中调用链追踪的方法、系统、装置及存储介质 | |
CN109992465B (zh) | 服务追踪方法、装置和计算机可读存储介质 | |
WO2020029375A1 (zh) | 接口测试方法、系统、计算机设备和存储介质 | |
US20180359140A1 (en) | Method, device, and system for processing a terminal fault | |
CN111752799A (zh) | 一种业务链路跟踪方法、装置、设备及储存介质 | |
CN107168857B (zh) | 一种统计应用程序中的函数调用的方法及组件 | |
CN109582655B (zh) | 系统日志的定位方法及装置、计算机可读存储介质 | |
CN109471776B (zh) | 一种基于以太网的VxWorks操作系统日志收集方法 | |
CN113938535A (zh) | 基于多协议适配的物联网设备接入方法及装置 | |
CN110099108B (zh) | 一种区块链事件去重方法、装置、计算机设备及存储介质 | |
CN112953983A (zh) | Sftp传输方法及装置 | |
CN112037061A (zh) | 区块链中交易的处理方法、装置、电子设备及存储介质 | |
CN115329170A (zh) | 网页抓取方法、装置、设备以及存储介质 | |
CN108833961B (zh) | 获取飞行记录数据的方法、服务器和系统 | |
CN113791792A (zh) | 应用调用信息的获取方法、设备以及存储介质 | |
CN113485952A (zh) | 数据批量传输方法及装置 | |
EP2445171A1 (en) | File transfer protocol client and implementing method thereof | |
CN114500348B (zh) | 一种cdn网关测试方法及系统 | |
CN112732265A (zh) | 一种数据处理方法和相关装置 | |
CN104536892A (zh) | 一种软件在线调试方法和系统 | |
CN113992644A (zh) | 一种基于无服务技术的物联网关系统及其数据处理方法 | |
CN113176931B (zh) | 任务流处理方法、装置、存储介质及电子设备 | |
CN111177599A (zh) | 基于切面的跨系统链路追踪方法 | |
CN109889305B (zh) | 通信帧转发方法、通信节点、多节点通信方法及装置 | |
CN112153148A (zh) | 基于消息接收端的消息堆积处理方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |