CN114461296A - 基于Openresty的服务平台开发及访问方法 - Google Patents

基于Openresty的服务平台开发及访问方法 Download PDF

Info

Publication number
CN114461296A
CN114461296A CN202111643839.3A CN202111643839A CN114461296A CN 114461296 A CN114461296 A CN 114461296A CN 202111643839 A CN202111643839 A CN 202111643839A CN 114461296 A CN114461296 A CN 114461296A
Authority
CN
China
Prior art keywords
function
domain name
lua
stage
configuration file
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
CN202111643839.3A
Other languages
English (en)
Other versions
CN114461296B (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.)
Tianyi Cloud Technology Co Ltd
Original Assignee
Tianyi Cloud 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 Tianyi Cloud Technology Co Ltd filed Critical Tianyi Cloud Technology Co Ltd
Priority to CN202111643839.3A priority Critical patent/CN114461296B/zh
Publication of CN114461296A publication Critical patent/CN114461296A/zh
Application granted granted Critical
Publication of CN114461296B publication Critical patent/CN114461296B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及计算机领域,提供了一种基于Openresty的服务平台开发及访问方法。该方法包括:按照各域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令;获取功能函数模块中与各功能指令相匹配的Lua功能函数,再按照已注册的各Lua功能函数名,预编译各域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的功能指令存储在函数映射模块中。域名配置文件中未写入Lua功能函数,当不同请求处理阶段要实现同一个功能时,无需重复写入Lua功能函数,既提高了代码复用率,又降低了代码冗余度。

Description

基于Openresty的服务平台开发及访问方法
技术领域
本申请涉及计算机领域,提供了一种基于Openresty的服务平台开发及访问方法。
背景技术
OpenResty是一个基于Nginx与Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项,用于搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。
为了满足不同应用场景的服务需求,在二次开发Openresty的过程中,需要在Openresty中添加大量的Lua脚本文件。目前,常通过特定的几个请求处理阶段开放的API入口,在Openresty中内嵌Lua功能函数或引用Lua脚本文件,但是,为了在不同请求处理阶段中实现相同功能,需要将该功能对应的Lua功能函数,分别写入多个阶段的Lua脚本文件中,提高了代码冗余度,降低了代码复用率。
发明内容
本申请实施例提供了一种基于Openresty的服务平台开发及访问方法,以降低代码维护成本。
第一方面,本申请实施例提供了一种基于Openresty的服务平台开发方法,包括:
获取域名配置模块中的各域名配置文件;
按照各所述域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令;
获取功能函数模块中与各功能指令相匹配的Lua功能函数,按照各所述域名配置文件中规定的请求处理阶段执行顺序,预编译各所述域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的功能指令存储在函数映射模块中。
可选的,请求处理阶段包括:
请求接收改写阶段,鉴权校验阶段,回源前改写阶段,生成响应体阶段,响应头改写阶段,响应体改写阶段以及日志改写阶段。
可选的,所述Lua功能函数包括:通用Lua功能函数与目标Lua功能函数。
第二方面,本申请实施例提供了一种基于Openresty的服务平台访问方法,包括:
接收客户端发送的服务访问请求,并基于所述服务访问请求携带的域名信息,确定相应的目标域名配置文件;
获取指令注册模块中所述目标域名配置文件对应的多个目标功能指令,各所述目标功能指令均是按照所述目标域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到所述指令注册模块中得到的;
按照所述目标域名配置文件中规定的请求处理阶段执行顺序,运行各所述目标功能指令所对应的Lua功能函数,获得服务访问结果,并向所述客户端返回所述服务访问结果。
第三方面,本申请实施例还提供了一种基于Openresty的服务平台开发装置,包括:
配置文件获取单元,用于获取域名配置模块中的各域名配置文件;
指令注册单元,用于按照各所述域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令;
处理单元,用于获取功能函数模块中与各功能指令相匹配的Lua功能函数,按照各所述域名配置文件中规定的请求处理阶段执行顺序,预编译各所述域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的功能指令存储在函数映射模块中。
可选的,请求处理阶段包括:
请求接收改写阶段,鉴权校验阶段,回源前改写阶段,生成响应体阶段,响应头改写阶段,响应体改写阶段以及日志改写阶段。
可选的,所述Lua功能函数包括:通用Lua功能函数与目标Lua功能函数。
第四方面,本申请实施例提供了一种基于Openresty的服务平台访问装置,包括:
解析单元,用于接收客户端发送的服务访问请求,并基于所述服务访问请求携带的域名信息,确定相应的目标域名配置文件;
第一处理单元,用于获取指令注册模块中所述目标域名配置文件对应的多个目标功能指令,各所述目标功能指令均是按照所述目标域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到所述指令注册模块中得到的;
第二处理单元,用于按照所述目标域名配置文件中规定的请求处理阶段执行顺序,运行各所述目标功能指令所对应的Lua功能函数,获得服务访问结果,并向所述客户端返回所述服务访问结果。
第三方面,本申请实施例还提供了一种计算机设备,包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述任意一种基于Openresty的服务平台开发及访问方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其包括程序代码,当程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行上述任意一种基于Openresty的服务平台开发及访问方法的步骤。
本申请有益效果如下:
本申请实施例提供了一种基于Openresty的服务平台开发及访问方法,该方法包括:获取域名配置模块中的各域名配置文件,按照各域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令;获取功能函数模块中与各功能指令相匹配的Lua功能函数,再按照已注册的各Lua功能函数名,预编译各域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的功能指令存储在函数映射模块中。
根据每个请求处理阶段所需的功能,在域名配置文件中为每个请求处理阶段配置了相应的Lua功能函数,所对应的Lua函数名及配置参数,这样,当不同请求处理阶段要实现同一个功能时,无需重复写入Lua功能函数,既提高了代码复用率,又降低了代码冗余度。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请实施例提供的基于Openresty的服务平台的架构示意图;
图1b为本申请实施例提供的运行基于Openresty的服务平台的逻辑示意图;
图2为本申请实施例提供的开发基于Openresty的服务平台的流程示意图;
图3为本申请实施例提供的访问基于Openresty的服务平台的流程示意图;
图4为本申请实施例提供的一种基于Openresty的服务平台开发装置的结构示意图;
图5为本申请实施例提供的一种基于Openresty的服务平台访问装置的结构示意图;
图6为本申请实施例中提供的一种计算机设备的组成结构示意图;
图7为本申请实施例中的一个计算装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
OpenResty是一个基于Nginx与Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项,用于搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。
为了满足不同应用场景的服务需求,在二次开发Openresty的过程中,需要在Openresty中添加大量的Lua脚本文件。目前,常通过特定的几个请求处理阶段开放的API入口,在Openresty中内嵌Lua功能函数或引用Lua脚本文件,但是,为了在不同请求处理阶段中实现相同功能,需要将该功能对应的Lua功能函数,分别写入多个阶段的Lua脚本文件中,提高了代码冗余度,降低了代码复用率。
有鉴于此,本申请实施例提出了一种基于Openresty的服务平台开发方法。该方法包括:获取域名配置模块中的各域名配置文件,按照各域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令;获取功能函数模块中与各功能指令相匹配的Lua功能函数,再按照已注册的各Lua功能函数名,预编译各域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的功能指令存储在函数映射模块中。
根据每个请求处理阶段所需的功能,在域名配置文件中为每个请求处理阶段配置了相应的Lua功能函数,所对应的Lua函数名及配置参数,这样,当不同请求处理阶段要实现同一个功能时,无需重复写入Lua功能函数,既提高了代码复用率,又降低了代码冗余度。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
参阅图1a示出的架构示意图,基于Openresty的服务平台包括通用配置模块、域名配置模块、指令注册模块、函数映射模块和功能函数模块。其中,域名配置模块位于服务平台的外部,其余模块位于服务平台内部。
如图1b所示,在服务平台初始化Nigix时,运行通用配置模块,以使通用配置模块将域名配置模块引入服务平台。服务平台调用Nigix主进程解析域名配置模块中的各域名配置文件,并按照各域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令。
服务平台调用多个Nigix子线程,在各Nigix子线程完成初始化后,为了节省代码编译时间,各Nigix子线程分别获取功能函数模块中与各功能指令相匹配的Lua功能函数,按照各域名配置文件中规定的请求处理阶段执行顺序,预编译各域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的Lua功能函数名,以键值地图(key value map)的形式存储在函数映射模块中。
服务平台在接收到客户端发送的服务访问请求时,基于请求中携带的域名信息,确定相应的目标域名配置文件。由于每个Nigix子进程均预编译了所有域名配置文件中的Lua功能函数,因此,服务平台可指示一或多个负载压力较小的Nigix子进程(即目标Nigix子进程)处理该请求。
每个目标Nigix子进程获取指令注册模块中目标域名配置文件对应的多个目标功能指令,再按照目标域名配置文件中规定的请求处理阶段执行顺序,运行各目标功能指令所对应的Lua功能函数,获得服务访问结果,并向客户端返回服务访问结果。
参阅图2示出的流程示意图,介绍开发基于Openresty的服务平台的过程。
S201:获取域名配置模块中的各域名配置文件。
各域名配置文件包括为每个请求处理阶段配置的Lua功能函数,所对应的Lua功能函数名及对应的配置参数,以及域名配置文件的处理入口location。其中,Lua功能函数包括:用于实现多种功能的通用Lua功能函数,与用于实现特定功能的目标Lua功能函数。
很多服务访问请求拥有相似的服务需求,所对应的请求处理流程也是相似的,然而在现有技术中,模块开关会将拥有相似服务需求的各服务访问请求,发送到用于处理对应服务需求的请求处理流程中,过度定制化处理流程,不能没有提高服务平台的处理效率,还进一步降低了代码复用率。
因此,在本申请实施例中,开发人员将不同的请求处理流程拆分为多个功能模块,从每个功能模块中抽象出通用的Lua功能函数,生成多个面向功能的抽象插件,从长期开发的角度看,这样做能够降低开发成本,提高代码复用率。
开发人员根据每个请求处理阶段所需的功能,从已有的Lua功能函数中,为每个请求处理阶段配置了相应的Lua功能函数,所对应的Lua功能函数名及配置参数。
这样做,不仅确保了多个Lua功能函数的运行顺序是人为可控的,解除了请求处理流程与Lua功能函数之间的耦合性,实现快速响应开发需求,还可以在服务需求发生变化后,在功能粒度上为新的服务需求配置新的Lua功能函数,不影响原有的配置方案,提高配置灵活性,降低开发成本。因此,本申请实施例提供的服务平台开发方法,支持多种应用场景,满足多种服务需求,还可以自定义请求处理流程。
域名配置文件规定了请求处理阶段执行顺序,体现了请求处理流程,实现了配置流程可视化,方便运维人员修复域名配置文件的运行错误。
S202:按照各域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令。
本申请实施例还重构了请求处理阶段,减少不必要的请求处理流程。重构后的请求处理阶段依次为(这也是规定的请求处理阶段执行顺序):
请求接收改写阶段,鉴权校验阶段,回源前改写阶段,生成响应体阶段,响应头改写阶段,响应体改写阶段以及日志改写阶段。
开发人员根据每个请求处理阶段所需的功能,为每个请求处理阶段配置了相应的Lua功能函数,所对应的Lua功能函数名及配置参数。这样,当不同请求处理阶段要实现同一个功能时,既能实现在不同阶段写入相同的Lua功能函数名及配置参数,解除Lua功能函数与请求处理阶段之间的耦合性,又能在生成域名配置文件时,无需重复写入Lua功能函数,提高了代码复用率,降低了代码冗余度。
S203:获取功能函数模块中与各功能指令相匹配的Lua功能函数,按照各域名配置文件中规定的请求处理阶段执行顺序,预编译各域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的功能指令存储在函数映射模块中。
参阅图3示出的流程示意图,介绍访问基于Openresty的服务平台的过程。
S301:接收客户端发送的服务访问请求,并基于服务访问请求携带的域名信息,确定相应的目标域名配置文件;
S302:获取指令注册模块中目标域名配置文件对应的多个目标功能指令,各目标功能指令均是按照目标域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中得到的;
S303:按照目标域名配置文件中规定的请求处理阶段执行顺序,运行各目标功能指令所对应的Lua功能函数,获得服务访问结果,并向客户端返回服务访问结果。
与上述方法实施例基于同一发明构思,本申请实施例还提供了一种基于Openresty的服务平台开发装置的结构示意图。如图4所示,基于Openresty的服务平台开发装置400可以包括:
配置文件获取单元401,用于获取域名配置模块中的各域名配置文件;
指令注册单元402,用于按照各所述域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令;
处理单元403,用于获取功能函数模块中与各功能指令相匹配的Lua功能函数,按照各所述域名配置文件中规定的请求处理阶段执行顺序,预编译各所述域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的功能指令存储在函数映射模块中。
可选的,请求处理阶段包括:
请求接收改写阶段,鉴权校验阶段,回源前改写阶段,生成响应体阶段,响应头改写阶段,响应体改写阶段以及日志改写阶段。
可选的,所述Lua功能函数包括:通用Lua功能函数与目标Lua功能函数。
与上述方法实施例基于同一发明构思,本申请实施例还提供了一种基于Openresty的服务平台访问装置的结构示意图。如图5所示,基于Openresty的服务平台访问装置500可以包括:
解析单元501,用于接收客户端发送的服务访问请求,并基于所述服务访问请求携带的域名信息,确定相应的目标域名配置文件;
第一处理单元502,用于获取指令注册模块中所述目标域名配置文件对应的多个目标功能指令,各所述目标功能指令均是按照所述目标域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到所述指令注册模块中得到的;
第二处理单元503,用于按照所述目标域名配置文件中规定的请求处理阶段执行顺序,运行各所述目标功能指令所对应的Lua功能函数,获得服务访问结果,并向所述客户端返回所述服务访问结果。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
在介绍了本申请示例性实施方式的服务平台的访问方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的计算机设备。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种计算机设备,参阅图6所示,计算机设备600可以至少包括处理器601、以及存储器602。其中,存储器602存储有程序代码,当程序代码被处理器601执行时,使得处理器601执行上述任意一种服务平台的访问方法的步骤。
在一些可能的实施方式中,根据本申请的计算装置可以至少包括至少一个处理器、以及至少一个存储器。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本申请各种示例性实施方式的基于Openresty的服务平台开发及访问方法中的步骤。例如,处理器可以执行如图2中所示的步骤。
下面参照图7来描述根据本申请的这种实施方式的计算装置700。图7的计算装置700仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算装置700以通用计算装置的形式表现。计算装置700的组件可以包括但不限于:上述至少一个处理单元701、上述至少一个存储单元702、连接不同系统组件(包括存储单元702和处理单元701)的总线703。
总线703表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元702可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)7021和/或高速缓存存储单元7022,还可以进一步包括只读存储器(ROM)7023。
存储单元702还可以包括具有一组(至少一个)程序模块7024的程序/实用工具7025,这样的程序模块7024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算装置700也可以与一个或多个外部设备704(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置700交互的设备通信,和/或与使得该计算装置700能与一个或多个其它计算装置进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口705进行。并且,计算装置700还可以通过网络适配器706与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器706通过总线703与用于计算装置700的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
与上述方法实施例基于同一发明构思,本申请提供的基于Openresty的服务平台开发及访问方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的基于Openresty的服务平台开发及访问方法中的步骤,例如,电子设备可以执行如图2中所示的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种基于Openresty的服务平台开发方法,其特征在于,包括:
获取域名配置模块中的各域名配置文件;
按照各所述域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令;
获取功能函数模块中与各功能指令相匹配的Lua功能函数,按照各所述域名配置文件中规定的请求处理阶段执行顺序,预编译各所述域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的功能指令存储在函数映射模块中。
2.如权利要求1所述的方法,其特征在于,请求处理阶段包括:
请求接收改写阶段,鉴权校验阶段,回源前改写阶段,生成响应体阶段,响应头改写阶段,响应体改写阶段以及日志改写阶段。
3.如权利要求1所述的方法,其特征在于,所述Lua功能函数包括:通用Lua功能函数与目标Lua功能函数。
4.一种基于Openresty的服务平台访问方法,其特征在于,包括:
接收客户端发送的服务访问请求,并基于所述服务访问请求携带的域名信息,确定相应的目标域名配置文件;
获取指令注册模块中所述目标域名配置文件对应的多个目标功能指令,各所述目标功能指令均是按照所述目标域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到所述指令注册模块中得到的;
按照所述目标域名配置文件中规定的请求处理阶段执行顺序,运行各所述目标功能指令所对应的Lua功能函数,获得服务访问结果,并向所述客户端返回所述服务访问结果。
5.一种基于Openresty的服务平台开发装置,其特征在于,包括:
配置文件获取单元,用于获取域名配置模块中的各域名配置文件;
指令注册单元,用于按照各所述域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到指令注册模块中,得到相应的功能指令;
处理单元,用于获取功能函数模块中与各功能指令相匹配的Lua功能函数,按照各所述域名配置文件中规定的请求处理阶段执行顺序,预编译各所述域名配置文件中为各请求处理阶段配置的Lua功能函数,并将已编译的各Lua功能函数与对应的功能指令存储在函数映射模块中。
6.如权利要求5所述的装置,其特征在于,请求处理阶段包括:
请求接收改写阶段,鉴权校验阶段,回源前改写阶段,生成响应体阶段,响应头改写阶段,响应体改写阶段以及日志改写阶段。
7.如权利要求5所述的装置,其特征在于,所述Lua功能函数包括:通用Lua功能函数与目标Lua功能函数。
8.一种基于Openresty的服务平台访问装置,其特征在于,包括:
解析单元,用于接收客户端发送的服务访问请求,并基于所述服务访问请求携带的域名信息,确定相应的目标域名配置文件;
第一处理单元,用于获取指令注册模块中所述目标域名配置文件对应的多个目标功能指令,各所述目标功能指令均是按照所述目标域名配置文件中规定的请求处理阶段执行顺序,将对应阶段的Lua功能函数名及对应的配置参数注册到所述指令注册模块中得到的;
第二处理单元,用于按照所述目标域名配置文件中规定的请求处理阶段执行顺序,运行各所述目标功能指令所对应的Lua功能函数,获得服务访问结果,并向所述客户端返回所述服务访问结果。
9.一种计算机设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行权利要求1~3中任一项所述方法的步骤或执行如权利要求4所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,其包括程序代码,当程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行权利要求1~3中任一项所述方法的步骤或执行如权利要求4所述方法的步骤。
CN202111643839.3A 2021-12-29 2021-12-29 基于Openresty的服务平台开发及访问方法 Active CN114461296B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111643839.3A CN114461296B (zh) 2021-12-29 2021-12-29 基于Openresty的服务平台开发及访问方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111643839.3A CN114461296B (zh) 2021-12-29 2021-12-29 基于Openresty的服务平台开发及访问方法

Publications (2)

Publication Number Publication Date
CN114461296A true CN114461296A (zh) 2022-05-10
CN114461296B CN114461296B (zh) 2024-01-02

Family

ID=81407098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111643839.3A Active CN114461296B (zh) 2021-12-29 2021-12-29 基于Openresty的服务平台开发及访问方法

Country Status (1)

Country Link
CN (1) CN114461296B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107479878A (zh) * 2017-07-26 2017-12-15 北京供销科技有限公司 一种基于openresty的lua模块化开发方法及开发框架
CN112052008A (zh) * 2020-09-10 2020-12-08 腾讯科技(深圳)有限公司 代码检查方法、装置、计算机设备及计算机可读存储介质
CN112153095A (zh) * 2019-06-28 2020-12-29 北京金山云网络技术有限公司 Cdn功能模块运行方法、运行装置、电子设备及存储介质
CN112433722A (zh) * 2020-11-27 2021-03-02 深圳前海微众银行股份有限公司 模块化系统代码开发方法、装置、设备及系统
CN112637346A (zh) * 2020-12-24 2021-04-09 北京知道创宇信息技术股份有限公司 代理方法、装置、代理服务器及存储介质
CN112799682A (zh) * 2021-04-13 2021-05-14 杭州太美星程医药科技有限公司 一种数据采集与处理系统及其运行多版本应用的方法
CN113204386A (zh) * 2021-05-19 2021-08-03 猪八戒股份有限公司 基于Nginx+Lua的数据处理方法及设备
CN113238739A (zh) * 2021-05-13 2021-08-10 挂号网(杭州)科技有限公司 一种插件开发和数据获取方法、装置、电子设备及介质
WO2021203343A1 (zh) * 2020-04-09 2021-10-14 北京微动数联科技有限公司 Web请求处理方法和装置
CN113626071A (zh) * 2021-08-06 2021-11-09 京东城市(北京)数字科技有限公司 函数注册方法、系统、电子设备及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107479878A (zh) * 2017-07-26 2017-12-15 北京供销科技有限公司 一种基于openresty的lua模块化开发方法及开发框架
CN112153095A (zh) * 2019-06-28 2020-12-29 北京金山云网络技术有限公司 Cdn功能模块运行方法、运行装置、电子设备及存储介质
WO2021203343A1 (zh) * 2020-04-09 2021-10-14 北京微动数联科技有限公司 Web请求处理方法和装置
CN112052008A (zh) * 2020-09-10 2020-12-08 腾讯科技(深圳)有限公司 代码检查方法、装置、计算机设备及计算机可读存储介质
CN112433722A (zh) * 2020-11-27 2021-03-02 深圳前海微众银行股份有限公司 模块化系统代码开发方法、装置、设备及系统
CN112637346A (zh) * 2020-12-24 2021-04-09 北京知道创宇信息技术股份有限公司 代理方法、装置、代理服务器及存储介质
CN112799682A (zh) * 2021-04-13 2021-05-14 杭州太美星程医药科技有限公司 一种数据采集与处理系统及其运行多版本应用的方法
CN113238739A (zh) * 2021-05-13 2021-08-10 挂号网(杭州)科技有限公司 一种插件开发和数据获取方法、装置、电子设备及介质
CN113204386A (zh) * 2021-05-19 2021-08-03 猪八戒股份有限公司 基于Nginx+Lua的数据处理方法及设备
CN113626071A (zh) * 2021-08-06 2021-11-09 京东城市(北京)数字科技有限公司 函数注册方法、系统、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
赵先明: "基于Lua语言的多平台高效移动应用引擎的深入研究与实现", 中国优秀硕士学位论文全文数据库 信息科技辑, no. 04, pages 138 - 711 *

Also Published As

Publication number Publication date
CN114461296B (zh) 2024-01-02

Similar Documents

Publication Publication Date Title
CN110297689B (zh) 智能合约执行方法、装置、设备及介质
US9852015B2 (en) Automatic discovery of a JavaScript API
US10223106B1 (en) Customized static source code analysis
US20080228909A1 (en) System and program for managing devices in a network
US20210173665A1 (en) Bootstrapping Profile-Guided Compilation and Verification
US9317258B2 (en) Dynamic validation of models using constraint targets
US9063760B2 (en) Employing native routines instead of emulated routines in an application being emulated
US10552306B2 (en) Automated test generation for multi-interface and multi-platform enterprise virtualization management environment
US11100233B2 (en) Optimizing operating system vulnerability analysis
US11288170B1 (en) Log analysis debugging without running on real production environment
US20140095142A1 (en) Resilient mock object creation for unit testing
US10120777B1 (en) Remediating serialization incompatibilities
US11157243B2 (en) Client-side source code dependency resolution in language server protocol-enabled language server
US11983090B2 (en) Setting breakpoints for source code segments enclosed by macros
US9519566B2 (en) Modeling memory use of applications
US10394610B2 (en) Managing split packages in a module system
US11947966B2 (en) Identifying computer instructions enclosed by macros and conflicting macros at build time
CN114461296B (zh) 基于Openresty的服务平台开发及访问方法
US20230061270A1 (en) Dynamically updating a dynamic library
US10776255B1 (en) Automatic verification of optimization of high level constructs using test vectors
US20180121314A1 (en) Preemption of false positives in code scanning
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
CN116795867A (zh) 数据处理方法、装置、电子设备和介质
KR102654190B1 (ko) 영형 대명사 복원 및 해소
US20220058006A1 (en) Runtime type identification of an object utilizing class inheritance relationships

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