CN111095212A - 管理功能执行环境的分布式网络 - Google Patents
管理功能执行环境的分布式网络 Download PDFInfo
- Publication number
- CN111095212A CN111095212A CN201880060764.6A CN201880060764A CN111095212A CN 111095212 A CN111095212 A CN 111095212A CN 201880060764 A CN201880060764 A CN 201880060764A CN 111095212 A CN111095212 A CN 111095212A
- Authority
- CN
- China
- Prior art keywords
- execution
- endpoint
- function
- endpoints
- feature
- 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
Links
- 230000004044 response Effects 0.000 claims abstract description 89
- 238000000034 method Methods 0.000 claims abstract description 59
- 230000006870 function Effects 0.000 claims description 492
- 238000003860 storage Methods 0.000 claims description 35
- 239000008186 active pharmaceutical agent Substances 0.000 description 65
- 238000009826 distribution Methods 0.000 description 26
- 230000015654 memory Effects 0.000 description 26
- 239000004744 fabric Substances 0.000 description 18
- 238000004891 communication Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000013499 data model Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 9
- 238000013507 mapping Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 238000013021 overheating Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
用于管理功能执行环境的分布式网络的系统、方法和计算机可读介质。在一些示例中,功能路由器在执行端点和功能的目录上注册多个执行端点,多个执行端点中的每个执行端点包括能够执行一个或多个功能的相应运行时环境。功能路由器从客户端接收执行特定功能的请求,并基于该请求向目录查询特定功能以及与特定功能相关联的执行端点。功能路由器接收标识与特定功能相关联的一个或多个执行端点的查询响应,并基于与该请求相关联的一个或多个标准来选择用于执行特定功能的执行端点。然后,功能路由器向客户端发送标识所选择的用于执行特定功能的执行端点的响应。
Description
相关申请交叉引用
本申请要求于2017年7月20日提交的题为“MANAGING A DISTRIBUTED NETWORK OFFUNCTION EXECUTION ENVIRONMENTS(管理功能执行环境的分布式网络)”的美国临时专利申请No.62/534,996和于2017年11月08日提交的题为“MANAGING A DISTRIBUTED NETWORKOF FUNCTION EXECUTION ENVIRONMENTS(管理功能执行环境的分布式网络)”的美国非临时专利申请No.15/806,702的权益和优先权。两个申请的整体内容通过引用明确结合于此。
技术领域
本技术通常涉及无服务器计算。
背景技术
云计算在“云”中聚合物理和虚拟计算、存储、和网络资源,并为客户提供利用聚合资源的方法。通常,云提供商管理基础设施和资源,从而减轻了客户的负担。云计算模型允许开发人员部署应用,并越来越多地将管理应用的基础设施和资源的负担转移到云提供商。例如,无服务器计算提供了云计算执行模型,该模型允许开发人员构建应用并将基础设施和资源分配职责外包给云提供商。用于运行开发人员应用的底层基础设施由云提供商托管和管理。
无服务器计算通常被提供作为用于运行客户端代码的服务。客户端将代码上载到云,然后云管理用于运行代码的资源。响应于被配置为触发代码的事件,云执行代码。客户端基于代码执行所消耗的计算时间向云提供商支付费用。因此,无服务器计算可以简化开发人员的应用部署。但是,不幸的是,无服务器计算框架降低了控制和可见性。例如,客户端对执行环境几乎没有控制,并且实施策略的能力有限。此外,无服务器计算框架可能容易出现延迟问题,这通常取决于执行环境的位置以及业务所经过的(一个或多个)底层网络。
附图说明
为了描述可以获得本公开的上述和其他优点和特征的方式,将通过参考其在附图中示出的具体实施例对以上简要描述的原理进行更具体的描述。要理解,这些附图仅描绘了本公开的示例性实施例,因此不应被认为是对其范围的限制,通过使用附图,以附加的特征和细节来描述和解释本文的原理,其中:
图1A示出了示例云计算环境;
图1B示出了示例雾计算环境;
图2示出了示例网络架构的示意图;
图3示出了用于在执行环境中执行功能的示例流程;
图4示出了示例功能即服务(FaaS)用例的图;
图5A示出了用于将执行端点注册在用于分布式功能路由的目录中的示例流程;
图5B示出了用于轮询执行端点以获取用于分布式功能路由的信息的示例流程;
图5C示出了用于在分布式功能路由框架中执行功能的示例流程;
图6A示出了用于分布式功能路由的示例平台架构的框图;
图6B示出了用于分布式功能路由的示例数据模型;
图7示出了功能分发网络中的示例分布式功能路由应用的图;
图8A示出了用于服务容器的示例平台;
图8B示出了示例虚拟机(VM)部署的示意图;
图9示出了用于托管运行FaaS环境的服务容器的示例架构;
图10示出了用于功能分发网络中的分布式功能路由的示例方法;
图11示出了根据各种实施例的示例网络设备;以及
图12示出了示例系统实施例。
具体实施方式
下面详细讨论本公开的各种实施例。虽然讨论了具体的实现方式,但是应该理解,这样做仅出于说明的目的。相关领域的技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其他组件和配置。因此,以下描述和附图是说明性的,并且不应解释为限制性的。描述了许多具体细节以提供对本公开的透彻理解。然而,在某些情况下,没有描述众所周知的或常规的细节,以避免使描述不清楚。
如本文所使用的,“一个实施例”或“实施例”可以指代相同的实施例或任何(一个或多个)实施例。此外,提及“一个实施例”或“实施例”意味着结合该实施例描述的特定的特征、结构或特性被包括在本公开的至少一个实施例中。说明书中各个地方出现的短语“在一个实施例中”不一定全部指的是同一实施例,也不是与其他实施例互斥的单独或替代的实施例。本文参考一个实施例描述的特征可以与参考任何实施例描述的特征结合。
在本公开的上下文和其中使用每个术语的特定上下文中,在本说明书中使用的术语通常具有本领域中的普通含义。替代语言和同义词可以用于本文所讨论的任何一个或多个术语,并且关于该术语是否在本文中得到阐述或讨论,不应有特殊意义。在某些情况下,会提供某些术语的同义词。对一个或多个同义词的记载不排除对其他同义词的使用。本说明书中任何地方对示例的使用,包括本文讨论的任何术语的示例,都是说明性的并不意图限制本公开或任何示例术语的范围和含义。同样,本公开不限于本公开中描述的特定实施例或示例。
在无意于限制本公开的范围的情况下,下面提供了仪器、装置、方法及其相关功能的示例。为了方便读者,可以在示例中使用标题或副标题,并且绝不应该限制本公开的范围。除非另有定义,否则本文使用的技术和科学术语具有与本公开所属领域的普通技术人员通常所理解的含义。在发生冲突的情况下,以本文档和所包含的定义为准。
本公开的附加特征和优点将在下面的描述中阐述,并且部分地从该描述中被认识到,或者可以通过实践本文所公开的原理来获悉。本公开的特征和优点可以通过本文特别指出的仪器手段和组合来实现和获得。本公开的这些和其他特征将根据以下描述和所附权利要求而变得更加显而易见,或者可以通过实践本文阐述的原理来获悉。
概述
公开了用于管理功能执行环境的分布式网络的系统、方法和计算机可读介质。在一些示例中,功能路由器可以被部署为管理功能执行环境的分布式网络。功能路由器可以包括提供注册和管理执行端点、FaaS(功能即服务)服务、功能、客户端、位置、路由规则等的设备和/或服务。功能路由器可以从客户端接收用于功能执行的请求,并将其动态路由到“最佳”端点以基于一个或多个规则来执行该功能。
例如,功能路由器可以在执行端点和功能的目录上注册多个执行端点。执行端点可以包括能够运行功能的任何计算机系统。每个执行端点可以包括用于执行一个或多个功能的相应运行时(runtime)环境。执行端点可以驻留在不同的网络上,例如一个或多个本地网络、云网络、区域网络等。
功能路由器还可以维护可用于在分布式网络中执行的功能的目录。功能的目录可以是执行端点的目录的一部分,或者是可以与执行端点的目录相关或映射到执行端点的目录的分离的目录。因此,目录可以标识分布式网络中可用于执行的功能以及可用于执行功能的执行端点。功能可以包括代码的一部分。该代码可以表示,例如,短暂的、自包含的逻辑或操作集。功能可以在被调用和执行时执行一个或多个特定任务,并随后在执行完成时变为休眠状态(但准备就绪)。
功能路由器可以从客户端接收执行特定功能的请求,并基于该请求向目录查询与特定功能相关联的执行端点。功能路由器可以查询目录以标识特定功能、用于执行特定功能的一个或多个执行端点、以及有关执行端点的信息。客户端可以包括试图在执行端点上执行功能的设备和/或应用。
功能路由器可以从目录接收查询响应,标识与特定功能相关联的一个或多个执行端点,并从与特定功能相关联的一个或多个执行端点中选择用于执行特定功能的执行端点。在选择了用于执行特定功能的执行端点之后,功能路由器可以向客户端发送响应,该响应标识所选择的用于执行特定功能的执行端点。
功能路由器可以基于与来自客户端的请求相关联的一个或多个标准来选择执行端点。一个或多个标准可以包括例如相应的可用性、相应的成本、相应的安全性等级、相应的性能等级、相应的位置等。一个或多个标准还可以包括一个或多个功能路由规则。
功能路由规则可以包括定义功能执行的各个方面(例如,何人、何事、何时、何地、为何、和/或如何)的策略和控制。规则可以包括影响整个系统的护栏,以及针对特定功能指定的任何规则。示例功能路由规则可以包括:功能A可以在任何端点上运行,而功能B必须仅在专用端点上运行,或者功能A可以由特定位置中的任何客户端调用,而功能B仅可以由任何位置中的特定客户端调用。
在一些示例中,功能路由器可以基于执行端点和/或客户端的位置来选择执行端点。例如,功能路由器可以基于客户端的相应接近度以及与特定功能相关联的一个或多个执行端点中的每个执行端点来选择执行端点。位置可以包括物理、地理、和/或逻辑位置(例如,建筑物、楼层、区域、网络等)。在某些情况下,位置可以与特定的纬度和经度坐标相关联。例如,位置可以指代特定的纬度和经度坐标,该纬度和经度坐标对应于客户端应用所在的生产车间(manufacturing floor)、FaaS设备所在的会议室、或与执行环境相关联的区域。
示例实施例说明
所公开的技术满足了本领域对无服务器应用和FaaS(功能即服务)服务的需求。本技术涉及用于有效地和高效地创建用于FaaS和无服务器应用的功能执行环境的分布式网络的系统、方法和计算机可读介质。例如,本文中的方法可以利用云中和云外部的可用硬件设备来创建功能执行环境的分布式网络,其可以用于将对无服务器应用的作业请求智能地路由到云内或外部的最佳执行环境,以便在执行FaaS服务时提高性能并降低延迟。
本公开以对示例网络环境和架构的描述开始,该示例网络环境和架构可以针对FaaS和无服务器计算而实现,如图1A、1B和2所示。然后将是对FaaS和无服务器计算以及用于创建功能执行环境的分布式网络的机制的讨论,如图3-10所示。讨论以对示例设备的描述结束,如图11和12所示,包括可用于执行计算操作的各种硬件组件。现在,本公开转向图1A。
图1A示出了示例云计算环境100的图。该环境可以包括云102。云102可以包括一个或多个私有云网络、公共云网络、和/或混合云网络。云102可以包括云元件104-114。云元件104-114可以包括例如服务器104、虚拟机(VM)106、软件平台108、应用或服务110、软件容器112、和基础设施资源114(例如,存储设备、存储器、CPU、网络接口等)。基础设施114可以包括各种类型的硬件组件或资源。例如,基础设施资源114可以包括计算资源、存储资源、网络资源、管理系统、控制器、路由器等。
云102可以经由云元件104-114中的一个或多个来提供云计算服务,例如,软件即服务(SaaS)(例如,协作服务、电子邮件服务、企业资源计划服务、内容服务、通信服务等)、基础设施即服务(IaaS)(例如,安全服务、联网服务、系统管理服务等)、平台即服务(PaaS)(例如,web服务、流服务、应用开发服务等)、功能即服务(FaaS)、和其他类型的服务,例如桌面即服务(DaaS)、信息技术管理即服务(ITaaS)、被管理软件即服务(MSaaS)、移动后端即服务(MBaaS)等。
例如,云102可以经由元件104-114托管用于FaaS和无服务器计算的执行环境。客户端或开发人员可以将功能或任何代码存储在云102上,以供响应于诸如与功能相关联的作业请求之类的触发事件而经由元件104-114在云102处执行。云102可以托管和管理元件104-114和FaaS功能,这允许特定的客户端或开发人员避免必须管理针对与由云102提供的FaaS服务相关联的功能的基础设施和资源。
本地端点116可以与云102连接以获得来自云102的一个或多个特定服务。本地端点116可以经由一个或多个公共网络(例如,互联网)、专用网络、和/或混合网络(例如,虚拟专用网)与元件104-114通信。本地端点116可以包括具有联网能力的任何设备,例如,膝上型计算机、平板计算机、服务器、台式计算机、智能电话、网络设备(例如,接入点、路由器、交换机等)、智能电视、智能汽车、传感器、GPS设备、游戏系统、智能可穿戴对象(例如,智能手表等)、消费者对象(例如,互联网冰箱、智能照明系统等)、城市或运输系统(例如,交通控制、收费系统等)、物联网(IoT)设备、摄像头、网络打印机、运输系统(例如,飞机、火车、摩托车、轮船等)、或任何智能或连接的对象(例如,智能家居、智能建筑、智能零售、智能眼镜等)等等。
图1B示出了另一示例计算环境的图。在该示例中,示例计算环境是雾计算环境150。雾计算环境150可以包括云层154和雾层156,其中云层154包括云102和任何其他云系统或环境,雾层156包括雾节点162。本地端点116可以与云层154和/或雾层156通信。雾计算环境150可以包括云层154、雾层156、和本地端点116之间的一个或多个通信链路152。通信可以向上流向云层154和/或向下流向本地端点116。
雾层156或“雾”提供与云102类似但更接近端点(例如,本地端点116)的计算、存储和/或联网功能。雾层156因此可以扩展云102或由云102提供的能力,以更接近本地端点116。本地端点116除了云102之外还可以访问来自雾层156的数据和/或资源。雾层156因此可以向本地端点116提供用于服务和/或资源的附加选项,其可以位于更靠近本地端点116的位置并且可以提供不同的性能、成本、延迟等。在某些情况下,因为雾层156比云102更靠近本地端点116,所以它可以与更高的性能、更低的延迟等相关联。
雾层156中的雾节点162可以表示雾设备,其可以驻留在一个或多个雾网络中。在一些示例中,雾节点162可以向本地端点116提供本地或区域服务和/或连接性。因此,可以将业务和/或数据从云102卸载到雾层156(例如,经由一个或多个雾节点162),这在某些情况下可以提供到本地端点116的更快的服务和/或连接性以及其他优势,例如更低的延迟、将数据保留在(一个或多个)本地或区域网络内的安全性益处等。
雾节点162可以包括具有联网能力的任何计算设备,例如,服务器、交换机、路由器、控制器、摄像头、接入点、信息亭(kiosk)、网关、IoT设备等。此外,雾节点162可以部署在任何网络和地理位置,例如工厂车间、电线杆、铁轨、车辆、石油钻塔、机场、飞机、购物中心、医院、公园、停车场、图书馆、街道等。
雾节点162可以部署在网络中,也可以部署作为独立节点或单独节点。此外,雾节点162中的一个或多个可以经由链路164彼此互连,链路164可以包括例如网络(例如,有线和/或无线)和/或电子连接。在一些配置中,可以在特定的雾实例158、160内部署一个或多个雾节点162。雾实例158、160可以是本地或区域网络,例如本地或区域雾网络、本地或区域云网络、本地或区域分支网络等。例如,雾实例158、160可以是区域云或数据中心、局域网、雾网络等。
在某些情况下,一个或多个雾节点162可以是移动节点。移动节点可以移动到不同的地理位置、逻辑位置或网络、和/或雾实例,并同时保持与云层154、雾层156、和/或本地端点116的连接性。例如,雾节点可以放置在诸如飞机或火车之类的交通工具中,其可以从一个地理位置和/或逻辑位置行进到另一地理位置和/或逻辑位置。在该示例中,特定雾节点可以在位于起始位置处时连接到与云154的特定的物理和/或逻辑连接点,而在位于目的地位置处时切换到与云154的不同的物理和/或逻辑连接点。因此,特定的雾节点可以在特定的云和/或雾实例内移动,并因此在不同的时间为来自不同位置的端点服务。
图2示出了示例网络架构200的示意性框图。在某些情况下,架构200可以支持和/或托管云102。架构200包括具有脊设备202A、202B、……、202N(统称为“202”)的网络结构212,其中脊设备连接到网络结构212中的叶设备204A、204B、204C、……、204N(统称为“204”)。脊设备202和叶设备204可以是层2和/或层3设备,例如交换机或路由器。为了清楚起见,它们在本文中将被称为脊交换机202和叶交换机204。
脊交换机202连接到结构212中的叶交换机204。叶交换机204可以包括接入端口(或非结构端口)和结构端口。结构端口可以提供到脊交换机202的上行链路,而接入端口可以为设备、主机、端点、VM、外部网络等提供到结构212的连接性。
叶交换机204可以驻留在结构212中,并且可以驻留在租户或客户空间中或连接到租户或客户空间。叶交换机204可以路由和/或桥接租户分组并应用网络策略。在某些情况下,叶交换机可以执行一个或多个附加功能,例如,实现映射缓存、在缓存中存在未命中时将分组发送到代理功能、封装分组、实施入口或出口策略等。
在某些情况下,叶交换机204可以包含虚拟交换和/或隧道功能,例如虚拟隧道端点(VTEP)功能。例如,叶交换机204可以将结构212连接到软件定义网络或覆盖网络(例如,VXLAN网络)。叶交换机204可以在结构212与一个或多个逻辑网络或段之间提供分组的封装和/或解封装。
结构212中的网络连接性可以流过叶交换机204。叶交换机204可以向服务器、资源、端点、外部网络、容器或VM提供对结构212的访问,并且可以将叶交换机204彼此连接。叶交换机204可以将应用和/或端点组(“EPG”)连接到在结构212内部或外部的其他资源以及任何外部网络。
端点210A-E(统称为“210”)可以通过叶交换机204连接到结构212。例如,端点210A和210B可以直接连接到叶交换机204A,叶交换机204A可以将端点210A和210B连接到结构212和/或任何其他叶交换机204。类似地,端点210E可以直接连接到叶交换机204C,叶交换机204C可以将端点210E连接到结构212和/或任何其他叶交换机204。端点210C和210D可以通过网络206连接到叶交换机204A和204B。此外,广域网(WAN)208可以连接到叶交换机204N。
端点210可以包括任何通信设备或资源,诸如计算机、服务器、集群、交换机、软件容器、VM、服务设备、虚拟计算环境等。在某些情况下,端点210可以包括配置有虚拟隧道端点功能的服务器或交换机,该功能将覆盖网络与结构212连接。例如,在某些情况下,端点210可以表示具有虚拟隧道端点能力的主机(例如,服务器),在逻辑网络中托管虚拟应用或设备的运行虚拟环境(例如,管理程序、(一个或多个)虚拟机、容器等)。与端点210相关联的覆盖网络可以托管物理设备,例如,服务器;应用;逻辑网络;虚拟工作负载;等等。同样,端点210也可以托管应用和虚拟工作负载,它们可以与结构212或任何其他设备或网络(包括外部网络)连接。
已经公开了示例网络环境和架构,现在本公开转向对无服务器计算和FaaS运行时的讨论。
利用无服务器计算,开发人员或用户可以将代码上载到计算系统(例如,无服务器计算平台或环境),并且计算系统可以在需要时配设物理和/或虚拟资源来运行代码。开发人员或用户可以避免必须设置主机或工作人员(即,联网的硬件资源,包括计算、存储和网络资源)来执行代码。无服务器计算环境的提供商可以基于将要执行的计算的规范来管理资源,包括何时开始(和停止)使用这些资源。因此,底层基础设施对于不需要购买、配设、或管理用于执行代码的资源的开发人员或用户是隐藏的。
图3示出了在示例无服务器配置中执行的功能的示例图。在该示例中,执行环境306可以存储与客户端302(例如,应用)相关联的功能310,当执行环境306检测到被定义为功能310的触发308的事件304时,该功能可以被执行或计算。响应于触发308,执行环境306可以调用或计算功能310以基于功能310来生成输出312。执行环境306基于触发308,可以在事件304之后“实时”地调用或计算功能310。客户端302可以根据需要或在必要时利用执行环境306上的计算资源来执行功能310。
执行环境306可以具有各种计算资源和能力,例如一个或多个处理器、存储设备、存储器组件、网络接口、软件容器、VM、操作系统、应用等;以及一个或多个FaaS运行时,执行环境306可以在特定时间(例如,按需)使用其来访问和执行功能310。执行环境306可以被托管在设备、网络、云、节点(例如,服务器、交换机等)、端点、设备集群等上。例如,执行环境306可以被托管在网络环境100中的云102上。作为另一示例,执行环境306可以被托管在云层154、雾层156、雾节点162、本地端点116等上。
图4示出了示例FaaS用例的图。在该示例中,考虑工厂车间402上的机械臂404,其具有一个或多个传感器和通信接口以感测事件并触发功能请求。例如,机械臂404包含过热传感器,当其检测到阈值量的热和/或火时,该过热传感器跳闸(trip)。当过热传感器跳闸时,机械臂404可以检测到过热事件406A。响应于过热事件406A,机械臂404可以充当客户端,并且对在云102中运行的服务408(例如,web服务)进行调用406B(例如,API调用)。服务408可以接收调用406B,执行功能406C并将响应406D提供给机械臂404。响应406D可以包括针对机械臂404的数据和指令。
在某些情况下,当在机械臂404和云102之间穿行时,响应406D可能会经历延迟410。延迟410可能会在响应406D的响应时间中造成瓶颈(bottleneck)。延迟410可以归因于机械臂404(客户端)与功能406C(例如,通过响应406D向机械臂404提供指令的代码或逻辑)之间的物理距离。在某些情况下,即使功能406C在“边缘”网络中执行或运行,该“边缘”网络仍可能在物理上和逻辑上与机械臂404分开相当大的距离,这可能导致延时。此外,在某些情况下,延迟410可以是由于云102上对于功能406C可用的足够资源的缺乏或限制的结果。例如,云102可能没有足够的资源可用于及时地执行功能406C。这可能会导致特定量的网络成本和计算延迟。
为了解决这些问题,可以实现本文所描述的功能执行环境的分布式网络,以降低成本并提高性能。例如,功能执行环境的分布式网络可以包括云102上的执行环境以及诸如雾节点162或本地端点116之类的其他网络或节点。因此,为了减少延迟410,代替在云102上执行功能406C(其中云102可以具有跨越一个或多个地理位置(例如,城市、州、国家等)的基础设施),机械臂404可以在功能执行环境的分布式网络内的不同节点或网络中调用功能406C,该功能执行环境的分布式网络可以提供具有低延迟的分布式、可靠且受信任的计算环境。这样的节点或网络可以是,例如,相同或附近位置(例如,建筑物)中的执行端点。节点或网络可以包括现有的节点或网络(例如,先前部署的节点或网络),这可以避免部署新的网络、服务器、数据中心等的需要。
如将在下文进一步描述的,功能执行环境的分布式网络可以被实现为功能分发网络(FDN),其可以聚合用于托管和执行功能的设备、FaaS运行时、框架、资源等。FDN可以根据特定需求、情况等提供各种用于执行功能的选项。相应地,FDN可以在针对无服务器和FaaS实现方式的延迟、扩展和管理方面提供改进。
例如,如上所述,延迟410可能会产生性能问题。FDN可以提供用于执行功能406C的各种选项并减少延迟410。如下文将进一步描述的,FDN可以在事件驱动的架构和环境(包括IoT和移动)中实现FaaS。通常,随着功能406C更靠近设备或用户地被执行,整体延迟可以减少,这导致更好的用户体验。在IoT应用中,较低的延迟可以带来较高的性能IoT能力。
在某些情况下,可以通过更快的网络或更大的吞吐量来改善延迟和性能。但是,最终,随着执行环境距离发出请求的用户或设备更远,延迟和延时通常将会增加。延迟和延时的增加可能会限制FaaS针对“实时”用例(例如,IoT和移动)的实用性。因此,为了减少延迟并提高性能,FDN可以在针对特定请求选择的执行环境中执行功能,其在物理上或逻辑上可能更近。
无论名称是什么,“无服务器”计算使用服务器来实现功能。对服务器的需求可能会限制扩展。例如,无服务器计算需要计算功率来执行功能。FaaS的按需性质通常需要足够的资源以可用于执行特定功能。这可能会对FaaS的私有云实现带来重大挑战,这种实现需要密切监视和管理网络和资源使用率,以确保网络随着FaaS使用率的增长而实现新的计算硬件并适当地适应。
例如,如果应用接收“资源限制达到”错误,并且由于私有云FaaS资源池不够大而无法处理业务高峰而应用无法正常运行,则开发人员可能会离开私有云FaaS实现。取而代之的是,开发人员可以切换到公共云FaaS实现或者恢复到传统的应用架构,在这些架构中资源是预先分配的并且通常闲置地等待高峰。但是,公共云FaaS实现和传统应用架构也可能面临重大问题和挑战,例如延迟、成本、可扩展性等。本文描述的FDN可以解决这些问题和其他问题。例如,FDN可以为FaaS的私有和/或混合实现提供可靠的执行资源池。FDN可以提供一种分布式且平衡的方法,该方法为FaaS带来最佳的性能、成本、可扩展性等。
管理服务和资源在FaaS中也可能是个挑战。例如,企业可能面临“FaaS蔓延”。FDN可以实现用于处理FaaS的运行时方面的工具和平台,并为企业提供集成的管理平台以在越来越多的FaaS运行时和执行环境中实施策略并获得可见性。例如,FDN可以包括多个FaaS执行环境。FDN可以将请求功能的客户端路由到最能符合客户端需求的特定FaaS执行环境。FDN可以将功能请求路由到物理上和/或逻辑上最接近发出请求的客户端的执行环境,或者基于可由客户端、网络运营商等定义的一个或多个因素和/或策略来选择特定的执行环境。
FDN所提供的优点和益处的非限制性示例可以包括:1)实施并报告定义功能执行的IT策略,例如,针对执行功能的何人、何事、何地、何时和/或何因;2)为特定客户端执行特定功能而智能计算“最佳”路由和目标;以及3)将客户端功能请求动态路由到选定的执行端点。
FDN可以在各个位置利用现有资源。例如,办公室、分支位置、生产车间、零售位置等通常具有连接至相关联网络并且能够执行功能的大量系统。这些系统具有计算能力,但通常会花费大量时间处于空闲状态。此类系统的示例包括桌面和会议室协作端点、网络设备、工作站、打印机、信息亭、控制器、接入点、IoT设备等。FDN可以通过将各种计算资源用作FaaS的执行环境来将这些系统用于FaaS。
FDN可以通过智能功能路由器来实现。当设备或应用(例如,在此上下文中的客户端)需要执行功能时,该设备或应用向功能路由器询问执行该功能的位置。功能路由器可以基于客户端和FDN环境的运营商之间的一组可自定义规则和/或一个或多个因素(例如,负载、网络状况、资源可用性等),标识用于执行功能的“最佳”位置。
用于选择执行特定功能的位置或设备的规则的非限制性示例可以包括距离、安全性或信任等级、性能、成本、网络状况、性能模式等。功能路由器可以包括规则引擎,该规则引擎在功能被请求时向发出请求的设备提供到所请求功能的所选执行目标(例如,“最佳”执行目标)的路径。
在某些情况下,网络运营商和安全团队可以设置防护栏,而开发将调用功能的客户端(应用)的团队可以在预定义的策略防护栏内添加其自己的标准。例如,温度警报功能可以在任何端点上运行,因为主要目标是尽可能快地发出警报,但是清单更新功能可能只在符合更高等级公司安全性标准的某些端点上执行,因为在清单更新的情形下安全性和准确性可能更为重要。
功能路由器可以作为服务(as-a-service)交付,例如网络或云服务。功能路由器维护能够执行由关联规则指定的功能的设备的清单。功能路由器可以处理如下各项的任意组合:本地设备端点(例如,协作端点或空闲工作站)、私有云端点、云托管的FaaS服务等。当客户向功能路由器注册单独的端点或FaaS服务时,客户可以向功能路由器提供凭证以动态地基于例如,客户端请求、功能代码更新、策略更改、端点可用性、以及其他影响功能路由器所做的动态功能路由的其他标准来在端点上安全地加载和卸载功能。
由此产生动态的分布式功能路由平台。认识到在一次最能执行某功能的端点和服务可能并不最适合于在另一次执行该功能,因此分布式功能路由平台可以在处理后续请求时智能地选择最适合执行该功能的端点和服务并可以按需进行适应。功能可以被从执行端点加载和卸载,因为不同的客户端应用(例如,机械臂404、移动电话、清单扫描仪等)在特定时刻需要针对其功能的满足“最佳”定义的低延迟计算选项。
考虑图4中的示例,其中当过热传感器跳闸时,机械臂404需要发送对功能406C的请求。在分布式功能路由实现方式中,当机械臂404检测到过热时,机械臂404可以向功能路由器发送请求。该请求可以标识机械臂404需要执行的功能。例如,到功能路由器的请求可以包括机械臂404正在请求的功能的唯一ID。功能路由器可以计算在请求的时刻执行该功能的“最佳”端点。然后功能将被加载到该端点上,并且机械臂404可以被路由或重定向到执行该功能的端点。
可以注册执行端点,以允许功能路由器执行分布式功能路由并针对特定功能请求标识执行端点。分布式网络中可用的功能可以被包括在目录中,以允许功能路由器标识哪些功能可用于执行。例如,可以将执行端点注册到分布式网络中可用的功能和执行端点的目录。当搜索用于执行特定功能的执行环境时,功能路由器可以选择目录中的执行端点。
对执行端点的注册可以允许功能路由器知道那些执行端点可用作潜在的执行目标。作为执行端点注册的一部分,功能路由器可以获得用于管理执行端点的凭证,以及有关执行端点所处位置以及其他端点特性(例如,执行端点的安全性等级、由执行端点展现出的性能特性(例如,运行时等)等)的详细信息。功能路由器可以将此类信息存储在一个或多个存储位置,这些位置可以维护有关执行端点的信息,例如位置信息、唯一标识符、功能标识符、运行时信息、安全性信息、可用性信息、成本信息、性能信息等。
图5A示出了用于在功能分发网络(FDN)中注册执行端点502的示例流程。对执行端点502的注册可以由功能路由器504管理。功能路由器504可以创建和管理FDN,如前所述。例如,功能路由器504可以注册执行端点并创建执行端点和功能的目录,在FDN中轮询设备以获取执行端点和功能信息,为特定功能调用或客户端智能地选择执行端点,将功能调用或客户端智能地路由到所选择的执行端点等。
功能路由器504可以包括一个或多个物理和/或逻辑设备、应用、节点等,其被配置为执行本文描述的功能路由能力。例如,功能路由器504可以经由一个或多个服务器、网络设备、VM、软件容器、集群、控制器、虚拟网络功能(VNF)、服务功能链等来实现。在某些情况下,功能路由器504可以是通过分布在不同位置的功能路由器和/或功能路由器组件实现的分布式功能路由器。例如,功能路由器504可以跨设备、网络、和/或环境地分布,例如,局域网、云、网络设备、硬件集群、应用服务等。在某些情况下,可以在FDN中实现多个功能路由器,以实现更好的性能、冗余等。例如,功能路由器504可以包括一个或多个本地功能路由器、一个或多个云功能路由器、一个或多个分支功能路由器等。除云功能路由器外,可以实现本地功能路由器或组件,以提供负载平衡、API网关、跨多个执行端点的改进的冷启动时间、鲁棒的被管理本地执行端点资源池等。
功能路由器504可以维护FDN中的执行端点和功能的数据库506。功能路由器504可以将执行端点注册到数据库506,以便将执行端点添加到FDN。在图5A中,功能路由器504将执行端点502注册到数据库506,以便将执行端点502添加到FDN。数据库506包含执行端点信息表510和位置信息表508。尽管在该示例中将执行端点表510和位置信息表508描述为数据库中的表,但是其他类型的存储和/或数据结构也是本文预想的。数据库506和表508、510在此用于说明目的,以示出用于存储针对FDN的功能路由信息的示例存储结构或目录。
端点信息表510可以包括例如标识执行端点的信息(例如,执行端点ID)、执行端点的位置(例如,地理位置、网络位置、地址等)、由执行端点托管的功能(例如,功能列表)、由执行端点托管的运行时、安全性等级、可用性等级、成本等级、性能等级等。此外,位置信息表508可以包括例如标识执行端点的位置的信息,以及一个或多个位置详细信息,例如地理位置、纬度/经度信息、距离信息等。
为了在数据库506中注册执行端点502,功能路由器504可以接收请求对执行端点502的注册的调用512。调用512可以包括与执行端点502相关联的位置和执行端点信息。例如,调用512可以包括用于执行端点502的认证信息、执行端点502的位置(例如,物理或地理位置、网络位置、地址、纬度/经度参数等)、运行时信息(例如,运行时环境)、安全性信息、可用性信息、性能信息等。
功能路由器504可以接收调用512,并使用来自调用502的信息来在数据库506中执行对位置和/或执行端点502的查找514。功能路由器504可以在数据库506中执行查找514,以确定该位置是否存在或执行端点是否已经被注册。为了执行查找514,功能路由器504可以基于调用512中的位置和/或执行端点信息来查询数据库506(例如,位置信息表508)。
如果该位置不存在于数据库506中,则功能路由器504可以通过将该位置存储在数据库506中来创建516该位置。例如,功能路由器504可以将该位置添加到数据库506中的位置信息表508中。如果该位置存在,则功能路由器504可以将执行端点数据518写入数据库506。例如,功能路由器504可以将执行端点数据518添加到数据库506中的执行端点信息表510。执行端点数据可以包括与调用512中所包括的执行端点502相关的信息。
功能路由器504可以返回对调用512的注册响应520。注册响应520可以指示执行端点502已经被注册。在某些情况下,如果功能路由器504在对执行端点502的注册期间遇到错误,则注册响应520可以指示已经遇到错误。
功能路由器504还可以轮询数据库506中的每个执行端点,以随时间推移获得执行端点可用性的测量,并更新执行端点上可用的功能的清单。图5B示出了用于轮询执行端点502以获取信息并更新数据库506中的信息的示例过程。
在此示例中,功能路由器504可以向执行端点502发送轮询请求530。轮询请求530可以请求有关执行端点502的信息,例如可用性、托管功能、托管运行时、位置信息、性能信息、和/或任何其他信息。在某些情况下,轮询请求530可以包括用于执行端点502的认证信息,例如认证密钥。
响应于轮询请求530,功能路由器504可以接收轮询响应532A或轮询错误532B。轮询响应532A可以包括功能路由器504在轮询请求530中请求的信息。例如,执行端点502可以将轮询响应532A发送给功能路由器504,该轮询响应532A标识执行端点502处的功能和执行端点502处的每个功能已经被执行的次数。如果遇到错误,则功能路由器504可以接收指示错误(例如,尚未找到信息或信息不可用)已经发生的轮询错误532B。
数据库506可以维护功能信息表510A。功能信息表510A可以提供功能的目录,并且可以包括标识特定的功能和功能细节的信息,例如功能标识符、功能存储库、功能运行时等。数据库506可以维护功能映射信息表510B,其可以将功能信息表510A中的特定功能与执行端点信息表510中的执行端点相关联。因此,功能映射信息表510B可以将执行端点信息表510中的执行端点映射至功能信息表510A中的特定功能。数据库506因此可以用作功能和执行端点以及诸如位置、属性等之类的相关信息的目录。在该示例中,功能信息表510A和功能映射信息表510B被示为与执行端点信息表510分开。然而,在一些示例中,执行端点信息表510可以包括来自表510的执行端点信息以及来自表510A的功能信息和来自表510B的映射信息。
当功能路由器504接收到轮询响应532A时,它可以将功能数据534和功能可用性数据536A写入数据库506。例如,功能路由器504可以将功能数据534和/或功能可用性数据536A写入功能信息表510A和/或功能映射信息表510B。此外,当功能路由器504接收到轮询错误532B时,它可以将可用性数据536B写入数据库506。可用性数据536B可以指示例如发生了错误、可用性数据不可用、执行端点不可用、功能不可用等。
功能路由器504可以基于诸如时间表(schedule)、事件、请求等之类的一个或多个因素来周期性地轮询执行端点。随着功能路由器504接收诸如新的可用性、功能或其他执行端点信息之类的新信息,它可以更新数据库506以在执行端点信息表510、功能信息表510A和/或功能映射信息表510B中存储这样的信息。这样,可以根据需要更新执行端点的功能和执行端点信息,以确保信息准确并反映已发生的任何更改。
当客户端(例如,应用或设备)需要找到执行端点以针对功能而进行联系时,客户端可以联系功能路由器504,功能路由器可以标识该功能的执行端点并将客户端请求路由至所标识的执行端点。图5C示出了用于标识针对来自客户端的功能请求的执行端点并将功能请求路由至所标识的执行端点的示例过程。为了说明的目的,该示例中的客户端将是图4中所示的机械臂404。然而,应注意,客户端可以是任何其他应用或设备。
机械臂404首先向功能路由器504发送调用540,该调用540标识由机械臂404请求的功能。调用540可以包括例如认证密钥、用于标识该功能的功能标识符、用于标识托管该功能的执行端点的位置信息、该功能的可用性信息、该功能的安全性信息、该功能的性能信息等。位置信息可以包括有关机械臂404的位置和/或目标执行端点的位置的信息。例如,位置信息可以提供位置细节,其可以用于基于机械臂404和执行端点的相对位置来标识托管该功能的执行端点。此外,可用性、安全性和性能信息可以提供针对所请求功能的规则、参数、服务要求等。
功能路由器504接收调用540并进行执行端点选择操作542。执行端点选择操作542可以包括在数据库506中查找执行端点,以及选择符合针对调用540的任何特定标准的托管特定功能的执行端点。例如,执行端点选择操作542可以包括对位置信息表508的位置查询544A和对执行端点信息表510的属性查询544B。功能路由器504可以执行位置查询544A和属性查询544B以标识针对调用540中所请求的功能的合适目标。位置查询544A和属性查询544B允许功能路由器504在目录(例如,数据库506)中搜索可用的执行端点,并选择符合针对该功能和调用540的标准的(一个或多个)执行端点。
位置查询544A可查询数据库506中的地理、物理、和/或网络信息,该信息可用于基于机械臂404和托管该功能的执行端点的相对位置来标识执行端点。属性查询544B可以在数据库506中查询针对该功能所请求的特定属性,例如性能等级、可用性等级、安全性等级、特定运行时、特定位置、特定功能ID等。
基于位置查询544A和属性查询544B,执行端点选择操作542为功能路由器504生成结果546。结果546可以包括为运行该功能而选择的执行端点。功能路由器504可以通知目标执行端点(例如,由功能路由器504选择并在结果546中标识的执行端点)已经选择了该目标执行端点来运行针对特定客户端(例如,机械臂404)的调用540中所请求的特定功能。例如,功能路由器504可以向目标执行端点发送功能执行请求,该功能执行请求标识要针对特定客户端运行的功能以及该功能的代码的位置。
一旦目标执行端点接受了功能执行请求,目标执行端点就可以加载功能(例如,从本地或远程功能存储库),侦听并等待来自客户端(例如,机械臂404)的请求,并在来自客户端的接下来对该功能的调用到来时激活特定的功能端点地址(例如,URL)。执行端点还可以将功能端点地址发送到功能路由器504,功能路由器504可以将该地址包括在到机械臂404的响应548中。
一旦功能路由器504获得了结果546和来自执行端点的任何信息(例如,到功能的功能端点地址),功能路由器504就将响应548发送给机械臂404。响应548可以标识针对机械臂404所请求的特定功能选择的执行端点。在某些情况下,响应548可以包括一个以上的所选择的执行端点。例如,响应548可以包括主执行端点和备用或替换执行端点。
响应548还可以标识与响应548中的每个执行端点相关联的地址(例如,URL、网络路径、IP地址、HTTP重定向等)和功能。例如,该地址可以包括到该功能的功能端点地址,机械臂404可以使用该功能端点地址来请求或调用相关联的执行端点处的功能。在某些情况下,响应548可以包括重定向(例如,HTTP重定向),其将客户端(例如,机械臂404)重定向到被选择来运行该功能的执行端点。
响应548还可以包括针对响应548的期限(expiration period)。在某些情况下,当期限过去时,可以要求机械臂404将调用540重新发送给功能路由器504并获得更新的响应。期限可以基于时间间隔、日期、计数器等。期限可以指示响应548中的信息在一段时间中有效或在一段时间之后过期。例如,响应548可以包括标识用于向响应548中所标识的(一个或多个)执行端点请求功能的日期或时间的期限。此外,可以由一个或多个事件来定义期限。例如,可以将期限设置为功能调用的数目。在此示例中,当该数目的功能调用被生成或处理时,期限可以被达到。
在接收到响应548之后,机械臂404可以在响应548中获得地址并且使用该地址来联系所选择的(一个或多个)执行端点并且请求功能的执行。执行端点可以准备好并等待客户端(例如,机械臂404)的请求以运行该功能。机械臂404可以继续向功能路由器504选择作为机械臂404的执行端点的执行端点进行功能调用。所选择的执行端点可以基于如下确定而被功能路由器504选择作为机械臂404的执行端点:确定了该执行端点可以提供最佳性能或满足针对机械臂404的用于运行功能的特定标准。例如,在某些情况下,执行端点可以是到机械臂404最接近的端点(物理上和/或逻辑上)(例如,本地或区域执行端点)。接近度更近可以限制或减少与功能调用和执行相关联的网络延迟。
如果所分配的执行端点变得不可用,则客户端(例如,机械臂404)可以向功能路由器504作出请求(例如,调用540)以请求新的执行端点。该请求可以再次触发如前所述的为客户端定位执行端点(例如,“最佳”执行端点)、加载功能、将客户端重定向到新选择的执行端点等的过程。
图6A示出了用于分布式功能路由的示例平台架构的框图。图6A中的平台架构以高等级示出,以示出用于分布式功能路由的一般框架。
通常,分布式功能路由可以包括功能路由器(例如,功能路由器504)和一个或多个分布式执行端点。功能路由器提供对功能路由器中注册的和被功能路由器监视的执行资源的分布式和灵活集合的控制和可见性。分布式执行端点可以提供执行资源。分布式执行端点可以包括云102上的一个或多个端点(例如,端点220)、雾层156上的一个或多个端点(例如,雾节点162)、一个或多个本地端点(例如,本地端点116)等。如前所述,执行端点可以是托管运行时环境的任何设备或组件。例如,执行端点可以包括一个或多个服务器、VM、软件容器、IoT设备、接入点、网络摄像头、信息亭等。
分布式功能路由可以经由图6A所示的平台架构来实现。在该示例中,平台架构可以包括认证元件602、API 604、存储库606、和数据库506。认证元件602可以是认证和授权服务,例如AMAZON AWS COGNITO。认证元件602可以用于使用一个或多个认证密钥608来认证来自API 604的API,以与平台架构中的其他组件进行交互。来自API 604的API可以提供用于与功能路由器、存储库606、数据库506、和/或平台架构中的任何其他组件进行交互的接口,以便管理和访问功能以及功能路由数据。
API 604可以包括一个或多个API或接口,用于与分布式功能路由架构中的组件进行交互。在某些情况下,API 604可以包括用于以任意规模创建、发布、维护、监视、保护、和/或管理API的API服务。例如,API 604可以包括AMAZON API GATEWAY。
存储库606可以包括用于分布式功能路由架构的代码(例如,AMAZON AWS LAMBDA功能)、配置、组件等。例如,存储库606可以包括用于分布式功能路由平台架构的功能、API、(一个或多个)用户接口(UI)框架、文档等。
数据库506可以存储用于平台架构中的分布式功能路由的信息。例如,如前所述,数据库506可以包括执行端点信息、位置信息、功能信息、分布式功能路由参数、客户端规则、执行端点和功能映射等。
可以使用无服务器框架(例如,SERVERLESS.COM框架)来管理平台架构。例如,可以使用SERVERLESS.COM框架来管理对功能和代码、认证元件602、API 604、存储库606、和数据库506的部署和配置。
平台架构可以包括用于功能路由器的UI,例如,web UI。UI可以使用客户端所使用的相同API来与功能路由器进行交互。UI可以在一个或多个服务器或端点上运行。
此外,可以构建一组或多组API以管理平台架构中的不同元件。例如,可以针对执行端点、功能、客户端、位置、用户等实现CRUD(创建、检索、更新、和删除)。此外,某些元件可以彼此关联,如下面针对图6B中的数据模型进一步描述的。例如,执行端点可以与特定位置相关联。
图6B示出了用于分布式功能路由的示例数据模型。功能路由器504可以使用该数据模型来访问有关任何执行端点、客户端功能等的信息。基于该数据模型,功能路由器504了解分布式功能路由平台中的每个执行端点、客户端、和功能。通过该数据模型,功能路由器504可以标识任何客户端和执行端点的物理或地理位置,以及任何相关联的元数据和网络中的每个功能。功能路由器504可以使用该数据模型中的数据来决定哪个执行端点最符合用于执行客户端的功能的标准,并将客户端重定向到所选择的执行端点以执行客户端的功能。功能路由器504可以对监视、日志记录、报告、审计、安全性等进行管理。
该数据模型可包括位置信息表508、执行端点信息表510、功能信息表510A、执行端点和功能映射表510B、客户端表620、运行时表622、和项目(project)表624。表508、510、510A、510B、620、622、624可用于定位有关任何客户端、执行端点、功能、运行时环境、位置、项目等的信息。例如,表508、510、510A、510B、620、622、624可以用作客户端、执行端点、功能、运行时环境、位置、项目、以及网络中任何其他信息的目录。
表508、510、510A、510B、620、622、624可用于标识、匹配、或关联客户端、执行端点、功能、运行时环境、位置、项目等。通过使用表508、510、510A、510B、620、622、624,功能路由器504可以标识任何客户端的位置和身份、任何执行端点的位置和身份、由特定执行端点托管的运行时环境、可用于由特定执行端点执行的(一个或多个)功能、任何客户端的地址、任何执行端点和/或功能的地址、特定执行端点和/或功能参数、客户端要求等。
为了说明的目的,图6B中的数据模型被示出和描述作为具有存储数据的各种表的关系数据库。然而,应该注意,该数据模型可以包括其他结构和配置。
图7示出了功能分发网络700中的示例分布式功能路由应用的图。功能分发网络700包括功能路由器504,执行端点704A、704B、704N(统称为“704”),和数据库506。执行端点704可以驻留在各种网络和/或地理位置中。例如,执行端点704可以包括位于云102、雾层156、本地网络、区域网络、企业网络等上的端点。在一些示例中,执行端点704可以包括本地端点116、节点162、和/或云102上的端点。
执行端点704可以在客户端请求时运行调用的功能706A、706B、706C、706D、706E、706N(统称为“706”)。功能706可以包括当客户端请求执行功能706时运行的代码。每个执行端点704可以运行一个或多个功能。在该示例中,执行端点704A托管功能706A,执行端点704B托管功能706B、706C,并且执行端点704N托管功能706D、706E、706N。
功能706可以包括不同的功能和/或相同功能的副本。例如,功能706A、706B和706D可以表示在不同执行端点(即,执行端点704A、704B、704N)上托管或执行的相同功能,而功能706C、706E、706N可以表示完全不同的功能。因此,功能分发网络700可以包括托管或执行相同功能(例如,由功能706A、706B、和706D表示的功能)的各种执行端点704A、704B、704N。这样,当客户端请求功能时,功能路由器504具有用于执行该功能的多个执行端点选项,并且可以选择最满足来自特定客户端的功能请求的标准或要求的执行端点。
功能706可以由一个或多个FaaS客户端上载或注册到功能分发网络700。在某些情况下,功能706可以存储在功能分发网络700的存储库中,例如图6A中所示的存储库606。例如,功能706可以由一个或多个客户端上载到存储库606。此外,功能706可以存储在实际执行端点704上,以在由执行端点704托管的各个运行时环境内执行,或者在被调用时由执行端点704从存储库606中取回。
数据库506可以包括功能分发网络700中的执行端点704和功能706,以及用于标识执行端点和功能和选择针对功能的执行端点的任何信息,如前所述。数据库506因此可以提供功能分发网络700中的执行端点和功能的目录,功能路由器504可以查询该目录以标识功能分发网络700中的执行端点和功能,为客户端选择执行端点以执行所请求的功能,并将客户端的请求路由到所选择的执行端点和功能。
功能路由器504可以从客户端702(例如,机械臂404、应用等)接收功能请求,并选择功能分发网络700中的执行端点以针对客户端执行该功能。例如,客户端702可以向功能路由器504发送调用,该调用标识客户端702需要在功能分发网络700中执行的特定功能。该调用可以请求该功能并且包括用于执行该功能的一个或多个参数,例如运行时环境、性能参数、安全性参数、成本、延迟阈值、地理位置等。一个或多个参数可以用作针对功能和/或客户端702的标准和/或要求。
功能路由器504可以从客户端702接收调用,并向数据库506查询执行端点信息、位置信息、功能信息、运行时信息、性能参数等。功能路由器504可以查询数据库506以标识功能分发网络700中的功能以及可用/能够执行特定功能的执行端点。功能路由器504还可查询数据库506以标识用于选择执行端点的一个或多个参数,例如与该功能相关联的执行端点的相应可用性、与该功能相关联的执行端点的相应性能参数、与该功能相关联的执行端点的相应物理或地理位置、与该功能相关联的执行端点的相应性能模式、与该功能相关联的执行端点的相应工作负载等。
功能路由器504可以使用查询到的信息来标识特定功能,以及哪些执行端点托管所请求的特定功能并且能够为客户端运行该功能。功能路由器504可以基于与来自客户端的功能调用相关联的任何参数或标准来选择执行端点(例如,经由执行端点选择操作542)以执行该功能。功能路由器504可以使用从数据库506查询到的信息来标识满足参数或标准的执行端点。因此,功能路由器504可以使用查询到的信息来标识并选择功能分发网络700中最符合针对由客户端702调用的功能的参数或标准(例如,地理接近度、可用性、性能等级、安全性等级、负载状态、成本等级等)的执行端点。
例如,客户端702可以向功能路由器504发送对由功能706A、706B、和706D表示的功能的调用。该调用可以标识用于执行该功能的特定性能参数,例如延迟参数。功能路由器504可以向数据库506查询关于功能706和执行端点704的信息,并确定该功能被托管在执行端点704A、704B、704N上。功能路由器504还可以从数据库506获得针对功能和/或执行端点704A、704B、704N的特定参数,例如执行端点性能参数、执行端点安全性参数、执行端点位置、执行端点可用性等。功能路由器504可以基于调用中所标识的延迟参数以及从数据库506获得的针对功能和/或执行端点704A、704B、704N的特定参数,来选择特定的执行端点,例如执行端点704A。功能路由器504可以基于确定了执行端点704可以符合来自客户端702的调用中的标准(例如,延迟参数),来选择执行端点704A。
作为另一示例,客户端702可以向功能路由器504发送对由功能706A、706B、和706D表示的功能的调用,并且指定用于执行该功能的一个或多个成本和安全性参数。功能路由器504可以进行执行端点选择(例如,执行端点选择操作542)以找到可以运行该功能并且符合针对客户端的成本和安全性参数的执行端点。例如,功能路由器504可以查询数据库504以标识哪些执行端点托管该功能,并标识与所标识的(一个或多个)执行端点相关联的成本和安全性参数。然后,功能路由器504可以基于确定了所选择的一个或多个执行端点符合用于针对客户端702执行该功能的标准(即,成本和安全性参数),来选择用于执行该功能的一个或多个执行端点。
在某些情况下,功能路由器504可以标识满足用于针对客户端执行功能的一个或多个特定参数或标准的多个执行端点。功能路由器504可以在响应中将多个执行端点发送到客户端,或者选择多个客户端的子集以包括在到客户端的响应中。例如,功能路由器504可以标识满足客户端的标准的多个执行端点并且基于例如与执行端点相关联的一个或多个相应参数来对该多个执行端点进行排名。
为了说明,如果用于执行该功能的标准是安全性等级,则功能路由器504可以基于相应的安全性等级对执行端点进行排名。排名较高的执行端点可以是与由标准定义的安全性等级更紧密匹配的那些执行端点和/或具有较高安全性等级的执行端点。例如,执行端点可以从最高安全性等级或在安全性等级方面最紧密匹配到最低安全性等级或在安全性等级方面最远匹配进行排名。然后,功能路由器504可以将执行端点和排名包括在到客户端的响应中,或者在到客户端的响应中选择执行端点的子集(例如,最高排名的、前N个最高排名的执行端点等)。
上面的示例示出了基于延迟、成本和安全性参数来进行对执行端点的选择。这些参数是出于解释目的而提供的非限制性示例。本文还预期其他因素和/或参数,例如,其他性能因素、可用性、位置或接近度、统计信息(例如,执行统计、性能统计等)、模式等。
作为另一示例,假设客户端702是被配置为模拟与后端API对话以便获取清单信息的条形码扫描仪的应用。在此示例中,应用的前端是驻留在设备上的单页应用(SPA)。该应用具有产品ID输入字段、显示清单结果的文本区域、和响应时间文本字段。
执行端点704通过功能路由器504被注册在功能分发网络700中。执行端点704托管和/或能够执行相应的功能706。假定功能706A和706B表示被配置为在JSON文件中查找产品信息并用与特定产品ID(例如,在应用的产品ID输入字段中输入的产品ID)相关联的产品信息进行响应的产品信息查找功能。
当应用(702)需要查找针对在应用的产品ID输入字段中输入的产品ID的产品信息时,应用可以向功能路由器504发送针对产品信息查找功能的请求。假设该请求还标识了在应用的产品ID输入字段中输入的特定产品ID。
功能路由器504接收请求并在数据库506中执行查找。基于该查找,功能路由器504确定功能706A和706B与产品信息查找功能匹配(例如,功能706A和706B具有与产品信息查找功能的功能ID相匹配的功能ID)。功能路由器504还确定功能706A和706B由执行端点704A和704B托管。然后,功能路由器504可以针对来自应用(702)的请求选择执行端点704A和/或执行端点704B。例如,功能路由器504可以选择在物理上或地理上更接近应用(702)的执行端点。
在该示例中,假设执行端点704A比执行端点704B更接近应用(702)。例如,执行端点704A是雾层156上的端点(例如,雾节点162),并且应用(702)由雾层156上的另一端点托管,而执行端点704B驻留在云102上。在该示例中,执行端点704A和应用702两者都驻留在雾层156上,并且在接近度方面与应用(702)和驻留在云102上的执行端点704B相比更近。功能路由器504可以基于数据库506中的位置信息来确定执行端点704A比执行端点704B更靠近应用(702),并且执行端点704A上的功能706A的执行将有可能比执行端点704B上的功能706B的执行具有更低的延迟。因此,功能路由器504可以针对来自应用(702)的请求选择执行端点704A而不是执行端点704B,或者以其他方式使其排名/优先级比执行端点704B更高。
然后,功能路由器504可以将标识执行端点704A和功能706A的响应发送到应用(702)。该响应可以包括用于调用执行端点704A上的功能706A的地址或重定向(例如,URL、HTTP重定向、IP地址等)。例如,响应可以包括用于访问或调用执行端点704A上的功能706A的执行端点功能地址。应用(702)可以接收标识执行端点704A和功能706A和/或用于调用执行端点704A上的功能706A的任何其他信息的响应,并使用该响应(或该响应中的信息)来调用或启用执行端点704A上的功能706A。
执行端点704A可以接收该调用并执行功能706A。然后,功能706A可以基于特定产品ID(例如,在应用702的产品ID输入字段中输入的产品ID)在JSON文件中执行产品信息查找,并用与特定产品ID相关联的产品信息来向应用(702)作出响应。
在图7中,功能路由器504被示为单个功能路由器。然而,在一些配置中,功能路由器504可以是具有跨不同的网络、设备、数据中心等的功能路由器组件(例如,硬件、软件、应用、功能、VM、容器等)或功能路由器实例的分布式功能路由器。此外,在一些配置中,可以使用多个功能路由器来实现功能分发网络700。多个功能路由器可以驻留在一个或多个位置或网络中。例如,多个功能路由器可以包括一个或多个本地网络或区域位置上的一个或多个本地功能路由器、一个或多个云功能路由器、一个或多个地理位置上的功能路由器等。在某些情况下,一个或多个本地功能路由器可以为本地客户端提供更好的性能、安全性等。
在某些情况下,功能分发网络700可以包括多个功能路由器,其用于为每个客户端智能地选择最佳功能路由器(例如,最近的、可用的、最便宜的等等)。例如,可以基于一个或多个因素(例如,接近度、延迟、成本、性能、可用性、安全性等)将客户端映射或路由到为该客户端选择的相应功能路由器。因此,驻留在分支A中的客户端可以由驻留在分支A中的功能路由器提供服务,并且驻留在区域B中的客户端可以由驻留在区域B中和/或最接近区域B的功能路由器提供服务。多个功能路由器还可以用于负载平衡客户端和/或功能请求。例如,驻留在分支A中的客户端可以由驻留在分支A中的功能路由器提供服务。但是,如果驻留在分支A中的功能路由器过载、无响应、忙、慢、不可用等,则另一功能路由器可以基于一个或多个因素(例如,可用性、负载、延迟等)被选择来为客户端提供服务。该另一功能路由器可以也驻留在分支A中,或可以驻留在远程网络或位置中,例如云102或区域B。
在某些情况下,可以使用本地功能路由器来扩展分布式功能路由操作并提供其他益处,例如性能和故障切换。随着FaaS安装扩展到各种各样的执行端点,可以实现具有以公共地址(例如,公共IP)为本地存在的本地功能路由器,以管理执行端点和功能清单以及代理API调用从而使客户端的智能程度减弱,或从客户端卸载操作。本地功能路由器还可以使能复杂的故障切换配置,因为本地功能路由器可能不太敏感或易于延迟。
一些配置可以实现智能功能预安装、端点的单个命令设置、基于角色的访问控制(RBAC)、增强的日志记录等。例如,可以基于遥测数据实现智能功能预安装,这可用于在一个或多个执行端点上智能地预安装功能。此外,通过端点的单个命令设置,设置命令可以获取端点代码、查询端点的能力、将端点添加到执行端点帐户、在功能路由目录(例如,数据库506)中将端点注册为执行端点等等。
在描述了功能分发网络700中的示例分布式功能路由应用之后,本公开现在转向对功能分发网络中的分布式功能路由的各种示例特征和方面的讨论,包括功能相关特征、客户端相关特征、位置相关特征、和用户相关特征。
分布式功能路由
当功能在功能路由器504中注册时,该功能可以自动解析为诸如https://functionrouter.com/run/{function_id}之类的路由(例如,URL)。假设经过认证的客户端使用有效的功能ID作出对路由(例如,示例URL)的请求,则可以授权客户端与功能路由器504进行交互,并且功能路由器504可以开始或继续查找用于执行该功能的执行端点(例如,“最佳”执行端点)的过程。下面是可以被触发用于查找执行端点的示例过程。
功能路由器504定位执行端点,例如“最佳”执行端点。功能路由器504使用其针对该执行端点所具有的凭证来通知该执行端点客户端被授权在执行端点上执行特定功能,function_ID。功能路由器504指示执行端点从存储设备和/或存储库(例如,存储库606)获取正确的功能代码。执行端点的运行时加载特定的功能代码并为执行将其准备好。执行端点的运行时为该功能创建API端点或接口。执行端点的运行时以针对现已准备好的功能的API端点来响应功能路由器504。
功能路由器504用与执行端点上的API端点的地址(例如,URL)相对应的地址或重定向(例如,HTTP重定向)来响应原始客户端请求。客户端调用执行端点的特定功能API,以用于将来执行该功能的请求。如果客户端在该特定执行端点上运行该功能时遇到问题,则客户端可以通过向功能路由器504发回请求来开始定位另一执行端点的过程。
以下是对与分布式功能路由中的功能、用户、位置、和执行端点有关的示例API和特征的描述。
功能
分布式功能路由平台可以实现各种功能API方法。API方法的非限制性示例包括:
POST/function-向管理器目录(Manager Catalog)或数据库添加新功能;
GET/function-列出管理器目录或数据库中的功能;
GET/function/{function id}-列出特定功能;
PUT/function/{function id}-更新特定的功能;以及
DELETE/function/{function id}-移除特定功能。
注册新功能
新功能的注册可以提供经授权客户端可以在系统中执行的功能的详细信息。该注册可以是针对经授权用户的API调用。输入可以包括文本名称、文本描述、功能代码所驻留的存储库的地址(例如,与存储库606相关联的URL)等。功能的成功创建可以返回带有新功能的详细信息和该功能唯一ID的数据或对象(例如,JSON对象)。
列出功能
经认证的用户可以调用API以取回该用户帐户上的活动功能的列表以及有关这些功能的详细信息,例如,名称、描述、功能ID等。API方法因此可以请求对用户帐户上的功能和相关详细信息的报告。
删除功能
API方法可以用于通过唯一ID来删除特定功能。在特定功能被删除时,可以将其从存储设备中移除或将其与删除标志或参数相关联。例如,删除操作实际上可能不会删除该功能,而是将日期放在与该功能相关联的“已删除”字段(例如,数据库506上针对该功能的已删除字段)中。在某些情况下,与不为空(null)的已删除字段相关联的任何功能都可以被视为已删除。
查看功能
API方法可以用于通过唯一ID来查看特定功能的详细信息。API方法可以取回如功能列表中描述的但仅限于特定功能ID的功能详细信息,例如,功能名称、描述、功能代码的存储库位置等。API方法因此可以请求针对单独功能的详细信息的报告。
编辑功能
API方法可以用于通过唯一ID来更新特定功能。在某些情况下,可以在数据库506中更新在主体中传递的任何值。响应可以返回成功以及特定功能的经更新详细信息的输出。
客户端
客户端可以是在执行功能的分布式网络(例如,功能分发网络700)中调用功能的应用或设备。客户端API方法的非限制性示例可以包括:
POST/client-向功能路由器504添加新的客户端;
GET/client-列出功能路由器504已知的所有客户端;
GET/client/{id}-列出特定的客户端;
PUT/client/{id}-更新特定的客户端;以及
DELETE/client/{id}-移除特定的客户端。
注册客户端
注册新客户端提供了将对系统中的功能作出请求的客户端的详细信息。可以通过针对经授权用户的API调用来执行注册。输入可以包括文本名称、文本描述、客户端类型ID、客户端所驻留的位置ID等。对于被标记为移动的客户端,可以将该位置留空并在该客户端向功能路由器504发出请求时将其传递。客户端的成功创建可以返回带有新客户端的详细信息和该客户端唯一ID的数据或对象。
列出客户端
经认证用户可以调用API以取回该用户帐户上所有活动客户端的完整列表,以及有关这些客户端的任何详细信息,例如名称、描述、客户端ID、客户端类型、位置ID等。
删除客户端
API方法可以用于通过唯一ID来删除特定的客户端。在某些情况下,删除客户端实际上可能不会删除客户端,而是将日期放置在与客户端相关联的“已删除”字段中。具有不为空的已删除字段的客户端可以被视为已删除。
查看客户端
API方法可以用于通过唯一ID来查看特定客户端的详细信息。详细信息可以包括与特定ID相关联的任何信息,例如客户端名称、描述、ID、客户端类型、位置ID等。
编辑客户端
API方法可以用于通过唯一ID来更新特定客户端。可以在数据库506中更新在主体中传递的任何值。响应可以返回成功以及特定客户端的经更新详细信息的输出。
执行端点
执行端点可以由功能路由器504跟踪和协调。执行端点可以是单个计算资源(例如,独立端点)、较大的FaaS平台(集群)、FaaS服务(例如AWS LAMBDA)等。在任何情况下,执行端点都可以被视为功能路由器504具有凭证来访问的单个“事物”。
执行端点API方法的非限制性示例可以包括:
POST/ee-向功能路由器504添加新的执行端点;
GET/ee-列出功能路由器504已知的所有执行端点;
GET/ee/{id}-列出特定的执行端点;
PUT/ee/{id}-更新特定的执行端点;以及
DELETE/ee/{id}-移除特定的执行端点。
创建执行端点
执行端点的创建提供了将执行功能代码的执行端点的详细信息。可以通过针对经授权用户的API调用来创建执行端点。输入可以包括例如执行端点的文本名称、文本描述、运行时ID、和执行端点所驻留的位置ID、参数等。在某些示例中,可以存储有关执行端点的附加元数据,例如性能、安全性、平台详细信息、运行时、可用性、成本等。执行端点的成功创建返回新执行端点的已知详细信息以及该执行端点的唯一ID。
列出执行端点
经认证的用户可以调用API来取回该用户帐户上的活动执行端点的列表,以及有关这些执行端点的任何详细信息,例如名称、描述、执行端点ID、运行时ID、位置ID、执行端点已加载的功能等。
删除执行端点
API方法可以基于唯一ID来删除特定执行端点。在某些情况下,执行端点可能实际上并未被删除。而是可以将日期添加到与执行端点相关联的“已删除”字段中,以使执行端点被视为已删除。具有不为空的已删除字段的任何执行端点都可以视为已删除。
查看执行端点
API方法可以用于基于唯一ID来查看特定执行端点的详细信息。详细信息可以包括名称、描述、执行端点ID、位置ID、在执行端点处加载的功能等。
编辑执行端点
API方法可以通过唯一ID来更新特定执行端点。可以在数据库506中更新在主体中传递的任何值。响应可以返回成功和特定执行端点的经更新详细信息的输出。
位置
位置可以是客户端或执行端点所驻留的物理地点。移动的客户端可能没有分配给它们的静态位置。位置API方法的非限制性示例包括:
POST/location-向功能路由器504添加新的位置;
GET/location-列出功能路由器504已知的所有位置;
GET/location/{id}-列出特定位置;
PUT/location/{id}-更新特定位置;
DELETE/location/{id}-移除特定位置。
创建位置
创建位置提供了客户端和执行端点可以驻留的位置的详细信息。可以通过针对经授权用户的API调用来创建位置。输入可以包括例如位置的文本名称、文本描述、纬度、经度等。位置的成功创建可以返回新位置的已知详细信息以及该位置的唯一ID。然后,新的位置可以与至少一个客户端或执行端点相关联。
列出位置
经认证的用户可以调用API来取回该用户帐户上的活动位置的列表,以及任何位置详细信息,例如名称、描述、位置ID、纬度、经度、位置中的客户端、位置中的执行端点等。响应可以提供对位置的报告。
删除位置
API方法可以用于通过唯一ID来删除特定位置。在某些情况下,删除可能不会实际上删除位置,而是在“已删除”字段中添加日期。具有不为空的已删除字段的任何位置都可以被视为已删除。
查看位置
API方法可以用于通过唯一ID来查看特定位置的详细信息。详细信息可以包括例如位置名称、描述、位置ID、纬度、经度、位置中的客户端、位置中的执行端点等。响应可以提供对位置详细信息的报告。
编辑位置
API方法可以用于通过唯一ID来更新特定位置。可以在数据库506中更新在主体中传递的任何值。响应可以返回成功以及特定位置的经更新详细信息的输出。
用户
用户可以具有若干访问等级。例如,调用用户API可能需要管理访问权限。所有其他API可能需要一般用户帐户。一些示例可以包括细粒度的RBAC。API的认证和授权可以在后端被处理,并由API网关、FaaS(例如,LAMBDA)、数据库506等实施。用户API方法可以包括:
POST/user-向功能路由器504添加新用户;
GET/user-列出功能路由器504已知的所有用户;
GET/user/{id}-列出特定用户;
PUT/user/{id}-更新特定用户;
DELETE/user/{id}-移除特定用户。
创建用户
用户可以在功能路由器504上调用API以管理位置、客户端、功能、执行端点、其他用户等。可以通过针对经授权用户的API调用来创建用户。输入可以包括例如用户名称、文本描述、电子邮件地址、访问等级的标志等。用户的成功创建返回新用户的已知详细信息以及该用户的唯一ID。
列出用户
经认证的用户可以调用API来取回该用户帐户上的活动用户的列表以及任何用户详细信息,例如名称、描述、电子邮件、管理员标志等。
删除用户
API方法可以用于通过唯一ID来删除特定用户。在某些情况下,删除可能不会实际上删除用户,而是在用户的“已删除”字段中添加日期。具有不为空的已删除字段的任何用户都可以被视为已删除。
查看用户
API方法可以用于通过唯一ID来查看特定用户的详细信息。详细信息可以包括例如用户名称、描述、电子邮件、管理员标志等。
编辑用户
API方法可以用于通过唯一ID来更新特定用户。可以在数据库506中更新在主体中传递的任何值。响应可以返回成功和特定用户的经更新详细信息的输出。
图8A示出了用于服务容器的示例平台800。服务容器可以托管用于执行功能的运行时环境,托管和/或执行一个或多个功能,托管和/或执行一个或多个应用或服务(例如,分发功能路由服务)等。服务容器使用虚拟化技术(例如,LXC、KVM等)来在硬件资源(例如,服务器、路由器、计算设备等)上提供托管环境。
在该示例中,容器806被存储在主机802上。主机802可以是例如网络设备(例如,路由器、交换机、控制器、功能路由器504等)、服务器、计算机、执行端点、或任何其他计算主机。容器806可以为应用提供执行环境,其可以提供虚拟服务806A。主机802可以托管操作系统(OS)804,其托管并执行容器806并管理主机802上的硬件和软件组件之间的通信和操作。
为了说明的目的,该示例中的主机802包括单个容器。然而,主机802可以托管额外容器。例如,主机802可以包括多个容器。多个容器可以在主机802的同一内核上执行,从而共享大多数或全部OS 804。
在一些示例中,容器806可以托管和/或执行一个或多个功能,例如功能706。例如,主机802可以是执行端点,例如执行端点704A,并且虚拟服务806A可以表示执行端点704A上的功能706A所提供的服务。在该示例中,容器806可以托管针对功能706A的执行环境,并在功能706A被调用时通过执行环境执行功能706A,以将虚拟服务806A提供给客户端(例如,应用702、机械臂404等)。
图8B示出了示例虚拟机(VM)部署810的示意图。在该示例中,主机802可以包括一个或多个VM 816。VM 816可以被配置为基于主机802上的硬件资源812来运行工作负载(例如,应用、服务、过程、功能等)。VM 816可以在由管理程序818提供的虚拟操作系统平台上的客户操作系统814上运行。每个VM可以运行相应的客户操作系统,其可以与跟主机802上的其他VM相关联的其他客户操作系统相同或不同。此外,每个VM可以具有一个或多个网络地址,例如互联网协议(IP)地址。VM 816可以通过使用一个或多个网络地址来与管理程序818和/或任何远程设备或网络通信。
管理程序818可以是创建和运行VM 816的软件、固件、和/或硬件的层。例如,管理程序818可以是用于托管和管理VM 816的虚拟机管理器(VMM)。VM 816上运行的客户操作系统可以共享由管理程序818创建的虚拟化硬件资源。虚拟化硬件资源可以提供分离的硬件组件的错觉。此外,虚拟化硬件资源可以用作物理硬件组件(例如,存储器、存储设备、处理器、网络接口等),并且可以由主机802上的硬件资源812来驱动。管理程序818可以具有一个或多个网络地址(例如,互联网协议(IP)地址),以与其他设备、组件、或网络进行通信。例如,管理程序818可以具有专用IP地址,它们可以使用该专用IP地址来与VM 816和/或任何远程设备或网络通信。
硬件资源812可以提供对由主机802、管理程序818、和VM 816提供的操作和功能进行驱动的底层物理硬件。硬件资源812可以包括例如一个或多个存储器资源、一个或多个存储设备资源、一个或多个通信接口、一个或多个处理器、一个或多个电路板、一个或多个扩展卡、一个或多个电源、一个或多个天线、一个或多个外围组件等。下文参考图11和12描述了硬件资源的额外示例。
主机802还可以包括一个或多个主机操作系统(未示出)。主机操作系统的数目可能会因配置而异。例如,一些配置可以包括双重引导配置,其允许主机802引导进入多个主机操作系统之一。在其他配置中,主机802可以运行单个主机操作系统。主机操作系统可以在硬件资源812上运行。在某些情况下,管理程序818可以在主机802上的主机操作系统上运行或使用该主机操作系统。
主机802还可以具有一个或多个网络地址(例如,互联网协议(IP)地址),以与其他设备、组件、或网络进行通信。例如,主机802可以具有从硬件资源812分配给通信接口的IP地址,它可以使用该IP地址来与VM 816、管理程序818、交换机、和/或任何远程设备或网络进行通信。
在一些示例中,主机802可以是执行端点,例如执行端点704A,并且VM 816可以托管针对各个功能(例如,功能706)的执行环境。例如,VM 1可以托管针对功能706A的执行环境,并且可以在被客户端调用时执行功能706A,如前所述。
在一些示例中,主机802可以运行分布式功能路由器,例如分布式功能路由器504。例如,主机802可以运行分布式功能路由器504。主机802可以经由VM 816中的一个或多个来运行分布式功能路由器504。例如,主机802可以在VM 1上运行分布式功能路由器504。在某些情况下,分布式功能路由器504可以分布在多个VM 816上。例如,主机802上的VM 816可以托管并执行分布式功能路由器504的一个或多个功能。在某些情况下,主机802还可以通过VM 816托管多个分布式功能路由器。例如,VM 1可以托管并运行第一分布式功能路由器,并且VM 2可以托管并运行第二分布式功能路由器。第一和第二分布式功能路由器可以是不同的功能路由器,或可以是被配置为进行负载平衡、故障切换、自动扩展等的同一功能路由器的实例。
图9示出了用于托管运行FaaS环境的服务容器的示例架构。主机802A、802B、802C、802N(统称为“802”)可以包括管理程序818,该管理程序818提供用于容器化的虚拟化层。在该示例中,主机802可以是分离的设备(例如,端点),和/或在单个设备或环境中的分离的硬件资源。例如,主机802可以是单个系统(例如,服务器、路由器等)或分布式环境(例如,云102)上的不同硬件资源(例如,CPU核、存储设备等)。
管理程序818可以托管服务容器806。服务容器806可以托管FaaS环境920A、920B、920C、920N(统称为“920”)。FaaS环境920可以包括无服务器代码,并且可以充当用于运行诸如功能706之类的功能的执行环境。功能可以上载到FaaS环境920并基于一个或多个参数被调用。一旦被调用,FaaS环境920就可以执行这些功能并执行由这些功能定义的动作。
已经公开了一些基本系统组件和概念,本公开现在转向用于功能分发网络中的分布式功能路由的示例方法,如图10所示。为了清楚起见,根据图7中所示的功能路由器504和执行端点704描述了该方法。本文概述的步骤是出于说明目的而提供的非限制性示例,并且可以以其任何组合来实现,包括排除、添加、或修改某些步骤的组合。
在步骤1002,功能路由器504在执行端点的目录上注册多个执行端点(例如,执行端点704)。该目录可以是例如标识如下内容的数据库(例如,数据库506):功能分发网络中的执行端点和功能,以及用于将功能调用路由到功能分发网络中的特定执行端点的信息。功能路由器504可以查询目录以标识功能分发网络中的任何执行端点、客户端、功能等,以及诸如位置信息、功能、特性等之类的相关信息。
多个执行端点中的每个执行端点包括能够执行一个或多个功能(例如,功能706)的相应运行时环境。多个执行端点可以位于一个或多个网络和/或地理位置中。在某些情况下,多个执行端点可以分布在不同的网络上,例如一个或多个本地网络、云网络、区域网络、雾网络等。例如,多个执行端点可以包括驻留在云102上的端点、驻留在雾层156上的端点(例如,雾节点162)、本地端点116等。
在步骤1004,功能路由器504从客户端(例如,应用702、机械臂404等)接收执行特定功能的请求。例如,客户端可以将调用发送到功能路由器504,该调用请求对特定功能的执行。该请求可以标识该特定功能(例如,功能ID),并且可以包括与该请求相关联的附加信息,例如性能参数、成本参数、安全性参数、位置参数、执行端点选择偏好、选择规则、元数据等。
例如,该请求可以包括功能ID、客户端ID、与客户端相关联的位置ID、运行时ID、性能要求(例如,延迟值、优先级、服务质量指示等)、安全性要求(例如,执行该功能的安全性等级)、成本(例如,最大成本、成本范围、成本偏好等)、用户和/或帐户ID、时间戳等。响应中的信息可以由功能路由器504用来标识和选择用于该特定功能的执行端点,如下文进一步描述的。
基于该请求,在步骤1006,功能路由器504可以向目录(例如,数据库506)查询与特定功能相关联的执行端点,并且在步骤1008,接收标识与特定功能相关联的一个或多个执行端点的查询响应。例如,功能路由器504可以向数据库506发送查询以定位特定功能(例如,特定功能的功能ID)、与特定功能相关联的执行端点、和/或用于特定功能的特定运行时环境(例如,与特定功能的功能ID相关联的运行时ID)。该查询可以是对客户端所请求的功能以及具有用于执行客户端所请求的功能的运行时环境的执行端点的查找。
在某些情况下,查询还可以包括功能路由器504用于搜索目录以及标识和/或选择用于特定功能的执行端点的其他参数。例如,查询可以包括位置参数、性能参数、成本参数、安全性参数等。此类参数可以基于请求和/或客户端,并且可以用于进一步过滤或缩小在目录中对执行端点的搜索。在某些情况下,参数可以包括请求中所包括的任何参数,用于标识满足针对该请求的参数的执行端点。例如,如果请求包括位置参数,例如纬度和经度,则查询可以在搜索目录时使用位置参数以基于位置参数来过滤该查询所标识的执行端点。
为了说明,假设来自客户端的请求包括功能ID、运行时ID、客户端ID、和位置ID。假设功能ID对应于功能A,运行时ID对应于运行时B,并且位置ID对应于地理位置(例如纽约市)。功能路由器504可以使用请求中的各种ID来向目录查询具有功能A和/或运行时B并且驻留于纽约市的执行端点。功能路由器504可以接收查询响应,该查询响应标识哪些执行端点具有所请求的运行时环境,可以执行特定功能并且在物理上最接近该客户端。
假设在该示例中的请求还包括可用性参数,该可用性参数指定针对执行端点请求的特定可用性。功能路由器504可以在查询中包括可用性参数,以将查询响应中的结果进一步过滤到具有与可用性参数相对应的可用性的那些执行端点。功能路由器504可以使用其他参数或参数组合来缩小查询结果并以更多或更少的粒度来标识执行端点。
在步骤1010,功能路由器504选择用于执行特定功能的执行端点。功能路由器504可以基于与请求相关联的一个或多个标准来选择执行端点,例如功能参数、运行时参数、位置参数、安全性参数、成本参数、性能参数等,如前所述。
功能路由器504可以基于来自步骤1008的响应查询来选择执行端点。例如,功能路由器504可以选择与查询响应中标识的特定功能相关联的一个或多个执行端点。在某些情况下,功能路由器504可以选择来自步骤1008的查询响应中标识的所有执行端点。在其他情况下,功能路由器504可以选择查询响应中的执行端点的子集(例如,执行端点中的一个或多个)。例如,功能路由器504可以将过滤应用于查询响应中标识的执行端点的列表,以将该执行端点的列表进一步缩小到一个或多个执行端点。功能路由器504可以基于一个或多个标准(例如,附加参数、路由或选择规则、客户端策略、用户偏好等)来过滤执行端点的列表。
例如,功能路由器504可以接收标识了十个执行端点的查询响应,这十个执行端点与功能路由器504在到执行端点的目录的查询中所使用的标准相匹配。然后,功能路由器504可以基于一个或多个因素(例如,接近度、优先级、安全性等级、性能等级、成本、策略、规则、偏好等)来从这十个执行端点中选择一个或多个执行端点。例如,功能路由器504可以从这十个执行端点中选择如下的执行端点:可用的、在物理上或地理上最接近客户端的、具有最低延迟的、具有最高性能的、具有最低成本的、具有最高安全性的、具有最低工作负载的、具有最快网络连接的、具有特定权限的、符合特定规则或策略的(例如,允许策略、阻止策略、优先级策略等)、和/或具有任何其他特性的执行端点。
在步骤1012,功能路由器504向客户端发送对执行特定功能的请求的响应。该响应可以标识被选择为客户端执行特定功能的执行端点。例如,该响应可以包括执行端点名称、用于从执行端点调用功能的地址(例如,功能执行端点地址、URL、HTTP重定向、IP地址、网络名称等)、功能名称或ID、期限参数、执行条件或参数等。
客户端可以接收响应并基于该响应调用执行端点处的特定功能。例如,客户端可以基于该响应中的地址来调用执行端点处的特定功能。在某些情况下,该响应可以包括重定向(例如,HTTP重定向),其将客户端的功能执行请求重定向到执行端点并触发执行端点运行特定功能。
在某些情况下,在向客户端发送响应之前,功能路由器504可以联系所选择的执行端点,以请求用于在该执行端点处调用特定功能的地址。当联系执行端点时,功能路由器504还可以包括针对执行端点的附加请求或指令。例如,功能路由器504可以指示执行端点加载特定功能并生成针对该执行端点处的该功能的地址。
在某些情况下,执行端点可能没有本地存储的功能。在此,功能路由器504可以指示执行端点从诸如功能存储库(例如,存储库606)之类的存储位置取回或下载功能。取回或下载功能的指令可以包括标识功能的信息(例如,功能ID)和/或用于取回或下载功能的信息(例如,功能所位于的和/或功能可以被取回或下载的地址)。取回或下载功能的指令还可以指示执行端点在取回或下载功能后加载功能,并生成客户端可用于从执行端点调用该功能的地址。
此外,功能路由器504还可以向执行端点提供如下指示:客户端被授权从该执行端点执行特定功能。例如,功能路由器504可以通知执行端点该客户端被认证和/或被授权从该执行端点执行功能。执行端点可以将此通知用于安全性,以确保功能仅由经授权或经认证的客户端调用。
在该示例中,在指示执行以加载功能并生成该功能的地址之后,功能路由器504可以从执行端点接收该地址。在步骤1012,功能路由器504可以将来自执行端点的地址包括在到客户端的响应中。如前所述,客户端可以使用响应中的地址,以然后调用执行端点处的该功能。
功能路由器504可以周期性地轮询在目录中注册的多个执行端点以获取诸如可用性、性能等级、安全性等级、成本、位置、运行时信息等之类的信息,并在发生任何改变时更新目录。这样,功能路由器504可以维护目录中的信息准确且最新。功能路由器504可以基于时间表、时间间隔、用户请求、事件等来轮询执行端点。
例如,功能路由器504可以在每天、自与执行端点的最后一次通信起的特定一段时间之后、自向执行端点的最后一次轮询请求起的一段时间之后、针对执行端点检测到一段时间的不活动(inactivity)后、基于轮询队列等轮询执行端点。作为另一示例,功能路由器504可以基于一个或多个轮询触发事件(例如,检测到的不活动状态、检测到的活动状态的类型或数量、检测到的与执行端点相关联的修改和更新(例如,软件更新、位置更改、可用性更改、性能更改等)、安全性事件等)来轮询执行端点。
功能路由器504可以在其检测到执行端点、客户端、功能、运行时环境、和/或认证参数(例如,位置、运行时环境、可用性、安全性、性能、成本等)中的变化时更新目录。例如,功能路由器504可以更新目录以注册新的执行端点、删除执行端点(例如,不再可用、已注册的执行端点)、添加新客户端、移除客户端、编辑客户端等。功能路由器504还可以更新目录以更改位置信息,例如执行端点的位置、客户端的位置、功能的位置等。
在某些情况下,在从功能路由器504接收响应并调用所选择的执行端点处的功能之后,客户端可以继续将所选择的执行端点用于将来的功能执行请求。例如,客户端可以在将来的请求中继续调用所选择的执行端点处的该功能,直到该功能和/或执行端点不再可用、直到期限过去、直到从客户端到执行端点的请求被限制等等。当客户端需要新的执行端点时,客户端可以如步骤1002所描述的那样向功能路由器504发送请求,以开始如前所述的查找执行端点的过程。
现在,本公开转向图11和12,其示出了示例硬件组件和设备,它们适合于托管运行时或执行环境、运行功能、执行路由和执行端点选择操作、以及执行任何其他计算操作。
图11示出了适合于执行功能路由操作、托管执行环境、和运行功能的示例网络设备1100。网络设备1100包括主中央处理单元(CPU)1104、接口1102、和连接1110(例如,PCI总线)。当在适当的软件或固件的控制下动作时,CPU 1104负责执行分组管理、错误检测、和/或路由功能。
CPU 1104可以在包括操作系统和任何适当的应用软件的软件的控制下完成这些功能。CPU 1104可以包括一个或多个处理器1108,例如来自Intel X86系列微处理器、Motorola系列微处理器或MIPS系列微处理器的处理器。在替代实施例中,处理器1108是用于控制网络设备1100的操作的专门设计的硬件。在某些情况下,存储器1106(例如,非易失性RAM、TCAM、和/或ROM)可以形成CPU 1104的一部分。但是,存在可以将存储器耦合到系统的多种不同的方式。
接口1102通常被提供作为模块化接口卡(有时称为“线卡”)。通常,它们控制网络上数据分组的发送和接收,并且有时支持与网络设备1100一起使用的其他外围设备。可以提供的接口中包括以太网接口、帧中继接口、电缆接口、DSL接口、令牌环接口等等。另外,可以提供各种非常高速的接口,例如快速令牌环接口、无线接口、以太网接口、千兆以太网接口、ATM接口、HSSI接口、POS接口、FDDI接口、WIFI接口、3G/4G/5G蜂窝接口、CAN BUS、LoRA等。通常,这些接口可以包括适合与适当的介质进行通信的端口。在某些情况下,它们还可以包括独立的处理器,并且在某些情况下包括易失性RAM。
独立处理器可以控制通信和密集型任务,例如分组交换、媒体控制、信号处理、密码处理、功能路由、执行端点管理、网络管理等。通过为通信密集型任务提供分离的处理器,这些接口允许主微处理器1104高效地执行路由计算、网络诊断、安全性功能等。
尽管图11所示的系统是本发明的一个特定的网络设备,但绝不是唯一可以在其上实现本发明的网络设备架构。例如,经常使用具有处理通信以及路由计算等的单个处理器的架构。此外,也可以与路由器使用其他类型的接口和介质。
不管网络设备的配置如何,它都可以采用一个或多个存储器或存储器模块(包括存储器1106),其被配置为存储针对通用网络操作以及用于本文所述的漫游、路由优化和路由功能的机制的程序指令。程序指令可以控制例如操作系统和/或一个或多个应用的操作。一个或多个存储器还可以被配置为存储诸如移动性绑定、注册、和关联表等之类的表。存储器1106还可以保存各种容器以及虚拟化执行环境和数据。
网络设备1100还可以包括专用集成电路(ASIC)1112,其可以被配置为执行路由和/或交换操作。ASIC 1112可以经由总线1110与网络设备1100中的其他组件通信,以交换数据和信号并协调网络设备1100进行的各种类型的操作,例如路由、交换、和/或数据存储操作。
图12示出了系统1200的示例架构,包括使用连接1206彼此电通信的各种硬件计算组件。系统1200包括处理单元(CPU或处理器)1204和将包括系统存储器1220的各种系统组件(例如,只读存储器(ROM)1218和随机存取存储器(RAM)1216)耦合到处理器1204的系统连接1206。
系统1200可以包括高速存储器的缓存,其与处理器1204直接连接、靠近处理器1204、或整合为处理器1204的一部分。系统1200可以将数据从存储器1220和/或存储设备1208复制到缓存1202,以供处理器1204进行快速访问。这样,缓存可以提供性能提升,其避免了处理器1204在等待数据时的延时。这些和其他模块可以控制或被配置为控制处理器1204以执行各种动作。其他系统存储器1220也可以被使用。存储器1220可以包括具有不同性能特性的多种不同类型的存储器。
处理器1204可以包括任何通用处理器和服务组件,例如存储在存储设备1208中的服务1 1210、服务2 1212和服务3 1214,其被配置为控制处理器1204以及其中软件指令被合并到实际处理器设计中的专用处理器。处理器1204本质上可以是完全自包含的计算系统,包含多个核或处理器、总线、存储器控制器、缓存等。多核处理器可以是对称的或非对称的。
为了使用户能够与计算设备1200交互,输入设备1222可以代表任意数目的输入机构,例如用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等。输出设备1224也可以是本领域技术人员已知的许多输出机构中的一个或多个。在某些情况下,多模式系统可以使用户能够提供多种类型的输入以与计算设备1200进行通信。通信接口1226通常可以支配和管理用户输入和系统输出。对于在任何特定硬件布置上的操作没有限制,因此在改进的硬件或固件布置被开发出时,此处的基本特征可以容易地被替代为该改进的硬件或固件布置。
存储设备1208可以是非易失性存储器、硬盘、或可以存储供计算机访问的数据的任何其他类型的计算机可读介质,例如磁带盒、闪存卡、固态存储器设备、数字通用盘、盒、随机存取存储器(RAM)1216、只读存储器(ROM)1218、及其混合。在某些情况下,存储设备1208可以存储用于执行代码的执行或运行时环境、用于经由执行或运行时环境执行的一个或多个功能、一个或多个资源(例如,库、数据对象、API等)等等。
系统1200可以包括集成电路1228,例如被配置为执行各种操作的专用集成电路(ASIC)。集成电路1228可以与连接1206耦合,以便与系统1200中的其他组件通信。
存储设备1208可以包括用于控制处理器1204的软件服务1210、1212、1214。在某些情况下,软件服务1210、1212、1214可以包括例如操作系统或内核服务、应用服务、与一个或多个功能相关联的服务等。可以预期其他硬件或软件模块。存储设备1208可以连接到系统连接1206。在一个方面,执行特定功能的硬件模块可以包括存储在与诸如处理器1204、连接1206、输出设备1224等之类的必要硬件组件连接的计算机可读介质中的软件组件,以执行该功能。
为了说明的清楚起见,在某些情况下,本技术可以被表示为包括单独的功能块,其包括如下功能块:这些功能块包括设备、设备组件、以软件或硬件和软件的组合来实现的方法中的步骤或例程。
在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,当被提及时,非暂时性计算机可读存储介质明确地排除诸如能量、载波信号、电磁波、和信号本身之类的介质。
可以使用存储在计算机可读介质中或以其他方式从计算机可读介质中可用的计算机可执行指令来实现根据上述示例的方法。这样的指令可以包括例如使得或以其他方式配置通用计算机、专用计算机、或专用处理设备以执行特定功能或功能组的指令和数据。所使用的计算机资源的一部分可通过网络访问。计算机可执行指令可以是例如二进制、诸如汇编语言之类的中间格式指令、固件或源代码。可以用来存储指令、所使用的信息、和/或在根据所描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、设有非易失性存储器的USB设备、联网存储设备等等。
实现根据这些公开内容的方法的设备可以包括硬件、固件和/或软件,并且可以采用多种形状因子中的任何一种。这样的形状因子的典型示例包括膝上型计算机、智能电话、小型个人计算机、个人数字助理、机架安装设备、独立设备等等。本文描述的功能也可以实现在外围设备或附加卡中。通过进一步的示例,这种功能还可以在单个设备中执行的不同芯片或不同处理之间的电路板上实现。
指令、用于传达这样的指令的介质、用于执行它们的计算资源、以及用于支持这样的计算资源的其他结构是用于提供这些公开内容中所描述的功能的构件。
尽管使用各种示例和其他信息来解释了所附权利要求的范围内的方面,但是基于这样的示例中的特定特征或布置,不应该暗示对权利要求的限制,因为本领域的普通技术人员将能够使用这些示例来推导各种各样的实现方式。此外,尽管可能已经以特定于结构特征和/或方法步骤的示例的语言描述了一些主题,但是应该理解,所附权利要求中限定的主题不必限于这些所描述的特征或动作。例如,这种功能可以不同地分布或在除本文所标识的组件之外的组件中执行。而是,所描述的特征和步骤被公开作为在所附权利要求的范围内的方法和系统的组件的示例。
记载集合中的“至少一个”的权利要求语言指示该集合中的一个成员或该集合中的多个成员满足该权利要求。例如,记载“A和B中的至少一个”的权利要求语言表示A、B、或A和B。
Claims (20)
1.一种方法,包括:
经由功能路由器在执行端点目录上注册多个执行端点,所述多个执行端点中的每个执行端点包括能够执行一个或多个功能的相应运行时环境,所述多个执行端点位于一个或多个网络中;
经由所述功能路由器从客户端接收执行特定功能的请求;
基于所述请求,经由所述功能路由器向所述执行端点目录查询与所述特定功能相关联的执行端点;
经由所述功能路由器接收查询响应,该查询响应标识与所述特定功能相关联的一个或多个执行端点;
经由所述功能路由器选择用于执行所述特定功能的执行端点,该执行端点是基于与所述请求相关联的一个或多个标准从与所述特定功能相关联的所述一个或多个执行端点中选择的;以及
经由所述功能路由器向所述客户端发送对执行所述特定功能的所述请求的响应,所述响应标识所选择的用于执行所述特定功能的所述执行端点。
2.根据权利要求1所述的方法,还包括:
经由所述功能路由器向所述执行端点发送第二请求,以请求从存储位置加载所述特定功能并生成用于调用所述执行端点处的所述特定功能的功能执行端点地址。
3.根据权利要求2所述的方法,其中,所述响应包括用于调用所述执行端点处的所述特定功能的所述功能执行端点地址。
4.根据权利要求2或3所述的方法,其中,所述第二请求包括以下各项中的至少一项:所述客户端被授权执行所述执行端点上的所述特定功能的指示,或者从所述存储位置获取所述特定功能的指令。
5.根据权利要求3所述的方法,其中,所述功能执行端点地址包括以下各项中的至少一项:与特定执行端点相对应的统一资源定位符(URL),或者被配置为将所述客户端重定向到所述执行端点处的所述特定功能的超文本传输协议(HTTP)重定向。
6.根据权利要求4所述的方法,其中,所述存储位置包括一个或多个功能存储库,并且其中,所述一个或多个网络包括云网络和一个或多个本地网络。
7.根据任一前述权利要求所述的方法,其中,注册所述多个执行端点包括在所述执行端点目录中存储以下各项中的至少一项:与每个执行端点相关联的相应位置信息、与每个执行端点相关联的相应标识符、与每个执行端点相关联的相应运行时标识符、与每个执行端点相关联的一个或多个相应功能、以及与每个执行端点相关联的一个或多个参数。
8.根据权利要求7所述的方法,其中,所述一个或多个标准包括以下各项中的至少一项:可用性、位置、成本、性能等级、接近度、或安全性等级。
9.根据任一前述权利要求所述的方法,还包括:
经由所述功能路由器向所述多个执行端点中的至少一个执行端点轮询相应的信息更新;以及
更新所述执行端点目录以包括所述相应的信息更新中的一个或多个。
10.根据权利要求9所述的方法,其中,所述相应的信息更新包括以下各项中的至少一项:相应的可用性、相应的运行时环境、相应的安全性等级、相应的成本、相应的性能等级、相关联功能的相应指示、相应的位置、以及相应的状态。
11.根据任一前述权利要求所述的方法,其中,所述执行端点目录进行以下关联中的至少一项:
将相应功能与相应执行端点相关联;
将相应执行端点与相应位置相关联;
将相应功能与相应运行时环境相关联;
将相应功能与相应客户端相关联;
将相应客户端与相应执行端点相关联;以及
将相应执行端点与相应参数相关联。
12.根据任一前述权利要求所述的方法,其中,所述多个执行端点驻留在多个不同的网络上,其中,所述一个或多个标准包括位置,并且其中,所述执行端点是基于所述客户端与所述执行端点之间的接近度来选择的。
13.一种系统,包括:
一个或多个处理器;以及
其中存储有指令的至少一个计算机可读存储介质,这些指令在由所述一个或多个处理器执行时,使得所述系统进行以下操作:
在执行端点目录上注册多个执行端点,所述多个执行端点中的每个执行端点包括能够执行一个或多个功能的相应运行时环境,所述多个执行端点位于一个或多个网络中;
从客户端接收执行特定功能的请求;
基于所述请求,向所述执行端点目录查询与所述特定功能相关联的执行端点;
接收查询响应,该查询响应标识与所述特定功能相关联的一个或多个执行端点;
选择用于执行所述特定功能的执行端点,所述执行端点是基于与所述请求相关联的一个或多个标准从与所述特定功能相关联的所述一个或多个执行端点中选择的;以及
向所述客户端发送对执行所述特定功能的所述请求的响应,所述响应标识所选择的用于执行所述特定功能的所述执行端点。
14.根据权利要求13所述的系统,所述至少一个计算机可读存储介质在其中存储有附加指令,所述附加指令在由所述一个或多个处理器执行时,使得所述系统进行以下操作:
向所述执行端点发送第二请求,以请求从存储位置加载所述特定功能并生成用于调用所述执行端点处的所述特定功能的功能执行端点地址,其中所述响应包括用于调用所述执行端点处的所述特定功能的所述功能执行端点地址。
15.根据权利要求13或14所述的系统,其中,注册所述多个执行端点包括在所述执行端点目录中存储以下各项中的至少一项:与每个执行端点相关联的相应位置信息、与每个执行端点相关联的相应标识符、与每个执行端点相关联的相应运行时标识符、与每个执行端点相关联的一个或多个相应功能、以及与每个执行端点相关联的一个或多个参数,其中所述一个或多个标准包括以下各项中的至少一项:可用性、位置、成本、性能等级、接近度、或安全性等级。
16.根据权利要求13、14、或15所述的系统,其中,所述一个或多个网络包括多个不同的网络,其中,所述多个执行端点驻留在所述多个不同的网络上,其中,所述一个或多个标准包括位置,并且其中,所述执行端点是基于所述客户端与所述执行端点之间的接近度来选择的。
17.一种非暂时性计算机可读存储介质,其中存储有指令,这些指令在由一个或多个处理器执行时,使得所述一个或多个处理器进行以下操作:
经由功能路由器在执行端点目录上注册多个执行端点,所述多个执行端点中的每个执行端点包括能够执行一个或多个功能的相应运行时环境,所述多个执行端点位于一个或多个网络中;
经由所述功能路由器从客户端接收执行特定功能的请求;
基于所述请求,经由所述功能路由器向所述执行端点目录查询与所述特定功能相关联的执行端点;
经由所述功能路由器接收查询响应,该查询响应标识与所述特定功能相关联的一个或多个执行端点;
经由所述功能路由器选择用于执行所述特定功能的执行端点,所述执行端点是基于与所述请求相关联的一个或多个标准从与所述特定功能相关联的所述一个或多个执行端点中选择的;以及
经由所述功能路由器向所述客户端发送对执行所述特定功能的所述请求的响应,所述响应标识所选择的用于执行所述特定功能的所述执行端点。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其存储有附加指令,所述附加指令在由所述一个或多个处理器执行时,使得所述一个或多个处理器进行以下操作:
向所述执行端点发送第二请求,以请求从存储位置加载所述特定功能并生成用于调用所述执行端点处的所述特定功能的功能执行端点地址,其中所述响应包括用于调用所述执行端点处的所述特定功能的所述功能执行端点地址。
19.根据权利要求17或18所述的非暂时性计算机可读存储介质,其中,注册所述多个执行端点包括在所述执行端点目录中存储以下各项中的至少一项:与每个执行端点相关联的相应位置信息、与每个执行端点相关联的相应标识符、与每个执行端点相关联的相应运行时标识符、与每个执行端点相关联的一个或多个相应功能、以及与每个执行端点相关联的一个或多个参数,其中所述一个或多个标准包括以下各项中的至少一项:可用性、位置、成本、性能等级、接近度、或安全性等级。
20.根据权利要求17至19中任一项所述的非暂时性计算机可读存储介质,其中,所述一个或多个网络包括多个不同的网络,其中,所述多个执行端点驻留在所述多个不同的网络上,其中,所述一个或多个标准包括位置,并且其中,所述执行端点是基于所述客户端与跟所述特定功能相关联的所述一个或多个执行端点之间的接近度来选择的。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762534998P | 2017-07-20 | 2017-07-20 | |
US62/534,998 | 2017-07-20 | ||
US15/806,702 | 2017-11-08 | ||
US15/806,702 US10742750B2 (en) | 2017-07-20 | 2017-11-08 | Managing a distributed network of function execution environments |
PCT/US2018/042617 WO2019018482A1 (en) | 2017-07-20 | 2018-07-18 | MANAGING A DISTRIBUTED NETWORK OF FUNCTION EXECUTION ENVIRONMENTS |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111095212A true CN111095212A (zh) | 2020-05-01 |
CN111095212B CN111095212B (zh) | 2024-02-20 |
Family
ID=65015521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880060764.6A Active CN111095212B (zh) | 2017-07-20 | 2018-07-18 | 管理功能执行环境的分布式网络 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3655857A1 (zh) |
CN (1) | CN111095212B (zh) |
WO (1) | WO2019018482A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114422492A (zh) * | 2022-01-17 | 2022-04-29 | 星环信息科技(上海)股份有限公司 | 一种请求转发方法、设备及存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11042405B2 (en) * | 2019-01-10 | 2021-06-22 | Vmware, Inc. | Scheduling and executing functions across different functions-as-a-service (FAAS) infrastructures |
WO2021040582A1 (en) | 2019-08-23 | 2021-03-04 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and apparatuses for providing a function as a service platform |
US11551122B2 (en) | 2021-03-05 | 2023-01-10 | Microsoft Technology Licensing, Llc | Inferencing endpoint discovery in computing systems |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1643880A (zh) * | 2002-03-27 | 2005-07-20 | 国际商业机器公司 | 瞬变网络中的动态寻址 |
CN101014046A (zh) * | 2007-02-02 | 2007-08-08 | 清华大学 | 服务承载网中服务定位和服务质量路由的集成方法 |
US20090092124A1 (en) * | 2007-10-03 | 2009-04-09 | Microsoft Corporation | Network routing of endpoints to content based on content swarms |
US20120042040A1 (en) * | 2010-08-16 | 2012-02-16 | International Business Machines Corporation | Locating service endpoints from a service registry |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030120776A1 (en) * | 2001-07-11 | 2003-06-26 | Sun Microsystems, Inc. | System controller for use in a distributed processing framework system and methods for implementing the same |
CN100558038C (zh) * | 2006-03-31 | 2009-11-04 | 国际商业机器公司 | 服务注册器以及相关系统和方法 |
-
2018
- 2018-07-18 CN CN201880060764.6A patent/CN111095212B/zh active Active
- 2018-07-18 WO PCT/US2018/042617 patent/WO2019018482A1/en unknown
- 2018-07-18 EP EP18750005.3A patent/EP3655857A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1643880A (zh) * | 2002-03-27 | 2005-07-20 | 国际商业机器公司 | 瞬变网络中的动态寻址 |
CN101014046A (zh) * | 2007-02-02 | 2007-08-08 | 清华大学 | 服务承载网中服务定位和服务质量路由的集成方法 |
US20090092124A1 (en) * | 2007-10-03 | 2009-04-09 | Microsoft Corporation | Network routing of endpoints to content based on content swarms |
US20120042040A1 (en) * | 2010-08-16 | 2012-02-16 | International Business Machines Corporation | Locating service endpoints from a service registry |
Non-Patent Citations (2)
Title |
---|
BRUCE S. DAVIE: "A programmable overlay router for service provider innovation" * |
周益军;黄本雄;: "网络端点接入控制的实现" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114422492A (zh) * | 2022-01-17 | 2022-04-29 | 星环信息科技(上海)股份有限公司 | 一种请求转发方法、设备及存储介质 |
CN114422492B (zh) * | 2022-01-17 | 2023-12-12 | 星环信息科技(上海)股份有限公司 | 一种请求转发方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2019018482A1 (en) | 2019-01-24 |
CN111095212B (zh) | 2024-02-20 |
EP3655857A1 (en) | 2020-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10742750B2 (en) | Managing a distributed network of function execution environments | |
US11637872B2 (en) | Systems and methods for allocating and managing resources in an internet of things environment using location based focus of attention | |
US10616129B2 (en) | Automated desktop placement | |
CN111095212B (zh) | 管理功能执行环境的分布式网络 | |
US11023535B1 (en) | Placement of data volumes in a data center | |
JP6395825B2 (ja) | 異なるテナンシーセットのエンドポイントデーターセンター | |
US9350682B1 (en) | Compute instance migrations across availability zones of a provider network | |
US8929377B2 (en) | Systems and methods for automatic rack detection | |
US10313345B2 (en) | Application marketplace for virtual desktops | |
US10057187B1 (en) | Dynamic resource creation to connect client resources in a distributed system | |
JP6314236B2 (ja) | トラフィックポリシーの実施をサポートするエンティティハンドルレジストリ | |
US10432551B1 (en) | Network request throttling | |
US20190079788A1 (en) | Predictive image storage system for fast container execution | |
US20140258374A1 (en) | Automated data center selection | |
US9591018B1 (en) | Aggregation of network traffic source behavior data across network-based endpoints | |
US11388164B2 (en) | Distributed application programming interface whitelisting | |
US11222083B2 (en) | Web crawler platform | |
CN113711186A (zh) | 用于云规模存储和数据传输的分布式对象放置、复制和检索 | |
US9930115B1 (en) | Virtual network storage function layer comprising one or more virtual network storage function instances | |
US10885028B2 (en) | Searching and aggregating data across multiple geolocations | |
US20240195681A1 (en) | Secure bi-directional network connectivity system between private networks | |
US20240129185A1 (en) | Secure bi-directional network connectivity system between private networks | |
US20240211295A1 (en) | Systems and methods for automated migration replication | |
WO2024138123A1 (en) | Secure bi-directional network connectivity system between private networks | |
WO2024138126A1 (en) | Secure bi-directional network connectivity system between private networks |
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 |