用于处理请求的方法、系统和可读存储介质
技术领域
本发明的实施方式涉及通信及计算机技术领域,更具体地,本发明的实施方式涉及一种用于处理请求的方法、系统以及可读存储介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
在计算机技术中,当服务器提供API接口供外部系统调用时,如接到对服务器进行资源访问的请求,通常会向后台调用不同接口以处理不同请求。以Java技术栈使用Spring中间件以及其SpringMVC框架提供的rest接口为例:当接到HTTP Get请求http://example.com/user时,调用方首先向后台的web容器(如Tomcat、Jetty等)发送接口调用请求;接下来,通过web容器实现servlet规范,将相关的请求(user)映射到对应的servlet,进入中间件/MVC框架(例如Spring/SpringMVC);最后,中间件将请求转发到开发人员设置的实现相关业务逻辑的处理单元(例如Controller是SpringMVC对应的处理单元)进行业务逻辑处理,并返回相关结果。
当开发人员因为业务需求变更等原因需要对接口进行增加、删除、修改等更改时,通常需要对系统重新部署上线。
发明内容
但是,出于系统上线步骤复杂,系统上线过程中存在一段不可用时间。
因此在现有技术中,对接口进行变更是非常令人烦恼的过程。
为此,非常需要一种改进的用于处理请求的方法,以增强系统的灵活性,提高开发效率,减少发布流程,降低系统不可用时长。
在本上下文中,本发明的实施方式期望提供一种可动态变更接口的用于处理请求的方法和系统。
在本发明实施方式的第一方面中,提供了一种用于处理请求的方法,包括:
接收对服务器进行资源访问的请求;
在预先存储的配置表中查找到与所述请求对应的处理单元,所述配置表记录有多个处理单元与多个请求的对应关系;
通过所述处理单元完成所述请求。
在一些实施例中,基于前述方案,所述处理单元的实现方式包括通过脚本文件实现。
在一些实施例中,基于前述方案,还包括:新增脚本文件、删除脚本文件、更改脚本文件中的至少一项。
在一些实施例中,基于前述方案,还包括将多个脚本文件与多个请求的对应关系写入配置表。
在一些实施例中,基于前述方案,还包括更新所述脚本文件调用的处理模块。
在一些实施例中,基于前述方案,所述脚本文件调用的处理模块包括类对象。
在一些实施例中,基于前述方案,所述通过所述对应处理单元完成所述请求包括通过预设脚本引擎加载运行所述处理单元的所述脚本文件。
在一些实施例中,基于前述方案,所述在预先存储的配置表中查找到所述请求的对应处理单元包括通过分发器动态读取配置表中所述多个处理单元与多个请求的对应关系。
在本发明实施方式的第二方面中,提供了一种用于处理请求的系统,包括:
请求接收模块,用于接收对服务器进行资源访问的请求;
请求匹配模块,用于在预先存储的配置表中查找到与所述请求对应的处理单元,所述配置表记录有多个处理单元与多个请求的对应关系;
请求处理模块,用于通过所述对应处理单元完成所述请求。
在一些实施例中,基于前述方案,所述处理单元的实现方式包括通过脚本文件实现。
在一些实施例中,基于前述方案,还包括:
文件更改模块,用于新增脚本文件、删除脚本文件、更改脚本文件中的至少一项。
在一些实施例中,基于前述方案,还包括:
信息注册模块,用于将多个脚本文件与多个请求的对应关系写入配置表。
在一些实施例中,基于前述方案,所述文件更改模块还用于更新所述脚本文件调用的处理模块。
在一些实施例中,基于前述方案,所述脚本文件调用的处理模块包括类对象。
在一些实施例中,基于前述方案,所述请求处理模块通过预设脚本引擎加载实现所述处理单元的所述脚本文件。
在一些实施例中,基于前述方案,所述请求匹配模块通过分发器动态读取配置表中所述多个处理单元与多个请求的对应关系。
在本发明实施方式的第三方面中,提供了一种可读存储介质,其上存储有程序,该程序被处理器执行时实现如以上任一项所述的方法。
根据本发明实施方式的用于处理请求的方法和系统,当开发人员根据业务变更需求对接口进行变更时,可以直接对处理请求的接口进行更改,而无需对更改后的接口进行发布上线,从而显著地降低了接口变更的工作量,提高了接口开发效率与请求处理效率。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了根据本发明实施方式的用于处理请求的方法的流程图;
图2示意性地示出了根据本发明实施例中处理请求的过程的示意图;
图3示意性地示出了根据本发明实施例的用于处理请求的系统的示意图;
图4示意性地示出了根据本发明实施例的用于处理请求的系统的示意图;
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术技术人员知道,本发明的实施方式可以实现为一种系统、系统、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种用于处理请求的方法和系统。
下面对本发明中用到的接口和请求进行说明。
在本发明中,接口(interface)是把成员组合起来以封装一定功能的程序集合,其可以通过类或结构来实现。接口不能直接实例化,也不能包含成员的任何代码,只定义成员本身。接口成员的具体代码由实现接口的类提供。在具体编程中,接口中可以声明属性、方法、事件和类型。请求(request)是指外部系统对服务器提出的资源访问请求,包括但不限于数据访问请求、网络访问请求等。接口可以用于实现请求,在一些实施例中,一个接口可以用于实现多个请求,一个请求也可以通过多个接口实现。
在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,在处理服务器的资源访问请求时,可以采用如下方式:接收对服务器进行资源访问的请求;在预先存储的配置表中查找到与所述请求对应的处理单元,所述配置表记录有多个处理单元与多个请求的对应关系;通过所述处理单元完成所述请求。在该方案中,当开发人员对接口进行更改时,无需对更改接口后的系统进行发布上线,因此,解决了现有技术中存在的接口变更过程步骤繁琐、造成较长系统不可用时长的缺陷。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
当系统发生需求变更时,开发人员针对需求变更新增、变更接口,但根据本发明提供的方法,开发人员无需对系统重新发布上线。开发或部署人员只要修改相关的配置表,就能达到动态变更接口的目的。这样,显著地降低了接口变更的工作量,提高了接口开发效率与系统的请求处理效率。
示例性方法
下面结合上述应用场景,参考图1来描述根据本发明示例性实施方式的用于处理请求的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图1示意性地示出了根据本发明实施方式的用于处理请求的方法的流程图。如图1所示,该方法100可以包括步骤S100、S110以及S120。
在S100,接收对服务器进行资源访问的请求。在本发明中,请求包括但不限于数据资源请求或网络资源请求等,本发明对于请求的种类不作特殊限定。
例如,对于HTTP Get请求“http://example.com/user”而言,接收请求的过程可包括向后台的web容器发送接口调用请求,并通过web容器实现servlet规范,将相关的请求(user)映射到对应的servlet,进入中间件/MVC框架(例如Spring/SpringMVC)。
在S110,在预先存储的配置表中查找到与所述请求对应的处理单元,所述配置表记录有多个处理单元与多个请求的对应关系。
处理单元与请求的对应关系可以通过表或者其他数据格式存储,无论以何种形式存储,在本发明中均定义该存储结果为配置表。在配置表中,一个请求可以对应多个处理单元,一个处理单元也可以被对应于多个请求。配置表中记录的处理单元并非处理单元实体,而是处理单元的接口的入口,因此,当需要对接口进行变更时,只需在配置表中重新写入各接口入口(例如接口名称或编码)或直接更改接口文件,即可实现请求对应接口的变更。
在本发明的一种示例性实施例中,可以通过分发器实现在预先存储的配置表中查找所述请求的对应处理单元。通过动态读取配置表中多个处理单元与多个请求的对应关系,分发器可以将一个特定请求映射到对应的处理单元。一般来说,现有的MVC框架,如SpringMVC或者Struts2都有分发器的概念,但是这些分发器通常是通过静态扫描annotation获取配置文件,无法做到动态变更。本发明的分发器可以在接收到请求时动态获取配置表中的对应关系,并根据该请求对应的关系调用其对应的处理单元。
在S120,通过所述处理单元完成所述请求。
根据一些实施例,所述处理单元的实现方式包括通过脚本文件实现。例如,为了提高接口变更效率,在本发明的一些实施例中,除了一部分公共逻辑(例如是否登录、安全检验等)外,具体的业务逻辑处理单元可以通过脚本文件实现。由于使用脚本文件无需编译,可以通过调用脚本引擎直接加载使用,大大节省了接口变更过程所需的时间和步骤,降低了系统不可用时长。
根据一些实施例,如前所述,当处理单元的实现方式包括通过脚本文件实现时,可将多个脚本文件与多个请求的对应关系写入配置表。此时,通过对应处理单元完成所述请求可包括通过预设脚本引擎加载运行处理单元的脚本文件。
当用户需要变更接口时,可以通过新增脚本文件、删除脚本文件、更改脚本文件中的至少一项实现目的。在一些实施例中,变更接口除了变更脚本文件本身,还包括更新脚本文件调用的处理模块。脚本文件调用的处理模块包括例如类对象或结构对象等实现脚本文件一部分功能的功能模块。不论是直接更改脚本文件,还是更改脚本文件调用的处理模块,在本发明的示例性实施例中,只需要修改相关配置表,开发人员即可对接口进行变更。
根据本发明实施方式的用于处理请求的方法和系统,当开发人员根据业务变更需求需要对接口进行变更时,可以直接对处理请求的接口进行更改,而无需对更改后的接口进行发布上线,从而显著地降低了接口变更的工作量,提高了接口开发效率与请求处理效率。
图2示意性地示出了本发明实施例中处理请求的过程的示意图。参考图2,当服务器接收到服务器资源访问请求,并将该请求映射到对应的servlet,进入中间件/MVC框架后,分发器根据该请求在配置表中查找该请求对应的处理单元。当处理单元通过脚本文件实现时,分发器在配置表中查找到该请求对应的脚本文件入口后,可以通过脚本引擎加载运行该脚本文件,以实现该请求。值得一提的是,一个请求可以对应多个脚本文件,即可以通过多个脚本文件实现一个请求所要调用的处理单元。加载脚本文件实现请求处理后,处理单元将请求处理结果逐层返回给上级,完成请求处理过程。
示例性系统
在介绍了本发明示例性实施方式的方法之后,接下来,参考图3对本发明示例性实施方式的用于处理请求的系统进行说明。
图3示意性地示出了根据本发明实施例的用于处理请求的系统的示意图。如图3所示,该系统30可以包括:
请求接收模块310,用于接收对服务器进行资源访问的请求;
请求匹配模块320,用于在预先存储的配置表中查找到与所述请求对应的处理单元,所述配置表记录有多个处理单元与多个请求的对应关系;
请求处理模块330,用于通过所述对应处理单元完成所述请求。
请求接收模块310可以通过例如web容器和servlet容器的方式实现,也可以通过其他方式实现,本领域技术人员可以根据实际情况自由设置。
请求匹配模块320可以通过分发器动态读取配置表中所述多个处理单元与多个请求的对应关系实现。当处理单元通过脚本文件实现时,配置表可以记录请求与脚本文件的对应关系。在本公开的一种示例性实施例中,可以通过信息注册模块350将多个脚本文件与多个请求的对应关系写入配置表。
在请求处理模块330中,除了一部分公共逻辑(例如是否登录、安全检验等)外,具体的业务逻辑处理单元可以通过脚本文件实现。由于使用脚本文件无需编译,可以通过调用脚本引擎直接加载使用,大大节省了接口变更过程所需的时间和步骤,使得接口变更过程尽可能小地影响请求处理过程的实时性。
当处理单元通过脚本文件实现时,可以通过预设脚本引擎加载实现处理单元的脚本文件。
此外,系统30还可以包括文件更改模块340,用于变更接口文件。当处理单元通过脚本文件实现时,文件更改模块340可以用于新增脚本文件、删除脚本文件、更改脚本文件中的至少一项。在一些实施例中,文件更改模块340除了用于变更脚本文件本身,还可以用于更新脚本文件调用的处理模块。脚本文件调用的处理模块包括例如类对象或结构对象等实现脚本文件一部分功能的功能模块。不论是直接更改脚本文件,还是更改脚本文件调用的处理模块,只需要修改相关配置表,即可实现接口变更。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明的用于处理请求的系统可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于保持数据一致性方法中的步骤。例如,所述处理单元可以执行如图1中所示的步骤S100:接收对服务器进行资源访问的请求;步骤S110:预先存储的配置表中查找到与所述请求对应的处理单元,所述配置表记录有多个处理单元与多个请求的对应关系;步骤S120:通过所述对应处理单元完成所述请求。
下面参照图4来描述根据本发明的这种实施方式的用于处理请求的设备400。图4显示的用于保持数据一致性示的设备400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,用于处理请求的设备400以通用计算设备的形式表现。用于处理请求的设备400的组件可以包括但不限于:上述至少一个处理单元16、上述至少一个存储单元28、连接不同系统组件(包括存储单元28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元28可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32,还可以进一步只读存储器(ROM)34。
存储单元28还可以包括具有一组(至少一个)程序模块42的程序/实用工具40,这样的程序模块42包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
用于处理请求的设备400也可以与一个或多个外部设备14(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该用于处理请求的设备400交互的设备通信,和/或与使得该用于处理请求的设备400能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,用于处理请求的设备400还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与用于处理请求的设备400的其它模块通信。应当明白,尽管图中未示出,可以结合用于处理请求的设备400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于处理请求的方法中的步骤,例如,所述终端设备可以执行如图1中所示的步骤S100:接收对服务器进行资源访问的请求;步骤S110:在预先存储的配置表中查找到与所述请求对应的处理单元,所述配置表记录有多个处理单元与多个请求的对应关系;步骤S120:通过所述对应处理单元完成所述请求。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
根据本发明的实施方式的用于处理请求的程序产品40,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、系统或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于处理请求的系统的若干模块或子模块,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。