CN112272115A - 基于流式处理api网关及其日志采集方法 - Google Patents

基于流式处理api网关及其日志采集方法 Download PDF

Info

Publication number
CN112272115A
CN112272115A CN202011175033.1A CN202011175033A CN112272115A CN 112272115 A CN112272115 A CN 112272115A CN 202011175033 A CN202011175033 A CN 202011175033A CN 112272115 A CN112272115 A CN 112272115A
Authority
CN
China
Prior art keywords
response
log
request
content
state
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.)
Granted
Application number
CN202011175033.1A
Other languages
English (en)
Other versions
CN112272115B (zh
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.)
Capinfo Co ltd
Original Assignee
Capinfo 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 Capinfo Co ltd filed Critical Capinfo Co ltd
Priority to CN202011175033.1A priority Critical patent/CN112272115B/zh
Publication of CN112272115A publication Critical patent/CN112272115A/zh
Application granted granted Critical
Publication of CN112272115B publication Critical patent/CN112272115B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/069Management of faults, events, alarms or notifications using logs of notifications; Post-processing of notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种基于流式处理API网关及其日志采集方法,所述方法包括:对客户端发送的请求信息进行路由判断,对允许的请求信息进行服务分发处理,将请求信息分发到基于流式技术构建的过滤器链中的pre链;通过pre链对请求信息中的请求头进行读取,对请求体进行预处理,并对预处理后的请求体进行读取,将解析后的请求信息的数据采集到日志中,存储于上下文中,并将所述请求信息发送到后端服务;通过post链接收后端服务器发送的响应信息,对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,实现响应体数据的日志采集,并将响应信息返回客户端。

Description

基于流式处理API网关及其日志采集方法
技术领域
本发明涉及计算机技术领域,尤其是涉及一种基于流式处理API网关及其日志采集方法。
背景技术
现有的API网关对服务访问的日志采集分为请求及响应两部分进行读取,请求部分需要记录HTTP请求的请求行(method、uri、http version),请求头、请求体,网关根据uri匹配响应路由规则,获取真实访问路径real uri,网关将请求部分内容发送到真实访问路径,服务端收到请求后返回服务响应,服务响应包括响应行(http version、status code)、响应头、响应体,网关记录HTTP响应日志后,将响应发送给客户请求方,在这一过程中,请求体及响应体的内容读取将造成服务端后者客户端的获取的内容为空,造成日志数据完整性缺失;同时网关为后端服务提供对外接口,在面对高并发访问下,日志记录直接持久化会降低网关性能。
发明内容
本发明的目的在于提供一种基于流式处理API网关及其日志采集方法,旨在解决现有技术中的上述问题。
本发明提供一种基于流式处理API网关的日志采集方法,包括:
对客户端发送的请求信息进行路由判断,对允许的请求信息进行服务分发处理,将请求信息分发到基于流式技术构建的过滤器链中的pre链;
通过pre链对请求信息中的请求头进行读取,对请求体进行预处理,通过负载均衡过滤器获取真实访问地址,并对预处理后的请求体进行读取,将解析后的请求信息的数据采集到日志中,将日志存储于上下文中,并将请求信息发送到后端服务;
通过基于流式技术构建的过滤器链中的post链接收后端服务器发送的响应信息,对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,进行响应体信息的处理,将响应信息中响应头和响应体的数据采集到日志中,进行日志持久化操作,并进行网络协议封装处理,将所述响应信息返回客户端。
本发明提供一种基于流式处理的API网关,包括:
路由判断分发模块,用于对客户端发送的请求信息进行路由判断,对允许的请求信息进行服务分发处理,将请求信息分发到基于流式技术构建的过滤器链中的pre链;
过滤器链,用于通过pre链对请求信息中的请求头进行读取,对请求体进行预处理,通过负载均衡过滤器获取真实访问地址,并对预处理后的请求体进行读取,将解析后的请求信息的数据采集到日志中,将日志存储于上下文中,并将所述请求信息发送到后端服务;
所述过滤器链进一步用于:通过post链接收后端服务器发送的响应信息,对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,进行响应体信息的处理,将响应信息中响应头和响应体的数据采集到日志中,进行日志持久化操作,并进行网络协议封装处理,将所述响应信息返回客户端。
采用本发明实施例,利用过滤器链结合流复制技术将网络服务请求的请求及响应的参数及内容在过滤器链不同阶段逐步获取,在保证网关整体的服务性能情况下,能够获取完整的服务访问日志信息。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的基于流式处理API网关的日志采集方法的流程图;
图2是本发明实施例的基于流式处理技术构建过滤器链完成日志采集过程的示意图;
图3是本发明实施例的请求头读取及请求体预处理过滤器处理的示意图;
图4是本发明实施例的请求体读取过滤器的处理的示意图;
图5是本发明实施例的响应头及响应体读取处理过滤器处理的示意图;
图6是本发明实施例的响应信息的日志采集处理过程的示意图;
图7是本发明实施例的上下文完成后的处理示意图;
图8是本发明实施例的基于流式处理的API网关的示意图。
具体实施方式
下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“坚直”、“水平”、“顶”、“底”、“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。此外,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
方法实施例
根据本发明实施例,提供了一种基于流式处理API网关的日志采集方法,图1是本发明实施例的基于流式处理API网关的日志采集方法的流程图,如图1所示,根据本发明实施例的基于流式处理API网关的日志采集方法具体包括:
步骤101,对客户端发送的请求信息进行路由判断,对允许的请求信息进行服务分发处理,将请求信息分发到基于流式技术构建的过滤器链中的pre链;
步骤102,通过pre链对请求信息中的请求头进行读取,对请求体进行预处理,通过负载均衡过滤器获取真实访问地址,并对预处理后的请求体进行读取,将解析后的请求信息的数据采集到日志中,将日志存储于上下文中,并将所述请求信息发送到后端服务;步骤102具体包括:
首先创建日志,在日志中记录请求行、负载均衡过滤器返回的真实访问地址、请求头参数、以及请求Query Params,将日志添加到上下文中;
根据请求头中的请求体长度判断请求体是否为空,如果为空,则不进行请求体的读取处理;如果不为空,则复制请求体内容并重新封装请求体,即进行请求体读取的预处理,将复制请求体放入上下文中;
获取请求头的媒体类型,如果判断媒体类型为空,则进行日志记录,直接继续后续pre链的流转;如果判断媒体类型不为空,从上下文的日志中获取复制请求体,如果复制请求体内容不为空,读取复制体内容转化为字符串并写入日志记录,将日志存储于上下文中;如果复制请求体内容为空,则进行日志记录,直接继续后续pre链的流转。
步骤103,通过基于流式技术构建的过滤器链中的post链接收后端服务器发送的响应信息,对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,进行响应体信息的处理,将响应信息中响应头和响应体的数据采集到日志中,进行日志持久化操作,并进行网络协议封装处理,将所述响应信息返回客户端。步骤103具体包括:
通过响应体处理流程对文件流进行复制处理,对非文件流进行内容处理,依据响应状态修正响应体返回内容,提供友好响应提示;上下文完成状态处理流程将响应体内容记录日志记录并进行持久化。
也就是说,在步骤103中,需要读取响应头,记录到日志,复制新的响应体并封装到请求中,添加到post链中流转,装配响应体处理流程,用于异步处理响应体返回信息;装配上下文完成状态处理流程,异步在上下文完成对日志进行分类标记并持久化存储;
其中,响应体处理流程具体包括:
对文件流进行响应体内容的复制,针对断点续传类型流文件进行处理,确保多批次流文件内容不被打断;
非文件流则一次性获取响应体内容并记录日志,判断响应的状态是否为OK,如果为非OK,依据非OK状态封装友好响应提示,修改响应体内容并设定内容长度,封装响应体到上下文并继续在post链中流转。
其中,上下文完成状态处理流程具体包括:如果在上下文完成时状态为异常或者放弃时,设置响应状态为错误,并记录异常、放弃情况到日志;如果在上下文完成时状态为成功,则依据响应状态判断日志状态,其中,如果响应状为OK,则判断响应媒体的类型是否为流文件,如果为流文件,则在日志中记录响应体内容为文件类型,如果不是流文件,则在日志中记录状态为成功并记录响应体内容,将日志推送到队列,如果响应状态为TOO_MANY_REQUESTS,则在日志中记录状态为限流及响应体内容,将日志推送到队列;如果响应状态为GATEWAY_TIMEOUT,则在日志中记录状态为熔断及响应体内容,将日志推送到队列;如果响应状态为NOT_FOUND,则在日志中记录状态为拒绝及响应体内容,将日志推送到队列。需要说明的是,在本发明实施例中,日志的持久化除了采用队列方式缓解持久化IO性能外,也可以使用内存数据库作为持久化手段。
在本发明实施例中,还可以根据业务需要,在pre链和/或post链中增加过滤器,进行访问拦截、修改请求内容、安全控制、流量控制、以及隔离熔断操作。
从上说描述可以看出,在本发明实施例中:
1、流内容复制并重新封装请求、响应上下文,避免流内容仅能读取一次的规约,完整采集请求体及响应体信息并记录到日志记录。
2、基于流式处理技术构建API网关,构建过滤器链,每个客户端服务请求构建上下文,并在pre链及post链中流转。
3、在请求响应上下文中保存日志记录,实现在高并发下日志的精准采集,并通过消息队列解耦持久化日志对网关性能影响。
本发明实施例采用基于流式处理技术构建API网关,通过过滤器链结合流复制技术链实现服务访问的日志信息采集,既能提高网关服务性能,又解决了服务访问日志的完整性采集。
以下结合附图,对本发明实施例的上述技术方案进行详细说明。
本发明实施例采用流式处理技术构建API网关,通过流式处理技术构建过滤链,在不同的过滤器中根据HTTP访问的不同阶段逐步进行日志采集处理。过滤器根据请求及响应分为pre过滤器及post过滤器,在pre过滤器链中进行请求头、请求体等数据采集到日志记录过程,在post过滤器链中处理响应头、响应体等数据采集到日志处理的过程。
图2是本发明实施例的基于流式处理技术构建过滤器链完成日志采集过程的示意图,如图2所示,客户端访问请求进入网关后,根据请求行的uri及请求头参数等进行路由判断,不具备路由许可的访问将被拒绝,路由设定允许的访问将进行服务分发处理,每一次访问都将创建隔离的服务访问线程并构建服务上下文,上下文保存服务请求及响应信息,上下文一直存在服务访问到响应完成的整个过程之中。
为便于进行服务管控,基于流式技术构建过滤器链,过滤器之间传递服务上下文,过滤器对服务的请求及响应进行管理,过滤器的输入输出为上下文,可实现访问拦截、修改请求内容、安全控制、流量控制、隔离熔断、日志处理等功能,可根据业务需求将过滤器装配到过滤器链。
过滤器链依据服务访问的请求响应分为pre链和post链。日志的采集在链的不同位置逐步采集,请求参数在pre链靠前位置都可以读取,为获取后端真实服务地址realvisit uri,在pre链负载均衡过滤器后进行请求头的数据采集及请求体的预处理,请求体为流式内容在HTTP服务交互期间只能读取一次,一旦读取将造成后端服务获取不到请求体问题,解决方案是复制一份请求体内容并重新封装请求体,将复制内容放入上下文中,在后续的过滤器读取上下文中服务内容,实现请求体信息的读取。同样因为HTTP协议设定,不能直接读取响应体信息,需要对响应体内容进行预处理后才能实现读取。为不受其他post链处理影响,在post链比较靠后的位置进行响应头及响应体的读取。预处理的过程核心工作是重新封装响应体后放入post链中,同时装配异步的响应体处理流程、上下文完成状态处理流程,实现响应体信息的处理、采集及日志持久化。通过在pre链及post链针对请求体及响应体的特定处理,完成网关对外服务的全程访问日志数据采集,采用链式处理,所有针对服务的处理都在过滤器中进行,服务上下文在过滤器链中流转,日志采集的数据放在上下文的内存中,在服务上下文完成时写入队列,极大的减少日志采集记录对内存的占用及持久化的压力。
图3是本发明实施例的请求头读取及请求体预处理过滤器处理的示意图,如图3所示,首先创建日志记录,记录请求行uri,method,记录负载均衡过滤器返回的真实访问地址realvisturi,请求头参数遍历封装为字符串并记录,记录查询参数QueryParams,初步记录请求参数后,添加日志记录到上下文中,便于后续传输链上过滤器进行访问。
针对请求体分为空、非空两种情况处理。请求体内容长度为零不进行请求体的读取处理,直继续流转;请求体内容不为空的情况,因HTTP访问请求体流内容只能读取一次,读取后后请求体内容被清空,后端服务不能获取到真正的请求体,采用复制请求体内容并重新封装请求体的方法进行请求体读取的预处理,复制的请求体内容放入上下文,供后续pre链过滤器访问,上下文装配新封装的请求体继续流转链路。
图4是本发明实施例的请求体读取过滤器的处理的示意图,如图4所示,首先获取请求头的媒体类型,媒体类型为空的访问为websocket访问,这种情况不记录访问日志,直接继续后续pre过滤链的流转;如果媒体类型不为空,从上下文中获取预处理的复制请求体信息,如果复制请求体内容不为空,读取复制体内容转化为字符串并写入日志记录。到此,pre链中获取服务访问请求部分工作已经完成,请求行、请求头、请求体信息都读取到了日志记录。将当前日志记录保存到上下文中,在后续post链流转过程中继续完善日志记录的响应信息。
图5是本发明实施例的响应头及响应体读取处理过滤器处理的示意图,如图5所示,此过滤器负责响应头及响应体日志采集及持久化过程。与请求信息获取过程一样,响应体内容因HTTP协议定义只能读取一次,直接读取会造成后续客户端获取不到响应体内容,为确保响应体的日志信息采集,需要特定的响应体的处理流程来进行响应体的读取。同时为了将完整日志采集,需要在服务可控范围之内,即上下文完成之前进行最后的日志持久化处理。响应头及响应体读取处理过滤器实现过程如下:首先,复制新的响应体并封装到请求中,添加到post链中流转,装配响应体处理流程,用于异步处理响应体返回信息;其次装配上下文完成状态处理流程,在上下文完成对日志进行分类标记并持久化存储,标记状态分为:成功、拒绝、限流、熔断、错误等。其中响应体处理流程、上下文完成状态处理流程为异步过程,响应体处理在最后网络协议封装之前处理,上下文完成状态处理流程在上下文响应完成之时进行处理。
响应信息的日志采集处理过程见图6所述。根据响应体媒体类型分别处理,响应媒体类型为文件流,需要对文件流进行响应体内容复制,针对断点续传类型流文件进行妥善处理,确保多批次流文件内容不被打断;如果媒体类型为文本内容,则一次性获取响应体内容并记录日志。非文件流响应内容根据响应状态不同进行不同的处理,响应状态代码为200,则表明响应为正常响应,记录响应体内容到日志即可,如果响应状态代码为大于等于400小于500为客户端错误,大于500为服务端错误,这些响应状态直接返回客户端不能友好的显示故障情况,需要针对错误状态进行描述,并将错误描述封装成统一返回格式,提供给客户端,这一过程涉及响应体内容修改,需要将修改后的响应体封装到新的响应处理过上下文,在响应头中设置新的响应体长度,新的响应上下文放入post过滤链中继续流转,客户将收到新的响应体内容。
上下文完成后的处理流程如图7所示,在这一过程中实现日志记录的类型标记,日志记录持久化等工作。一个服务请求从客户端发起到服务端响应返回,会遇到诸多情况,如成功返回、被网关拒绝、服务端异常、网关异常、服务不存在、服务被阻断等多种状态,依据上下文交互流式处理归纳为成功、异常、放弃,其中成功即为从服务端正常返回结果,异常包括服务端返回异常和网关处理异常,放弃为客户端主动放弃。
上下文完成时状态为异常或者放弃,日志类型将被标记为错误种类,状态为成功,则依据响应状态判断日志状态,这里的成功指的是上下文响应成功,上下文响应成功时响应状态包括:OK、客户端错误、服务器端错误等。其中相应状态为OK,则标记日志类型为成功并记录,如果响应状态为TOO_MANY_REQUESTS(429)则记录日志类型为限流,如果响应状态为GATEWAY_TIMEOUT(504)则记录为熔断、如果响应状态为NOT_FOUND(404)则记录为拒绝,如果响应媒体类型为文件则记录响应体内容为“文件类型”,不进行流数据记录。
本发明实施例提供了一种流内容读取方法,通过复制流内容并重新封装请求处理及响应处理过程到上下文,将新的处理过程重新加入流转链中,实现了请求体、响应体信息在不影响服务响应的情况下的信息读取,完成服务请求日志记录的采集,绕过了在HTTP访问过程中流内容仅能读取一次的约定。
本发明实施例的上下文保存日志记录的方法,根据请求访问的不同阶段,分别记录访问请求参数,并临时存储到客户端请求响应上下文中,解决在高并发访问下的日志精准采集;同时日志持久化采用消息队列形式,不影响整体API网关服务性能。
装置实施例
根据本发明实施例,提供了一种基于流式处理的API网关,图8是本发明实施例的基于流式处理的API网关的示意图,如图8所示,根据本发明实施例的基于流式处理的API网关具体包括:
路由判断分发模块80,用于对客户端发送的请求信息进行路由判断,对允许的请求信息进行服务分发处理,将请求信息分发到基于流式技术构建的过滤器链中的pre链;
过滤器链82,用于通过pre链对请求信息中的请求头进行读取,对请求体进行预处理,通过负载均衡过滤器获取真实访问地址,并对预处理后的请求体进行读取,将解析后的请求信息的数据采集到日志中,将日志存储于上下文中,并将所述请求信息发送到后端服务;
所述过滤器链82进一步用于:通过post链接收后端服务器发送的响应信息,对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,进行响应体信息的处理,将响应信息中响应头和响应体的数据采集到日志中,进行日志持久化操作,并进行网络协议封装处理,将所述响应信息返回客户端。
具体地:
pre链,用于:
首先创建日志,在日志中记录请求行、负载均衡过滤器返回的真实访问地址、请求头参数、以及请求Query Params,将日志添加到上下文中;
根据请求头中的请求体长度判断请求体是否为空,如果为空,则不进行请求体的读取处理;如果不为空,则复制请求体内容并重新封装请求体,即进行请求体读取的预处理,将复制请求体放入上下文中;
获取请求头的媒体类型,如果判断媒体类型为空,则进行日志记录,直接继续后续pre链的流转;如果判断媒体类型不为空,从上下文的日志中获取复制请求体,如果复制请求体内容不为空,读取复制体内容转化为字符串并写入日志记录,将日志存储于上下文中;如果复制请求体内容为空,则进行日志记录,直接继续后续pre链的流转。
post链,用于
对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,进行响应体信息的处理,将响应信息中响应头和响应体的数据采集到日志中,进行日志持久化操作,并进行网络协议封装处理,将所述响应信息返回客户端。
所述post链具体用于:
响应体处理流程:对文件流进行响应体内容的复制,针对断点续传类型流文件进行处理,确保多批次流文件内容不被打断;非文件流则一次性获取响应体内容并记录日志,判断响应的状态是否为OK,如果为非OK,依据非OK状态封装友好响应提示,修改响应体内容并设定内容长度,封装响应体到上下文并继续在post链中流转。;
上下文完成状态处理流程:如果在上下文完成时状态为异常或者放弃时,设置响应状态为错误,并记录异常、放弃情况到日志;如果在上下文完成时状态为成功,则依据响应状态判断日志状态,其中,如果响应状为OK,则判断响应媒体的类型是否为流文件,如果为流文件,则在日志中记录响应体内容为文件类型,如果不是流文件,则在日志中记录状态为成功及响应体内容,将日志推送到队列,如果响应状态为TOO_MANY_REQUESTS,则在日志中记录状态为限流及响应体内容,将日志推送到队列;如果响应状态为GATEWAY_TIMEOUT,则在日志中记录状态为熔断及响应体内容,将日志推送到队列;如果响应状态为NOT_FOUND,则在日志中记录状态为拒绝及响应体内容,将日志推送到队列。
在本发明实施例中,所述过滤器链82进一步用于:根据业务需要,在pre链和/或post链中增加过滤器,进行访问拦截、修改请求内容、安全控制、流量控制、以及隔离熔断操作。
本发明实施例是与上述方法实施例对应的装置实施例,各个模块的具体操作可以参照方法实施例的描述进行理解,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种基于流式处理API网关的日志采集方法,其特征在于,包括:
对客户端发送的请求信息进行路由判断,对允许的请求信息进行服务分发处理,将请求信息分发到基于流式技术构建的过滤器链中的pre链;
通过pre链对请求信息中的请求头进行读取,对请求体进行预处理,通过负载均衡过滤器获取真实访问地址,并对预处理后的请求体进行读取,将解析后的请求信息的数据采集到日志中,将日志存储于上下文中,并将所述请求信息发送到后端服务;
通过基于流式技术构建的过滤器链中的post链接收后端服务器发送的响应信息,对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,进行响应体信息的处理,将响应信息中响应头和响应体的数据采集到日志中,将日志存储于上下文中,进行日志持久化操作,并进行网络协议封装处理,将所述响应信息返回客户端。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
根据业务需要,在pre链和/或post链中增加过滤器,进行访问拦截、修改请求内容、安全控制、流量控制、以及隔离熔断操作。
3.根据权利要求1所述的方法,其特征在于,通过pre链对请求信息中的请求头进行读取,对请求体进行预处理,通过负载均衡过滤器获取真实访问地址,并对预处理后的请求体进行读取,将解析后的请求信息的数据采集到日志中,将日志存储于上下文中具体包括:
首先创建日志,在日志中记录请求行、负载均衡过滤器返回的真实访问地址、请求头参数、以及请求Query Params,将日志添加到上下文中;
根据请求头中的请求体长度判断请求体是否为空,如果为空,则不进行请求体的读取处理;如果不为空,则复制请求体内容并重新封装请求体,即进行请求体读取的预处理,将复制请求体放入上下文中;
获取请求头的媒体类型,如果判断媒体类型为空,则进行日志记录,直接继续后续pre链的流转;如果判断媒体类型不为空,从上下文的日志中获取复制请求体,如果复制请求体内容不为空,读取复制体内容转化为字符串并写入日志记录,将日志存储于上下文中;如果复制请求体内容为空,则进行无请求体日志记录,复制请求体内容不为空直接继续后续pre链的流转。
4.根据权利要求1所述的方法,其特征在于,通过基于流式技术构建的过滤器链中的post链接收后端服务器发送的响应信息,对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,进行响应体信息的处理,将响应信息中响应头和响应体的数据采集到日志中,进行日志持久化操作,并进行网络协议封装处理,将所述响应信息返回客户端具体包括:
通过响应体处理流程对文件流进行复制处理,对非文件流进行内容处理,依据响应状态修正响应体返回内容,提供友好响应提示;上下文完成状态处理流程将响应体内容记录日志记录并进行持久化。
5.根据权利要求4所述的方法,其特征在于,
响应体处理流程具体包括:
对文件流进行响应体内容的复制,针对断点续传类型流文件进行处理,确保多批次流文件内容不被打断;
非文件流则一次性获取响应体内容并记录日志,判断响应的状态是否为OK,如果为非OK,依据非OK状态封装友好响应提示,修改响应体内容并设定内容长度,封装响应体到上下文并继续在post链中流转。
上下文完成状态处理流程具体包括:
如果在上下文完成时状态为异常或者放弃时,设置响应状态为错误,并记录异常、放弃情况到日志;如果在上下文完成时状态为成功,则依据响应状态判断日志状态,其中,如果响应状为OK,则判断响应媒体的类型是否为流文件,如果为流文件,则在日志中记录响应体内容为文件类型,如果不是流文件,则在日志中记录状态为成功并记录响应体内容,将日志推送到队列,如果响应状态为TOO_MANY_REQUESTS,则在日志中记录状态为限流及响应体内容,将日志推送到队列;如果响应状态为GATEWAY_TIMEOUT,则在日志中记录状态为熔断及响应体内容,将日志推送到队列;如果响应状态为NOT_FOUND,则在日志中记录状态为拒绝及响应体内容,将日志推送到队列。
6.一种基于流式处理的API网关,其特征在于,包括:
路由判断分发模块,用于对客户端发送的请求信息进行路由判断,对允许的请求信息进行服务分发处理,将请求信息分发到基于流式技术构建的过滤器链中的pre链;
过滤器链,用于通过pre链对请求信息中的请求头进行读取,对请求体进行预处理,通过负载均衡过滤器获取真实访问地址,并对预处理后的请求体进行读取,将解析后的请求信息的数据采集到日志中,将日志存储于上下文中,并将所述请求信息发送到后端服务;
所述过滤器链进一步用于:通过post链接收后端服务器发送的响应信息,对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,进行响应体信息的处理,将响应信息中响应头和响应体的数据采集到日志中,进行日志持久化操作,并进行网络协议封装处理,将所述响应信息返回客户端。
7.根据权利要求6所述的API网关,其特征在于,
所述过滤器链进一步用于:根据业务需要,在pre链和/或post链中增加过滤器,进行访问拦截、修改请求内容、安全控制、流量控制、以及隔离熔断操作。
8.根据权利要求6所述的API网关,其特征在于,所述过滤器链具体包括:
pre链,用于:
首先创建日志,在日志中记录请求行、负载均衡过滤器返回的真实访问地址、请求头参数、以及请求Query Params,将日志添加到上下文中;
根据请求头中的请求体长度判断请求体是否为空,如果为空,则不进行请求体的读取处理;如果不为空,则复制请求体内容并重新封装请求体,即进行请求体读取的预处理,将复制请求体放入上下文中;
获取请求头的媒体类型,如果判断媒体类型为空,则进行日志记录,直接继续后续pre链的流转;如果判断媒体类型不为空,从上下文的日志中获取复制请求体,如果复制请求体内容不为空,读取复制体内容转化为字符串并写入日志记录,将日志存储于上下文中;如果复制请求体内容为空,则进行日志记录,直接继续后续pre链的流转。
9.根据权利要求6所述的API网关,其特征在于,所述过滤器链具体包括:
post链,用于对响应信息中的响应头读取,对响应体进行预处理,重新封装响应体后放入post链中,同时启动异步的响应体处理流程和上下文完成状态处理流程,进行响应体信息的处理,将响应信息中响应头和响应体的数据采集到日志中,进行日志持久化操作,并进行网络协议封装处理,将所述响应信息返回客户端。
10.根据权利要求9所述的API网关,其特征在于,所述post链具体用于:
响应体处理流程:对文件流进行响应体内容的复制,针对断点续传类型流文件进行处理,确保多批次流文件内容不被打断;非文件流则一次性获取响应体内容并记录日志,判断响应的状态是否为OK,如果为非OK,依据非OK状态封装友好响应提示,修改响应体内容并设定内容长度,封装响应体到上下文并继续在post链中流转;
上下文完成状态处理流程:如果在上下文完成时状态为异常或者放弃时,设置响应状态为错误,并记录异常、放弃情况到日志;如果在上下文完成时状态为成功,则依据响应状态判断日志状态,其中,如果响应状为OK,则判断响应媒体的类型是否为流文件,如果为流文件,则在日志中记录响应体内容为文件类型,如果不是流文件,则在日志中记录状态为成功及响应体内容,将日志推送到队列,如果响应状态为TOO_MANY_REQUESTS,则在日志中记录状态为限流及响应体内容,将日志推送到队列;如果响应状态为GATEWAY_TIMEOUT,则在日志中记录状态为熔断及响应体内容,将日志推送到队列;如果响应状态为NOT_FOUND,则在日志中记录状态为拒绝及响应体内容,将日志推送到队列。
CN202011175033.1A 2020-10-28 2020-10-28 基于流式处理api网关及其日志采集方法 Active CN112272115B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011175033.1A CN112272115B (zh) 2020-10-28 2020-10-28 基于流式处理api网关及其日志采集方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011175033.1A CN112272115B (zh) 2020-10-28 2020-10-28 基于流式处理api网关及其日志采集方法

Publications (2)

Publication Number Publication Date
CN112272115A true CN112272115A (zh) 2021-01-26
CN112272115B CN112272115B (zh) 2023-03-28

Family

ID=74345176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011175033.1A Active CN112272115B (zh) 2020-10-28 2020-10-28 基于流式处理api网关及其日志采集方法

Country Status (1)

Country Link
CN (1) CN112272115B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113141393A (zh) * 2021-03-25 2021-07-20 杭州博联智能科技股份有限公司 动态边缘网关日志采集和管理方法、系统、设备及介质
WO2023026086A1 (en) * 2021-08-25 2023-03-02 Sensetime International Pte. Ltd. Logging method and apparatus, electronic device, and computer-readable storage medium

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180278705A1 (en) * 2017-03-24 2018-09-27 Accenture Global Solutions Limited Reactive api gateway
CN108712329A (zh) * 2018-05-02 2018-10-26 山东汇贸电子口岸有限公司 一种基于Elasticsearch的服务网关及日志记录检索装置
CN111162932A (zh) * 2019-12-12 2020-05-15 苏州博纳讯动软件有限公司 一种基于日志分析的api网关监控方法
CN111212038A (zh) * 2019-12-23 2020-05-29 江苏国泰新点软件有限公司 基于大数据人工智能的开放数据api网关系统
US10771468B1 (en) * 2016-11-29 2020-09-08 Amazon Technologies, Inc. Request filtering and data redaction for access control

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10771468B1 (en) * 2016-11-29 2020-09-08 Amazon Technologies, Inc. Request filtering and data redaction for access control
US20180278705A1 (en) * 2017-03-24 2018-09-27 Accenture Global Solutions Limited Reactive api gateway
CN108712329A (zh) * 2018-05-02 2018-10-26 山东汇贸电子口岸有限公司 一种基于Elasticsearch的服务网关及日志记录检索装置
CN111162932A (zh) * 2019-12-12 2020-05-15 苏州博纳讯动软件有限公司 一种基于日志分析的api网关监控方法
CN111212038A (zh) * 2019-12-23 2020-05-29 江苏国泰新点软件有限公司 基于大数据人工智能的开放数据api网关系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
温馨等: "基于OpenResty平台的API网关系统的设计与实现", 《信息化研究》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113141393A (zh) * 2021-03-25 2021-07-20 杭州博联智能科技股份有限公司 动态边缘网关日志采集和管理方法、系统、设备及介质
CN113141393B (zh) * 2021-03-25 2023-04-07 杭州博联智能科技股份有限公司 动态边缘网关日志采集和管理方法、系统、设备及介质
WO2023026086A1 (en) * 2021-08-25 2023-03-02 Sensetime International Pte. Ltd. Logging method and apparatus, electronic device, and computer-readable storage medium

Also Published As

Publication number Publication date
CN112272115B (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
CN112272115B (zh) 基于流式处理api网关及其日志采集方法
US6230156B1 (en) Electronic mail interface for a network server
US20070130247A1 (en) Framework system
KR102136945B1 (ko) Fix 프로토콜에 기반한 서비스 구현 방법, 장치 및 시스템
CN108509392B (zh) 多机构对账方法、系统、计算机设备和存储介质
CN113259268A (zh) 一种支持冗余架构的网口与串口数据转发网关及方法
CN112039701A (zh) 接口调用监控方法、装置、设备及存储介质
CN113472719A (zh) 基于数据摆渡的网闸的协议解析的方法、设备和存储介质
CN112527844A (zh) 数据处理方法及装置、数据库架构
CN111200637B (zh) 一种缓存的处理方法及装置
US20140164205A1 (en) Market access system and method
CN113904847B (zh) 物联网卡的云平台绑定方法、系统、设备及介质
CN115665175B (zh) 一种分布式网关系统及其交易处理方法
CN109670952B (zh) 一种代收付交易平台
CN113220730B (zh) 业务数据的处理系统
CN115098528B (zh) 业务处理方法、装置、电子设备及计算机可读存储介质
CN111953540B (zh) 一种报文生成方法、装置、电子设备及存储介质
CN111010676B (zh) 一种短信缓存方法、装置及系统
HU224795B1 (en) Method and system for transmitting a chain of messages for database
CN114584621B (zh) 一种数据发送的方法及装置
CN110196862B (zh) 一种数据场景构造方法、装置、服务器与系统
US20210026813A1 (en) Method for querying or processing a complete file by a query language, and apparatus for managing the method
CN114095491B (zh) 一种web网页应用文件上传的方法、装置、设备及可读介质
US20020083135A1 (en) Memory management for optimal storage of data of any size in memory
WO2022005869A1 (en) Request-based content services replication

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