CN110413350A - 基于动态映射插件的请求处理方法、系统、服务器及存储介质 - Google Patents
基于动态映射插件的请求处理方法、系统、服务器及存储介质 Download PDFInfo
- Publication number
- CN110413350A CN110413350A CN201910716073.3A CN201910716073A CN110413350A CN 110413350 A CN110413350 A CN 110413350A CN 201910716073 A CN201910716073 A CN 201910716073A CN 110413350 A CN110413350 A CN 110413350A
- Authority
- CN
- China
- Prior art keywords
- request
- source
- unit
- url
- mapping
- 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
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 129
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 238000000034 method Methods 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims abstract description 25
- 238000001514 detection method Methods 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 10
- 230000005055 memory storage Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 1
- 239000013065 commercial product Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于动态映射插件的请求处理方法、系统、服务器及存储介质,所述方法包括:启动ATS进程,并加载动态映射插件;注册动态映射插件的钩子函数;检测ATS进程是否结束当ATS进程未结束时,检测是否有客户端发起的文件请求;当有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL;向目标主机发送目标请求URL,以使目标主机对请求进行处理。本发明可以通过mongodb_remap插件实现请求到源服务器的动态映射,其映射规则存储在mongoDB数据库中,方便在mongoDB数据库中对不同的业务进行管理,所有客户端发起的文件请求都会从mongoDB数据库中查询映射规则,极大地提高了实时性。
Description
技术领域
本发明涉及一种基于动态映射插件的请求处理方法、系统、服务器及存储介质,属于文件请求领域。
背景技术
ATS(Appache Traffic Server)是一个高性能、可扩展、可伸缩、高度模块化的HTTP代理和缓存服务器,兼容HTTP/1.1和HTTP/2.0。最初是Inktomi公司的商业产品,该公司在2003年被Yahoo收购,之后Traffic Server一直在Yahoo内部使用长达4年,直到2009年8月Yahoo向Apache软件基金会(ASF)贡献了源代码,并于2010年4月成为了ASF的顶级项目(Top-Level Project)。
Apache Traffic Server现在是一个开源项目,开发语言为C++。Apache TrafficServer是目前主要CDN厂商和内容所有者的首选缓存服务器,是业内最好的缓存服务器之一。ATS的一大特性就是能支持用户根据ATS提供的API编写插件实现特定的需求。
对于提供文件存储服务的系统中,可以在源服务器前搭建一层ATS来缓存重复访问的文件,这样既可以提高文件的响应时间,又减轻了源服务器的访问压力。
在目前的ATS体系中,Apache Traffic Server是一个缓存服务器或反向代理服务器,需要提供请求的目标主机,这个功能的实现是通过remap.conf配置文件实现的,ATS中通过remap.conf配置文件来指明URL请求的目标源服务器,目前需要在每台ATS服务器中修改remap.conf配置并重新加载配置文件才能使得映射规则生效。
remap.conf配置文件中每一行包含一条映射规则,用于将源请求URL映射到目标URL,确定了目标URL后,由ATS进行代理请求。remap.conf的映射规则示例如下:
map orgin_scheme://oring_host:orign_port target_scheme://target_host:target_port
ATS根据源请求的URL匹配到对应的映射规则,然后ATS修改源请求的URL,替换为目标规则,根据这个目标规则向源服务器发起请求。
因此,为了实现将请求映射到源服务器,需要在ATS中的remap.conf中添加映射条目,添加完成后,还需要通过ATS重新加载remap.conf文件来达到更新的效果。
目前的通过remap.conf添加映射规则的方法存在三个方面的问题:
1)规则配置不灵活。目前需要在每台ATS服务器的remap.conf文件中添加,对于大规模的缓存服务(如CDN),接入的业务很多,可能有很多条映射规则。需要对每台ATS服务器进行修改remap.conf文件显得不够灵活,同时不易管理。
2)规则操作繁琐。目前要使新的规则生效,需要先修改remap.conf配置文件,再重新加载remap.conf的配置,如果有成千上万的ATS服务器,每一台进行重复的操作的话,显得十分繁琐,十分耗时,而且容易出错。
3)规则不能实时生效。因为remap.conf存在于每一台ATS服务器中,对配置的修改需要逐台进行(如需要更改目前存在的映射规则),在此过程中会出现一部分ATS代理到正确的源服务器,但还有一部分ATS服务器会代理到原来的源服务器。要等到所有ATS服务器remap.conf更新完成后才能对所有请求代理到正确的源服务器上。因为多份remap.conf导致映射规则不能即时生效,这严重影响了业务的发布与更新。
发明内容
有鉴于此,本发明提供了一种基于动态映射插件的请求处理方法、系统、服务器及存储介质,其可以通过mongodb_remap插件实现请求到源服务器的动态映射,其映射规则存储在mongoDB数据库中,方便在mongoDB数据库中对不同的业务进行管理,所有客户端发起的文件请求都会从mongoDB数据库中查询映射规则,极大地提高了实时性。
本发明的第一个目的在于提供一种基于动态映射插件的请求处理方法。
本发明的第二个目的在于提供一种基于动态映射插件的请求处理系统。
本发明的第三个目的在于提供一种服务器。
本发明的第四个目的在于提供一种存储介质。
本发明的第一个目的可以通过采取如下技术方案达到:
一种基于动态映射插件的请求处理方法,所述方法包括:
当ATS进程未结束时,检测是否有客户端发起的文件请求;
当有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL;其中,所述动态映射插件为mongodb_remap插件,其映射规则存储在mongoDB数据库中;
向目标主机发送目标请求URL,以使目标主机对请求进行处理。
进一步的,所述mongoDB数据库中具有一个集合remap,所述集合remap中每条记录文档表示一条映射规则。
进一步的,所述集合remap中每条记录文档的字段包括is_enabled、from_scheme、from_hostname、from_port、to_scheme、to_hostname和to_port,其中:
is_enabled表示映射规则是否生效;
from_scheme表示源请求的scheme;
from_hostname表示源请求的主机名/域名;
from_port表示请求的端口号;
to_scheme表示映射后的目标scheme;
to_hostname表示映射后的目标主机名/域名;
to_port表示映射后的目标端口。
进一步的,所述mongodb_remap插件在plugin.conf配置文件中进行注册。
进一步的,所述方法在检测是否有客户端发起的文件请求之前,还包括:
启动ATS进程,并加载动态映射插件;
注册动态映射插件的钩子函数;
检测ATS进程是否结束。
进一步的,所述根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL,具体包括:
获取源请求的URL和源请求的HTTP/HTTPS头部信息;
根据源请求的HTTP/HTTPS头部信息,获取Host头部值,即获取源请求的主机名或域名;
根据源请求的URL,获取源请求的scheme和源请求的端口号;
根据源请求的scheme、源请求的主机名/域名以及源请求的端口号,查询mongoDB数据库中是否有对应的映射规则记录文档;
当mongoDB数据库中有对应的映射规则记录文档,读取该记录文档中的is_enabled字段;
当读取到的is_enabled字段为true时,从mongoDB数据库中读取目标scheme、目标主机名/域名以及目标端口号;
根据目标scheme、目标主机名/域名以及目标端口号,改写源请求为目标请求的scheme、主机名/域名以及端口号,生成目标请求的URL。
本发明的第二个目的可以通过采取如下技术方案达到:
一种基于动态映射插件的请求处理系统,所述系统包括:
检测模块,用于当ATS进程未结束时,检测是否有客户端发起的文件请求;
改写模块,用于当有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL;其中,所述动态映射插件为mongodb_remap插件,其映射规则存储在mongoDB数据库中。
发送模块,用于向目标主机发送目标请求URL,以使目标主机对请求进行处理。
进一步的,所述改写模块,具体包括:
第一获取单元,用于获取源请求的URL和源请求的HTTP/HTTPS头部信息;
第二获取单元,用于根据源请求的HTTP/HTTPS头部信息,获取Host头部值,即获取源请求的主机名或域名;
第三获取单元,用于根据源请求的URL,获取源请求的scheme和源请求的端口号;
查询单元,用于根据源请求的scheme、源请求的主机名/域名以及源请求的端口号,查询mongoDB数据库中是否有对应的映射规则记录文档;
第一读取单元,用于当mongoDB数据库中有对应的映射规则记录文档,读取该记录文档中的is_enabled字段;
第二读取单元,用于当读取到的is_enabled字段为true时,从mongoDB数据库中读取目标scheme、目标主机名/域名以及目标端口号;
改写单元,用于根据目标scheme、目标主机名/域名以及目标端口号,改写源请求为目标请求的scheme、主机名/域名以及端口号,生成目标请求的URL。
本发明的第三个目的可以通过采取如下技术方案达到:
一种服务器,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现上述的请求处理方法。
本发明的第四个目的可以通过采取如下技术方案达到:
一种存储介质,存储有程序,所述程序被处理器执行时,实现上述的请求处理方法。
本发明相对于现有技术具有如下的有益效果:
本发明在有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,能直接访问mongoDB数据库查询匹配到的映射规则,从而映射得到目标信息,增加了灵活性,其中动态映射插件采用mongodb_remap插件,其映射规则存储在mongoDB数据库中,mongoDB数据库具有高性能、易部署、易使用的特点,存储数据非常方便,并且使用mongodb_remap插件,不需要向所有ATS服务器的remap.conf文件进行修改,只需要修改mongoDB数据库,方便在mongoDB数据库中对不同的业务进行管理;只需要修改mongoDB数据库中的一处记录就可以应用于所有ATS服务器,同时还可能对记录的有效性进行检验,业务运维更加简单;所有客户端发起的文件请求都会从mongoDB数据库中查询映射规则,而不是从本地ATS服务器的remap.conf读取配置,一旦修改了mongoDB数据库映射记录,会立即生效,实时性有了极大的提高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明实施例1的基于动态映射插件的请求处理方法的流程图。
图2为本发明实施例1的映射原理图。
图3为本发明实施例1的改写源请求URL的流程图。
图4为本发明实施例2的基于动态映射插件的请求处理系统的结构框图。
图5为本发明实施例2的改写模块的结构框图。
图6为本发明实施例3的服务器的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
如图1所示,本实施例提供了一种基于动态映射插件的请求处理方法,该方法应用于ATS服务器中,包括以下步骤:
S101、启动ATS进程,并加载动态映射插件。
具体地,动态映射插件又称重映射插件,其采用mongodb_remap插件,ATS服务器提供插件开发的API,可以利用对应的接口和编程流程框架来实现mongodb_remap插件,将代码进行编译生成so文件后,放到指定的目录,然后在ATS服务器的plugin.conf配置文件中配置一条mongodb_remap插件条目(包括插件的位置与插件的参数)引用此mongodb_remap插件,重启ATS服务器后生效。
通过TSPluginInit进行mongodb_remap插件的加载与初始化,主要用来加载mongodb_remap插件的配置信息,同时向ATS服务器注册mongodb_remap插件和mongodb_remap插件处理函数。
在ATS服务器中,remap.conf配置文件定义了用户请求的映射规则,如:
map http://example.com/http://target-example.com:8080/
“map http://example.com http://target-example.com:8080”映射规则,将所有用户请求中hostname为example.com的HTTP请求,转发到target-example.com站点,端口为8080的服务器上。
本实施例的mongodb_remap插件的映射规则存储在mongoDB数据库中,mongoDB是一个介于关系数据库和非关系数据库之间的开源数据库产品,是最接近于关系型数据库的NoSQL数据库,具有高性能、易部署、易使用的特点,存储数据非常方便;在mongoDB数据库中新建一个集合remap,集合remap中每条记录文档表示一条映射规则;集合remap中每条记录文档的字段包括is_enabled、from_scheme、from_hostname、from_port、to_scheme、to_hostname和to_port,其中:
is_enabled:可选值为true/flase,表示映射规则是否生效;
from_scheme:可选值为http/https,表示源请求的scheme;
from_hostname:表示源请求的主机名/域名;
from_port:表示请求的端口号;
to_scheme:表示映射后的目标scheme;
to_hostname:表示映射后的目标主机名/域名;
to_port:表示映射后的目标端口。
在remap集合中创建一个唯一键值约束unique key:(from_scheme,from_hostname,from_port,to_scheme,to_hostname,to_port),保证每条规则的唯一性。因此,上面提到的在remap.conf文件中的map映射规则在mongodb中的文档为:
{“is_enabled”:true,“from_scheme”:“http”,“from_hostname”:“example.com”,“to_port”:80,“to_scheme”:“http”,“to_hostname”:“target-example.com”,“to_port”:8080}。
如上所述,本实施例的mongodb_remap插件在plugin.conf配置文件中进行注册,示例如下:
plugins/path/to/mongodb_remap.so/path/to/mongodb_conf.ini
其中,/path/to/mongodb_remap.so为mongodb_remap插件的保存路径,/path/to/mongodb_conf.ini为mongoDB数据库连接信息,字段如下:
[mysql_remap]
mongodb_host=localhost#default
mongodb_port=27017#default
mongodb_username=remap_user
mongodb_password=
mongodb_database=remap#default
congodb_collection=remap#default
此mongodb_remap插件配置文件为mongoDB数据库连接信息,ATS服务器在重载时会保存这些信息,用于mongoDB数据库访问。
S102、注册动态映射插件的钩子函数。
具体地,在TS_HTTP_READ_REQUEST_HDR_HOOK阶段调用TSHttpHookAdd注册动态映射插件的钩子函数mongodb_remap。
S103、检测ATS进程是否终止。
若ATS服务器的ATS进程已终止,则释放动态映射插件实例,若ATS服务器的ATS进程未终止,则进入步骤S104。
S104、检测是否有客户端发起的文件请求。
ATS服务器检测是否有客户端发起的文件请求,若是,则说明用户通过客户端向ATS服务器发起了文件请求,进入步骤S105,若否,则返回步骤S103。
S105、根据动态映射插件,解析源请求URL(Uniform Resource Locator,统一资源定位符),确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求URL。
mongodb_remap插件中的mongodb_remap函数是执行URL重映射的关键,它是一个钩子函数;在TS_EVENT_HTTP_READ_REQUEST_HDR事件出现时,会调用mongodb_remap函数处理请求。
可以理解,源请求是指请求ATS服务器的请求,目标请求是指经ATS服务器进行映射后的请求,本实施例的源请求相关信息包括源请求的scheme、源请求的主机名/域名以及源请求的端口号,目标信息包括目标scheme、目标主机名/域名以及目标端口号。
该步骤S105的映射原理如图2所示,结合图3,该步骤S105具体包括:
S1051、获取源请求的URL和源请求的HTTP/HTTPS头部信息。
具体地,通过调用TSHttpHdrUrlGet获取源请求的URL,通过调用TSHttpTxnClientReqGet获取源请求的HTTP/HTTPS头部信息。
S1052、根据源请求的HTTP/HTTPS头部信息,获取Host头部值,即获取源请求的主机名或域名。
S1053、根据源请求的URL,获取源请求的scheme和源请求的端口号。
S1054、根据源请求的scheme、源请求的主机名/域名以及源请求的端口号,查询mongoDB数据库中是否有对应的映射规则记录文档,若有对应的映射规则记录文档,进入步骤S1055,若没有对应的映射规则记录文档,则返回错误并结束。
S1055、读取该记录文档中的is_enabled字段,若is_enabled字段为true,则说明映射规则生效,进入步骤S1056,若is_enabled字段为false,则说明映射规则不生效,返回错误并结束。
S1056、从mongoDB数据库中读取目标scheme、目标主机名/域名以及目标端口号。
S1057、根据目标scheme、目标主机名/域名以及目标端口号,改写源请求为目标请求的scheme、主机名/域名以及端口号,生成目标请求的URL。
具体地,依次调用TSUrlHostSet、TSUrlSchemeSet、TSUrlPortSet改写源请求为目标请求的scheme、主机名/域名以及端口号。
S106、向目标主机(即目标处理服务器)发送目标请求URL,以使目标主机对请求进行处理,并返回步骤S103。
本领域技术人员可以理解,实现上述实施例的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,相应的程序可以存储于计算机可读存储介质中。
应当注意,尽管在附图中以特定顺序描述了上述实施例的方法操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
实施例2:
如图4所示,本实施例提供了一种基于动态映射插件的请求处理系统,该系统包括加载模块401、注册模块402、第一检测模块403、第二检测模块404、改写模块405和发送模块406,各个模块的具体功能如下:
所述加载模块401,用于启动ATS进程,并加载动态映射插件。
所述注册模块402,用于注册动态映射插件的钩子函数。
所述第一检测模块403,用于检测ATS进程是否结束。
所述第二检测模块404,用于当ATS进程未结束时,检测是否有客户端发起的文件请求;
所述改写模块405,用于当有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL;
所述发送模块406,用于向目标主机发送目标请求URL,以使目标主机对请求进行处理。
进一步地,所述改写模块如图5所示,具体包括:
第一获取单元4051,用于获取源请求的URL和源请求的HTTP/HTTPS头部信息。
第二获取单元4052,用于根据源请求的HTTP/HTTPS头部信息,获取Host头部值,即获取源请求的主机名或域名。
第三获取单元4053,用于根据源请求的URL,获取源请求的scheme和源请求的端口号。
查询单元4054,用于根据源请求的scheme、源请求的主机名/域名以及源请求的端口号,查询mongoDB数据库中是否有对应的映射规则记录文档。
第一读取单元4055,用于当mongoDB数据库中有对应的映射规则记录文档,读取该记录文档中的is_enabled字段。
第二读取单元4056,用于当读取到的is_enabled字段为true时,从mongoDB数据库中读取目标scheme、目标主机名/域名以及目标端口号。
改写单元4056,用于根据目标scheme、目标主机名/域名以及目标端口号,改写源请求为目标请求的scheme、主机名/域名以及端口号,生成目标请求的URL。
本实施例中各个模块的具体实现可以参见上述实施例1,在此不再一一赘述;需要说明的是,本实施例提供的装置仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
可以理解,本实施例的装置中所使用的术语“第一”、“第二”等可用于描述各种模块,但这些模块不受这些术语限制。这些术语仅用于将第一个模块与另一个模块区分。举例来说,在不脱离本发明的范围的情况下,可以将第一检测模块称为第二检测模块,且类似地,可将第二检测模块称为第一检测模块,第一检测模块和第二检测模块两者都是检测模块,但其不是同一检测模块。
实施例3:
本实施例提供了一种服务器,该服务器为ATS服务器,如图6所示,其包括通过系统总线501连接的处理器602、存储器和网络接口603,该处理器用于提供计算和控制能力,该存储器包括非易失性存储介质604和内存储器605,该非易失性存储介质604存储有操作系统、计算机程序和数据库,该内存储器605为非易失性存储介质中的操作系统和计算机程序的运行提供环境,处理器602执行存储器存储的计算机程序时,实现上述实施例1的请求处理方法,如下:
启动ATS进程,并加载动态映射插件;
注册动态映射插件的钩子函数;
检测ATS进程是否结束;
当ATS进程未结束时,检测是否有客户端发起的文件请求;
当有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL;
向目标主机发送目标请求URL,以使目标主机对请求进行处理。
进一步地,所述根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL,具体包括:
获取源请求的URL和源请求的HTTP/HTTPS头部信息;
根据源请求的HTTP/HTTPS头部信息,获取Host头部值,即获取源请求的主机名或域名;
根据源请求的URL,获取源请求的scheme和源请求的端口号;
根据源请求的scheme、源请求的主机名/域名以及源请求的端口号,查询mongoDB数据库中是否有对应的映射规则记录文档;
当mongoDB数据库中有对应的映射规则记录文档,读取该记录文档中的is_enabled字段;
当读取到的is_enabled字段为true时,从mongoDB数据库中读取目标scheme、目标主机名/域名以及目标端口号;
根据目标scheme、目标主机名/域名以及目标端口号,改写源请求为目标请求的scheme、主机名/域名以及端口号,生成目标请求的URL。
实施例4:
本实施例提供了一种存储介质,该存储介质为计算机可读存储介质,其存储有计算机程序,所述程序被处理器执行时,处理器执行存储器存储的计算机程序时,实现上述实施例1的请求处理方法,如下:
启动ATS进程,并加载动态映射插件;
注册动态映射插件的钩子函数;
检测ATS进程是否结束;
当ATS进程未结束时,检测是否有客户端发起的文件请求;
当有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL;
向目标主机发送目标请求URL,以使目标主机对请求进行处理。
进一步地,所述根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL,具体包括:
获取源请求的URL和源请求的HTTP/HTTPS头部信息;
根据源请求的HTTP/HTTPS头部信息,获取Host头部值,即获取源请求的主机名或域名;
根据源请求的URL,获取源请求的scheme和源请求的端口号;
根据源请求的scheme、源请求的主机名/域名以及源请求的端口号,查询mongoDB数据库中是否有对应的映射规则记录文档;
当mongoDB数据库中有对应的映射规则记录文档,读取该记录文档中的is_enabled字段;
当读取到的is_enabled字段为true时,从mongoDB数据库中读取目标scheme、目标主机名/域名以及目标端口号;
根据目标scheme、目标主机名/域名以及目标端口号,改写源请求为目标请求的scheme、主机名/域名以及端口号,生成目标请求的URL。
本实施例中所述的存储介质可以是磁盘、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、U盘、移动硬盘等介质。
综上所述,本发明在有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,能直接访问mongoDB数据库查询匹配到的映射规则,从而映射得到目标信息,增加了灵活性,其中动态映射插件采用mongodb_remap插件,其映射规则存储在mongoDB数据库中,mongoDB数据库具有高性能、易部署、易使用的特点,存储数据非常方便,并且使用mongodb_remap插件,不需要向所有ATS服务器的remap.conf文件进行修改,只需要修改mongoDB数据库,方便在mongoDB数据库中对不同的业务进行管理;只需要修改mongoDB数据库中的一处记录就可以应用于所有ATS服务器,同时还可能对记录的有效性进行检验,业务运维更加简单;所有客户端发起的文件请求都会从mongoDB数据库中查询映射规则,而不是从本地ATS服务器的remap.conf读取配置,一旦修改了mongoDB数据库映射记录,会立即生效,实时性有了极大的提高。
以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明构思加以等同替换或改变,都属于本发明专利的保护范围。
Claims (10)
1.一种基于动态映射插件的请求处理方法,其特征在于,所述方法包括:
当ATS进程未结束时,检测是否有客户端发起的文件请求;
当有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL;其中,所述动态映射插件为mongodb_remap插件,其映射规则存储在mongoDB数据库中;
向目标主机发送目标请求URL,以使目标主机对请求进行处理。
2.根据权利要求1所述的请求处理方法,其特征在于,所述mongoDB数据库中具有一个集合remap,所述集合remap中每条记录文档表示一条映射规则。
3.根据权利要求2所述的请求处理方法,其特征在于,所述集合remap中每条记录文档的字段包括is_enabled、from_scheme、from_hostname、from_port、to_scheme、to_hostname和to_port,其中:
is_enabled表示映射规则是否生效;
from_scheme表示源请求的scheme;
from_hostname表示源请求的主机名/域名;
from_port表示请求的端口号;
to_scheme表示映射后的目标scheme;
to_hostname表示映射后的目标主机名/域名;
to_port表示映射后的目标端口。
4.根据权利要求1所述的请求处理方法,其特征在于,所述mongodb_remap插件在plugin.conf配置文件中进行注册。
5.根据权利要求1-4任一项所述的请求处理方法,其特征在于,所述方法在检测是否有客户端发起的文件请求之前,还包括:
启动ATS进程,并加载动态映射插件;
注册动态映射插件的钩子函数;
检测ATS进程是否结束。
6.根据权利要求1-4任一项所述的请求处理方法,其特征在于,所述根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL,具体包括:
获取源请求的URL和源请求的HTTP/HTTPS头部信息;
根据源请求的HTTP/HTTPS头部信息,获取Host头部值,即获取源请求的主机名或域名;
根据源请求的URL,获取源请求的scheme和源请求的端口号;
根据源请求的scheme、源请求的主机名/域名以及源请求的端口号,查询mongoDB数据库中是否有对应的映射规则记录文档;
当mongoDB数据库中有对应的映射规则记录文档,读取该记录文档中的is_enabled字段;
当读取到的is_enabled字段为true时,从mongoDB数据库中读取目标scheme、目标主机名/域名以及目标端口号;
根据目标scheme、目标主机名/域名以及目标端口号,改写源请求为目标请求的scheme、主机名/域名以及端口号,生成目标请求的URL。
7.一种基于动态映射插件的请求处理系统,其特征在于,所述系统包括:
检测模块,用于当ATS进程未结束时,检测是否有客户端发起的文件请求;
改写模块,用于当有客户端发起的文件请求时,根据动态映射插件,解析源请求URL,确定源请求相关信息,映射得到目标信息,改写源请求的URL,生成目标请求的URL;其中,所述动态映射插件为mongodb_remap插件,其映射规则存储在mongoDB数据库中;
发送模块,用于向目标主机发送目标请求URL,以使目标主机对请求进行处理。
8.根据权利要求7所述的请求处理系统,其特征在于,所述改写模块,具体包括:
第一获取单元,用于获取源请求的URL和源请求的HTTP/HTTPS头部信息;
第二获取单元,用于根据源请求的HTTP/HTTPS头部信息,获取Host头部值,即获取源请求的主机名或域名;
第三获取单元,用于根据源请求的URL,获取源请求的scheme和源请求的端口号;
查询单元,用于根据源请求的scheme、源请求的主机名/域名以及源请求的端口号,查询mongoDB数据库中是否有对应的映射规则记录文档;
第一读取单元,用于当mongoDB数据库中有对应的映射规则记录文档,读取该记录文档中的is_enabled字段;
第二读取单元,用于当读取到的is_enabled字段为true时,从mongoDB数据库中读取目标scheme、目标主机名/域名以及目标端口号;
改写单元,用于根据目标scheme、目标主机名/域名以及目标端口号,改写源请求为目标请求的scheme、主机名/域名以及端口号,生成目标请求的URL。
9.一种服务器,包括处理器以及用于存储处理器可执行程序的存储器,其特征在于,所述处理器执行存储器存储的程序时,实现权利要求1-6任一项所述的请求处理方法。
10.一种存储介质,存储有程序,其特征在于,所述程序被处理器执行时,实现权利要求1-6任一项所述的请求处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910716073.3A CN110413350A (zh) | 2019-08-05 | 2019-08-05 | 基于动态映射插件的请求处理方法、系统、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910716073.3A CN110413350A (zh) | 2019-08-05 | 2019-08-05 | 基于动态映射插件的请求处理方法、系统、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110413350A true CN110413350A (zh) | 2019-11-05 |
Family
ID=68365574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910716073.3A Pending CN110413350A (zh) | 2019-08-05 | 2019-08-05 | 基于动态映射插件的请求处理方法、系统、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413350A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115002067A (zh) * | 2022-04-19 | 2022-09-02 | 深圳市共进电子股份有限公司 | 客户端主机名处理方法、装置、系统、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107332924A (zh) * | 2017-07-27 | 2017-11-07 | 北京奇安信科技有限公司 | 基于动态url替换的反向代理方法及装置 |
CN108965203A (zh) * | 2017-05-18 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 一种资源访问方法及服务器 |
CN109995881A (zh) * | 2019-04-30 | 2019-07-09 | 网易(杭州)网络有限公司 | 缓存服务器的负载均衡方法和装置 |
-
2019
- 2019-08-05 CN CN201910716073.3A patent/CN110413350A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108965203A (zh) * | 2017-05-18 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 一种资源访问方法及服务器 |
CN107332924A (zh) * | 2017-07-27 | 2017-11-07 | 北京奇安信科技有限公司 | 基于动态url替换的反向代理方法及装置 |
CN109995881A (zh) * | 2019-04-30 | 2019-07-09 | 网易(杭州)网络有限公司 | 缓存服务器的负载均衡方法和装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115002067A (zh) * | 2022-04-19 | 2022-09-02 | 深圳市共进电子股份有限公司 | 客户端主机名处理方法、装置、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hesselbarth et al. | landscapemetrics: an open‐source R tool to calculate landscape metrics | |
CN110221982B (zh) | 业务系统的性能测试方法、装置、设备及可读存储介质 | |
CN103562923B (zh) | 应用程序安全测试 | |
CN106302842B (zh) | 一种域名解析方法、装置及系统 | |
CN103428309B (zh) | 二维码跳转处理方法 | |
TW201322135A (zh) | 用於動態服務整合的系統和方法 | |
US20040167975A1 (en) | Method, system, and program for managing devices in a network | |
CN111104392A (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN110046155B (zh) | 特征数据库的更新、数据特征的确定方法、装置及设备 | |
CN1842008A (zh) | 用于通过网络提供定制内容的方法和系统 | |
CN106844676B (zh) | 数据存储方法及装置 | |
CN101305359A (zh) | 用于确定数字证书是否已被撤消的服务 | |
CN110033285A (zh) | 房源信息发布方法、装置、设备及计算机可读存储介质 | |
CN110334297A (zh) | 终端页面的加载方法、终端、服务器及存储介质 | |
WO2022213838A1 (zh) | 卫星终端接入管理方法、核心网、计算机装置和存储介质 | |
US9292613B2 (en) | Generation of generic universal resource indicators | |
CN110008197A (zh) | 一种数据处理方法、系统及电子设备和存储介质 | |
CN102055815A (zh) | 获取访客本地域名解析服务器的系统 | |
CN106484770B (zh) | 一种dns增量区域数据文件的处理方法 | |
CN110413350A (zh) | 基于动态映射插件的请求处理方法、系统、服务器及存储介质 | |
CN102035905A (zh) | 获取访客本地域名解析服务器的方法 | |
CN115203061B (zh) | 接口自动化测试方法、装置、电子设备及存储介质 | |
CN111177269A (zh) | 基于结构化的区块链数据存储、获取方法及装置 | |
CN106960052B (zh) | 一种征信数据采集方法与系统 | |
CN112583891B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191105 |
|
RJ01 | Rejection of invention patent application after publication |