一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于提供功能即服务平台的方法和设备与流程

2022-03-26 10:02:30 来源:中国专利 TAG:


1.本文中描述的实施例涉及用于使得第三方开发者能够使用功能即服务平台中的功能的方法和设备。例如,本文中描述的方法在功能目录中存储与可用于供第三方开发者使用的一个或多个功能相关联的一个或多个相应的功能描述。


背景技术:

2.通常,本文中所使用的所有术语均应根据其在相关技术领域中的普遍含义进行解释,除非明确给出和/或从其中使用它的上下文中隐含不同的含义。除非另外明确说明,否则所有对一/一个/该元件、设备、组件、部件、步骤等的提及都应开放地解释为指该元件、设备、组件、部件、步骤等的至少一个实例。除非明确地将一个步骤描述为在另一个步骤之后或之前和/或在暗示一个步骤必须在另一个步骤之后或之前的情况下,本文中公开的任何方法的步骤不一定按照公开的确切顺序执行。只要适当,本文中公开的实施例中的任何实施例的任何特征可应用于任何其它实施例。同样地,实施例中的任何实施例的任何优点可适用于任何其它实施例,反之亦然。所附实施例的其它目标、特征和优点将从以下描述中显而易见。
3.云服务产品(offering)的功能即服务(function as a service,faas)范式允许消费者(开发者)在无需管理供应(provision)和维护基础设施、平台或软件生态系统的复杂性的情况下构建和部署应用。这种开发和部署服务的模型适宜于“无服务器”体系结构。开发者可定义构成服务的各个功能,并且可在云平台上部署各个功能,然后在需要服务功能性时启用(invoke)各个功能。faas平台中的功能可在数毫秒内启动,以处置它们被定义为执行的任务。消费者可以只有在启用他们已经部署的功能时才向云提供商付费。faas范式非常适宜于微服务软件开发体系结构。
4.开发者可将应用或微服务的功能性分解为一组模块化功能,然后可将该组模块化功能上传到faas平台。上传的功能中的每个功能都可以是能够被独立地启用和执行。这些功能还可被独立地缩放。图1示出可如何将单体应用分解为一组微服务的示例,该组微服务可分解为一组模块化功能。
5.可作为由开发者预定义的触发的结果而启用功能,或者可手动地启用功能。一组功能可链接在一起,以在服务或微服务中实现复杂任务。
6.faas平台的优点中的一些优点包括但不限于减少的开发者物流(logistics)、更高的开发和部署速度、可缩放性、容错性以及只为功能的活动时间付费而当功能空闲时不付费。
7.缺点包括对众多功能的更难跟踪、更难的调试和极少的调试工具、以及降低的对基础设施的透明度(transparence into the infrastructure)。如今,云平台提供商中的当前领先者中的大多数都提供faas能力,例如aws lambda、谷歌云功能和azure功能。当前的faas框架还受到供应商锁定的影响。


技术实现要素:

8.根据一些实施例,提供一种用于使得第三方开发者能够使用功能即服务平台中的功能的方法。方法包括:在功能目录中存储与可用于供第三方开发者使用的一个或多个功能相关联的一个或多个相应的功能描述,其中每个功能描述包括相应功能的意图和功能名称;从第一功能开发者接收包括第一意图的指示的功能调用(call);以及从功能目录中选择与第一意图匹配的第一功能描述。
9.根据一些实施例,提供一种用于使得第三方开发者能够使用功能的功能即服务faas平台。faas平台包括处理电路,处理电路配置成:在功能目录中存储与可用于供第三方开发者使用的一个或多个功能相关联的一个或多个相应的功能描述,其中每个功能描述包括相应功能的意图和功能名称;从第一功能开发者接收包括第一意图的指示的功能调用;以及从功能目录中选择与第一意图匹配的第一功能描述。
附图说明
10.为了更好地理解本公开的实施例并说明可如何将它付诸实施,现在将仅通过示例的方式参考附图,其中:图1示出可如何将单体应用分解为一组微服务的示例,该组微服务可分解为一组模块化功能;图2示出根据本发明的一些实施例的faas平台的示例;图3示出根据一些实施例的用于使得第三方开发者能够使用功能即服务平台中的功能的方法;图4示出根据一些实施例的用于从功能源代码中提取第二意图的方法;图5示出根据一些实施例的用于将第二功能描述存储在功能目录中的方法;图6示出根据一些实施例的维护意图层级映射的功能目录的示例;图7示出根据一些实施例的用于预处理由第一功能开发者定义的功能源代码的方法;图8示出根据一些实施例的用于从功能目录中找到与第一意图匹配的一个或多个候选功能描述的方法;图9示出根据一些实施例的用于调用第一功能的方法;图10示出包括处理电路(或逻辑)的功能即服务(faas)平台。
具体实施方式
11.出于解释而非限制的目的,下文阐述具体细节,如特定的实施例或示例。本领域技术人员将认识到,除了这些具体细节之外,还可采用其它示例。在一些情况下,省略众所周知的方法、节点、接口、电路和装置的详细描述,以免用不必要的细节使本描述晦涩难懂。本领域技术人员将认识到,描述的功能可在一个或多个节点中使用硬件电路(例如,互连以执行专门的功能的模拟和/或离散逻辑门、asic、pla等)和/或结合一个或多个数字微处理器或通用计算机使用软件程序和数据来实现。使用空中接口进行通信的节点还具有合适的无线电通信电路。此外,在适当的情况下,可另外考虑完全在包含适当的计算机指令集的、任何形式的计算机可读存储器(如固态存储器、磁盘或光盘)内实施本技术,适当的计算机指
令集会使处理器实现本文中描述的技术。
12.硬件实现可包括或涵盖但不限于数字信号处理器(dsp)硬件、精简指令集处理器、包括但不限于(一个或多个)专用集成电路(asic)和/或(一个或多个)现场可编程门阵列(fpga)的硬件(例如,数字或模拟)电路、以及(在适当的情况下)能够执行此类功能的状态机。
13.大多数当前的功能即服务(faas)平台都为开发者提供定义他们自己的功能的功能性,然后可部署这些功能以提供服务或应用。除了一些标准功能之外,形成服务的所有功能都需要由开发者自己编写/开发。为了实现相当复杂的服务,使用faas会需要开发、测试和验证大量的功能,这可能需要相当大的努力。
14.到今天为止,没有直观且简单的方式可让开发者使用由他们自己定义的功能和由其他第三方开发者开发的功能的混合来构建服务。没有用于发现和调用由其他方定义为由开发者部署的服务的一部分的功能的系统。这在某种程度上限制在faas环境中开发的潜力和速度。
15.当前的faas平台没有为开发者提供透明的方式来在faas平台上向其他开发者公开(expose)他们已经开发的功能。开发者也没有透明且动态的方式来发现和启用由其他开发者公开的功能以构建他们的服务。
16.因此,本文中描述的实施例提供用于使得第三方开发者能够使用功能即服务平台中的功能的方法和设备。
17.特别地,本文中描述的方法和设备使得开发者能够透明地公开他们的功能以供其他开发者在faas平台中使用。此外,本文中描述的方法和设备使得faas平台能够基于公开的功能提供的功能性为公开的功能编目录。为功能编目录可以用可搜索的方式进行。本文中描述的实施例还使得开发者能够使用基于意图的功能调用(invocation)来动态地搜索和启用由其他开发者公开的功能。
18.图2示出根据本发明的一些实施例的faas平台的示例。
19.将认识到,示出的功能块可由软件代码实现。在一些情况下,单个软件可实现功能块中的一个或多个功能块。
20.faas平台200支持功能即服务部署范式。特别地,faas平台充当由云平台提供商向使用faas构建服务的消费者提供的服务部署接口。
21.faas平台200包括功能开发和执行环境201。功能开发和执行环境201包括这样的功能块:能够允许开发者定义和/或开发功能、指定用于功能调用的触发(还可将功能链接在一起以实现服务功能性),以及其中可在faas平台200内部执行功能。功能开发和执行环境还可包括执行功能所需的运行时环境。
22.在该示例中,功能开发和执行环境201包括功能202a至202m。功能202a至202m可包括开发者可编写并部署在faas平台200上的各段代码(或软件)。可在触发预先设置的条件时或在显式启用这些功能202时执行这些功能202。
23.取决于云平台提供商,faas平台可允许开发者用多种语言定义功能。
24.在该示例中,功能开发和执行环境201还包括功能启用器203。功能启用器203可包括这样的功能块:可负责启用功能并在功能所需的运行时环境上执行它。可基于预定义的触发来命令该功能块启用功能,或者可显式地请求该功能块启用功能。
25.在该示例中,功能开发和执行环境201还包括功能编译器204。功能编译器204包括这样的功能块:可用于编译由开发者定义的功能。功能编译器204还可将功能与其它库联合(link)成可执行形式,以由功能启用器203启用。可只在用需要编译以执行的语言定义功能时才需要功能编译器204。
26.在该示例中,功能开发和执行环境201还包括功能预处理器205。功能预处理器包括这样的功能块:可配置成对由开发者定义的功能进行预处理以寻找基于意图的功能调用指令。基于意图的功能调用指令可以是关键字的形式,开发者使用关键字来指示基于意图的功能调用。指令可基于编程语言(正在用该编程语言来编写功能)而采取不同的形式,并且可设计成让开发者感觉直观。
27.一旦功能预处理器205检测到基于意图的功能调用指令,功能预处理器便可调用意图解析器206以执行进一步处理。功能预处理器205可配置成在开发者已经编写功能之后对功能进行预处理,或者可配置成在开发者正在实时编写功能时定期对功能进行预处理以处理和分析基于意图的功能调用。
28.在该示例中,faas平台200还包括意图解析器206。意图解析器包括这样的功能块:可配置成解析在功能调用中指示的意图。
29.例如,意图解析器206可确定这样的层级搜索查询:可用于在功能目录内查找与指定的意图匹配的可用第三方功能。
30.在该示例中,faas平台201还包括意图剖析器207。意图剖析器207包括这样的功能块:配置成准备功能的意图分类。例如,当开发者想要使功能可供其他开发者使用时,他们可能一个或多个意图,意图剖析器可使用一个或多个意图连同功能签名(参数和返回类型)来准备意图分类。图5呈现该模块的功能性的流程图。
31.在该示例中,faas平台201还包括功能目录208。功能目录208包括这样的功能块:可配置为由开发者使其可用于由其他开发者调用的所有功能的数据库。功能目录208可配置成基于由意图剖析器207进行的意图分类以层级方式存储这些功能。功能目录208还可存储关于功能的附加元数据信息,可在基于在来自第三方开发者的功能调用中指示的意图搜索功能时使用附加元数据信息。
32.在该示例中,faas平台201还包括动态功能映射器209。动态功能映射器209包括这样的功能块:可配置成基于由调用功能指定的意图从功能目录208中动态地启用功能。动态功能映射器209可从功能目录208中与意图匹配并满足由调用功能指定的约束的一个或多个候选功能中选择。
33.在该示例中,faas平台201还包括功能发布器210。功能发布器210包括这样的功能块:可配置成将功能添加到功能目录208中。功能发布器210可使用由意图剖析器207准备的意图分类来在功能目录208中发布功能连同例如关于与功能有关的定价、访问等级和其它元数据信息(如版本、地理可用性等)的信息。
34.图3示出根据一些实施例的用于使得第三方开发者能够使用功能即服务平台中的功能的方法。图3中所示的方法可由图1中所示的faas平台执行。
35.在步骤301中,该方法包括在功能目录中存储与可用于供第三方开发者使用的一个或多个功能相关联的一个或多个相应的功能描述,其中每个功能描述包括相应功能的意图和功能名称。例如,功能目录可以是图2中所示的功能目录208。
36.功能描述可包括足够的信息以允许faas平台201调用与功能描述相关联的功能。例如,功能描述中的功能名称可包括远程过程调用(rpc)存根。
37.s功能的意图可包括该功能做什么的指示。作为示例,可设想这样的第一功能:配置成接收列表作为输入并输出列表的排序版本作为输出。例如,第一功能可配置成使用快速排序方法来对列表进行排序。
38.因此,第一功能的意图可精简为第一等级的“排序”的意图和第二(更细粒度)等级的“快速排序”的意图。换句话说,在该示例中,第一功能的意图是排序,并且更具体地,是执行快速排序。
39.在步骤302中,该方法包括从第一功能开发者接收包括第一意图的指示的功能调用。
40.在步骤303中,该方法包括从功能目录中选择与第一意图匹配的第一功能描述。
41.例如,步骤303可包括从功能目录中找到与第一意图匹配的一个或多个候选功能描述。如果候选功能描述中的意图在被实现时会提供第一意图,那么该候选功能描述可与第一意图匹配。换句话说,第一意图可以是“排序”,并且输入参数可以是列表。具有包括两个等级(例如,如上所述的“排序”和“快速排序”)的意图的、存储的功能描述可视为与第一意图匹配,这是因为当实现存储的功能时提供“排序”的意图。
42.在步骤304中,该方法包括从一个或多个候选功能描述中选择第一功能描述。
43.例如,在一些情况下,可能有多于一个存储的功能具有与第一意图匹配的意图。例如,具有意图“排序”和“快速排序”的第一存储的功能和具有意图“排序”和“堆排序”的第二存储的功能均可视为与第一意图“排序”匹配。
44.因此,在步骤303中找到多于一个候选功能描述的情况下,可从一个或多个候选功能描述中选择第一功能描述。例如,如下文参考图9所描述的,这可由动态功能映射器209执行。
45.在一些示例中,步骤301可包括从第二功能开发者接收第二功能的功能源代码,其中,功能源代码包括功能名称和第二功能的第二意图。然后,该方法还可包括:从功能源代码中提取第二意图;以及将包括第二意图和功能名称的第二功能描述存储在功能目录中。特别地,例如,如下文参考图4所示的,图2中所示的意图剖析器207可配置成从功能源代码中提取第二意图。
46.例如,如下文参考图5所示的,功能发布器210可配置成将第二功能描述存储在功能目录中。
47.图4至图6涉及发布新功能以由第三方开发者使用基于意图的调用来发现。
48.图4示出用于从功能源代码中提取第二意图的方法。该方法可由图2中所示的意图剖析器207执行。
49.在步骤401中,意图剖析器207接收第二功能的功能源代码。
50.在步骤402中,意图剖析器207剖析功能源代码。
51.示例性功能源代码可在源代码的一行中包括以下结构:《key_word》.《third_party_id》.《intent_levell_0》.《intent_level_1》.《intent_level_n》.《functionname》。
52.在一些示例中,意图剖析器执行步骤403。在步骤403中,意图剖析器在功能源代码中搜索这样的关键字:指示将使第二功能可供其他功能开发者使用。在以上示例中,关键字《key_word》可指示将使第二功能可供其他功能开发者使用。
53.在一些示例中,可响应于在功能源代码中找到关键字来执行以下步骤404和405。
54.在步骤404中,该方法包括从功能源代码中提取第二意图的元素。在上文示出的示例中,第二意图可包括以下部分:源代码的《intent_levell_0》.《intent_level_1》. 《intent_level_n》。
55.如前所述,可根据一个或多个粒度越来越细的意图等级来表示意图。在以上示例中,第一意图等级《intent_levell_0》可指示比第二意图等级《intent_level_1》更粗粒度的意图。然后,意图等级的粒度可能变得越来越细,直到《intent_level_n》。例如,《intent_levell_0》可以是“排序”,然后,《intent_level_1》可以是例如“快速排序”、“堆排序”或“冒泡排序”等。
56.《third_party_id》可指示提供第二功能的开发者的身份。
57.《functionname》可指示第二功能的名称。然后,《functionname》可用于存储第二功能的第二功能描述并且稍后调用第二功能。
58.步骤404还可包括提取第二功能的一个或多个输入参数类型和第二功能的一个或多个输出参数类型的指示以及与第二功能相关联的任何其它元数据。
59.在步骤405中,该方法包括向功能发布器转发在步骤404中提取的第二意图。步骤405还可包括转发第二功能的一个或多个输入参数类型和第二功能的一个或多个输出参数类型以及任何其它元数据。
60.图5示出用于将第二功能描述存储在功能目录中的方法。图5的方法可由图2中所示的功能发布器210执行。
61.在步骤501中,功能发布器210从意图剖析器接收第二意图。在步骤501中,功能发布器还可接收第二功能的一个或多个输入参数类型和第二功能的一个或多个输出参数类型和/或与第二功能相关联的任何其它元数据。
62.在步骤502和503中,功能发布器210确定功能目录是否已经包括含有第二意图的第三功能描述。
63.例如,在步骤502中,功能发布器基于第二意图准备层级搜索查询,并搜索功能目录以找到具有相同意图的目录条目。
64.因此,在上文示出的示例中,功能发布器会搜索具有与第二意图匹配的意图的目录条目:《intent_levell_0》.《intent_level_1》.《intent_level_n》。
65.然后,在步骤503中,功能发布器210确定搜索是否已经成功。
66.功能目录可包括这样的存储库:存储可使用基于意图的功能调用来调用的功能。
67.图6示出维护意图层级映射的功能目录的示例。
68.在该示例中,功能目录维护意图层级映射。与通过意图等级分解的层级树的分支相关联地存储每个目录条目601a至601r。
69.例如,层级树的分支可与意图等级1=a(其中a是某个意图功能,例如“排序”)相关联。在一些情况下,由功能源代码指定的意图可能只包括一个等级,并且在那些情况下,会
与层级树的这个分支相关联地存储功能的目录条目。然而,在这种情况下,另外的意图等级与意图等级1=a分支相关联。例如,还存在意图等级2=b以及意图等级3=c等。
70.因此,在该示例中,目录条目601a至601d包括与意图等级0=“a”、意图等级1=“b”、意图等级2=“c”和意图等级3=“d”相关联的功能描述。
71.以类似的方式,目录条目601e至601h与意图等级0=“e”、意图等级1=“f”、意图等级2=“g”和意图等级3=“h”相关联。其中,等级“e”至“h”以越来越细的粒度定义功能意图。
72.目录条目601i和601j与意图等级0=“e”、意图等级1=“f”和意图等级2=“g”相关联。因此,由这些功能定义的意图比目录条目601e至601h粒度更粗。
73.其余的目录条目601k至601r类似地与层级树中的意图等级相关联。
74.以这种方式存储目录条目可节省功能目录中的存储(memory),这是因为不必对每个目录条目重复与功能的意图有关的信息。
75.与功能数据库一起,功能目录还存储不同语言的功能的rpc存根,这可能是以下操作所需要的:从另一个用不同的语言定义但使用基于意图的调用的功能来调用功能。
76.功能目录还可存储与功能中的每个功能相关联的元数据,它可用于在将基于意图的调用动态地映射到功能时决定。元数据信息可包括与定价、地理可用性、运行时统计和任何其它相关信息有关的信息。
77.返回到图5,响应于确定功能目录包括含有第二意图的第三功能描述(例如,响应于在步骤503中确定搜索成功),该方法转到步骤504,在步骤504中,功能发布器210将第二功能描述存储在与第二意图相关联的第三功能描述旁边。
78.例如,参考图6,如果第二意图等于意图等级1=“e”、意图等级2=“f”和意图等级3=“g”,那么会将第二功能描述存储在目录条目601i和601j旁边。
79.备选地,响应于确定功能目录不包括含有第二意图的第三功能描述,该方法转到步骤505,在步骤505中,功能发布器210存储与第二意图相关联的第二功能描述。例如,如果第二意图是意图等级0=“e”和意图等级1=“f”,但是没有明确是该意图等级2=“g”,那么可与意图等级1=“f”相关联地存储第二功能描述。
80.在一些示例中,第二意图可包括尚未存储在功能目录中的意图等级。在这些示例中,可创建功能目录树的新分支。
81.例如,第二意图可等于意图等级0=“e”、意图等级1=“f”和意图等级2=“o”。在该示例中,可在意图等级1=“f”附近(off)创建新分支,其中意图等级2=“o”。
82.在步骤506中,功能发布器可将与第二功能相关联的任何元数据添加到第二功能描述中,然后将其存储在功能目录中。
83.在步骤507中,功能发布器210可以用不同的语言来为第二功能创建一个或多个rpc存根,并且可将rpc存根存储在第二功能描述中。
84.在步骤508中,功能发布器将第二功能描述适当地插入到功能目录中。
85.图7至图9涉及发布的功能的基于意图的调用。
86.图7示出用于预处理由第一功能开发者定义的功能源代码的方法。图7的方法可由图2中所示的功能预处理器205执行。
87.图7中所示的方法可在开发者已经编写功能之后执行,或者它可在开发者正在实时编写功能时定期运行,以处理和分析是否正在将基于意图的功能调用写入到功能中。
88.特别地,图3的步骤302可包括以下步骤701的特征。
89.在步骤701中,功能预处理器205剖析由第一功能开发者编写或正在编写的功能的源代码。功能的源代码可包括来自第一功能开发者的功能调用,功能调用包括第一意图的指示。因此,功能的源代码中的功能调用可以是调用第三部分以在第一功能开发者已经编写或正在编写的功能内使用。
90.在步骤702中,功能预处理器205可在功能的源代码中搜索关键字。关键字可指示:功能正在打算使用意图调用来调用第三方功能。取决于第一功能开发者正在用于编写功能的语言,关键字可采取不同的形式。特别地,关键字可设计成对于第一功能开发者是直观的。
91.在步骤703中,功能预处理器205可从功能调用中提取意图的元素。
92.功能调用可以是如下结构:《key_word》.《third_party_id》.《level_0_intent》.《level_1_intent》.《level_n_intent》.call([param1, param2, ...., paramn], [returnparam1, returnparam2, ..., returnparamn], [additional_constraint])。
[0093]
这里,《key_word》指示:功能正在打算使用意图调用来调用第三部分功能。《third_party_id》是可选参数,它指示第三方开发者的身份,该调用正在打算调用第三方开发者的功能。参数《level_0_intent》、《level_1_intent》和《level_n_intent》指示开发者想要调用的功能的第一意图。第一意图包括意图等级,如上所述。
[0094]
将第一功能开发者想要调用的功能的输入参数的类型列为([param1, param2, ..., paramn);并且将第一功能开发者想要调用的功能的预期输出参数类型列为[returnparam1, returnparam2, ..., returnparamn]。
[0095]
功能调用还可包括由第一功能开发者指示的与要调用的功能有关的一个或多个附加约束。例如,附加约束可涉及例如利用调用的功能的成本、调用的功能的位置、调用的功能的操作速度或可能与调用的功能相关联的任何其它元数据。
[0096]
遵照上文描述的格式的、基于意图的调用的示例会是:third_party_fn.ericsson.sort.quic_sort.call([original_list], [sorted_list], ["location": "se"])这里:《key_word》 == third_party_fn《third_party_id》 == ericsson《level_0_intent》 == sort《level_1_intent》 == quic_sort《param1》 == original_list(这是功能的输入,可从该变量导出数据类型)《returnparam1》 == sorted_list(这是来自功能的输出,可从该变量导出数据类型)《additional_constrain》 == "location": "se"(这是指示预期功能应当能够在location: se内部运行的约束的示例)另一个示例:third_party_fn.*.sort.*.call([_list], [sorted_list], ["location": "
se", "price": "lowest"])这里,意图是找到来自任何供应商的排序算法和任何排序方法(快速、堆、冒泡),其约束为它必须在se中运行并且启用它应当是便宜的。
[0097]
以下提供基于意图的功能调用的另一个示例:third_party_fn.*.hash.sha-2.512-bits.call([message, len], [digest], ["time": "fastest"])这里,开发者正在试图启用使用具有512位摘要的sha-2标准的散列功能;开发者还将要散列的消息和消息的长度作为输入参数进行传递,并期望将digest作为返回值。开发者还已经规定:选择要启用的功能应当是最快速的可用实现;还在以上示例中,开发者已经对《third_party_id》使用通配符

*’以规定:faas平台可从任何可用的第三方开发者中选择功能。
[0098]
在步骤704中,功能预处理器启用意图解析器206以检索与第一意图匹配的候选第三方功能。例如,功能预处理器可向意图解析器传送第一意图。功能预处理器还可传送在功能调用中指示的其它参数。
[0099]
在步骤705中,响应于意图解析器206找到一个或多个候选功能,功能预处理器可向第一功能开发者指示:潜在的第三方功能可用于实现在第一功能开发者已经编写或正在编写的功能的源代码中的功能调用。
[0100]
图8示出用于从功能目录中找到与第一意图匹配的一个或多个候选功能描述的方法。图8中所示的方法可由图2中所示的意图解析器206执行。
[0101]
在步骤801中,意图解析器206基于第一意图准备搜索查询。例如,在如图6中所示、功能目录包括层级映射的情况下,搜索查询可包括基于第一意图中的意图等级的粒度顺序的层级搜索查询。
[0102]
在步骤802中,意图解析器206搜索功能目录208以找到与第一意图匹配的候选功能描述。对于其中使用层级映射作为功能目录的示例,意图解析器可在层级映射中定位第一意图,并且可选择与第一意图相关联地存储的任何目录条目作为与第一意图匹配的候选功能。
[0103]
例如,假定第一意图指定意图等级0=“e”、意图等级1=“f”、意图等级2=“g”。在该示例中,从图6中所示的层级映射,意图解析器可确定目录条目601i和601j与第一意图匹配。意图解析器还可确定目录条目601e至601h也与第一意图匹配,这是因为它们也提供相同的前三个意图等级。
[0104]
在一些示例中,意图解析器可能只搜索由在功能调用中指示的第三方开发者提供的功能描述。
[0105]
在步骤803中,意图解析器206可以可选地测试一个或多个候选功能描述,以检查一个或多个候选功能描述的预期功能性。例如,意图解析器可将在功能调用中指示的输入参数输入到一个或多个候选功能中,并且可检查由具有预期输出类型的一个或多个候选功能返回的输出。
[0106]
在步骤804中,意图解析器206可过滤在步骤802中找到的一个或多个候选功能。例如,意图解析器可基于在功能调用中指示的一个或多个附加约束来过滤候选功能。例如,如果功能调用包括功能应当尽可能便宜的附加约束,那么意图解析器可能只选择最便宜的候
选功能。
[0107]
在步骤805中,意图解析器206向动态功能映射器209传送其余的候选功能的列表。在一些示例中,意图解析器206还可传送存储在功能目录中的与候选功能相关联的任何元数据。
[0108]
图9示出用于调用第一功能的方法。图9中所示的方法可由图2中所示的动态功能映射器209执行。
[0109]
在步骤901中,动态功能映射器209从意图解析器206接收候选功能的列表。
[0110]
在步骤902中,动态功能映射器从一个或多个候选功能中选择第一功能描述。在一些示例中,从一个或多个候选功能描述中选择第一功能描述可基于在功能调用中包括的附加约束。
[0111]
在步骤903中,动态功能映射器可确保第一功能可被启用。如果第一功能不可被启用,则动态功能映射器可经历一些过程以确保第一功能可被启用,或者可从候选功能中的一个或多个候选功能中选择不同的功能。
[0112]
在步骤904中,动态功能映射器209使用第一功能描述中的第一功能名称和在功能调用中指示的一个或多个输入参数来调用第一功能。例如,动态功能映射器可将来自功能调用的输入参数编组(marshall)到第一功能的rpc调用上。
[0113]
在步骤905中,动态功能映射器209等待第一功能的调用,并从第一功能接收第一功能的一个或多个输出。
[0114]
在步骤906中,动态功能映射器209对第一功能的一个或多个输出进行解编(unmarshall)。
[0115]
在步骤907中,动态功能映射器209向第一功能开发者传送一个或多个输出。例如,动态功能映射器可将一个或多个输出填充到功能调用的返回变量中。
[0116]
图10示出包括处理电路(或逻辑)1001的功能即服务(faas)平台1000。将认识到,faas平台1000可包括运行不同软件和/或进程的一个或多个虚拟机。因此,faas平台1000可包括一个或多个服务器、交换机和/或存储装置,和/或可包括运行软件和/或进程的云计算基础设施。
[0117]
faas平台1000可包括如上所述的faas平台310。处理电路1001控制faas平台1000的操作,并且可实现本文中关于faas平台1000描述的方法。处理电路1001可包括配置或编程成以本文中描述的方式控制faas平台1000的一个或多个处理器、处理单元、多核处理器或模块。在特定实现中,处理电路1001可包括多个软件和/或硬件模块,它们各自配置成执行或用于执行本文中关于faas平台1000或faas平台310描述的方法的各个或多个步骤。
[0118]
简要地,fass平台1000的处理电路1001配置成:在功能目录中存储与可用于供第三方开发者使用的一个或多个功能相关联的一个或多个相应的功能描述,其中每个功能描述包括相应功能的意图和功能名称;从第一功能开发者接收包括第一意图的指示的功能调用;以及从功能目录中选择与第一意图匹配的第一功能描述。
[0119]
在一些实施例中,faas平台1000可以可选地包括通信接口1002。faas平台1000的通信接口1002可用于与诸如其它虚拟节点的其它节点通信。例如,faas平台1000的通信接口1002可配置成向其它节点或网络功能传送和/或从其它节点或网络功能接收请求、资源、信息、数据、信号或类似物。faas平台1000的处理电路1001可配置成控制faas平台1000的通
信接口1002以向其它节点或网络功能传送和/或从其它节点或网络功能接收请求、资源、信息、数据、信号或类似物。
[0120]
可选地,faas平台1000可包括存储器1003。在一些实施例中,faas平台1000的存储器1003可配置成存储程序代码,faas平台1000的处理电路1001可执行该程序代码以执行本文中关于faas平台1000或faas平台310描述的方法。备选地或另外地,faas平台1000的存储器1003可配置成存储本文中描述的任何请求、资源、信息、数据、信号或类似物。faas平台1000的处理电路1001可配置成控制faas平台1000的存储器1003以存储本文中描述的任何请求、资源、信息、数据、信号或类似物。
[0121]
应当注意,上述实施例说明而非限制本发明,并且在不偏离随附权利要求书的范围的情况下,本领域技术人员将能够设计许多备选实施例。词语“包括”不排除存在与权利要求中列出的元件或步骤不同的元件或步骤,“一”或“一个”不排除多个,并且单个处理器或其它单元可实现在权利要求书中记载的若干个单元的功能。权利要求书中的任何参考符号不应解释为限制其范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献