CN115022174A - 一种请求处理方法、装置、可读存储介质及电子设备 - Google Patents

一种请求处理方法、装置、可读存储介质及电子设备 Download PDF

Info

Publication number
CN115022174A
CN115022174A CN202210697590.2A CN202210697590A CN115022174A CN 115022174 A CN115022174 A CN 115022174A CN 202210697590 A CN202210697590 A CN 202210697590A CN 115022174 A CN115022174 A CN 115022174A
Authority
CN
China
Prior art keywords
service request
resource pool
request
preset
forwarding rule
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
CN202210697590.2A
Other languages
English (en)
Other versions
CN115022174B (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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202210697590.2A priority Critical patent/CN115022174B/zh
Publication of CN115022174A publication Critical patent/CN115022174A/zh
Application granted granted Critical
Publication of CN115022174B publication Critical patent/CN115022174B/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/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • H04L41/0836Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability to enhance reliability, e.g. reduce downtime
    • 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
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources

Landscapes

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

Abstract

本发明提供了一种请求处理方法、装置、计算机可读存储介质及电子设备,该方法包括:接收客户端发送的业务请求;响应于业务请求符合预设转发规则,将业务请求转发至第一资源池,第一资源池用于部署未经验证上线的版本数据;并基于第一资源池确定业务请求对应的第一响应数据;响应于业务请求不符合预设转发规则,将业务请求转发至第二资源池,第二资源池用于部署线上已有版本数据,并基于第二资源池确定业务请求对应的第二响应数据。在本发明提供的技术方案中,将未经验证直接上线的版本数据部署在与线上已有版本数据不同的资源池中,满足新版本数据快速上线的需求,同时有效降低新版本数据的影响范围。

Description

一种请求处理方法、装置、可读存储介质及电子设备
技术领域
本发明涉及数据处理领域,且更具体地,涉及一种请求处理方法、装置、可读存储介质及电子设备。
背景技术
随着互联网技术的不断发展,互联网业务的受众群体不断扩大,业务的更新速度越来越快。目前,为了保证***的稳定性,在发布新版本数据时常常采用灰度发布,即每次上线更新迭代版本数据时需要至少一周的灰度周期,保证在线上逻辑出现问题时,在灰度期间能及时发现,并尽快回滚,缩小对用户的影响。但是在应对紧急需求时,需要尽快进行线上版本数据的迭代,进行分钟级别上线,此时上线的版本数据没有时间经过灰度验证,因此快速上线后版本数据存在较大的安全隐患,在线上逻辑出现问题时,影响较大。
发明内容
本发明提供了一种用请求处理方法、装置、计算机可读存储介质及电子设备,以解决现有技术中快速上线后版本数据存在较大的安全隐患的技术问题。
根据本发明的第一方面,提供了一种请求处理方法,包括:
接收客户端发送的业务请求;
响应于所述业务请求符合预设转发规则,将所述业务请求转发至第一资源池,所述第一资源池用于部署未经验证上线的版本数据;并基于所述第一资源池确定所述业务请求对应的第一响应数据;
响应于所述业务请求不符合所述预设转发规则,将所述业务请求转发至第二资源池,所述第二资源池用于部署线上已有版本数据,并基于所述第二资源池确定所述业务请求对应的第二响应数据。
可选地,所述方法还包括:
确定所述业务请求对应的***变量的默认参数值,所述***变量为预先增设的用于指示资源池对象的参数,所述默认参数值用于指示转发至第二资源池;
所述响应于所述业务请求符合预设转发规则,将所述业务请求转发至第一资源池,包括:
响应于所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,基于所述动态参数值将所述业务请求转发至第一资源池。
可选地,所述响应于所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,包括:
读取Lua脚本中的预设转发规则,获取所述业务请求对应的协议方法;
基于所述协议方法,获取所述业务请求携带的请求参数;
若所述请求参数符合预设参数,则所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值。
可选地,所述基于所述协议方法,获取所述业务请求携带的请求参数包括:
响应于所述协议方法为GET方法,将所述业务请求携带的URL参数确定为请求参数;
和/或,响应于所述协议方法为POST方法,读取所述业务请求的请求内容,获取请求参数。
可选地,所述响应于所述协议方法为POST方法,读取所述业务请求的请求内容,获取请求参数,包括:
响应于所述协议方法为POST方法,读取所述业务请求的请求内容,若所述请求内容中目标字段为空,则将所述业务请求携带的URL参数确定为请求参数。
可选地,所述方法还包括:
确定所述第二资源池的资源使用率;
响应于所述资源使用率大于预设使用率,将需转发至第二资源池的业务请求转发至第三资源池,所述第三资源池用于部署线上已有版本数据。
可选地,接收客户端发送的业务请求之前,所述方法还包括:
在对Nginx接口进行预先配置时,确定目标接口,增设***变量,将所述***变量赋值为默认参数值;
所述接收客户端发送的业务请求,包括:
接收客户端发送的对应目标接口的业务请求。
根据本发明的第二方面,提供了一种请求处理装置,包括:
请求接收模块,用于接收客户端发送的业务请求;
第一处理模块,用于响应于所述业务请求符合预设转发规则,将所述业务请求转发至第一资源池,所述第一资源池用于部署未经验证上线的版本数据;并基于所述第一资源池确定所述业务请求对应的第一响应数据;
第二处理模块,用于响应于所述业务请求不符合所述预设转发规则,将所述业务请求转发至第二资源池,所述第二资源池用于部署线上已有版本数据,并基于所述第二资源池确定所述业务请求对应的第二响应数据。
根据本发明的第三方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述请求处理方法。
根据本发明的第四方面,提供了一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述的请求处理方法。
与现有技术相比,本发明提供的请求处理方法、装置、计算机可读存储介质及电子设备,至少包括以下有益效果:
本发明的技术方案在上线未经验证的版本数据时,将该未经验证上线的版本数据部署在第一资源池中,而稳定的线上已有版本数据部署在第二资源池中,并预先设置预设转发规则,利用预设转发规则确定不同的业务请求对应的资源池对象。在进行请求处理时,对客户端发送的业务请求是否符合预设转发规则进行判断,响应于业务请求符合预设转发规则,将业务请求转发至第一资源池,并基于第一资源池确定该业务请求对应的第一响应数据;响应于业务请求不符合预设转发规则,将业务请求转发至第二资源池,并基于第二资源池确定业务请求对应的第二响应数据。在本发明的技术方案中,新增第一资源池,将未经验证上线的版本数据部署在第一资源池中,通过将未经验证上线的版本数据与线上已有版本数据分开部署,可以满足新版本数据快速上线的需求,在后续未经验证上线的版本数据线上逻辑出现问题时,在线上已有版本数据有效运行的情况下,不会致使整体的业务运行的停滞,有效降低新版本数据的影响范围。
附图说明
为了更清楚地说明本的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一示例性实施例提供的请求处理方法的流程示意图一;
图2是本发明一示例性实施例提供的请求处理方法的流程示意图二;
图3是本发明一示例性实施例提供的请求处理方法中步骤2011至步骤2013的流程示意图;
图4是本发明一示例性实施例提供的请求处理方法的流程示意图三;
图5是本发明一示例性实施例提供的请求处理装置的结构示意图;
图6是本发明一示例性实施例提供的电子设备的结构图。
具体实施方式
下面将结合本中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有创造性劳动前提下所获得的所有其他实施例,都属于本实施例保护的范围。
示例性方法
图1是本发明一示例性实施例提供的请求处理方法的流程示意图,至少包括如下步骤:
步骤10,接收客户端发送的业务请求。
在一实施例中,用户在客户端进行相应操作后,向服务端发送业务请求,服务端接收该业务请求。其中客户端包括但不限于手机、电脑、智能手机和智能音箱。服务端包括但不限于服务器和云服务器。
在一种可能的应用场景中,用户在手机端点击播放视频A,此时由手机客户端向服务端发送视频访问请求(业务请求),服务端接收该视频访问请求并进行后续处理。
步骤20,响应于所述业务请求符合预设转发规则,将所述业务请求转发至第一资源池,所述第一资源池用于部署未经验证上线的版本数据;并基于所述第一资源池确定所述业务请求对应的第一响应数据。
在一实施例中,预设转发规则为预先设置的用于确定业务请求对应的资源池对象的规则,业务请求符合预设转发规则,该业务请求对应的资源池对象为第一资源池,业务请求不符合预设转发规则,该业务请求对应的资源池对象为第二资源池。第一资源池用于部署未经验证上线的版本数据,具体的未经验证可以为未经灰度周期验证,未经验证上线的版本数据为不稳定的代码数据,不稳定的代码数据常常会存在安全隐患,因此通过增设资源池的方式,将未经验证上线的版本数据部署在与稳定的线上已有版本数据不同的资源池,以降低未经验证上线的版本数据的影响范围。将业务请求转发至第一资源池后,利用第一资源池中的资源对业务请求进行响应,确定业务请求对应的第一响应数据,并将第一响应数据返回至客户端。其中第一响应数据包括但不限于第一资源池中某资源的访问地址和口令。
具体的,在第一资源池中部署的资源不需要太多,可能3-5个实例,一次全量部署仅需几分钟,因此对于紧急需求上线的新版本数据,只需要重新部署第一资源池的资源即可,满足新版本数据快速上线的需求,有效降低新版本数据的影响范围。
在一种可能的实现方式中,预设转发规则的内容可以为业务请求对应的接口为预设接口。在服务端接收到的业务请求对应预设接口时,即该业务请求符合预设转发规则,进而将该业务请求转发至第一资源池;在服务端接收到的业务请求对应为非预设接口时,即该业务请求不符合预设转发规则,进而执行步骤30,将该业务请求转发至第二资源池,实现基于接口的请求流量转发。
举例来说,预设转发规则为业务请求对应的预设接口为接口A。在服务端接到业务请求1时,确定业务请求1对应的接口,若业务请求1对应接口为A,则业务请求符合预设转发规则;若业务请求1对应的接口为B,则业务请求不符合预设转发规则。在本实现方式中,符合预设转发规则表示业务请求对应预设接口,进而转发到第一资源池;不符合预设转发规则表示业务请求对应非预设接口,进而转发到第二资源池。
在另一种可能的实现方式中,预设转发规则的内容可以为业务请求携带目标参数。在服务端接收到的业务请求携带目标参数时,即该业务请求符合预设转发规则,进而将该业务请求转发至第一资源池;在服务端接收到的业务请求不携带目标参数时,即该业务请求不符合预设转发规则,进而执行步骤30,将该业务请求转发至第二资源池,实现基于参数的请求流量转发。当然,也可以设置多个目标参数,对多个目标参数进行条件聚合后,进行请求流量转发。
举例来说,预设转发规则为业务请求携带的目标参数为["agenttype"]=="32"。在服务端接到业务请求2时,确定业务请求2携带的参数信息,若业务请求2携带的参数信息为["agenttype"]=="32",则业务请求符合预设转发规则;若业务请求2携带的参数信息为["agenttype"]=="16",则业务请求不符合预设转发规则。在本实现方式中,符合预设转发规则表示业务请求携带有目标参数,进而转发到第一资源池;不符合预设转发规则表示业务请求不携带目标参数,进而转发到第二资源池。
在另一种可能的实现方式中,预设转发规则的内容还可以为业务请求对应的协议方法为目标方法。在服务端接收到的业务请求对应的协议方法为目标方法时,即该业务请求符合预设转发规则,进而将该业务请求转发至第一资源池;在服务端接收到的业务请求对应的协议方法为非目标方法时,该业务请求不符合预设转发规则,进而执行步骤30,将该业务请求转发至第二资源池,实现基于方法的请求流量转发。
举例来说,预设转发规则为业务请求对应的协议方法为GET方法。在服务端接到业务请求3时,确定业务请求3对应的协议方法,若业务请求3对应的协议方法为GET方法,则业务请求符合预设转发规则;若业务请求3对应的协议方法为POST方法,则业务请求不符合预设转发规则。在本实现方式中,符合预设转发规则表示业务请求对应的协议方法为目标方法,进而转发到第一资源池;不符合预设转发规则表示业务请求对应的协议方法为非目标方法,进而转发到第二资源池。
需要说明的是,预设转发规则的内容还可以为上述实现方式的组合,例如,预设转发规则为业务请求对应的接口为预设接口,且对应的协议方法为目标方法。通过设置不同的预设转发规则,实现对不同的业务请求的请求流量转发。本实施例中对预设转发规则的具体内容不作限定,用户可以根据实际需求进行设置,通过预设转发规则可以确定不同业务请求对应的资源池对象即可。
步骤30,响应于所述业务请求不符合所述预设转发规则,将所述业务请求转发至第二资源池,所述第二资源池用于部署线上已有版本数据,并基于所述第二资源池确定所述业务请求对应的第二响应数据。
在一实施例中,第二资源池部署线上已有版本数据,线上已有版本数据可以为经过灰度周期验证的代码版本,为稳定的版本数据,经常长期的运行使用,通常较为安全。若利用未经验证上线的版本数据直接迭代替换线上已有版本数据,在后续未经验证上线的版本数据的线上逻辑出现问题时,将会影响到整个业务的运行,影响范围较大。在本实施例中,通过预设转发规则对业务请求进行转发,对于转发至第二资源池的业务请求,利用第二资源池中的资源对该业务请求进行响应,确定该业务请求对应的第二响应数据,并将第二响应数据返回至客户端,即使在未经验证上线的版本数据存在线上逻辑问题时,第二资源池仍可以正常运行。其中第二响应数据包括但不限于第二资源池中资源的访问地址和口令。
在上述实施例中,在上线未经验证的版本数据时,将该未经验证上线的版本数据部署在第一资源池中,而稳定的线上已有版本数据部署在第二资源池中,并预先设置预设转发规则,利用预设转发规则确定不同的业务请求对应的资源池对象。在进行请求处理时,对客户端发送的业务请求是否符合预设转发规则进行判断,响应于业务请求符合预设转发规则,将业务请求转发至第一资源池,并基于第一资源池确定该业务请求对应的第一响应数据;响应于业务请求不符合预设转发规则,将业务请求转发至第二资源池,并基于第二资源池确定业务请求对应的第二响应数据。在实施例中,新增第一资源池,将未经验证上线的版本数据部署在第一资源池中,通过将未经验证上线的版本数据与线上已有版本数据分开部署,可以满足新版本数据快速上线的需求,在后续未经验证上线的版本数据的线上逻辑存在问题时,在线上已有版本数据有效运行的情况下,不会致使整体的业务运行的停滞,有效降低新版本数据的影响范围。
如图2所示,在本发明一示例性实施例中,所述方法还包括:
步骤40,确定所述业务请求对应的***变量的默认参数值,所述***变量为预先增设的用于指示资源池对象的参数,所述默认参数值用于指示转发至第二资源池。
在本实施例中,所述步骤20包括:
步骤201,响应于所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,基于所述动态参数值将所述业务请求转发至第一资源池。
步骤202,基于所述第一资源池确定所述业务请求对应的第一响应数据。
在一种可能的实现方式中,所述响应于所述业务请求不符合所述预设转发规则,将所述业务请求转发至第二资源池,包括:响应于所述业务请求不符合所述预设转发规则,基于***变量的默认参数值将业务请求转发至第二资源池。
在上述实施例中,预先设置***变量,该***变量用于指示资源池对象,并将***变量赋值为默认参数值,对于每一个接收到的业务请求,该业务请求对应的***变量均为默认参数值,默认参数值用于指示资源池对象为第二资源池,也就是说若不对***变量的默认参数值进行改写,业务请求将被转发至第二资源池进行处理。在接收到业务请求后,对业务请求是否符合预设转发规则进行判断,若业务请求符合预设转发规则,对***变量的默认参数值进行改写,改写为动态参数值,动态参数值用于指示资源池对象为第一资源池,进而根据改写后的动态参数值将业务请求转发至第一资源池。通过***变量的参数值对业务请求对应的资源池对象进行控制,在业务请求符合预设转发规则时,对***变量的默认参数值进行改写,可以快速准确的确定出不同的业务请求对应的资源池对象。
如图3所示,在本发明一示例性实施例中,所述步骤201响应于所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,包括:
步骤2011,读取Lua脚本中的预设转发规则,获取所述业务请求对应的协议方法。
在一实施例中,通过Lua脚本设置预设转发规则,Lua是一种轻量的脚本语言,同时具备较高的性能,由于Lua的紧凑、快速以及内建协程,采用Lua脚本实现业务逻辑,在保证高并发服务能力的同时极大地降低了业务逻辑实现成本。读取Lua脚本中设置的预设转发规则,根据预设转发规则的内容,获取业务请求对应的协议方法。具体的协议方法为HTTP协议方法。
步骤2012,基于所述协议方法,获取所述业务请求携带的请求参数。
在一实施例中,业务请求会携带有请求参数,请求参数包括但不限于Agenttype、Source、用户id,不同的协议方法,获取业务请求携带的请求参数的方式不同,因此在确定出业务请求对应的协议方法后,进一步根据业务请求对应的协议方法,获取业务请求携带的请求参数。
具体的,预先设置目标方法,所述基于所述协议方法,获取所述业务请求携带的请求参数,包括:判断所述协议方法是否为目标方法,若所述协议请求为目标方法,基于所述协议请求,获取所述业务请求携带的请求参数。其中目标方法可以设置为GET方法,或设置为POST方法,或设置为GET方法和POST方法,实现基于目标方法的初步请求流量筛选。
在一种可能的实现方式中,所述基于所述协议方法,获取所述业务请求携带的请求参数包括:响应于所述协议方法为GET方法,将所述业务请求携带的URL参数确定为请求参数。此时可以将目标方法设置为GET方法,从而在确定业务请求对应的协议方法为GET方法时,获取GET方法中URL参数,将该URL参数确定为请求参数,此时实现基于GET方法的初步请求流量筛选。
在另一种可能的实现方式中,所述基于所述协议方法,获取所述业务请求携带的请求参数包括:响应于所述协议方法为POST方法,读取所述业务请求的请求内容,获取请求参数。此时可以将目标方法设置为POST方法,从而在确定业务请求对应的协议方法为POST方法时,读取所述业务请求的请求内容,获取请求参数,此时实现基于POST方法的初步请求流量筛选。
进一步地,所述响应于所述协议方法为POST方法,读取所述业务请求的请求内容,获取请求参数,包括:响应于所述协议方法为POST方法,读取所述业务请求的请求内容,若所述请求内容中目标字段为空,则将所述业务请求携带的URL参数确定为请求参数。在一种可能的应用场景中,协议方法为不标准的POST方法,此时请求内容中的目标字段可能为空,其中目标字段为预先选定的字段,如为“from”字段,为了进一步获取到请求参数,获取业务请求携带的URL参数,将该URL参数确定为请求参数。
在又一种可能的实现方式中,所述基于所述协议方法,获取所述业务请求携带的请求参数包括:响应于所述协议方法为GET方法,将所述业务请求携带的URL参数确定为请求参数;响应于所述协议方法为POST方法,读取所述业务请求的请求内容,获取请求参数。此时实现基于GET方法和POST方法的初步请求流量筛选。
步骤2013,若所述请求参数符合预设参数,则所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,基于所述动态参数值将所述业务请求转发至第一资源池。
在一实施例中,预先指定预设参数,将预设转发规则内容中的判断逻辑设置为请求参数是否符合预设参数,若所述请求参数符合预设参数,即该业务请求符合预设转发规则,从而将***变量的默认参数值改写为动态参数值,实现基于预设参数的请求流量转发。
进一步地,所述若所述请求参数符合预设参数,则所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,包括:若所述请求参数对应的请求参数值符合预设参数对应的预设参数值,则所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值。也就是说,预先指定预设参数,并指定预设参数值,将预设转发规则内容中的判断逻辑设置为请求参数值是否符合预设参数值,若请求参数值符合预设参数值,即业务请求符合预设转发规则,从而将***变量的默认参数值改写为动态参数值,实现基于预设参数及预设参数值的请求流量的转发。
在本实施例中,所述方法还包括:在对Nginx接口进行预先配置时,确定目标接口,增设***变量,将所述***变量赋值为默认参数值;
相应的,所述接收客户端发送的业务请求,包括:接收客户端发送的对应目标接口的业务请求。
预先对Nginx接口进行规则配置,在进行配置时,圈定目标接口,并增设***变量,将***变量赋值为默认参数值,在圈定目标接口后,接收到对应目标接口的业务请求后,进一步执行步骤20和步骤30,从而进一步实现基于目标接口的初步请求流量筛选,并通过预设转发规则对初步筛选后的业务请求进行进一步的请求流量转发。
举例来说,预先对Nginx接口进行配置,接口配置规则示例如下所示:
Figure BDA0003703307870000111
也就是说利用location~/apis/thirdparty/(login|callback).action,确定两个目标接口,即/apis/thirdparty/login.action和/apis/thirdparty/callback.action;利用set$passapi_new_feature_upstream"thirdparty_pool",新增***变量passapi_new_feature_upstream,同时将该***变量的默认参数值赋值为thirdpary_pool,thirdpary_pool为第二资源池,即thirdpary_pool内部署线上已有版本数据。加载passapi_new_feature_rewrite.Lua的脚本,通过在Lua脚本中设置的预设转发规则对***变量的默认参数值进行改写,并根据改写后的***变量进行动态请求流量转发。其中Lua脚本passapi_new_feature_rewrite.Lua的示例如下所示:
Figure BDA0003703307870000112
Figure BDA0003703307870000121
也就是说获取业务请求的协议方法,即HTTP Method,当业务请求对应GET方法时,利用ngx.req.get_uri_args()获取URL参数,并将该URL参数赋值给args。当业务请求对应为POST方法时,通过ngx.req.read_body()读取请求内容,将请求内容里的参数值赋值给args;预先设定目标字段“from”,在判定目标字段“from”为空时,通过ngx.req.get_uri_args()获取业务请求的URL参数,将该URL参数赋值给args。进一步判断args是否存在“agenttype”参数(预设参数),并且agenttype参数的值是否等于32(预设参数值),若args中存在“agenttype”参数,且该值为32,将变量passapi_new_feature_upstream赋值为passport_new_feature_upstream。通过上述Lua脚本设置的预设转发规则对***参数进行改写,若符合预设转发规则,请求流量被nginx转发至第一资源池即passport_new_feature_upstream;若不符合预设转发规则,请求流量被转发至默认的第二资源池即thirdparty_pool。通过Nginx的proxy_pass配置upstream的变量名称,动态的变更***变量,实现将不同的请求流量转发至不同的资源池对象。
在上述实施例中,通过Nginx与Lua脚本的结合方法,根据业务的实际情况,制定特定的预设转发规则,将相关的请求流量转发至第一资源池中,即可以满足新版本数据快速上线需求,又可以减低新版本数据的影响范围。
如图4所示,在本发明一实施例中,所述方法还包括:
步骤50,确定所述第二资源池的资源使用率。
步骤60,响应于所述资源使用率大于预设使用率,将需转发至第二资源池的业务请求转发至第三资源池,所述第三资源池用于部署线上已有版本数据。
在上述实施例中,增设第三资源池,其中第三资源池用于部署线上已有版本数据,第三资源池可视为第二资源池的分支。当第二资源池的资源使用率大于预设使用率时,将原本应转发至第二资源池的业务请求转发至第三资源池,使得第三资源池处理临时激增的业务请求。临时激增的业务请求为在特定的时间段突然增长的业务请求,例如在某部电视剧热映时,或某知名主播直播时,或某晚会播放时,均可能会存在临时激增的业务请求,若因为临时激增的业务请求对第二资源池进行更新,可能会造成第二资源池中资源的闲置。因此通过增设第三资源池的方式,将临时激增的业务请求转发至第三资源池,可以对临时激增业务请求作出快速灵活的响应,在临时激增的业务请求消失时可以对第三资源池中的资源进行及时回收,保证资源池配置的灵活性,并对第二资源池起到保护作用。
示例性装置
基于与本发明方法实施例相同的构思,本发明实施例还提供了一种请求处理装置。
图5示出了本发明一示例性实施例提供的请求处理装置的结构示意图,包括:
请求接收模块51,用于接收客户端发送的业务请求;
第一处理模块52,用于响应于所述业务请求符合预设转发规则,将所述业务请求转发至第一资源池,所述第一资源池用于部署未经验证上线的版本数据;并基于所述第一资源池确定所述业务请求对应的第一响应数据;
第二处理模块53,用于响应于所述业务请求不符合所述预设转发规则,将所述业务请求转发至第二资源池,所述第二资源池用于部署线上已有版本数据,并基于所述第二资源池确定所述业务请求对应的第二响应数据。
在本发明一示例性实施例中,所述装置还包括:
参数确定模块,用于确定所述业务请求对应的***变量的默认参数值,所述***变量为预先增设的用于指示资源池对象的参数,所述默认参数值用于指示转发至第二资源池;
所述第一处理模块,包括:
参数改写单元,用于响应于所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,基于所述动态参数值将所述业务请求转发至第一资源池;
请求响应单元,用于基于所述第一资源池确定所述业务请求对应的第一响应数据。
在本发明一示例性实施例中,所述参数改写单元,包括:
方法获取子单元,用于读取Lua脚本中的预设转发规则,获取所述业务请求对应的协议方法;
参数获取子单元,用于基于所述协议方法,获取所述业务请求携带的请求参数;
参数改写子单元,用于若所述请求参数符合预设参数,则所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,基于所述动态参数值将所述业务请求转发至第一资源池。
在本发明一示例性实施例中,所述参数获取子单元用于响应于所述协议方法为GET方法,将所述业务请求携带的URL参数确定为请求参数;和/或,响应于所述协议方法为POST方法,读取所述业务请求的请求内容,获取请求参数。
在本发明一示例性实施例中,所述参数获取子单元用于响应于所述协议方法为GET方法,将所述业务请求携带的URL参数确定为请求参数;和/或,响应于所述协议方法为POST方法,读取所述业务请求的请求内容,若所述请求内容中目标字段为空,则将所述业务请求携带的URL参数确定为请求参数。
在本发明一示例性实施例中,所述装置还包括:资源保护模块;所述资源保护模块,用于确定所述第二资源池的资源使用率;响应于所述资源使用率大于预设使用率,将需转发至第二资源池的业务请求转发至第三资源池,所述第三资源池用于部署线上已有版本数据。
在本发明一示例性实施例中,所述装置还包括:
参数配置模块,用于在对Nginx接口进行预先配置时,确定目标接口,增设***变量,将所述***变量赋值为默认参数值;
所述请求接收模块,用于接收客户端发送的对应目标接口的业务请求。
示例性电子设备
图6图示了根据本发明实施例的电子设备的框图。
如图6所示,电子设备100包括一个或多个处理器101和存储器102。
处理器101可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备100中的其他组件以执行期望的功能。
存储器102可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器101可以运行所述程序指令,以实现上文所述的本发明的各个实施例的请求处理方法以及/或者其他期望的功能。
在一个示例中,电子设备100还可以包括:输入装置103和输出装置104,这些组件通过总线***和/或其他形式的连接机构(未示出)互连。
当然,为了简化,图6中仅示出了该电子设备100中与本发明有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备100还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
第六方面,除了上述方法和设备以外,本发明的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的请求处理方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本发明的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种实施例的请求处理方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,在本发明中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,上述发明的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明为必须采用上述具体的细节来实现。
本发明中涉及的器件、装置、设备、***的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、***。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本发明的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。
提供所发明的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此发明的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此发明的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (10)

1.一种请求处理方法,其特征在于,包括:
接收客户端发送的业务请求;
响应于所述业务请求符合预设转发规则,将所述业务请求转发至第一资源池,所述第一资源池用于部署未经验证上线的版本数据;并基于所述第一资源池确定所述业务请求对应的第一响应数据;
响应于所述业务请求不符合所述预设转发规则,将所述业务请求转发至第二资源池,所述第二资源池用于部署线上已有版本数据,并基于所述第二资源池确定所述业务请求对应的第二响应数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述业务请求对应的***变量的默认参数值,所述***变量为预先增设的用于指示资源池对象的参数,所述默认参数值用于指示转发至第二资源池;
所述响应于所述业务请求符合预设转发规则,将所述业务请求转发至第一资源池,包括:
响应于所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,基于所述动态参数值将所述业务请求转发至第一资源池。
3.根据权利要求2所述的方法,其特征在于,所述响应于所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值,包括:
读取Lua脚本中的预设转发规则,获取所述业务请求对应的协议方法;
基于所述协议方法,获取所述业务请求携带的请求参数;
若所述请求参数符合预设参数,则所述业务请求符合预设转发规则,将所述***变量的默认参数值改写为动态参数值。
4.根据权利要求3所述的方法,其特征在于,所述基于所述协议方法,获取所述业务请求携带的请求参数,包括:
响应于所述协议方法为GET方法,将所述业务请求携带的URL参数确定为请求参数;和/或,
响应于所述协议方法为POST方法,读取所述业务请求的请求内容,获取请求参数。
5.根据权利要求4所述的方法,其特征在于,所述响应于所述协议方法为POST方法,读取所述业务请求的请求内容,获取请求参数,包括:
响应于所述协议方法为POST方法,读取所述业务请求的请求内容,若所述请求内容中目标字段为空,则将所述业务请求携带的URL参数确定为请求参数。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述第二资源池的资源使用率;
响应于所述资源使用率大于预设使用率,将需转发至第二资源池的业务请求转发至第三资源池,所述第三资源池用于部署线上已有版本数据。
7.根据权利要求1-6任一项所述的方法,其特征在于,接收客户端发送的业务请求之前,所述方法还包括:
在对Nginx接口进行预先配置时,确定目标接口,增设***变量,将所述***变量赋值为默认参数值;
所述接收客户端发送的业务请求,包括:
接收客户端发送的对应目标接口的业务请求。
8.一种请求处理装置,其特征在于,包括:
请求接收模块,用于接收客户端发送的业务请求;
第一处理模块,用于响应于所述业务请求符合预设转发规则,将所述业务请求转发至第一资源池,所述第一资源池用于部署未经验证上线的版本数据;并基于所述第一资源池确定所述业务请求对应的第一响应数据;
第二处理模块,用于响应于所述业务请求不符合所述预设转发规则,将所述业务请求转发至第二资源池,所述第二资源池用于部署线上已有版本数据,并基于所述第二资源池确定所述业务请求对应的第二响应数据。
9.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-7任一项所述的请求处理方法。
10.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-7任一项所述的请求处理方法。
CN202210697590.2A 2022-06-20 2022-06-20 一种请求处理方法、装置、可读存储介质及电子设备 Active CN115022174B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210697590.2A CN115022174B (zh) 2022-06-20 2022-06-20 一种请求处理方法、装置、可读存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210697590.2A CN115022174B (zh) 2022-06-20 2022-06-20 一种请求处理方法、装置、可读存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN115022174A true CN115022174A (zh) 2022-09-06
CN115022174B CN115022174B (zh) 2024-03-26

Family

ID=83074960

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210697590.2A Active CN115022174B (zh) 2022-06-20 2022-06-20 一种请求处理方法、装置、可读存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN115022174B (zh)

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060236319A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Version control system
CN103905225A (zh) * 2012-12-25 2014-07-02 ***通信集团浙江有限公司 一种服务控制方法、服务控制装置以及服务***
CN105955761A (zh) * 2016-06-30 2016-09-21 乐视控股(北京)有限公司 基于docker的灰度发布装置及方法
CN106998369A (zh) * 2017-05-26 2017-08-01 努比亚技术有限公司 灰度发布方法、网关***及计算机可读存储介质
CN109857428A (zh) * 2018-12-29 2019-06-07 大唐软件技术股份有限公司 用于iom***的灰度发布方法
CN110365502A (zh) * 2018-03-26 2019-10-22 华为技术有限公司 一种服务升级管理的方法、装置及存储介质
CN111857763A (zh) * 2019-04-30 2020-10-30 北京达佳互联信息技术有限公司 数据处理方法、装置、电子设备及存储介质
CN111897542A (zh) * 2020-08-31 2020-11-06 北京三快在线科技有限公司 一种灰度发布的方法及装置
CN111988200A (zh) * 2020-08-18 2020-11-24 湖南快乐阳光互动娱乐传媒有限公司 基于真实流量的自动回归测试方法及装置
WO2020252751A1 (zh) * 2019-06-20 2020-12-24 深圳市欢太科技有限公司 资源推送方法、装置、服务器以及存储介质
US20200412644A1 (en) * 2019-06-28 2020-12-31 Beijing Baidu Netcom Science And Technology Co., Ltd. Content based routing method and apparatus
CN112162762A (zh) * 2020-10-16 2021-01-01 中国工商银行股份有限公司 灰度发布方法、灰度发布装置和电子设备
CN112988394A (zh) * 2021-04-20 2021-06-18 北京世纪好未来教育科技有限公司 基于云原生容器的业务服务发布方法、装置、介质和设备
CN113676549A (zh) * 2021-09-02 2021-11-19 京东科技信息技术有限公司 应用请求的分流方法及应用网关、电子设备、存储介质

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060236319A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Version control system
CN103905225A (zh) * 2012-12-25 2014-07-02 ***通信集团浙江有限公司 一种服务控制方法、服务控制装置以及服务***
CN105955761A (zh) * 2016-06-30 2016-09-21 乐视控股(北京)有限公司 基于docker的灰度发布装置及方法
CN106998369A (zh) * 2017-05-26 2017-08-01 努比亚技术有限公司 灰度发布方法、网关***及计算机可读存储介质
CN110365502A (zh) * 2018-03-26 2019-10-22 华为技术有限公司 一种服务升级管理的方法、装置及存储介质
CN109857428A (zh) * 2018-12-29 2019-06-07 大唐软件技术股份有限公司 用于iom***的灰度发布方法
CN111857763A (zh) * 2019-04-30 2020-10-30 北京达佳互联信息技术有限公司 数据处理方法、装置、电子设备及存储介质
WO2020252751A1 (zh) * 2019-06-20 2020-12-24 深圳市欢太科技有限公司 资源推送方法、装置、服务器以及存储介质
US20200412644A1 (en) * 2019-06-28 2020-12-31 Beijing Baidu Netcom Science And Technology Co., Ltd. Content based routing method and apparatus
CN111988200A (zh) * 2020-08-18 2020-11-24 湖南快乐阳光互动娱乐传媒有限公司 基于真实流量的自动回归测试方法及装置
CN111897542A (zh) * 2020-08-31 2020-11-06 北京三快在线科技有限公司 一种灰度发布的方法及装置
CN112162762A (zh) * 2020-10-16 2021-01-01 中国工商银行股份有限公司 灰度发布方法、灰度发布装置和电子设备
CN112988394A (zh) * 2021-04-20 2021-06-18 北京世纪好未来教育科技有限公司 基于云原生容器的业务服务发布方法、装置、介质和设备
CN113676549A (zh) * 2021-09-02 2021-11-19 京东科技信息技术有限公司 应用请求的分流方法及应用网关、电子设备、存储介质

Also Published As

Publication number Publication date
CN115022174B (zh) 2024-03-26

Similar Documents

Publication Publication Date Title
US9800691B2 (en) Stream processing using a client-server architecture
WO2019201039A1 (zh) 一种更新应用程序的方法、***及应用服务器
CN107547629B (zh) 客户端静态资源下载的方法、装置、电子设备和可读介质
US20150120854A1 (en) Subscriber based priority of messages in a publisher-subscriber domain
WO2021121407A1 (zh) 一种虚拟机的容量更改方法及装置
US11463494B2 (en) Balance of initial frame and limitation of traffic
CN112528274B (zh) 数据处理方法、装置、电子设备及存储介质
CN111694639B (zh) 进程容器地址的更新方法、装置和电子设备
CN111586437B (zh) 一种弹幕消息处理方法、***、计算设备及存储介质
CN111367518A (zh) 页面布局方法、装置、计算设备及计算机存储介质
CN114528517A (zh) 一种视图处理方法、装置、电子设备及计算机可读介质
CN115022174A (zh) 一种请求处理方法、装置、可读存储介质及电子设备
CN115454576B (zh) 一种虚拟机进程管理方法、***及电子设备
CN113835789A (zh) 渲染方法、装置、电子设备及计算机存储介质
US10616317B2 (en) Method and system for affinity load balancing
CN110020290B (zh) 网页资源缓存方法、装置、存储介质及电子装置
CN104407846B (zh) 一种信息处理方法及装置
CN111770170A (zh) 请求处理方法、装置、设备和计算机存储介质
CN113836458A (zh) 页面加载方法、装置、设备及计算机存储介质
CN113946376B (zh) 负载调整方法、装置、电子设备及存储介质
CN115129469B (zh) 跨进程通信方法、装置、设备及存储介质
CN115277694B (zh) 一种数据获取方法、装置、***、电子设备及存储介质
CN110858240A (zh) 一种前端模块加载方法和装置
CN111611259B (zh) 接口请求处理方法、装置、***及计算机可读存储介质
CN112988391A (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