具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
serverless:无服务器架构,是指服务端逻辑由开发者实现,运行在无状态的计算容器中,由事件触发,完全被第三方管理,其项目层面的状态则存储在数据库或者其他介质中。
函数计算:Function as a service,函数即服务,是(serverless)无服务器计算的一种形式,本质上是一种事件驱动的由消息触发的服务。
API网关:API网关作为内外的桥梁;对外通过暴露HTTP接口提供服务;对内管理所有项目系统对外暴露的接口,完成对请求的鉴权,并将请求分发到内部各个项目系统。
RESTfulAPI:RESTfulAPI就是REST风格的API,其中,REST表示性状态转移(representation state transfer)。简单来说,就是用URI表示资源,用HTTP方法(GET,POST,PUT,DELETE)表征对这些资源的操作。
具体的,serverless即无服务器架构,旨在让开发人员更专注于程序功能本身,由第三方服务来处理与服务器部署、存储和数据库相关的所有复杂性工作。它让服务器不可见,并提供了一个具备成本效益的服务,给所有开发人员带来的是软件架构和应用程序部署的新模式,也是整个云计算行业从server-base到serverless的演变趋势和用户需求所在。
函数计算(Function as a service)作为serverless的子集,提供一种事件驱动的全托管serverless计算服务,在更小更细粒度上调用,实时弹性伸缩来应对各种“峰谷”流量的需求,按量使用,节约成本。
控制台是一种web应用,属于典型的前后端分离、通过RESTful API进行通信的架构。控制台向用户提供云产品的管理功能,帮助用户更好的使用云资源。由于控制台的后端基于java语言和spring框架实现,只能调用javaAPI,如果依赖的服务只提供其他开发语言的API,那相对应的功能就无法支持,研发约束大。同时,后端服务器的发布、部署、升级、运维成本大,占用了大量的研发时间,影响研发效率。
实际应用中,控制台可以基于SAE(即serverless应用引擎,serverless AppEngine,简称SAE)进行搭建,将整个spring项目打包后部署在SAE上,实现serverless化,按需使用,按量计费,同时降低运维成本。这也是一种适用于web应用的serverless架构,但由于SAE是将整个应用进行打包后部署,有以下明显的缺点:
1、整个应用部署在SAE上,如果其中一个功能有异常导致整个应用故障时,其他功能也会收到连带影响,多个功能之间隔离性差。
2、弹性速度较慢:SAE的扩容速度在分钟级别,当流量突增时,扩容可能存在不及时导致部分请求无响应的问题。
3、研发语言锁定:所有功能只能基于一种编程语言进行开发,限制了开发的灵活性。
而在本说明书中,提供了一种函数创建方法。本说明书一个或者多个实施例同时涉及一种函数创建系统,两种函数调用方法,一种函数调用系统,一种函数调用装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
具体实施时,本说明书提供的函数创建方法以及函数调用方法可以应用于serverless系统。
参见图1,图1示出了根据本说明书一个实施例提供的一种基于函数计算适用于web应用的serverless系统的结构图。
其中,该serverless系统可以理解为本说明书实施例中的函数创建系统或者函数调用系统。
以该serverless系统为本说明书实施例中的函数创建系统为例,对该系统进行详细说明。
具体的,图1中的函数创建系统包括控制台前端、网关鉴权层以及函数层(即函数计算平台),其中,控制台前端用于用户交互,发起RESTful请求;网关鉴权层用于对用户进行鉴权后,通过http trigger(触发器)调用函数;函数计算平台用于存储函数(函数A...函数Z),每个函数对应控制台的一个功能,且支持多种开发语言,例如nodejs、python、go语言等。
具体实施时,首先确定控制台web应用的功能,将web应用的功能拆散成一个个独立的函数,基于实际需要选择不同的开发语言创建函数;将控制台前端将创建的函数发送至网关鉴权层,网关鉴权层对用户进行鉴权,鉴权通过后,将其基于控制台创建的函数发送至函数计算平台,以实现函数在函数计算平台的存储。
本说明书实施例中,基于函数计算适用于web应用的serverless系统,可以利用函数计算具有弹性、免运维、按量付费的特性,大幅提高web应用的资源利用率,避免计算资源限制;并且将web应用的功能拆散成独立函数,让开发者可以为每个函数选择不同的开发语言,增强功能开发的灵活度。此外,web应用更新部署时可以做到函数粒度,只需更新变更的函数即可,实现了对变更影响面的充分管控。
参见图2,图2示出了根据本说明书一个实施例提供的一种函数创建方法的流程图,其中,所述函数创建方法可以应用于上述实施例的serverless系统,包括客户端、网关以及函数计算平台,具体包括以下步骤。
步骤202:所述客户端基于用户发送的函数创建请求中携带的目标应用的属性信息,确定所述目标应用的应用功能,基于所述应用功能创建对应的函数,并向所述网关发送函数处理请求,其中,所述函数处理请求中携带有所述函数。
其中,客户端可以理解为上述实施例的控制台前端;网关可以理解为上述实施例的网关鉴权层;目标应用可以理解为历史应用或者是待开发应用(如web应用),目标应用的属性信息可以理解为目标应用的应用标识以及应用简介等。
具体的,所述客户端基于用户发送的函数创建请求中携带的目标应用的属性信息,确定所述目标应用的应用功能,基于所述应用功能创建对应的函数,包括:
所述客户端接收用户发送的函数创建请求,并对所述函数创建请求中携带的目标应用的属性信息进行解析,以确定与所述目标应用对应的至少一个应用功能;
基于预设需求为每个应用功能确定对应的函数创建语言,并基于每个应用功能对应的函数创建语言,为所述至少一个应用功能创建对应的至少一个函数。
其中,以目标应用为历史应用,目标应用的属性信息为目标应用的应用标识为例,客户端在接收用户发送的函数创建请求后,可以基于目标应用的应用标识获取目标应用,通过对目标应用的解析可以确定该目标应用包括哪些应用功能。例如密码修改功能、访客数量累计功能、视频播放功能等。
而在目标应用为待创建应用的情况下,目标应用的属性信息可以为待创建应用的应用简介,即通过该应用简介可以确定该待创建的应用需要具备哪些应用功能等。
实际应用中,一个目标应用会对应多个应用功能,通过上述方式获得目标应用对应的多个应用功能后,即可对其每个应用功能进行对应的函数创建。
具体的,预设需求可以根据实际应用进行设置,例如预设需求可以理解为开发人员的开发习惯、函数的运行效率或者是函数的开发时间等。
具体实施时,可以根据上述预设需求为每个应用功能确定其对应的函数创建语言,然后基于每个应用功能对应的函数创建语言对其进行函数创建。
本说明书实施例中,可以基于应用功能为其创建对应的独立函数,并且可以根据实际需求通过不同的开发语言进行函数的创建,增加功能开发灵活性,提升用户体验。
步骤204:所述网关将接收的所述函数处理请求中携带的所述函数发送至所述函数计算平台。
其中,函数为上述客户端根据实际需求通过不同的开发语言创建的函数。实际应用中,网关在接收到客户端发送的函数处理请求之后,将函数处理请求中携带的函数发送至函数计算平台,以供后续实现函数调用。
具体的,所述网关将接收的所述函数处理请求中携带的所述函数发送至所述函数计算平台,包括:
所述网关基于接收的所述函数处理请求中携带的所述用户的属性信息对所述用户进行身份验证;
在验证通过的情况下,将所述函数处理请求中携带的所述函数发送至所述函数计算平台。
其中,所述用户的属性信息包括但不限于用户的登录账号、登录密码等。
以用户的属性信息为登录账号和登录密码为例,网关基于接收的所述函数处理请求中携带的所述用户的属性信息对所述用户进行身份验证,可以理解为网关判断发送函数创建请求的用户是否为合法登录账户,即用户的登录账号和登录密码是否正确,若是,则网关可以将其在客户端创建的函数发送至函数计算平台,若否,则网关不进行函数的传输,以保证数据传输的安全性。
本说明书实施例中,所述函数创建方法充分利用函数计算无需关心服务器的特点,将目标应用的功能拆分成一个个独立的函数放置在函数计算平台,显著降低了目标应用的开发、运维成本,使得开发人员无需关心服务器,更加专注于目标应用功能的实现,提高开发效率。
本说明书另一实施例中,为了降低后续函数调用的网络开销,可以基于位置信息对创建的函数进行位置部署,具体实现方式如下所述:
所述网关将接收的所述函数处理请求中携带的所述函数发送至所述函数计算平台之前,还包括:
所述网关为所述至少一个函数中的每个函数部署对应的至少一个位置信息,并基于每个函数对应的所述至少一个位置信息进行函数备份。
具体的,基于应用功能创建的每一个函数的功能均不相同,比如有的函数是修改功能,有的函数是新增功能,有的函数为计数功能等等。
而实际应用中,相同功能的函数可以会被不同地区的开发人员所调用,那么这种情况下,若函数部署在A地,而开发人员在B地,那么开发人员在B地调用A地的函数时,网络开销就会很大。
目前,很多企业会在各个地区设立分部,每个分部的开发人员可能需要调用的函数功能相同,因此可以基于企业的实际需要为一个相同功能的函数设置不同的调用位置,即根据实际需要为每个函数部署对应的至少一个位置信息,例如将函数A部署在A地和B地两个地区。
那么在将一个函数基于对应的位置信息进行部署时,则需要基于位置信息对需要部署的函数进行函数备份,例如将函数A在A地的网络进行一次函数备份,在B地的网络进行一次函数备份等。
本说明书另一实施例中,采用本说明书实施例提供的所述函数创建方法,在应用功能更新时,可以不用更新整个后端应用,仅需要对该应用功能对应的函数进行更新即可,充分控制了代码变更的影响面,避免大量代码变更带来的开发成本增加,具体实现方式如下所述:
所述网关将接收的所述函数处理请求中携带的所述函数发送至所述函数计算平台之后,还包括:
所述客户端接收所述用户发送的应用更新请求,对所述应用更新请求进行解析,以确定与所述应用更新请求对应的至少一个更新后的应用功能,
基于预设需求为所述更新后的应用功能确定对应的函数创建语言,并基于每个更新后的应用功能对应的函数创建语言,为所述至少一个更新后的应用功能创建对应的至少一个更新函数,且将所述应用更新请求以及所述至少一个更新函数发送至所述网关;
所述网关基于所述应用更新请求中携带的用户的属性信息对所述用户进行身份验证,在验证通过的情况下,将所述更新函数发送至所述函数计算平台。
其中,预设需求以及用户身份验证的详细解释可以参见上述实施例,在此不再赘述。
具体的,客户端在接收用户发送的应用更新请求后,对该应用更新请求进行解析,以确定出该应用更新请求对应的目标应用以及该目标应用更新后的应用功能。
基于预设需求为更新后的应用功能确定对应的函数创建语言,并基于其函数创建语言为更新后的应用功能创建对应的更新函数,然后将其应用更新请求和更新函数发送至网关。
网关首先基于应用更新请求中携带的用户的属性信息对用户身份进行验证,在验证通过的情况下,网关将更新后的应用功能对应的更新函数发送至函数计算平台。此时,该函数计算平台中则会存储该应用功能对应的两个版本的函数,即更新前的函数和更新后的函数,且更新前的函数和更新后的函数对应同一个应用功能。例如更新前的函数的功能是账户修改功能,更新后的函数的功能不仅具有账户修改功能,还具有与其他账户的关联功能。
本说明书另一实施例中,为了保证函数的功能可以满足web应用,开发人员还可以基于实际的web应用需求对函数计算平台的函数进行增加、删除或者修改等调整,具体实现方式如下所述:
所述网关将接收的所述函数处理请求中携带的所述函数发送至所述函数计算平台之后,还包括:
所述客户端接收所述用户发送的函数调整请求,并将所述函数调整请求发送至所述网关,其中,所述函数调整请求中携带有所述用户的属性信息以及函数标识;
所述网关基于接收的客户端发送的函数调整请求中携带的、所述用户的属性信息对所述用户进行身份验证,在验证通过的情况下,将所述函数调整请求发送至所述函数计算平台;
所述函数计算平台基于所述函数调整请求中携带的所述函数标识确定函数,并基于所述函数调整请求对所述函数进行调整,且将调整结果发送至所述网关。
其中,函数调整请求可以理解为函数的修改、删除、或者增加请求。
实际应用中,客户端可以接收用户发送的函数的修改、删除、或者增加请求,并将该请求发送至网关,网关在对用户的身份验证通过后,将所述函数调整请求发送至所述函数计算平台,函数计算平台基于函数标识确定需要调整的函数,并基于函数调整请求对该函数进行调整,例如在函数计算平台对函数进行函数名的修改、函数的删除或者函数的增加等调整,并将调整结果返回至网关,由网关返回给客户端。其中,调整结果可以理解为是否调整成功的消息。
此外,所述网关将接收的所述函数处理请求中携带的所述函数发送至所述函数计算平台之后,还包括:
所述函数计算平台接收所述网关发送的所述函数,并为所述函数设置处理权限。
其中,处理权限可以理解为调用权限以及调整权限等。
实际应用中,为了进一步保证函数的安全性,在函数计算平台在接收到网关发送的函数之后,对函数的调用以及调整权限进行设置,例如设置只有函数的创建用户才具有调用以及调整权限,而其他用户仅具有调用权限,避免函数会被其他用户修改,保证其安全性。
本说明书实施例中,所述函数创建方法可以应用于上述实施例的serverless系统的好处在于,高稳定性:每个功能对应一个函数,每个函数对应独立的运行环境,如果某个函数执行异常不会影响其他函数的执行,极大的提高了服务稳定性。低成本:每个函数都是按需部署、按量收费的;资源调度可以控制到函数粒度,而传统web架构只能做到应用粒度,造成计算资源的空闲。具有弹性:当请求突增时,函数计算可以做到毫秒级的弹性能力,及时扩容。突破语言限制:每个函数可以选择不同的开发语言作为开发语言,可以让开发者根据不同的需求、性能、依赖来选择合适的开发语言,提升用户体验。
参见图3,图3示出了本说明书一个实施例提供的一种函数调用方法的流程图,其中,所述函数创建方法可以应用于上述实施例的serverless系统,包括客户端、网关以及函数计算平台,具体包括以下步骤。
步骤302:所述客户端基于访问用户的页面操作发起网页处理请求,并将所述网页处理请求发送至所述网关,其中,所述网页处理请求中携带有函数标识。
其中,客户端可以理解为上述实施例的控制台前端;网关可以理解为上述实施例的网关鉴权层。
实际应用中,上述实施例的用户以及本实施例的访问用户可以为相同用户,也可以为不同用户。其中,访问用户可以理解为访问目标应用的网页的用户。
具体的,访问用户的页面操作,可以理解为访问用户在目标应用的页面上点击或者触摸某个图片、链接或者控件的操作。例如访问用户在客户端的某个目标应用的登录页面,点击登录控件的操作。当访问用户在页面上的任何一项操作,即会触发一次网页处理请求。
以网页处理请求为密码修改请求为例,访问用户在客户端的某个目标应用的页面上点击“修改”控件即发起一次http请求,即网页处理请求,客户端将该网页处理请求发送至网关,其中所述网页处理请求中携带有处理该网页处理请求对应的函数标识。
步骤304:所述网关基于所述网页处理请求中携带的所述函数标识从所述函数计算平台调用目标函数。
具体的,所述网关基于所述网页处理请求中携带的所述函数标识从所述函数计算平台调用目标函数,包括:
所述网关基于接收的网页处理请求中携带的所述用户的属性信息对所述用户进行身份验证;
在验证通过的情况下,基于所述网页处理请求中携带的所述函数标识从所述函数计算平台调用目标函数。
其中,网关基于访问用户的属性信息对访问用户进行身份验证的详细介绍可以参见上述实施例,在此不再赘述。
具体的,网关基于访问用户的属性信息对访问用户进行身份验证,在验证通过的情况下,基于所述网页处理请求中携带的所述函数标识从所述函数计算平台调用目标函数。
具体实施时,为了节省网络开销,一般会基于访问用户的IP地址确定调用的目标函数,具体实现方式如下所述:
所述网关基于所述网页处理请求中携带的所述函数标识从所述函数计算平台调用目标函数,包括:
所述网关基于所述网页处理请求中携带的所述访问用户的地址标识以及所述函数标识从所述函数计算平台调用目标函数。
其中,访问用户的地址标识可以理解为访问用户的IP地址。
本说明书实施例中,在进行目标函数调用时,不仅要基于函数标识,还要从网络开销出发,考虑函数与访问用户的IP地址的关系。
具体的,所述网关基于所述网页处理请求中携带的所述访问用户的地址标识以及所述函数标识从所述函数计算平台调用目标函数,包括:
所述网关确定所述网页处理请求中携带的所述访问用户的地址标识;
基于所述函数标识确定所述函数计算平台的至少一个初始函数,并确定每个初始函数对应的位置信息;
基于每个初始函数对应的位置信息,判断所述至少一个初始函数中是否存在与所述访问用户的地址标识匹配的目标函数,
若是,则从所述函数计算平台调用所述目标函数,
若否,则从所述函数计算平台调用预设的、与所述地址标识匹配的初始函数作为所述目标函数。
结合上述实施例可知,每个函数会基于位置信息备份出多个函数,即会根据实际需求,为每个位置备份一个相同功能的函数,因此一个函数标识可以对应多个函数。
实际应用中,网关在接收到网页处理请求之后,首先要确定网页处理请求中携带的访问用户的地址标识;同时,基于函数标识从函数计算平台确定与该函数标识对应的多个初始函数,以及每个初始函数对应的位置信息;再将每个初始函数对应的位置信息与访问用户的地址标识进行匹配,将与访问用户的地址标识匹配的初始函数作为目标函数。
例如,根据访问用户的地址标识确定访问用户在A地,该函数标识对应的初始函数包括函数A、函数B和函数C,其中,函数A对应A地,函数B对应B地,函数C对应C地,那么确定访问用户的地址标识与函数A的位置信息对应,则将函数A作为目标函数。
具体的,在确定目标函数后,则从函数计算平台调用目标函数,以基于目标函数进行网页处理请求的处理。
具体实施时,会存在一种情况是所有的初始函数的位置信息,与访问用户的地址标识均不匹配,此种情况下,则可以从函数计算平台调用预设的,与该地址标识匹配的初始函数作为目标函数。
沿用上例,访问用户在D地,那么该函数标识对应的初始函数均没有与D地对应,若之前D地预设的函数为A,此时,则将函数A作为目标函数。
本说明书实施例中,在进行函数调用的时候,可以对访问用户的位置信息进行判断,找到与访问用户的位置信息对应的目标函数进行网页处理,可以极大减小函数调用的网络开销。
此外,另一种情况下,目标函数会存在有多个版本的情况,例如上述实施例中,在目标应用的应用功能更新的情况下,目标函数也会对应更新,那么就会存在多个版本的目标函数,此种情况下,不是所有的新版本函数都适应所有的访问用户,每个版本的函数会对应一个灰度名单,只有在灰度名单中的访问用户才可以调用新版本的函数,例如由于新版本的函数存在不稳定性,因此只有测试人员才可以调用新版本的函数,所以在目标函数存在不同版本的情况下,还需要对访问人员进行灰度测试,以保证函数调用的安全性,具体实现方式如下所述:
所述网关基于所述网页处理请求中携带的所述函数标识从所述函数计算平台调用目标函数,包括:
所述网关基于所述网页处理请求中携带的所述函数标识从所述函数计算平台调用目标函数;
在确定所述目标函数存在不同版本的情况下,确定最新版本的目标函数对应的用户集合;
在确定所述访问用户属于所述用户集合中的用户的情况下,从所述函数计算平台调用所述最新版本的目标函数。
具体的,预先为最新版本的目标函数设置对应的用户集合,只有在该用户集合中的访问用户才可以调用该目标函数。
首先,网关基于函数标识从函数计算平台确定目标函数,然后在确定目标函数存在多个版本的情况下,确定出最新版本的目标函数,并获取该最新版本的目标函数对应的用户集合,基于访问用户的属性信息(例如访问用户的登录账号)确定访问用户属于该用户集合的情况下,则将该函数计算平台中最新版本的函数作为目标函数;若访问用户不属于该用户集合的情况下,则看访问用户属于哪个版本的函数,然后对函数进行排序,选择第一个版本的函数作为其目标函数。
此外,在上述实施例中,在基于访问用户的地址标识确定了目标函数之后,为了保证目标函数的准确性,还可以继续基于版本对目标函数进行进一步的确定,具体实现方式如下所述:
所述从所述函数计算平台调用所述目标函数,包括:
所述网关在确定所述目标函数存在不同版本的情况下,确定最新版本的目标函数对应的用户集合;
在确定所述访问用户属于所述用户集合中的用户的情况下,从所述函数计算平台调用所述最新版本的目标函数。
具体实施时,基于不同版本对目标函数的进一步确定的详细过程可以参见上述实施例,在此不再赘述。
本说明书另一实施例中,为了保证在用户的网页处理请求突增时,函数计算平台可以做到毫秒级的弹性能力,及时的进行扩容,函数计算平台可以在某个函数的调用次数突增时,为其进行扩容,具体实现方式如下所述:
所述函数计算平台当接收的所述网关发送的针对目标函数的调用次数大于等于预设数量阈值的情况下,按照预设扩容条件增加所述目标函数的数量。
其中,预设数量阈值可以根据实际应用进行设置,例如预设数量阈值为50个或60个等。
具体实施时,函数计算平台当接收的网关发送的针对某个目标函数的调用次数大于等于预设数量阈值的情况下,则按照预设扩容条件增加该目标函数的数量。其中,预设扩容条件也可以根据实际应用进行设置,例如当调用次数为80的情况下,增加3个目标函数;当调用次数为100的情况下,增加4个目标函数等。
步骤306:所述函数计算平台基于所述目标函数对所述网页处理请求的进行处理,并将处理结果返回至所述网关。
具体的,函数计算平台在接收网关的目标函数调用的情况下,基于该目标函数对网页处理请求进行处理,例如基于目标函数修改函数名称、修改用户的登录密码等。并将处理结果返回至网关,比如为网关返回登录密码修改成功的消息。
步骤308:所述网关接收所述函数计算平台返回的处理结果,且将所述处理结果发送至所述客户端。
其中,所述目标函数通过上述实施例的函数创建方法获得。
具体的,网关接收到函数计算平台返回的处理结果后,再将该处理结果返回至客户端。
本说明书实施例中,所述函数调用方法在接收到网页处理请求后,可以基于网页处理请求中的函数标识对函数计算平台中的任意开发语言创建的目标函数进行调用,基于目标函数对网页处理请求进行操作,灵活性较强;且在进行目标函数调用时会基于访问用户的地址标识进行目标函数的选择,以节省网络开销;此外在某个函数面对的请求突增时,函数计算平台还可以做到毫秒级的弹性能力,及时对其进行扩容,提升用户体验。
下述结合附图4,以本说明书提供的所述函数调用方法在serverless系统的应用为例,对所述函数调用方法进行进一步说明。其中,图4示出了本说明书一个实施例提供的一种函数调用方法的处理过程流程图,具体包括以下步骤。
步骤402:控制台前端基于用户操作向网关鉴权层发送网页处理请求。
其中,网页处理请求可以理解为付款请求,且该网页处理请求中携带有用户的属性信息以及待调用函数的函数标识。
步骤404:网关鉴权层基于用户的属性信息对用户进行身份验证。
例如基于用户的登录账户和登录密码,判断用户是否登录成功。
步骤406:网关鉴权层进行环境判断。
实际应用中,函数功能在真实开发的情况下,会存在开发环境、预发环境、线上环境等。因为要开发一个函数功能的情况下,在开发环境才可以进行函数功能的开发创建,开发完成后还要到预发环境中进行验证,而验证完成后才会上线,在线上环境被真实调用。
即网关鉴权层判断当前环境是否是线上环境,只有在线上环境下才可以进行函数调用。
步骤408:网关鉴权层基于待调用函数的函数标识从函数计算平台调用对应的函数。
步骤410:函数计算平台被调用的通过多种语言开发的函数通过OpenAPI对网页处理请求进行操作。
其中,OpenAPI可以理解为其他页面或者应用程序的调用接口。
仍以网页处理请求为付款请求为例,该函数可以理解为付款函数,该付款函数可以通过OpenAPI调用付款页面,进行付款操作。
步骤412:函数计算平台接收通过OpenAPI对网页处理请求进行操作的操作结果。
步骤414:函数计算平台将该操作结果发送至网关鉴权层。
步骤416:网关鉴权层将该操作结果发送至控制台前端。
其中,网关鉴权层对外提供一个统一的接口(即http trigger),控制台前端通过订制不同的functionName(即函数名称)来访问不同的函数,请求参数会通过网关鉴权层透传至函数计算平台(faas函数),例如:
接口:/fcservice/runFunction.json方式:POST参数:{"functionName":"token/getToken",//要调用的fc函数名称"params":{}//请求的具体参数,json结构,会透传到faas函数}
其中,函数层(函数计算平台)是多个faas函数,将控制台的功能拆散成多个函数,每个函数对应一个控制台功能。以将web应用的管控粒度从应用层面细化到函数层面,让开发者在功能开发、运维、升级各阶段成倍提高效率。并且函数开发(创建)时每个函数可以根据不同的需求、性能、依赖来选择合适的开发语言。当某个功能更新时,也只需要改动对应的函数即可,充分控制了代码变更的影响面。
本说明书实施例中,所述函数调用方法首先通过函数计算的能力对传统的web应用进行改造,将web应用的功能拆散到函数粒度,以达到serverless化、免运维、具有弹性、低成本、突破语言限制的目的,使得在实际应用时,可以不用考虑函数的开发语言,直接进行函数功能的调用。
参见图5,图5示出了本说明书一个实施例提供的一种函数调用方法的流程图,其中,所述函数调用方法应用于网关,具体包括以下步骤。
步骤502:接收客户端基于访问用户的页面操作发起的网页处理请求,其中,所述网页处理请求中携带有函数标识。
步骤504:基于所述网页处理请求中携带的所述函数标识从函数计算平台调用目标函数。
具体的,所述基于所述网页处理请求中携带的所述函数标识从函数计算平台调用目标函数,包括:
基于所述网页处理请求中携带的访问用户的属性信息对所述访问用户进行身份验证,在验证通过的情况下,基于所述网页处理请求中携带的所述函数标识从函数计算平台调用目标函数。
步骤506:接收所述函数计算平台基于所述目标函数对所述网页处理请求的处理结果,并将所述处理结果发送至所述客户端。
其中,所述目标函数通过上述函数创建方法获得。
具体的,本说明书实施例中提供的所述函数调用方法可以参见上述实施例的函数调用方法中网关的详细处理过程,在此不再赘述。
本说明书实施例中,所述函数调用方法在接收到网页处理请求后,可以基于网页处理请求中的函数标识对函数计算平台中的任意开发语言创建的目标函数进行调用,基于目标函数对网页处理请求进行操作,灵活性较强。
与上述方法实施例相对应,本说明书还提供了函数创建系统实施例,图6示出了本说明书一个实施例提供的一种函数创建系统的结构示意图。如图6所示,该系统包括客户端602、网关604以及函数计算平台606,其中:
所述客户端602,被配置为基于用户发送的函数创建请求中携带的目标应用的属性信息,确定所述目标应用的应用功能,基于所述应用功能创建对应的函数,并向所述网关604发送函数处理请求,其中,所述函数处理请求中携带有所述函数;
所述网关604,被配置为将接收的所述函数处理请求中携带的所述函数发送至所述函数计算平台606。
可选地,所述客户端602,进一步被配置为:
接收用户发送的函数创建请求,并对所述函数创建请求中携带的目标应用的属性信息进行解析,以确定与所述目标应用对应的至少一个应用功能;
基于预设需求为每个应用功能确定对应的函数创建语言,并基于每个应用功能对应的函数创建语言,为所述至少一个应用功能创建对应的至少一个函数。
可选地,所述网关604,进一步被配置为:
为所述至少一个函数中的每个函数部署对应的至少一个位置信息,并基于每个函数对应的所述至少一个位置信息进行函数备份。
可选地,所述客户端602,进一步被配置为:
接收所述用户发送的应用更新请求,对所述应用更新请求进行解析,以确定与所述应用更新请求对应的至少一个更新后的应用功能,
基于预设需求为所述更新后的应用功能确定对应的函数创建语言,并基于每个更新后的应用功能对应的函数创建语言,为所述至少一个更新后的应用功能创建对应的至少一个更新函数,且将所述应用更新请求以及所述至少一个更新函数发送至所述网关604;
所述网关604,进一步被配置为:基于所述应用更新请求中携带的用户的属性信息对所述用户进行身份验证,在验证通过的情况下,将所述更新函数发送至所述函数计算平台606。
可选地,所述客户端602,进一步被配置为:
接收所述用户发送的函数调整请求,并将所述函数调整请求发送至所述网关604,其中,所述函数调整请求中携带有所述用户的属性信息以及函数标识;
所述网关604,进一步被配置为:基于接收的客户端发送的函数调整请求中携带的、所述用户的属性信息对所述用户进行身份验证,在验证通过的情况下,将所述函数调整请求发送至所述函数计算平台606;
所述函数计算平台606,进一步被配置为:基于所述函数调整请求中携带的所述函数标识确定函数,并基于所述函数调整请求对所述函数进行调整,且将调整结果发送至所述网关604。
可选地,所述网关604,进一步被配置为:
基于接收的所述函数处理请求中携带的所述用户的属性信息对所述用户进行身份验证;
在验证通过的情况下,将所述函数处理请求中携带的所述函数发送至所述函数计算平台606。
可选地,所述函数计算平台606,进一步被配置为:
接收所述网关604发送的所述函数,并为所述函数设置处理权限。
上述为本实施例的一种函数创建系统的示意性方案。需要说明的是,该函数创建系统的技术方案与上述的函数创建方法的技术方案属于同一构思,函数创建系统的技术方案未详细描述的细节内容,均可以参见上述函数创建方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了函数调用系统实施例,图7示出了本说明书一个实施例提供的第一种函数调用系统的结构示意图。如图7所示,该系统包括客户端702、网关704以及函数计算平台706,其中:
所述客户端702,被配置为基于访问用户的页面操作发起网页处理请求,并将所述网页处理请求发送至所述网关704,其中,所述网页处理请求中携带有函数标识;
所述网关704,被配置为基于所述网页处理请求中携带的所述函数标识从所述函数计算平台706调用目标函数;
所述函数计算平台706,被配置为基于所述目标函数对所述网页处理请求的进行处理,并将处理结果返回至所述网关704;
所述网关704,还被配置为接收所述函数计算平台706返回的处理结果,且将所述处理结果发送至所述客户端702,其中,所述目标函数通过上述所述函数创建方法获得。
可选地,所述网关704,进一步被配置为:
基于所述网页处理请求中携带的所述访问用户的地址标识以及所述函数标识从所述函数计算平台706调用目标函数。
可选地,所述网关704,进一步被配置为:
确定所述网页处理请求中携带的所述访问用户的地址标识;
基于所述函数标识确定所述函数计算平台706的至少一个初始函数,并确定每个初始函数对应的位置信息;
基于每个初始函数对应的位置信息,判断所述至少一个初始函数中是否存在与所述访问用户的地址标识匹配的目标函数,
若是,则从所述函数计算平台706调用所述目标函数,
若否,则从所述函数计算平台706调用预设的、与所述地址标识匹配的初始函数作为所述目标函数。
可选地,所述网关704,进一步被配置为:
基于所述网页处理请求中携带的所述函数标识从所述函数计算平台706调用目标函数;
在确定所述目标函数存在不同版本的情况下,确定最新版本的目标函数对应的用户集合;
在确定所述访问用户属于所述用户集合中的用户的情况下,从所述函数计算平台706调用所述最新版本的目标函数。
可选地,所述网关704,进一步被配置为:
基于接收的网页处理请求中携带的所述用户的属性信息对所述用户进行身份验证;
在验证通过的情况下,基于所述网页处理请求中携带的所述函数标识从所述函数计算平台706调用目标函数。
可选地,所述函数计算平台706,进一步被配置为:
当接收的所述网关704发送的针对目标函数的调用次数大于等于预设数量阈值的情况下,按照预设扩容条件增加所述目标函数的数量。
可选地,所述网关704,进一步被配置为:
基于接收的网页处理请求中携带的所述用户的属性信息对所述用户进行身份验证;
在验证通过的情况下,基于所述网页处理请求中携带的所述函数标识从所述函数计算平台706调用目标函数。
上述为本实施例的一种函数调用系统的示意性方案。需要说明的是,该函数调用系统的技术方案与上述的函数调用方法的技术方案属于同一构思,函数调用系统的技术方案未详细描述的细节内容,均可以参见上述函数调用方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了函数调用装置实施例,图8示出了本说明书一个实施例提供的第二种函数调用装置的结构示意图。如图8所示,该装置包括:
请求接收模块802,被配置为接收客户端基于访问用户的页面操作发起的网页处理请求,其中,所述网页处理请求中携带有函数标识;
函数调用模块804,被配置为基于所述网页处理请求中携带的所述函数标识从函数计算平台调用目标函数;
请求处理模块806,被配置为接收所述函数计算平台基于所述目标函数对所述网页处理请求的处理结果,并将所述处理结果发送至所述客户端,其中,所述目标函数通过上述函数创建方法获得。
上述为本实施例的一种函数调用装置的示意性方案。需要说明的是,该函数调用装置的技术方案与上述的应用于网关的函数调用方法的技术方案属于同一构思,函数调用装置的技术方案未详细描述的细节内容,均可以参见上述应用于网关的函数调用方法的技术方案的描述。
图9示出了根据本说明书一个实施例提供的一种计算设备900的结构框图。该计算设备900的部件包括但不限于存储器910和处理器920。处理器920与存储器910通过总线930相连接,数据库950用于保存数据。
计算设备900还包括接入设备940,接入设备940使得计算设备900能够经由一个或多个网络960通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备940可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备900的上述部件以及图9中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图9所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备900可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备900还可以是移动式或静止式的服务器。
其中,处理器920用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述函数创建方法或函数调用方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的函数创建方法或函数调用方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述函数创建方法或函数调用方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述函数创建方法或函数调用方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的函数创建方法或函数调用方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述函数创建方法或函数调用方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。