云函数应用发布管理方法、系统、设备及存储介质与流程

文档序号:31147342发布日期:2022-08-17 00:17阅读:81来源:国知局
云函数应用发布管理方法、系统、设备及存储介质与流程

1.本发明涉及计算机技术领域,具体地说,涉及云函数应用发布管理方法、系统、设备及存储介质。


背景技术:

2.serverless,即无服务器计算,近年来随着云计算发展的潮流逐步兴起。在无服务器计算服务下,开发者无须管理和操作云端或本地的服务器,仅编写所需的业务逻辑代码而云厂商提供其他所有功能的架构,便可以方便快捷地发布运行应用程序,而机器的运维、弹性伸缩、容灾等问题均由平台托管。
3.在serveless架构中,函数计算作为实现severless架构的主要形式,将应用与底层服务彻底分离,开发人员只需专注于应用逻辑的开发,仅在事件触发时才调用函数计算资源,真正做到了弹性伸缩与按需付费。


技术实现要素:

4.针对现有技术中的问题,本发明的目的在于提供云函数应用发布管理方法、系统、设备及存储介质,克服了现有技术的困难,能够有效提升云函数部署效率。
5.本发明的实施例提供一种云函数应用发布管理方法,其包括:
6.接收用户的输入;
7.响应于用户的输入,创建云函数应用并获得云函数应用的元数据,通过接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线,并在ci流水线上,根据云函数应用的元数据生成云函数镜像;
8.基于云函数镜像调用kubernetes api创建对应的knative service资源,并通过knative serving组件根据knative service资源创建云函数应用的版本资源和流量路由,生成对云函数镜像的访问触发器url。
9.可选地,通过接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线,包括:
10.通过restful接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线。
11.可选地,通过接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线,包括:
12.通过接口调用方式调用代码仓库管理组件,对云函数应用的元数据创建和关联代码仓库,并根据云函数模板对代码仓库生成ci流水线。
13.可选地,云函数应用发布管理方法还包括:
14.在生成对云函数镜像的访问触发器url的情况下,通过资源同步组件从knative serving组件获取云函数应用的资源信息;
15.在web服务组件展示云函数应用的资源信息。
16.可选地,云函数应用发布管理方法还包括:
17.在代码仓库管理组件接收到用户提交的云函数应用的更新代码,并响应于更新代码的用户提交生成代码仓库和ci流水线的情况下,将更新代码作为云函数应用的元数据,返回在ci流水线上,根据云函数应用的元数据生成云函数镜像,直到生成对更新代码所对应版本的云函数镜像的访问触发器url。
18.可选地,云函数应用发布管理方法还包括:
19.接收用户对云函数应用的流量切换指示;
20.基于流量切换指示调用kubernetes api创建对应的knative service资源,并通过对应的knative serving组件根据knative service资源创建云函数应用的流量路由,生成对云函数镜像的访问触发器url。
21.本发明的实施例还提供一种云函数应用发布管理系统,其包括:
22.web服务组件、代码仓库管理组件和knative serving组件;
23.web服务组件用于,接收用户的输入,并响应于用户的输入,创建云函数应用并获得云函数应用的元数据,并通过接口调用方式调用代码仓库管理组件,还响应于代码仓库管理组件对原函数镜像执行发布操作的请求,调用knative serving组件;
24.代码仓库管理组件,响应于web服务组件的调用,生成代码仓库和ci流水线,并在ci流水线上,根据云函数应用的元数据生成云函数镜像,并请求调用web服务组件对云函数镜像执行发布操作;
25.knative serving组件,响应于web服务组件对云函数执行发布操作的请求,基于云函数镜像调用kubernetes api创建对应的knative service资源,并通过knative serving组件根据knative service资源创建云函数应用的版本资源和流量路由,生成对云函数镜像的访问触发器url。
26.本发明的实施例还提供一种云函数应用发布管理系统,其包括:
27.接收模块,接收用户的输入;
28.第一调用模块,响应于用户的输入,创建云函数应用并获得云函数应用的元数据,通过接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线,并在ci流水线上,根据云函数应用的元数据生成云函数镜像;
29.第二调用模块,基于云函数镜像调用kubernetes api创建对应的knative service资源,并通过knative serving组件根据knative service资源创建云函数应用的版本资源和流量路由,生成对云函数镜像的访问触发器url。
30.本发明的实施例还提供一种电子设备,包括:
31.处理器;
32.存储器,其中存储有处理器的可执行指令;
33.其中,处理器配置为经由执行可执行指令来执行上述云函数应用发布管理方法的步骤。
34.本发明的实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现上述云函数应用发布管理方法的步骤。
35.本发明的目的在于提供云函数应用发布管理方法、系统、设备及存储介质,通过响应于用户的输入,创建云函数应用并获得云函数应用的元数据,通过接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线,并在ci流水线上,根据云函数应用的元数据生
成云函数镜像,基于云函数镜像调用kubernetes api创建对应的knative service资源,并通过knative serving组件根据knative service资源创建云函数应用的版本资源和流量路由,生成对云函数镜像的访问触发器url。
36.本公开实施例提供一键式的云函数应用创建流程,能够自动化完成云函数、代码仓库及ci流水线的创建和触发,完成自动发布云函数的版本、触发器生成等步骤,能够省略繁琐步骤实现云函数的快速部署,提升云函数部署效率。
附图说明
37.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
38.图1是本发明一个实施例的云函数应用发布管理系统的架构图;
39.图2是本发明一个实施例的云函数应用发布管理方法的流程图;
40.图3是本发明一个实施例的云函数应用发布管理系统的模块示意图;
41.图4是本发明另一个实施例的云函数应用发布管理系统的模块示意图;
42.图5是本发明又一个实施例的云函数应用发布管理系统的模块示意图;
43.图6是本发明的电子设备运行的示意图。
具体实施方式
44.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使本发明全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
45.附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件转发模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
46.在相关技术中,serverless架构可以提供的软件架构范式,称之云函数或函数即服务(function as a services,faas),faas中的函数可以代表客户所要执行的每个操作:创建、读取、更新及删除;和后端即服务(backend as a service,baas),为运行在faas平台上的代码程序提供底层服务。
47.在相关技术中,云函数从构建到发布需要经历繁琐的步骤,云函数部署效率低。
48.本公开实施例提出一种云函数应用发布管理方案,实现云函数应用发布的统一管理。
49.图1为本公开实施例提供的云函数应用发布管理系统的结构图,如图1所示,该云函数应用发布管理系统可以包括web服务组件11、代码仓库管理组件12、knative serving组件13及资源同步组件14。
50.基于如上云函数应用发布管理系统实现的云函数应用发布管理方法包括如下步骤:
51.步骤a:web服务组件11接收用户的输入,响应于用户的输入,创建云函数应用并获
得云函数应用的元数据,并通过接口调用方式调用代码仓库管理组件12;
52.步骤b:响应于web服务组件11的调用,代码仓库管理组件12生成代码仓库121和ci流水线122,并;
53.步骤c:在ci流水线122上对云函数应用的元数据生成云函数镜像,并请求调用web服务组件11对云函数镜像执行发布操作;
54.步骤d:web服务组件11通过调用kubernetes api创建云函数镜像的knative service资源;
55.knative serving组件13根据knative service资源创建云函数应用的版本资源和对版本资源的流量路由,生成对云函数镜像的访问触发器url;
56.步骤e:knative serving组件13将云函数镜像的资源信息发送给资源同步组件14;
57.步骤f:资源同步组件14将云函数镜像的资源信息发送到web服务组件11;
58.步骤g:用户可通过web服务组件11查看云函数镜像的资源信息。
59.本公开实施例提供一键式的云函数应用创建流程,该云函数应用发布管理系统能够自动化完成云函数、代码仓库及ci流水线的创建和触发,完成自动发布云函数的版本、触发器生成、dns注册等步骤,能够省略繁琐步骤实现云函数的快速部署,提升云函数部署效率。另外,本公开实施例无需从创建代码仓库开始,一步步打包构建、建立版本、发布切换流量、创建访问入口和域名等,免于与多个系统交互。
60.其中,knative的定义是:基于kubernetes的平台,用来构建、部署和管理现代serverless工作负载。knative基于kubernetes和istio之上,借助kubernetes的容器编排与调度能力和istio的网络管理能力,提供了一套较为完善的开源serverless架构方案,使得云原生函数和应用部署管理更加轻松。
61.knative serving组件13利用istio在各版本云函数之间路由流量,其serving的目标是为kubernetes提供扩展功能,用于部署和运行serverless工作负载。
62.knative service是一个最外层的一个抽象,就比如说云函数应用的元数据代码生成镜像,最终对外提供服务,knative service就是这个服务的意思。云函数应用的整个镜像打包,在knative service这样一个资源对象里面,用户每一次新建一个镜像或者更新一个镜像的版本并进行发布,发布就对应于一个knative service。
63.其中,版本资源是指,在一个knative service下,它可以支持多个版本的这样一个云函数应用的流量切换,比如说云函数应用在更新代码的情况下,就对应产生一个新版本。
64.另外,ci(continuous integration,简称ci)是指持续集成,ci流水线是指持续集成流水线,用于把云函数应用的元数据代码最终生成一个镜像,就容器镜像,然后调用web服务组件11进行发布。发布的含义就是这个云函数应用的镜像,它生成knative service下面的某一个版本。
65.在本公开实施例中,用户还可以直接通过代码仓库管理组件12对云函数应用的代码仓库121进行更新,触发ci流水线启动,后续步骤同c至g,在此不再赘述。在这种情况下,knative serving组件13创建云函数应用的新版本资源和对该版本资源的流量路由。
66.因此,进一步地,本公开实施例能够实现云函数的快速迭代。
67.在本公开实施例中,用户还可以通过web服务组件11手动触发发布或对切换相应版本云函数的流量。
68.因此,在本公开实施例中,web服务组件11用于,云函数列表和信息的展示、版本及发布状态展示、接收用户创建函数、发布、切换流量等操作,触发代码仓库管理组件12和knative serving组件13的操作,并对操作日志进行记录和展示。
69.其中,代码仓库管理组件12用于,在云函数创建时,自动执行创建代码仓库,根据云函数定制模版生成ci流水线,启动ci流水线构建打包镜像并触发web服务组件11的发布操作,以及在云函数代码更新时,自动启动ci流水线进行构建和部署。
70.其中,knative serving组件13是knative的主要组件之一,用于云函数应用发布升级、路由配置、自动扩缩容等。
71.其中,资源同步组件14用于,将kubernetes中相关资源的变化同步给web服务组件11进行展示,包括版本信息、当前流量比例、云函数状态等信息。
72.图2为本公开实施例提供的云函数应用发布管理方法的流程图,本方法的执行主体为serverless平台、或serverless平台下的web服务组件。如图2所示,云函数应用发布管理方法包括如下步骤:
73.步骤210:接收用户的输入;
74.步骤220:响应于用户的输入,创建云函数应用并获得云函数应用的元数据,通过接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线,并在ci流水线上,根据云函数应用的元数据生成云函数镜像;
75.步骤230:基于云函数镜像调用kubernetes api创建对应的knative service资源,并通过knative serving组件根据knative service资源创建云函数应用的版本资源和流量路由,生成对云函数镜像的访问触发器url。
76.本公开实施例提供一键式的云函数应用创建流程,能够自动化完成云函数、代码仓库及ci流水线的创建和触发,完成自动发布云函数的版本、触发器生成等步骤,能够省略繁琐步骤实现云函数的快速部署,无需从创建代码仓库开始,一步步打包构建、建立版本、发布切换流量、创建访问入口和域名等,并免于与多个系统交互,提升云函数部署效率。
77.在本公开实施例中,通过接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线,包括:
78.通过restful接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线。
79.其中,restful api,是遵循rest架构规范的应用编程接口(api或web api),支持与restful web服务进行交互。
80.在本实施例中,通过restful api,web服务组件与代码仓库管理组件之间能够相互调用。
81.在本公开实施例中,用户的输入可以是文本输入,具体如代码输入。用户的输入还可以是文本上传,具体如上传云函数代码文本。
82.具体地,web服务组件提供用户界面,通过用户界面与用户交互,具体地接收用户的输入。
83.在本公开实施例中,通过接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线,包括:
84.通过接口调用方式调用代码仓库管理组件,对云函数应用的元数据创建和关联代码仓库,并根据云函数模板对代码仓库生成ci流水线。
85.本实施例通过云函数模板,代码仓库管理组件能够根据云函数应用的元数据自动创建代码仓库及ci流水线。ci流水线启动,构建云函数应用的打包镜像,并触发web服务组件执行发布操作。
86.在这种情况下,web服务组件受触发,不仅对发布进行日志记录,还调用kubernetes api通过knative serving组件创建knative service资源,在knative service资源中打包上述云函数镜像。
87.其中,版本资源为当前所创建云函数应用的相应版本信息。后面对云函数中代码更新时,更新的云函数对应新的版本标记。那么一个knative service资源可以对应云函数的多个版本资源。
88.其中,流量路由用于建立当前版本的云函数应用的调用关系。在接收到对该云函数应用进行调用时,可以路由到当前版本的云函数应用及其相应资源,提供计算服务。
89.在本公开实施例中,云函数应用发布管理方法还包括如下步骤:
90.在生成对云函数镜像的访问触发器url的情况下,通过资源同步组件从knative serving组件获取云函数应用的资源信息,包括knative service资源、版本资源等在kubernetes环境中的信息和状态变化;
91.在web服务组件展示上述云函数应用的资源信息。
92.这样,用户通过web服务组件动态查看云函数的版本信息、流量比例、版本发布状态、变更日志等资源信息。
93.因此,web服务组件能够提供统一管理界面,实现对云函数更加全面和透明的管理,能够实现云函数发布变更历史的可记录和可追溯,便于用户了解云函数应用的历史行为和当前状态。
94.在本公开实施例中,云函数应用发布管理方法还包括如下步骤:
95.在代码仓库管理组件接收到用户提交的云函数应用的更新代码,并响应于更新代码的用户提交生成代码仓库和ci流水线的情况下,将更新代码作为云函数应用的元数据,返回在ci流水线上,根据云函数应用的元数据生成云函数镜像,直到生成对更新代码所对应版本的云函数镜像的访问触发器url。
96.使用本公开实施例,用户通过代码仓库管理组件更新代码时,执行步骤220,触发ci流水线启动。因此,本公开实施例提供一键式的云函数应用创建流程和代码更新自动触发发布流程,从实现云函数的快速部署和迭代。
97.在本公开实施例中,在云函数应用具有多个版本的情况下,用户可以调整各版本之间的流量比例。具体地,云函数应用发布管理方法还包括如下步骤:
98.接收用户对云函数应用的流量切换指示;
99.基于流量切换指示调用kubernetes api创建对应的knative service资源,并通过对应的knative serving组件根据knative service资源创建云函数应用的流量路由,生成对云函数镜像的访问触发器url。
100.流量切换是指将对云函数应用的路由切换到指定版本。
101.图3是本发明的云函数应用发布管理系统的一种实施例的模块示意图。本发明的
云函数应用发布管理系统,如图3所示,包括但不限于:
102.接收模块310,接收用户的输入;
103.第一调用模块320,响应于用户的输入,创建云函数应用并获得云函数应用的元数据,通过接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线,并在ci流水线上,根据云函数应用的元数据生成云函数镜像;
104.第二调用模块330,基于云函数镜像调用kubernetes api创建对应的knative service资源,并通过knative serving组件根据knative service资源创建云函数应用的版本资源和流量路由,生成对云函数镜像的访问触发器url。
105.在可选实施例中,第一调用模块320具体用于:
106.通过restful接口调用方式调用代码仓库管理组件生成代码仓库和ci流水线。
107.在可选实施例中,第一调用模块320具体用于:
108.通过接口调用方式调用代码仓库管理组件,对云函数应用的元数据创建和关联代码仓库,并根据云函数模板对代码仓库生成ci流水线。
109.在可选实施例中,与图3相比,图4所示云函数应用发布管理系统还可以包括:
110.获取模块410,在生成对云函数镜像的访问触发器url的情况下,通过资源同步组件从knative serving组件获取云函数应用的资源信息;
111.展示模块420,在web服务组件展示云函数应用的资源信息。
112.在可选实施例中,与图3相比,图5所示云函数应用发布管理系统还可以包括:
113.云函数更新模块510,在代码仓库管理组件接收到用户提交的云函数应用的更新代码,并响应于更新代码的用户提交生成代码仓库和ci流水线的情况下,将更新代码作为云函数应用的元数据,返回在ci流水线上,根据云函数应用的元数据生成云函数镜像,直到生成对更新代码所对应版本的云函数镜像的访问触发器url。
114.在可选实施例中,接收模块310具体还用于:
115.接收用户对云函数应用的流量切换指示;
116.第二调用模块330具体还用于:
117.基于流量切换指示调用kubernetes api创建对应的knative service资源,并通过对应的knative serving组件根据knative service资源创建云函数应用的流量路由,生成对云函数镜像的访问触发器url。
118.上述模块的实现原理参见云函数应用发布管理方法中的相关介绍,此处不再赘述。
119.本发明实施例提供的云函数应用发布管理系统能够提供一键式的云函数应用创建流程,能够自动化完成云函数、代码仓库及ci流水线的创建和触发,完成自动发布云函数的版本、触发器生成等步骤,能够省略繁琐步骤实现云函数的快速部署,提升云函数部署效率。
120.本发明实施例还提供一种电子设备,包括处理器。存储器,其中存储有处理器的可执行指令。其中,处理器配置为经由执行可执行指令来执行的云函数应用发布管理方法的步骤。
121.所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完
全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
122.图6是本发明的电子设备的结构示意图。下面参照图6来描述根据本发明的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
123.如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
124.其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书云函数应用发布管理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元610可以执行如图2中所示的步骤。
125.存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)621和/或高速缓存存储单元622,还可以进一步包括只读存储单元(rom)623。
126.存储单元620还可以包括具有一组(至少一个)程序模块625的程序/实用工具624,这样的程序模块625包括但不限于:处理系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
127.总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
128.电子设备600也可以与一个或多个外部设备670(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口650进行。
129.并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储平台等。
130.本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现的云函数应用发布管理方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述云函数应用发布管理方法部分中描述的根据本发明各种示例性实施方式的步骤。
131.根据本发明的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
132.程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导
体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
133.计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
134.可以以一种或多种程序设计语音的任意组合来编写用于执行本发明处理的程序代码,程序设计语音包括面向对象的程序设计语音—诸如java、c++等,还包括常规的过程式程序设计语音—诸如“c”语音或类似的程序设计语音。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
135.以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1