CN115277602A - 一种api网关流量镜像方法 - Google Patents
一种api网关流量镜像方法 Download PDFInfo
- Publication number
- CN115277602A CN115277602A CN202210710303.7A CN202210710303A CN115277602A CN 115277602 A CN115277602 A CN 115277602A CN 202210710303 A CN202210710303 A CN 202210710303A CN 115277602 A CN115277602 A CN 115277602A
- Authority
- CN
- China
- Prior art keywords
- http event
- http
- event
- data
- block data
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/208—Port mirroring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- 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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种API网关流量镜像方法,具体涉及API网关流量镜像方法领域,包括以下以下几部分内容:分块数据结构的定义与格式:按照HTTP事件类型,定义HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体等四个部分定义,每个部分都包含有事件唯一ID,用于数据加工时的组装关联,约定两种格式的数据序列化格式。通过尽最大可能性以减少对nginx本身的影响情况下将HTTP事件部分内容尽快尽早地镜像出来,具体是在nginx处理HTTP事件处理的各个阶段,将事件中的局部数据以批处理的转发到消息中间件,再由数据加工模块,将各阶段的数据组装原始的HTTP事件。
Description
技术领域
本发明实施例涉及API网关流量镜像方法领域,具体涉及一种API网关流量镜像方法。
背景技术
将网关代理部署在API服务的前面,将需要观测的流量复制并转发到分析设备中,一般是基于nginx服务+Lua脚本的框架。在log_by_lua的处理阶段中,将所关注的HTTP事件完整内容进行组装(一般为json格式)并复制转发,这意味着在复制转发完成之前,nginx服务器上缓存所有的数据(包括服务器的请求与响应部分),尤其是响应部分,一般都会比较大,而且都保存在内存中,当并发会话较多的时,会占用较高的系统内存资源,进而影响处理性能。
发明内容
为此,本发明实施例提供一种API网关流量镜像方法,通过尽最大可能性以减少对nginx本身的影响情况下将HTTP事件部分内容尽快尽早地镜像出来,具体是在nginx处理HTTP事件处理的各个阶段,将事件中的局部数据以批处理的转发到消息中间件,再由数据加工模块,将各阶段的数据组装原始的HTTP事件。
为了实现上述目的,本发明实施例提供如下技术方案:一种API网关流量镜像方法,包括以下以下几部分内容:
分块数据结构的定义与格式:按照HTTP事件类型,定义HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体等四个部分定义,每个部分都包含有事件唯一ID,用于数据加工时的组装关联,约定两种格式的数据序列化格式,在序列化编码性能上,两者各有优势,可根据实的数据进行动态选择,纯文本类且数据量不太大的数据,json编码性能更好,二进制类的数据,protobuf编码性能更优;
代理核心模块:在access_by_lua阶段、header_filter_by_lua阶段或body_filter_by_lua阶段,可以根据当前HTTP事件的数据量等信息,将HTTP事件数据按照一定的策略进行分块传输;
分块与编码策略:对于访问/下载类型的HTTP事件,第一个消息块数据包含有HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体的部分内容,之后每4KB的HTTP事件响应体数据,将变成一个独立的消息块数据,进行编号后传输;
对于上传类型的HTTP事件,每一个消息块数据包含有HTTP事件请求头、HTTP事件请求体的部分内容,之后每4KB的HTTP事件请求体数据,将变成一个独立的消息块数据,进行编号后传输;
HTTP事件流量镜像还原流程如下:
步骤一:在nginx的access_by_lua阶段,开头生成一个HTTP事件的唯一ID,存储到nginx会话的上下文变量,并将唯一ID;
步骤二:在nginx的access_by_lua阶段,将收到HTTP事件的请求头、请求体数据以及HTTP事件的唯一ID填充到分块数据结构,并发送到内部的批处理队列;
步骤三:在nginx的header_filter_by_lua阶段,将收到HTTP事件的响应头以及HTTP事件的唯一ID填充到分块数据结构,并发送到内部的批处理队列;
步骤四:在nginx的body_filter_by_lua阶段,将收到HTTP事件的响应体以及HTTP事件的唯一ID填充到分块数据结构,并发送到内部的批处理队列;
步骤五:在批处理队列满足发送条件时,将队列中的所有数据合并成一条或多条消息,发送到消息中间件;
步骤六:数据加工模块,从消息中间件,获取消息,将消息还原一个或多个分块数据,存储到一个全局缓存中,其中键为HTTP事件的唯一ID,值为同一ID中所有相关的分块数据内容;
步骤七:当加工模块的全局缓存中的分块数据满足组装条件时,则取出同一事件ID下的分块数据,组装成HTTP事件结构,再发送到下游处理流程,实现流量的镜像;
步骤八:从全局缓存中删除已组装或超时未能组装的事件ID对应的存储。
进一步地,所述约定两种格式的数据序列化格式具体为protobuf和json。
进一步地,所述对于访问/下载类型的HTTP事件,第一个消息块数据包含有HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体的部分内容不超过2KB。
进一步地,所述对于上传类型的HTTP事件,每一个消息块数据包含有HTTP事件请求头、HTTP事件请求体的部分内容不超过2KB。
进一步地,所述步骤一中存储在nginx会话的上下文变量所有和此事件的所有阶段都能够访问。
进一步地,所述步骤五中批处理队列满足发送条件为到达一定的数量或超过一定的时间。
进一步地,所述步骤六中的全局缓存具体为键值对结构。
进一步地,所述步骤八中加工模块的全局缓存中的分块数据满足组装条件为四个分块数据内容完整。
本发明实施例具有如下优点:
以protobuf协议来定义更高效的序列化结构,并将HTTP事件的四个部分分别定义格式,在代理核心模块的处理阶段按照一定的策略进行转发,对于每个事件同时可以将分独立分成多条处理,也可以合并处理,并支持以批处理的方式,而非单个事件的处理,提升整体的呑吐性能,将部分事件还原的,后移到网关中的非代理核心模块中进行处理,进而减少代理核心模块的资源消耗,并提升稳定性。
1、以protobuf协议来定义,定义HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体,四个部分。
2、代理核心模块:access_by_lua阶段、header_filter_by_lua阶段或body_filter_by_lua阶段,可以根据当前HTTP事件的数据量等信息,将HTTP事件数据按照一定的策略进行分块传输,发送到消息中间件。
3、数据加工模块:根据HTTP事件唯一ID,将从消息中间件中的事件各部分的内容组装还原成完整的事件内容。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。
图1为本发明提供的API网关流量镜像方法示意图。
图2为本发明提供的API网关流量镜像方法流程图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
该实施例的一种API网关流量镜像方法,包括以下以下几部分内容:
分块数据结构的定义与格式:按照HTTP事件类型,定义HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体等四个部分定义,每个部分都包含有事件唯一ID,用于数据加工时的组装关联,约定两种格式的数据序列化格式,在序列化编码性能上,两者各有优势,可根据实的数据进行动态选择,纯文本类且数据量不太大的数据,json编码性能更好,二进制类的数据,protobuf编码性能更优;
代理核心模块:在access_by_lua阶段、header_filter_by_lua阶段或body_filter_by_lua阶段,可以根据当前HTTP事件的数据量等信息,将HTTP事件数据按照一定的策略进行分块传输;
分块与编码策略:对于访问/下载类型的HTTP事件,第一个消息块数据包含有HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体的部分内容,之后每4KB的HTTP事件响应体数据,将变成一个独立的消息块数据,进行编号后传输;
对于上传类型的HTTP事件,每一个消息块数据包含有HTTP事件请求头、HTTP事件请求体的部分内容,之后每4KB的HTTP事件请求体数据,将变成一个独立的消息块数据,进行编号后传输;
HTTP事件流量镜像还原流程如下:
步骤一:在nginx的access_by_lua阶段,开头生成一个HTTP事件的唯一ID,存储到nginx会话的上下文变量,并将唯一ID;
步骤二:在nginx的access_by_lua阶段,将收到HTTP事件的请求头、请求体数据以及HTTP事件的唯一ID填充到分块数据结构,并发送到内部的批处理队列;
步骤三:在nginx的header_filter_by_lua阶段,将收到HTTP事件的响应头以及HTTP事件的唯一ID填充到分块数据结构,并发送到内部的批处理队列;
步骤四:在nginx的body_filter_by_lua阶段,将收到HTTP事件的响应体以及HTTP事件的唯一ID填充到分块数据结构,并发送到内部的批处理队列;
步骤五:在批处理队列满足发送条件时,将队列中的所有数据合并成一条或多条消息,发送到消息中间件;
步骤六:数据加工模块,从消息中间件,获取消息,将消息还原一个或多个分块数据,存储到一个全局缓存中,其中键为HTTP事件的唯一ID,值为同一ID中所有相关的分块数据内容;
步骤七:当加工模块的全局缓存中的分块数据满足组装条件时,则取出同一事件ID下的分块数据,组装成HTTP事件结构,再发送到下游处理流程,实现流量的镜像;
步骤八:从全局缓存中删除已组装或超时未能组装的事件ID对应的存储。
进一步地,所述约定两种格式的数据序列化格式具体为protobuf和json。
进一步地,所述对于访问/下载类型的HTTP事件,第一个消息块数据包含有HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体的部分内容不超过2KB。
进一步地,所述对于上传类型的HTTP事件,每一个消息块数据包含有HTTP事件请求头、HTTP事件请求体的部分内容不超过2KB。
进一步地,所述步骤一中存储在nginx会话的上下文变量所有和此事件的所有阶段都能够访问。
进一步地,所述步骤五中批处理队列满足发送条件为到达一定的数量或超过一定的时间。
进一步地,所述步骤六中的全局缓存具体为键值对结构。
进一步地,所述步骤八中加工模块的全局缓存中的分块数据满足组装条件为四个分块数据内容完整。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (8)
1.一种API网关流量镜像方法,其特征在于:包括以下以下几部分内容:
分块数据结构的定义与格式:按照HTTP事件类型,定义HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体等四个部分定义,每个部分都包含有事件唯一ID,用于数据加工时的组装关联,约定两种格式的数据序列化格式,在序列化编码性能上,两者各有优势,可根据实的数据进行动态选择,纯文本类且数据量不太大的数据,json编码性能更好,二进制类的数据,protobuf编码性能更优;
代理核心模块:在access_by_lua阶段、header_filter_by_lua阶段或body_filter_by_lua阶段,可以根据当前HTTP事件的数据量等信息,将HTTP事件数据按照一定的策略进行分块传输;
分块与编码策略:对于访问/下载类型的HTTP事件,第一个消息块数据包含有HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体的部分内容,之后每4KB的HTTP事件响应体数据,将变成一个独立的消息块数据,进行编号后传输;
对于上传类型的HTTP事件,每一个消息块数据包含有HTTP事件请求头、HTTP事件请求体的部分内容,之后每4KB的HTTP事件请求体数据,将变成一个独立的消息块数据,进行编号后传输;
HTTP事件流量镜像还原流程如下:
步骤一:在nginx的access_by_lua阶段,开头生成一个HTTP事件的唯一ID,存储到nginx会话的上下文变量,并将唯一ID;
步骤二:在nginx的access_by_lua阶段,将收到HTTP事件的请求头、请求体数据以及HTTP事件的唯一ID填充到分块数据结构,并发送到内部的批处理队列;
步骤三:在nginx的header_filter_by_lua阶段,将收到HTTP事件的响应头以及HTTP事件的唯一ID填充到分块数据结构,并发送到内部的批处理队列;
步骤四:在nginx的body_filter_by_lua阶段,将收到HTTP事件的响应体以及HTTP事件的唯一ID填充到分块数据结构,并发送到内部的批处理队列;
步骤五:在批处理队列满足发送条件时,将队列中的所有数据合并成一条或多条消息,发送到消息中间件;
步骤六:数据加工模块,从消息中间件,获取消息,将消息还原一个或多个分块数据,存储到一个全局缓存中,其中键为HTTP事件的唯一ID,值为同一ID中所有相关的分块数据内容;
步骤七:当加工模块的全局缓存中的分块数据满足组装条件时,则取出同一事件ID下的分块数据,组装成HTTP事件结构,再发送到下游处理流程,实现流量的镜像;
步骤八:从全局缓存中删除已组装或超时未能组装的事件ID对应的存储。
2.根据权利要求1所述的一种API网关流量镜像方法,其特征在于:所述约定两种格式的数据序列化格式具体为protobuf和json。
3.根据权利要求1所述的一种API网关流量镜像方法,其特征在于:所述对于访问/下载类型的HTTP事件,第一个消息块数据包含有HTTP事件请求头、HTTP事件请求体、HTTP事件响应头、HTTP事件响应体的部分内容不超过2KB。
4.根据权利要求1所述的一种API网关流量镜像方法,其特征在于:所述对于上传类型的HTTP事件,每一个消息块数据包含有HTTP事件请求头、HTTP事件请求体的部分内容不超过2KB。
5.根据权利要求1所述的一种API网关流量镜像方法,其特征在于:所述步骤一中存储在nginx会话的上下文变量所有和此事件的所有阶段都能够访问。
6.根据权利要求1所述的一种API网关流量镜像方法,其特征在于:所述步骤五中批处理队列满足发送条件为到达一定的数量或超过一定的时间。
7.根据权利要求1所述的一种API网关流量镜像方法,其特征在于:所述步骤六中的全局缓存具体为键值对结构。
8.根据权利要求1所述的一种API网关流量镜像方法,其特征在于:所述步骤八中加工模块的全局缓存中的分块数据满足组装条件为四个分块数据内容完整。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210710303.7A CN115277602B (zh) | 2022-06-22 | 2022-06-22 | 一种api网关流量镜像方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210710303.7A CN115277602B (zh) | 2022-06-22 | 2022-06-22 | 一种api网关流量镜像方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115277602A true CN115277602A (zh) | 2022-11-01 |
CN115277602B CN115277602B (zh) | 2023-07-28 |
Family
ID=83761750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210710303.7A Active CN115277602B (zh) | 2022-06-22 | 2022-06-22 | 一种api网关流量镜像方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115277602B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164256A (zh) * | 2011-12-08 | 2013-06-19 | 深圳市快播科技有限公司 | 一种实现单机支持高并发处理方法及系统 |
CN103944906A (zh) * | 2014-04-25 | 2014-07-23 | 厦门享游网络科技有限公司 | 一种iOS上针对APP的HTTP流量引导的方法 |
CN110300056A (zh) * | 2019-06-28 | 2019-10-01 | 四川长虹电器股份有限公司 | 一种实时响应式api网关及其请求处理方法 |
CN110535855A (zh) * | 2019-08-28 | 2019-12-03 | 北京安御道合科技有限公司 | 一种网络事件监测分析方法和系统、信息数据处理终端 |
US20200403826A1 (en) * | 2019-06-21 | 2020-12-24 | Amazon Technologies, Inc. | Monitoring network traffic using traffic mirroring |
CN112988569A (zh) * | 2021-02-05 | 2021-06-18 | 长扬科技(北京)有限公司 | 一种基于nginx的微服务请求响应查看方法和系统 |
-
2022
- 2022-06-22 CN CN202210710303.7A patent/CN115277602B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103164256A (zh) * | 2011-12-08 | 2013-06-19 | 深圳市快播科技有限公司 | 一种实现单机支持高并发处理方法及系统 |
CN103944906A (zh) * | 2014-04-25 | 2014-07-23 | 厦门享游网络科技有限公司 | 一种iOS上针对APP的HTTP流量引导的方法 |
US20200403826A1 (en) * | 2019-06-21 | 2020-12-24 | Amazon Technologies, Inc. | Monitoring network traffic using traffic mirroring |
CN110300056A (zh) * | 2019-06-28 | 2019-10-01 | 四川长虹电器股份有限公司 | 一种实时响应式api网关及其请求处理方法 |
CN110535855A (zh) * | 2019-08-28 | 2019-12-03 | 北京安御道合科技有限公司 | 一种网络事件监测分析方法和系统、信息数据处理终端 |
CN112988569A (zh) * | 2021-02-05 | 2021-06-18 | 长扬科技(北京)有限公司 | 一种基于nginx的微服务请求响应查看方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115277602B (zh) | 2023-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110300056B (zh) | 一种实时响应式api网关及其请求处理方法 | |
CN111539726B (zh) | 区块链共识系统及方法 | |
CN108769099B (zh) | 一种消息中间件的消息去重的实现方法 | |
MXPA03011150A (es) | Sistema y metodo para incrementar el ancho de banda efectivo de una red de comunicaciones. | |
US9264518B2 (en) | Request and response decoupling via pluggable transports in a service oriented pipeline architecture for a request response message exchange | |
CN106713469B (zh) | 用于分布式容器的动态加载方法、装置及系统 | |
CN111031135B (zh) | 消息传送方法、装置及电子设备 | |
CN105681426A (zh) | 异构系统 | |
CN111064626A (zh) | 配置更新方法、装置、服务器及可读存储介质 | |
WO2021226781A1 (zh) | 防火墙规则的更新方法、装置、服务器及存储介质 | |
CN113626208B (zh) | 一种基于nio异步线程模型的服务器通信方法 | |
CN112202862B (zh) | 一种基于kafka的集群数据以及文件的同步方法及装置 | |
CN115277602A (zh) | 一种api网关流量镜像方法 | |
CN113973091A (zh) | 一种报文处理方法、网络设备以及相关设备 | |
CN112019689A (zh) | 来电秀业务处理系统及方法 | |
US11645211B2 (en) | Augmenting storage functionality using emulation of storage characteristics | |
CN113794757B (zh) | 一种基于rabbitmq的redis cluster异地同步方法及系统 | |
CN112039751B (zh) | 一种通讯消息的发送方法及装置 | |
CN112615773B (zh) | 一种消息处理方法及系统 | |
CN116668415A (zh) | 流媒体数据处理方法及系统 | |
CN115202573A (zh) | 数据存储系统以及方法 | |
CN110324425B (zh) | 混合云交易路由处理方法及装置 | |
CN114760116B (zh) | 验证方法、装置、电子设备及存储介质 | |
CN112835728B (zh) | 消息处理方法、装置、计算机设备和存储介质 | |
CN114584518B (zh) | 基于资源池的websocket负载均衡方法及系统 |
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 |