CN112384895A - 使用函数检查点实现服务枢纽的函数可移植性 - Google Patents
使用函数检查点实现服务枢纽的函数可移植性 Download PDFInfo
- Publication number
- CN112384895A CN112384895A CN201980027665.2A CN201980027665A CN112384895A CN 112384895 A CN112384895 A CN 112384895A CN 201980027665 A CN201980027665 A CN 201980027665A CN 112384895 A CN112384895 A CN 112384895A
- Authority
- CN
- China
- Prior art keywords
- function
- program code
- service
- service hub
- instance
- 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.)
- Pending
Links
- 230000006870 function Effects 0.000 claims abstract description 598
- 230000015654 memory Effects 0.000 claims abstract description 77
- 238000000034 method Methods 0.000 claims abstract description 58
- 238000003860 storage Methods 0.000 claims description 59
- 230000005012 migration Effects 0.000 claims description 42
- 238000013508 migration Methods 0.000 claims description 42
- 230000002085 persistent effect Effects 0.000 claims description 18
- 238000004891 communication Methods 0.000 description 24
- 238000005516 engineering process Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 18
- 230000004044 response Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 230000006855 networking Effects 0.000 description 11
- 230000008520 organization Effects 0.000 description 11
- 238000013500 data storage Methods 0.000 description 8
- 238000013468 resource allocation Methods 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 230000036541 health Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- 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/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Retry When Errors Occur (AREA)
Abstract
描述了用于为位于第一服务枢纽上的程序代码函数的实例创建函数检查点并使用所述函数检查点在第二服务枢纽上加载所述程序代码函数的所述实例的技术。示例性方法可包括为加载在第一服务枢纽的存储器中的程序代码函数的实例创建函数检查点,其中所述函数检查点可包含有关所述程序代码函数的所述实例的执行指令和执行状态数据。可识别所述本地设备网络中包括的第二服务枢纽,并且可将所述函数检查点发送到所述第二服务枢纽,以允许使用所述函数检查点将所述程序代码函数的所述实例的执行加载到所述第二服务枢纽上。
Description
背景技术
电子设备和计算系统在社会的许多方面已经变得无处不在。可在工作场所、家中或学校中找到设备。计算系统可包括用于处理和存储数据的计算和数据存储系统。一些计算系统已经开始提供称为服务提供商环境的集中式虚拟计算选项,所述选项可降低总体成本、提高可用性、改善可扩展性并缩短部署新应用的时间。
通信技术的进步已经允许甚至相对简单的电子设备与设备网络中包括的其他设备和计算系统进行通信。例如,物联网(IoT)是使用互联网基础设施将分散在全球的计算设备进行互连。此类设备可能够捕获数据,并通过网络将数据安全地传达到服务提供商环境(例如“云”环境)中的集中式计算服务。在一个示例中,设备可将数据发送到本地设备网络中的服务枢纽或计算节点,并且服务枢纽可将从设备接收的数据转发到服务提供商环境中的集中式计算服务。另外,服务枢纽可向连接到服务枢纽的设备提供服务,诸如数据聚合、本地计算、消息收发或其他服务。
附图说明
图1A示出了用于在源服务枢纽上生成函数检查点并且使用该函数检查点将程序代码函数的实例传递到目的地服务枢纽的示例性系统和方法。
图1B是用于将函数检查点从源服务枢纽传递到目的地服务枢纽的示例性系统和方法的图示。
图2是用于在源服务枢纽上生成函数检查点并且经由服务提供商环境向目的地服务枢纽提供函数检查点的示例性系统和方法的图示。
图3示出了用于在源服务枢纽上生成函数检查点并将函数检查点发送到服务提供商环境中的计算实例的示例性系统和方法。
图4A是示出用于将函数检查点分发给服务枢纽的系统中包括的各种示例性部件的框图。
图4B示出了可用于留存程序代码函数的实例的执行状态的函数检查点。
图5是示出用于将函数检查点发送到可用服务枢纽或当服务枢纽不可用时将函数检查点发送到服务提供商环境的示例性方法的流程图。
图6是示出用于在第一服务枢纽上创建函数检查点并将函数检查点发送到第二服务枢纽因此可使用函数检查点在第二服务枢纽上恢复程序代码函数的实例的示例性方法的流程图。
图7是示出用于设备服务网络的示例性计算机联网架构的框图。
图8是示出示例性服务提供商环境的框图。
图9是示出可用于执行用于将函数检查点分发给服务枢纽的方法的计算设备的示例的框图。
具体实施方式
描述了用于为位于源服务枢纽上的程序代码函数的实例创建函数检查点并使用函数检查点在目的地服务枢纽上执行程序代码函数的实例的技术。服务枢纽可包括在本地设备网络中,该本地设备网络还包括多个连接的设备。服务枢纽可为计算设备,所述计算设备被配置成向本地设备网络中包括的连接的设备提供服务,并且与服务提供商环境(例如,“云”环境)中包括的计算系统通信。例如,服务枢纽可提供的服务包括但不限于:消息服务、程序代码函数服务、设备影子服务和用户开发的服务。可使用服务枢纽上的程序代码函数来实现服务,并且如下所述,可将程序代码函数的实例从源服务枢纽移动到目的地服务枢纽。
在一个示例性配置中,可通过在源服务枢纽上挂起程序代码函数的实例的执行并创建程序代码函数的实例的函数检查点,将在源服务枢纽上执行的程序代码函数的实例移动到本地设备网络中包括的目的地服务枢纽。在一个示例中,函数检查点可包括一个或多个检查点图像文件,它们包含从源服务枢纽的存储器获得的执行指令和执行状态数据。函数检查点可用于留存程序代码函数的实例在源服务枢纽上挂起之前的执行状态,并且函数检查点中包括的执行指令和执行状态数据可用于在目的地服务枢纽上恢复程序代码函数的实例的执行状态。而且,可收集与在源服务枢纽上执行程序代码函数的实例有关的函数元数据。函数元数据可用于促进在目的地服务枢纽上恢复程序代码函数的实例的执行状态。
在源服务枢纽上为程序代码函数的实例创建函数检查点之后,可将函数检查点发送到位于本地设备网络中的目的地服务枢纽,该目的地服务枢纽已被识别为可用于托管程序代码函数的实例。在一个示例中,可通过本地无线网络或通过有线网络将函数检查点直接发送到目的地服务枢纽。在另一示例中,可将函数检查点发送到服务提供商环境,以分发到目的地服务枢纽,如稍后所述。在另一示例中,可将函数检查点发送到服务提供商环境以被托管在位于服务提供商环境中的计算实例上。在接收到函数检查点之后,目的地服务枢纽可被配置成通过将函数检查点中包括的执行指令和执行状态数据加载到目的地服务枢纽的存储器中来恢复程序代码函数的实例的执行状态。
为了进一步描述本技术,现在参考附图提供各示例。图1A是示出用于为在源服务枢纽104a上执行的程序代码函数的实例112(也称为程序代码函数实例112)生成函数检查点114并使用函数检查点114在目的地服务枢纽104b上恢复程序代码函数的实例112的示例性系统和方法的图示。图1示出了本地设备网络102可包括多个服务枢纽104a-104b和多个连接的设备118a-118n。如将了解的,本地设备网络102可包括任何数量的服务枢纽104a-104b和连接的设备118a-118n。可在商业环境(例如,制造环境、办公环境、零售环境等)、家庭环境、娱乐环境以及任何其他合适的环境内实现本地设备网络102。在一些示例中,本地设备网络102可经由广域网(WAN)与诸如服务提供商环境(例如,“云”环境)的外部网络通信,如稍后所述。
服务枢纽104a-104b可为计算设备,所述计算设备被配置成托管向本地设备网络102中包括的连接的设备118a-118n提供各种服务的软件。托管在服务枢纽104a-104b上的软件可将服务提供商环境能力扩展到连接的设备118a-118n,从而允许服务枢纽104a-104b托管例如用于收集和分析由连接的设备118a-118n生成的信息的存储和计算服务,并允许服务枢纽104a-104b托管被连接的设备118a-118n使用以彼此安全地通信的消息服务。而且,用户(包括服务提供商的客户)可能会开发软件应用和/或程序代码函数(例如“无服务器”函数)用于服务,其可被部署到本地设备网络102内的服务枢纽104a-104b并在其上执行。作为说明,用户可创建程序代码函数,该程序代码函数响应于事件而向订阅的连接设备发布消息,并且用户可将程序代码函数部署到本地设备网络102中的服务枢纽104a-104b。调用服务枢纽104a-104b上的服务可包括将程序代码函数的实例112(即,软件应用或程序代码函数的实例)加载到服务枢纽104a-104b的存储器106a-106b(例如,随机存取存储器(RAM))中。
程序代码函数的实例112可为按需的或长期存在的。说明性地,可响应于请求或事件而调用按需程序代码函数,其中在程序代码函数112的执行期间维持很少或没有维持状态信息,并且可在完成后终止程序代码函数112。长期存在的程序代码函数可能是有状态的,并且可用于提供正在进行的服务,诸如侦听请求和转发外部事件。
如一个示例性配置中所示,程序代码函数124可部署到本地设备网络102中包括的服务枢纽104a。在一个示例中,用户可将程序代码函数124提交给位于服务提供商环境120中的函数部署管理器122,并且函数部署管理器122可用于将程序代码函数124发送给服务枢纽104a。例如,函数部署管理器122可包括用户接口,该用户接口允许用户提交程序代码函数124以用于部署到用户的本地设备网络102中包括的一个或多个服务枢纽104a-104b。在一个示例中,函数部署管理器122可被配置成选择哪个服务枢纽104a-104b可接收程序代码函数124的部署。为此,程序代码函数可透明地部署到用户的本地设备网络102中包括的服务枢纽104a-104b中的任何一个。在另一示例中,用户可指定哪个服务枢纽104a-104b来部署程序代码函数124。在选择服务枢纽104a-104b之后,函数部署管理器122可致使程序代码函数124(例如,程序代码函数文件)被发送到选定的服务枢纽104a-104b。响应于接收到程序代码函数124,服务枢纽104a-104b可加载程序代码函数的实例112以在服务枢纽104a-104b上执行。
被加载以在源服务枢纽104a上执行的程序代码函数的实例112可被移动到目的地服务枢纽104b。出于各种原因,可使程序代码函数的实例112从源服务枢纽104a移动到目的地服务枢纽104b。例如,当源服务枢纽104a的计算资源(例如,处理器、存储器106a和/或网络带宽)过载时,当源服务枢纽104a的健康状态变得不稳定时,或者当源服务枢纽104a的载荷被重新分发到已添加到本地设备网络102的目的地服务枢纽104b时,可使程序代码函数的实例112移动到目的地服务枢纽104b。当然,出于除上述原因之外的原因,可执行将程序代码函数的实例112从源服务枢纽104a移动到目的地服务枢纽104b。
在一个示例中,可使用选择标准来执行选择程序代码函数的实例112以被移动到目的地服务枢纽104b。选择标准的非限制性示例可包括:函数类型、函数执行状态、函数完成状态和/或资源分配。函数类型可指示程序代码函数的实例112是按需的还是长期存在的。说明性地,由于希望留存长期存在的程序代码函数的状态信息,因此可相对短期存在的程序代码函数选择长期存在的程序代码函数以迁移到目的地服务枢纽104b。函数执行状态可指示程序代码函数的实例112是否是闲置的。说明性地,可相对于程序代码函数的活跃实例选择程序代码函数的闲置实例,以便避免必须挂起程序代码函数的活跃实例。函数完成状态可指示程序代码函数的实例112的完成百分比。说明性地,可相对于接近完成的程序代码函数的实例112选择最近被调用的程序代码函数的实例112,以便允许接近完成的程序代码函数在源服务枢纽104a上完成执行。分配给程序代码函数的实例112的资源量(例如,处理器和存储器)可用作确定是否将程序代码函数的实例112移动到目的地服务枢纽104b的一个标准。例如,可以选择已经分配了较少资源的程序代码函数的实例112,因为与其他程序代码函数的相比,要写入检查点文件的数据量可能较少。如将了解的,任何选择技术都可用于选择用以移植到目的地服务枢纽104b的程序代码函数的实例112,包括从被操作系统用来管理程序代码函数的各实例112的处理表中系统地或随机地选择程序代码函数的实例112。
将程序代码函数的实例112从源服务枢纽104a移动到目的地服务枢纽104b可包括创建用于程序代码函数112的函数检查点114。函数检查点114可包括一个或多个文件,所述一个或多个文件包含用于程序代码函数112的执行指令(例如,计算机代码)和执行状态数据(例如,从存储器106a获得的函数资源)。在一个示例中,用于执行程序代码函数的实例112的软件容器可以通过为该软件容器创建函数检查点114而被移动到目的地服务枢纽104b,该函数检查点114包括可用于在目的地服务枢纽104b上重新创建软件容器、运行时环境以及程序代码函数的实例112的执行状态的图像文件的集合。在一些示例中,函数检查点114可包括包含执行指令和执行状态数据的一个或多个数据对象或数据存储记录。而且,在一个示例中,可收集与在源服务枢纽104a上执行程序代码函数的实例112有关的元数据,并且可使元数据与函数检查点114包括在一起,或者被包括在函数检查点114中。说明性地,元数据可包括有关程序代码函数的实例112的执行状态信息(例如,闲置的或正在执行)、有关程序代码函数112的计算资源分配信息、日志消息、命令行自变量和/或参数、软件应用资源名称或程序代码函数资源名称等。
在一个示例中,如图1中所示,服务枢纽104a-104b可包括用于留存和恢复程序代码函数的实例112的执行状态的检查点管理器110(例如,检查点守护进程)。例如,位于源服务枢纽104b上的检查点管理器110的实例可用于为位于源服务枢纽104a的存储器106a中的程序代码函数的实例112创建函数检查点114。目的地服务枢纽104b上的检查点管理器110的实例可用于使用函数检查点114中包括的执行状态信息来在目的地服务枢纽104b的存储器106b中恢复程序代码函数112。因此,检查点管理器110的实例可安装在本地设备网络102中包括的每个服务枢纽104a-104b上,从而允许服务枢纽104a-104b在服务枢纽104a-104b之间移动程序代码函数的实例112。
在一个示例中,使用检查点管理器110为程序代码函数的实例112创建函数检查点114可包括:在源服务枢纽104a上挂起程序代码函数112的执行,以及从源服务枢纽104a的存储器106a中获得有关程序代码函数112的执行指令和执行状态数据。然后,可将执行指令和执行状态数据写入在源服务枢纽104a的持久性存储装置108a中创建的函数检查点114。作为非限制性示例,检查点管理器110可将进程识别符用于程序代码函数的实例112,以识别位于存储器106a中的进程文件系统中的进程树。检查点管理器110可浏览进程树以识别进程树中包括的任何任务(例如,线程和子进程)。在识别了进程树中包括的任务之后,检查点管理器110可使用系统调用来挂起任务。挂起任务可防止任务改变程序代码函数112的执行状态。例如,挂起任务可防止任务打开新文件、打开新套接字、更改会话变量、产生新的子进程等。检查点管理器110可浏览进程文件系统中的进程目录以聚集有关程序代码函数112的执行指令和执行状态数据,并将执行指令和执行状态数据写入源服务枢纽104a的持久性存储装置108a中的函数检查点114。
在创建函数检查点114之后,可将函数检查点114发送到目的地服务枢纽104b。在一个示例中,识别用于托管程序代码函数的实例112的目的地服务枢纽104b可包括引用迁移配置文件(图4中示出),该迁移配置文件指派目的地服务枢纽104b用于托管从源服务枢纽104a中移出的程序代码函数的各实例112。作为一个示例,可使本地设备网络102中的服务枢纽104a-104b分组在一起,并且可将该组的成员指派用于托管从该组的其他成员中移出的程序代码函数的各实例。在另一示例中,可部分地基于目的地服务枢纽104b的计算工作量而识别所述目的地服务枢纽104b。例如,迁移管理模块(图4A中示出)可用于评估本地设备网络102中包括的服务枢纽104a-104b的计算工作量,并识别与本地设备网络102中的其他服务枢纽104a-104b相比具有较低计算工作量的目的地服务枢纽104b。服务枢纽104a-104b的计算工作量可指代在服务枢纽104a-104b上执行的处理量。计算工作量可包括在服务枢纽104a-104b上执行的程序代码函数和/或软件应用的实例的数量,以及可连接到服务枢纽104a-104b并与其相互作用的连接的设备118a-118n的数量。可使用网络协议通过局域网(LAN)使函数检查点114从源服务枢纽104a发送到目的地服务枢纽104b,诸如但不限于:WI-FI、Zigbee、Z-Wave、蓝牙、NFC(近场通信)、蜂窝网络、有线连接等。
响应于从源服务枢纽104a接收到函数检查点114,可将函数检查点114存储到目的地服务枢纽104b上的持久性存储装置108b(例如,硬盘驱动器、固态驱动器或任何非易失性存储设备),并且位于目的地服务枢纽104b上的检查点管理器110可使用函数检查点114中包括的执行状态信息来将程序代码函数的实例112加载到存储器106b中以用于执行。例如,检查点管理器110可将函数检查点114加载到存储器106b中并使用函数检查点114中包括的执行指令和执行状态数据来重新创建程序代码函数112。而且,随函数检查点114包括的函数元数据可用于在目的地服务枢纽104b上恢复程序代码函数的实例112。作为非限制性示例,检查点管理器110可在被操作系统用来管理程序代码函数的实例112的进程表中创建条目,并重新创建被程序代码函数112利用的资源,包括名称空间、套接字、存储器映射、计时器、凭据和线程,并且识别出在进程任务之间共享了哪些资源。在使包括程序代码函数的实例112的软件容器移动到目的地服务枢纽104b的情况下,检查点管理器110可使用该函数检查点114将软件容器(包括软件容器中包含的程序代码函数112)加载到目的地服务枢纽104b的存储器106b。在目的地服务枢纽104b上已经重新创建了程序代码函数112之后,程序代码函数112可恢复执行,从而允许利用程序代码函数112提供的服务的连接的设备118a-118n访问目的地服务枢纽104b上的服务。
程序代码函数112从源服务枢纽104a到目的地服务枢纽104b的迁移对于本地设备网络102的用户可能是透明的。也就是说,用户可能不知道用户的本地设备网络102中包括的哪些服务枢纽104a-104b托管程序代码函数的实例112。为此,用户可部署软件应用或程序代码函数以在所有者的本地设备网络102中包括的服务枢纽104a-104b中的任何一个上执行,并且可视需要使程序代码函数的实例112(即,软件应用或程序代码函数的实例)在服务枢纽104a-104b之间移动,而无需用户知道程序代码函数112已被移动。
图1B示出了用于将为程序代码函数的实例112创建的函数检查点114从源服务枢纽104a的存储器106a传递到目的地服务枢纽104b的存储器106b的示例性方法。如上所述,位于源服务枢纽104b上的检查点管理器110可用于为位于源服务枢纽104a的存储器106a中的程序代码函数的实例112创建函数检查点114。在示出的示例中,检查点管理器110可被配置成在存储器106中创建函数检查点114,其中存储器106a可为易失性存储器。然后,可经由网络(例如,局域网(LAN)),或者在另一示例中经由如下面关联图2所描述的服务提供商环境,将函数检查点114发送到目的地服务枢纽104b。
可在目的地服务枢纽104处接收到函数检查点114,并且目的地服务枢纽104b上的检查点管理器110可用于使用函数检查点114中包括的执行状态信息来将程序代码函数的实例112加载到目的地服务枢纽104b的存储器106b中。作为示例,在目的地服务枢纽104b处接收到函数检查点114时,可将函数检查点114加载到易失性存储器中,而无需将函数检查点114存储在持久性存储装置中,并且检查点管理器110可使用函数检查点114中包括的执行指令和执行状态数据将程序代码函数的实例112加载到易失性存储器中。
图2是示出用于为源服务枢纽204a上的程序代码函数的实例212(也称为程序代码函数实例212)生成函数检查点214并经由服务提供商环境216向目的地服务枢纽204b提供函数检查点214从而允许使用函数检查点214在目的地服务枢纽204b上恢复程序代码函数的实例212的示例性系统和方法的图示。如前所述,本地设备网络202可包括多个服务枢纽204a-204b,其被配置成向连接的设备224提供服务。通过在服务枢纽204a-204b上执行软件应用或程序代码函数的实例(即,程序代码函数的实例212),可在服务枢纽204a-204b上实现服务。
服务枢纽204a-204b中的每个可包括检查点管理器210。源服务枢纽204a上的检查点管理器210可用于为加载到源服务枢纽204a的存储器206a中的程序代码函数的实例212创建函数检查点214,并将函数检查点214存储在源服务枢纽204a上的持久性存储装置208a中。可将函数检查点214发送到目的地服务枢纽204b,并且目的地服务枢纽204b上的检查点管理器210可用于从目的地服务枢纽204b上的持久性存储装置208b中检索函数检查点214,并使用函数检查点214来将程序代码函数的实例212加载到目的地服务枢纽204b的存储器206b中。服务枢纽204a-204b可与服务提供商环境216进行网络通信,该服务提供商环境216可包括网络服务诸如数据存储和检索服务、按需处理能力以及服务枢纽204a-204b可能可访问的其他服务。
如图所示,在源服务枢纽204a上创建函数检查点214之后,源服务枢纽204a可以将函数检查点214发送到服务提供商环境216以分发给目的地服务枢纽204b。在一个示例中,服务提供商环境216可包括迁移服务218。迁移服务218可被配置成将函数检查点214转发到目的地服务枢纽204b。例如,响应于接收到函数检查点214,迁移服务218可识别目的地服务枢纽204b,并且将函数检查点214发送到目的地服务枢纽204b。说明性地,迁移服务218可识别已经被预先指派来托管从源服务枢纽204a迁移来的程序代码函数的实例212的目的地服务枢纽204b,或者迁移服务218可选择与其他服务枢纽相比具有较小计算工作量的目的地服务枢纽204b以托管从源服务枢纽204a移出的程序代码函数的实例212,或者迁移服务218可利用循环选择技术来识别用于托管从源服务枢纽204a移出的程序代码函数的实例212的目的地服务枢纽204b。
在另一示例中,源服务枢纽204a可将函数检查点214发送到服务提供商环境216以存储在服务提供商环境216中,从而允许目的地服务枢纽204b从服务提供商环境216中检索函数检查点214。在一个示例中,可将函数检查点214存储到检查点存储装置220,该检查点存储装置220可为关系数据存储区、NoSQL数据存储区、对象数据存储区或另一类型的数据存储区。目的地服务枢纽204b可被配置成从检查点存储装置220中检索函数检查点214。例如,目的地服务枢纽204b可周期性地向检查点存储装置220查询函数检查点214,或者目的地服务枢纽204b可接收到函数检查点214已经被存储到检查点存储装置220的通知。目的地服务枢纽204b可从检查点存储装置220中检索函数检查点214,并且位于目的地服务枢纽204b上的检查点管理器210可使用函数检查点214将程序代码函数的实例212加载到目的地服务枢纽204b的存储器206b中。
在另一示例中,可使用设备影子服务222来存储函数检查点214,该设备影子服务222可被配置成管理用于表示服务枢纽204a-204b的状态的设备表示(例如,数据对象)。设备影子服务222可将函数检查点214存储到用于目的地服务枢纽204b的设备表示(未示出),并且作为将目的地服务枢纽204b的状态更新为通过设备表示指示的状态的一部分,目的地服务枢纽204b可从设备表示中检索函数检查点214,并使用函数检查点214将程序代码函数的实例212恢复到目的地服务枢纽204b的存储器206b中。
图3是示出用于将程序代码函数的实例312(也称为程序代码函数实例312)从源服务枢纽304移动到服务提供商环境320中托管的计算实例316的示例性系统和方法的图示。图3示出了本地设备网络302可能不包括能够托管位于源服务枢纽304上的程序代码函数的实例312的可用服务枢纽的情况。例如,本地设备网络302可能不包括额外服务枢纽,或者本地设备网络302中包括的其他服务枢纽可能没有配置成托管程序代码函数的实例312,或者本地设备网络302中其他服务枢纽的计算工作量可能不允许其他服务枢纽托管程序代码函数的实例312。因此,可为位于源服务枢纽304上的程序代码函数的实例312创建函数检查点314,并且可使用函数检查点314在服务提供商环境320中恢复程序代码函数的实例312。
如图所示,位于服务提供商环境320中的计算实例316可用于托管从源服务枢纽304的存储器306中移出的程序代码函数的实例312。通过为程序代码函数的实例312创建函数检查点314,可将程序代码函数的实例312移动到计算实例316。例如,如前所述,检查点管理器310可用于在源服务枢纽304的持久性存储装置308中为程序代码函数的实例312创建函数检查点314,并且源服务枢纽304可将函数检查点314发送到计算实例316。计算实例316可包括检查点管理器310的实例,该检查点管理器310的实例可用于将程序代码函数的实例312加载到计算实例316上。本地设备网络302中包括的连接的设备318a-318n可通过向位于服务提供商环境320中的计算实例316发送请求来访问由程序代码函数的实例312实现的服务。在一个示例中,可在服务提供商环境320中托管的设备服务网络(相关于图7所描述)的架构内实现计算实例316。
在另一示例中,服务提供商环境320可包括函数执行服务(未示出),该函数执行服务用于使用服务提供商环境320中包括的计算资源来管理程序代码函数。可为位于源服务枢纽304上的程序代码函数的实例312创建函数检查点314,并且可将函数检查点314发送到函数执行服务,其中函数执行服务可使用函数检查点314将程序代码函数的实例312加载到函数执行服务所利用的计算资源上,由此使程序代码函数的实例312可用于本地设备网络302中包括的连接的设备318a-318n。
图4A示出了可在其上执行本技术的示例性系统环境400的部件。系统环境400可包括本地设备网络404,所述本地设备网络404包括一个或多个服务枢纽406以及一个或多个连接的设备428a-428n,所述一个或多个连接的设备428a-428n被配置成访问由服务枢纽406提供的服务。服务枢纽406可为被配置成向连接的设备428a-428n提供服务的计算设备。由服务枢纽406提供的服务可包括但不限于:消息服务、程序代码函数服务、设备影子服务和用户开发的服务。而且,服务枢纽406可被配置成与设备服务网络430中包括的计算资源进行通信,稍后关联图7进行描述。设备服务网络430可被托管在服务提供商环境402内。
在一个示例中,服务提供商可向用户提供服务枢纽软件,用户可将服务枢纽软件安装在用户的计算设备上。当安装在用户的本地设备网络404中包括的边缘计算设备上时,服务枢纽软件可将服务提供商环境能力(例如,消息收发、计算、存储等)扩展到被配置成连接到服务枢纽406的连接的设备428a-428n。在另一示例中,服务提供商可向用户提供专用服务枢纽406设备。用户可将服务枢纽406添加到用户的本地设备网络404,以便扩展服务提供商环境能力或向用户的本地设备网络404中包括的连接的设备428a-428n提供本地化的服务,以及安装用户自己的软件应用和程序代码函数。
服务枢纽406可包括用于托管软件容器的功能性。软件容器或容器图像可为轻量级的独立可执行软件包,该软件包包括执行程序代码函数的实例412所需的组分,诸如程序代码函数的执行指令和执行状态数据、运行时环境、系统工具、系统库、设置等。将程序代码函数的实例412(也称为程序代码函数实例412)从源服务枢纽移动到目的地服务枢纽可包括:创建软件容器的检查点图像,该软件容器为程序代码函数的实例412提供隔离的环境以在源服务枢纽上执行;以及发送检查点图像以在目的地服务枢纽上恢复。
服务枢纽406可被配置成提供用于执行程序代码函数的无服务器计算功能性。说明性地,程序代码函数可包括可能类似于函数的程序代码片段,并且该程序代码函数可接收参数、执行处理并提供返回值。服务枢纽406可包括可用于执行程序代码函数的实例412的函数执行服务434。函数执行服务434可包括执行程序代码函数的实例412的服务的平台。函数执行服务434可用于管理程序代码函数的实例412在物理主机、计算实例上或在软件容器中的执行,其响应于调用程序代码函数的实例412的请求而执行代码,并且函数执行服务434可管理程序代码函数的实例412所使用的计算资源。一旦已经执行了程序代码函数的实例412并且已经返回结果,则函数执行服务434可用于从被分配用于执行程序代码函数的实例412的计算机存储器中移除程序代码函数的实例412和结果。
在一个示例中,可对若干服务枢纽406进行逻辑分组,并且一组服务枢纽406可处置数据和/或由连接的设备428a-428n生成的请求。在一个示例中,该组中包括的每个服务枢纽406可能够托管在该组的成员之间迁移的程序代码函数的实例412。因此,程序代码函数的实例412可透明地移动到该组的任何成员。在另一示例中,其中该组中包括的服务枢纽406可能具有不同的计算和/或软件能力,可以使该组中的服务枢纽406经由指定服务枢纽406的计算和/或软件能力的服务枢纽简档432知道该组中的哪些服务枢纽406能够托管特定的程序代码函数412。
服务枢纽406可包括检查点管理器414和迁移管理模块418。位于源服务枢纽上的检查点管理器414可被配置成生成程序代码函数的实例412的函数检查点420,并且位于目的地服务枢纽上的检查点管理器414可被配置成使用函数检查点420加载程序代码函数的实例412。更具体地,检查点管理器414可被配置成监测服务枢纽406的迁移事件,该迁移事件致使程序代码函数的实例412从服务枢纽迁移到另一服务枢纽。例如,检查点管理器414可被配置成监测服务枢纽406的操作信息,诸如处理器、存储器、网络和/或存储装置的利用,并分析操作信息以检测迁移事件。作为示例,检查点管理器414可分析操作信息以检测服务枢纽406的健康状态何时变得不稳定(例如,检测到软件故障或硬件故障)或者服务枢纽406的计算资源(例如,处理器、存储器、存储装置和/或网络带宽)何时过载。作为另一示例,检查点管理器414可被配置成针对加载在服务枢纽406的存储器408中的程序代码函数的实例412周期性地生成函数检查点420,以在服务枢纽406发生故障的情况下备份到故障转移服务枢纽上的持久性存储装置410。
响应于检测到迁移事件,检查点管理器414可为加载在服务枢纽406的存储器408中的程序代码函数的实例412生成函数检查点420。在一个示例中,检查点管理器414可为在服务枢纽406上执行的程序代码函数的每个实例412生成函数检查点420。例如,响应于检测到服务枢纽406已经变得不稳定,可为加载在服务枢纽的存储器408中的程序代码函数的每个实例412创建函数检查点420,以使得程序代码函数的实例412可移动到稳定的服务枢纽406。在另一示例中,检查点管理器414可选择加载在源服务枢纽406的存储器408中的程序代码函数的实例412以移动到目的地服务枢纽406,并为程序代码函数的选定实例412生成函数检查点420。作为非限制性示例,响应于检测到服务枢纽406的计算资源过载,检查点管理器414可在执行队列(例如,操作系统内核中执行队列的前面)中选择程序代码函数的实例412,并且为程序代码函数的选定实例412生成函数检查点420。
在一个示例中,迁移管理模块418可用于识别程序代码函数的实例412以迁移到目的地服务枢纽。检查点管理器414可向迁移管理模块418发送请求,从而请求迁移管理模块418选择用于迁移的程序代码函数的实例412。迁移管理模块418可利用选择标准来识别用于迁移的程序代码函数的实例412。例如,迁移管理模块418可使用先前描述的选择标准、函数类型、函数执行状态、资源分配和函数完成状态来选择用于迁移到目的地服务枢纽的程序代码函数的实例412。在另一示例中,迁移配置文件424可用于指定要迁移程序代码函数的哪些实例412。例如,迁移配置文件424可指定软件应用或程序代码函数的资源名称,并且可选择加载在服务枢纽406的存储器408中的与该资源名称相关联的程序代码函数的实例412用于迁移。
检查点管理器414可被配置成为程序代码函数的实例412生成函数检查点420。例如,检查点管理器414可挂起程序代码函数的实例412的执行,从服务枢纽406的存储器408中获得程序代码函数的实例412的执行指令和执行状态数据,并在存储装置410中创建一个或多个函数检查点420,其包含有关程序代码函数的实例412的执行指令和执行状态数据。而且,在一个示例中的检查点管理器414或另一示例中的迁移管理模块418可被配置成获得与程序代码函数的实例412在服务枢纽406上的执行相关联的函数元数据422。函数元数据422可包括有关程序代码函数的实例412的执行状态信息、有关程序代码函数的实例412的计算资源分配信息、日志消息、命令行自变量和参数、资源名称以及其他函数元数据422。函数元数据422可与函数检查点420包括在一起(例如,作为单独的元数据文件),并且函数元数据422可用于将程序代码函数的实例412加载到目的地服务枢纽406上。
在为程序代码函数的实例412生成函数检查点420之后,检查点管理器414可致使函数检查点420被发送到目的地服务枢纽406。在一个示例中,检查点管理器414可被配置成引用迁移配置文件424,其用于通过例如指定被指派来托管从源服务枢纽迁移来的程序代码函数的实例412的目的地服务枢纽定义源服务枢纽与一个或多个目的地服务枢纽之间的关系。在另一示例中,迁移管理模块418可用于部分地基于服务枢纽406的计算工作量而识别目的地服务枢纽。例如,迁移管理模块418可被配置成获得本地设备网络404中包括的服务枢纽406的工作量信息,并分析工作量信息以识别与本地设备网络404中包括的其他服务枢纽406相比具有较低计算工作量的服务枢纽406。
检查点管理器414可致使函数检查点420通过局域网(LAN)从源服务枢纽发送到目的地服务枢纽,或者检查点管理器414可致使函数检查点420从源服务枢纽发送到服务提供商环境402中包括的设备服务网络430,并且设备服务网络430可用于将函数检查点420提供给本地设备网络404中包括的目的地服务枢纽406。在一个示例中,函数检查点420可被发送到设备服务网络430,其中函数检查点420可用于在设备服务网络430中包括的计算实例上恢复程序代码函数的实例412。
响应于在服务枢纽406处接收到函数检查点420,检查点管理器414可被配置成使用函数检查点420中包括的执行指令和执行状态数据来将程序代码函数的实例412加载到服务枢纽406的存储器408中。例如,检查点管理器414可被配置成检测何时已在服务枢纽406处接收到函数检查点420(例如,通过针对函数检查点420监测存储装置410),并将函数检查点420中包括的执行指令和执行状态数据加载到服务枢纽406的存储器408中,由此在服务枢纽406的存储器408中恢复程序代码函数的实例412。而且,检查点管理器414可使用随函数检查点420包括的函数元数据422来恢复程序代码函数的实例412。例如,函数元数据422可用于恢复分配给程序代码函数的实例412的存储器量、日志消息、函数调用计数等。
连接的设备428a-428n可为创建可寻址设备和/或最终可寻址设备的大型网络的许多物理电子设备中的一个。连接的设备428a-428n可在诸如WI-FI、Zigbee、Z-Wave、蓝牙、NFC(近场通信)、蜂窝网络等无线网络上可寻址。连接的设备428a-428n可被配置成通过无线网络与服务枢纽406通信。而且,在一些示例中,连接的设备428a-428n可被配置成与位于设备服务网络430和/或服务提供商环境402中的计算资源进行通信。例如,可通过服务枢纽406使得来自连接的设备428a-428n的指向位于服务提供商环境402中的服务的请求路由传递到位于服务提供商环境402中的服务,或者可经由网络426将请求直接发送到位于服务提供商环境402中的服务。
除了服务枢纽406和连接的设备428a-428n之外,本地设备网络102可包括用于实现局域网(LAN)的网络设备(例如,路由器、交换机等)。网络426可包括用于与服务提供商环境402通信的任何有用的计算网络,包括内联网、互联网、局域网、广域网、无线数据网络或任何其他此类网络或它们的组合。这种系统所利用的部件可至少部分地取决于选定的网络和/或环境的类型。网络上的通信可通过有线连接或无线连接以及它们的组合来实现。
图4示出了可结合该技术来讨论某些处理模块并且这些处理模块可被实现为服务。在一个示例性配置中,模块可视为是具有在计算机硬件上执行的一个或多个进程的服务。此类服务可为集中托管的功能性,或者是可接收请求并向其他服务或设备提供输出的服务应用。例如,服务可视为是托管在服务枢纽406、服务器、虚拟化服务环境、网格或群集计算系统中的按需计算。可为每个服务提供API,以向该服务发送请求并从该服务接收输出。此类API还可允许第三方与服务进行介接,并发出请求和从服务接收输出。虽然图4示出了可实现以上技术的系统的示例,但是许多其他类似或不同的环境也是可能的。上面讨论和说明的示例性环境仅是代表性的而不是限制性的。
图4B是可用于留存程序代码函数的实例的执行状态的函数检查点420的图示。函数检查点420可包括用于在目的地服务枢纽上恢复程序代码函数的实例的执行的信息。促进程序代码函数的执行和管理函数检查点420还可包括由促进程序代码函数的执行和管理的一个或多个应用维持的信息,所述信息诸如日志文件、执行统计信息等。
如图4B中所示,函数检查点420可包括处理器状态440、存储器状态442、本地存储装置444和任选的元数据446。元数据446可包括环境信息450、命令行信息452、函数自变量454和I/O信息456。函数检查点420可包括表示处理器状态440、存储器状态442、本地存储装置444和任选的元数据446的一个或多个文件。与函数检查点420相关联的文件中的全部或部分可被压缩、加密、编码或由它们的组合形成。
处理器状态440可包括与一个或多个处理器有关的信息,所述一个或多个处理器与程序代码函数的实例的执行中所涉及的服务枢纽相关联。处理器状态440可包括程序代码函数的实例的执行中所涉及的处理器情境。处理器状态440可包括例如形成处理器情境的处理器寄存器值的副本,包括用于代码函数的指令指针。可将处理器状态440捕获到描述处理器情境的文件中。
存储器状态442可包括与一个或多个存储器设备有关的信息,所述一个或多个存储器设备与程序代码函数的实例的执行中所涉及的服务枢纽相关联。存储器状态442可包括例如分配给程序代码函数的实例或另外由程序代码函数的实例使用的物理存储器页面。在另一示例中,存储器状态442可包括易失性存储器中的进程所使用的暂时存储器。可将存储器状态442捕获到一个或多个存储器转储文件中。
本地存储装置444可包括与一个或多个存储设备有关的信息,所述一个或多个存储设备与代码函数的实例的执行中所涉及的服务枢纽相关联。本地存储装置444可包括由程序代码函数的实例存储到非易失性存储器设备(诸如快闪存储装置或硬盘驱动器)的数据。本地存储装置444可包括临时数据、工作数据和经处理的结果。
也可将与程序代码函数的实例有关的额外元数据446捕获并包括在函数检查点420中。环境信息450可包括关于在其内执行程序代码函数的实例的环境的信息。环境信息450可包括环境变量、路径变量、有关执行程序代码函数的实例的用户的简档信息以及与该实例相关联的数据文件的位置。命令行信息452可包括关于用于实例化程序代码函数的实例的一个或多个命令的信息。命令行信息452可识别命令、命令行标志以及在调用期间使用的任何命令行参数。
函数自变量454可包括关于传送给程序代码函数的实例的自变量的信息。函数自变量454可包括实际自变量或对可检索到自变量值的位置的引用。I/O信息456可包括关于程序代码函数的实例所利用的输入/输出设备的信息。I/O信息456可包括网络连接信息、外围设备信息、用户接口信息等。
现在移到图5,流程图示出了用于为位于第一服务枢纽上的程序代码函数的实例生成函数检查点并将函数检查点发送到第二服务枢纽以使得可使用函数检查点在所述第二服务枢纽上恢复程序代码函数的实例的示例性方法500。在框502中开始,可将程序代码函数(或软件应用)部署到本地设备网络中包括的服务枢纽。在一个示例中,本地设备网络可包括能够执行程序代码函数的多个服务枢纽。可将程序代码函数部署到本地设备网络中包括的服务枢纽中的一个并在其上执行,而用户无需明确知道哪个服务枢纽被用于执行程序代码函数。将程序代码函数部署到服务枢纽会致使将程序代码函数的实例加载到服务枢纽的存储器中。
如在框504中,可监测用于执行程序代码函数的实例的服务枢纽的状态,以检测迁移事件的发生。迁移事件可包括潜在地影响程序代码函数的实例的执行的任何软件或硬件事件。例如,检测到服务枢纽的计算资源过载或者检测到服务枢纽的健康状态已变得不稳定可以是致使程序代码函数的实例被迁移到不同服务枢纽的迁移事件。
如在框506中,在检测到迁移事件的情况下,则如在框508中,可识别程序代码函数的实例以用于迁移到不同的服务枢纽。在服务枢纽已变得不稳定的示例中,可选择多个进程以迁移到不同的服务枢纽。例如,可识别有状态(例如,长期存在)的程序代码函数的实例,以迁移到不同的服务枢纽,以便留存程序代码函数的实例的执行状态。在服务枢纽的计算资源可能过载的示例中,选择标准可用于识别对计算资源有影响的程序代码函数的一个或多个实例,以使得将程序代码函数的实例移出服务枢纽可减轻计算资源上的载荷。
在识别出要迁移到不同服务枢纽的程序代码函数的实例之后,可为该程序代码函数的实例创建函数检查点,如框510中。如前所述,函数检查点可为一个或多个图像文件、数据对象或数据存储记录。可通过在服务枢纽上挂起程序代码函数的实例的执行并从服务枢纽的存储器中收集有关程序代码函数的实例的执行指令和执行状态数据来创建函数检查点。然后可将执行指令和执行状态数据写入在服务枢纽的持久性存储装置中创建的函数检查点(例如,图像文件、数据对象或数据存储记录)。而且,可收集与程序代码函数的实例在服务枢纽上的执行有关的元数据,并将其与函数检查点一起存储在服务枢纽的持久性存储装置中。
如在框512中,可识别目的地服务枢纽。目的地服务枢纽可用来托管程序代码函数的实例。方法500可通过寻找位于本地设备网络中的可用目的地服务枢纽而开始。作为一个示例,服务枢纽可被配对或分组,从而允许程序代码函数的实例在服务枢纽之间迁移。在另一示例中,可部分地基于目的地服务枢纽的计算工作量来识别所述目的地服务枢纽。例如,可评估本地设备网络中包括的服务枢纽的计算工作量,并且可选择与本地设备网络中包括的其他服务枢纽相比具有较低计算工作量的目的地服务枢纽来托管程序代码函数的实例。
如在框514中,在将本地设备网络中包括的目的地服务枢纽识别为可用于托管程序代码函数的实例的情况下,则如在框516中,可将函数检查点发送到本地设备网络中包括的目的地服务枢纽。响应于在目的地服务枢纽处接收到函数检查点,如在框518中,函数检查点可用于在服务枢纽上加载程序代码函数的实例。例如,可使用函数检查点中包括的执行指令和执行状态数据在目的地服务枢纽的存储器中重新创建程序代码函数的实例。而且,随函数检查点包括的元数据可用于在目的地服务枢纽上重新创建程序代码函数的实例。例如,元数据可用于加载有关程序代码函数的实例的计算资源分配信息、日志消息、命令行自变量和/或参数等。
在本地设备网络中包括的服务枢纽无法用于托管程序代码函数的实例的情况下,则如在框520中,可将函数检查点发送到服务提供商环境,其中如在框522中,可使用位于服务提供商环境中的计算资源来加载或重新创建程序代码函数的实例。例如,可使用函数检查点将程序代码函数的实例加载到位于服务提供商环境中的服务器或计算实例上。
图6是示出用于在第一服务枢纽上为程序代码函数的实例创建函数检查点并将函数检查点发送到第二服务枢纽因此可在第二服务枢纽上恢复程序代码函数的实例的示例性方法600的流程图。如在框610中,可接收在本地设备网络中包括的第一服务枢纽上执行程序代码函数的实例的指令,所述本地设备网络包括多个服务枢纽和多个连接的设备,所述多个连接的设备连接到多个服务枢纽以访问由多个服务枢纽提供的服务。在一个示例中,可将软件应用或程序代码函数部署到本地设备网络中的一组服务枢纽,其中所述服务枢纽中的任何一个可执行软件应用或程序代码函数的实例。
如在框620中,可为加载到第一服务枢纽的存储器中的程序代码函数的实例创建函数检查点。函数检查点可包含有关程序代码函数的实例的执行指令和执行状态数据。在一个示例中,创建函数检查点可包括在第一服务枢纽上挂起程序代码函数的实例的执行,以及从第一服务枢纽的存储器中检索执行指令和执行状态数据。在一些示例中,创建函数检查点包括创建软件容器的图像,该软件容器为程序代码函数的实例提供隔离的环境以用于执行。而且,在一个示例中,可获得与程序代码函数的实例在第一服务枢纽上的执行有关的元数据,并且该元数据可包括在函数检查点中或与函数检查点包括在一起。可将函数检查点(和元数据)存储到位于第一服务枢纽上的持久性存储装置。
如在框630中,可识别本地设备网络中包括的第二服务枢纽,并且如在框640中,可将函数检查点发送到第二服务枢纽,以允许使用函数检查点在第二服务枢纽上恢复程序代码函数的实例的执行。在一个示例中,可通过局域网将函数检查点发送到第二服务枢纽。在另一示例中,可将函数检查点发送到服务提供商环境中的检查点存储装置,并且第二服务枢纽可从服务提供商环境中的检查点存储装置中检索函数检查点。在一个示例中,可将函数检查点保存到用于表示第二服务枢纽在服务提供商环境中的状态的设备表示(例如,设备状态的影子副本),并且第二服务枢纽可从位于服务提供商环境中的设备表示中检索函数检查点。
在接收到函数检查点之后,第二服务枢纽可将函数检查点存储到位于第二服务枢纽上的持久性存储装置,并且然后使用函数检查点中包括的执行指令和执行状态数据在第二服务枢纽的存储器中恢复程序代码函数的实例的执行状态。在替代示例中,可将函数检查点发送到服务提供商环境,其中可使用函数检查点中包括的执行指令和执行状态数据在位于服务提供商环境中的计算实例上恢复程序代码函数的实例。
图7是示出可与先前描述的设备进行通信的示例性设备服务网络710的框图。可称为设备通信环境或系统的设备服务网络710包括经由网络720访问网关服务器740的服务枢纽712和设备730经由网关服务器740可访问的各种资源,该网络720诸如提供对广域网的访问的本地无线网络。设备730可通过服务枢纽712访问设备服务网络710,以便访问网络和设备服务,诸如数据存储和计算处理特征。响应于来自设备730的请求,和/或响应于服务内的计算操作,在设备服务网络710中操作的服务可经由服务枢纽712将数据和发布消息传达到设备730。
设备服务网络710可包括通信地耦合的部件系统740、742、746、750和770,它们操作以向设备730提供服务。网关服务器740可被配置成在设备730与设备服务网络710之间提供接口。网关服务器740从设备730接收请求,并将对应的数据和发布消息转发到设备服务网络710内的适当系统。同样地,当设备服务网络710内的系统尝试将数据指令传达给设备730时,网关服务器740将这些请求路由传递到正确的设备730。
网关服务器740可适于使用各种不同的计算和通信能力与各式各样的设备730通信。例如,网关服务器740可适于使用TCP(传输控制协议)或UDP(用户数据报协议)协议进行通信。同样地,网关服务器740可被编程以使用包括例如MQTT(消息队列遥测输送)、CoAP(受限应用协议)、HTTP(超文本传递协议)和HTTPS(安全HTTP)的任何合适的协议来接收设备730并与其通信。网关服务器740可被编程以将从设备730接收的数据和指令或发布消息转换成可被设备服务网络710中包括的其他服务器系统使用的格式。在一个示例中,网关服务器740可适于将使用HTTPS协议接收的发布消息转换成适合于与设备服务网络710内的其他服务器通信的JSON(JavaScript对象表示法)格式的发布消息。
网关服务器740可存储关于设备730的信息或可控制所述信息的存储,该设备730已经形成与特定网关服务器740的连接,并且针对此,通常可依赖特定网关服务器740与设备730进行通信。在一个示例中,网关服务器740上可存储有指定特定设备730的信息,诸如设备识别符。对于从特定设备730确立的每个连接,网关服务器740还可维持识别该连接的信息。例如,可为与特定设备730确立的每个连接生成和存储连接识别符。也可存储与特定连接有关的信息。例如,网关服务器740可存储:识别上面确立了连接的网关服务器740的特定套接字的信息,以及识别设备730对该连接使用的特定协议的信息。可使用诸如套接字和协议的信息,以便有助于经由特定连接进行进一步的通信。
在一个示例中,网关服务器740可经由任何合适的联网技术与设备注册服务器742通信。设备注册服务器742可适于跟踪每个设备730的属性和能力。在示例中,可向设备注册服务器742提供指定设备730的属性的信息。设备注册服务器742可包括指定用于处置可从设备730接收的各种请求的规则或逻辑(例如,自动化规则)的数据。可对设备注册服务器742进行编程以将按特定通信协议(诸如例如HTTPS、MQTT、CoAP)接收的专用设备函数或命令转换成使用设备服务网络710中的其他服务器理解的特定协议的函数或命令。在一个示例中,可向设备注册服务器742提供信息,该信息指定在从特定设备730接收到特定请求后,应当发出请求以将该请求的有效载荷数据存储在特定网络服务服务器750中。可类似地对设备注册服务器742进行编程,以从服务器742、750接收请求,并将这些请求转换成设备730理解的命令和协议。
在一些示例中,设备服务网络710可包括函数迁移服务器770。函数迁移服务器770可被配置成将函数检查点转发到目的地服务枢纽。例如,响应于接收到函数检查点,函数迁移服务器770可识别目的地服务枢纽,并且将函数检查点发送到目的地服务枢纽。
设备安全服务器746为连接到设备服务网络710的设备730维持与安全有关的信息。在一个示例中,设备安全服务器746可被编程以处理向设备服务网络710注册设备730的请求。例如,诸如设备制造商等实体可转发向设备服务网络710注册设备730的请求。设备安全服务器746接收注册请求,并将唯一的设备识别符指派给设备730,设备730对随后的请求使用设备识别符来访问设备服务网络710。设备安全服务器746为每个注册的设备存储可在设备注册进程期间提供的认证信息。例如,注册设备730的请求可包括识别设备730的信息(诸如设备序列号)以及用于认证设备730的信息。在一个示例中,该信息可包括数字证书,并且可包括公钥-私钥对中的公钥。可相关于为特定设备730指派的设备识别符存储该信息。当设备730随后尝试访问设备服务网络710时,可将该请求路由传递到设备安全服务器746以进行评估。设备安全服务器746确定在请求中提供的认证信息是否与相关于设备识别符存储的并且在注册进程期间提供的认证信息一致。
设备安全服务器746还可被编程以处理将特定实体(个人或组织)与特定设备730相关联的请求。设备安全服务器746可适于接收将实体注册为授权控制特定设备730或与其通信的请求,该实体可为例如个人、用户、帐户和/或组织。在一个示例中,可从可能已经从制造商处购买了设备730的个人或组织接收到请求。例如,该设备可为个人或组织从制造商处购买的洗碗机、恒温器或照明组合件。个人或组织可发起注册设备730与个人或与该组织相关联的组织的请求。可将该请求路由传递到web服务服务器,该web服务服务器可被包括在设备服务网络710中或者将该请求传达给设备服务网络710。该请求识别设备730和正请求与设备730相关联的特定实体(个人或组织)。在一个示例中,请求可包括当向系统注册设备730时被指派的唯一设备识别符。该请求还可包括唯一地识别正被注册为具有与特定设备730通信和/或控制特定设备730的权限的实体的信息。
设备安全服务器746存储与设备识别符相关的识别特定实体的信息。当特定实体随后尝试控制数据或将数据传达给特定设备730时,设备安全服务器746可使用该信息来确认特定实体被授权与特定设备730通信或控制特定设备730。当尚未被注册为被授权与设备730通信的实体尝试与设备730通信或控制设备730时,设备安全服务器746可使用存储在设备安全服务器746中的信息来拒绝该请求。
网络服务服务器750可为可能被服务器740、742、746或770中的任何一个在处理来自设备730的请求时使用的任何资源或处理服务器。在一个示例中,网络服务服务器750可提供数据存储和检索服务和/或按需处理能力。在示例性场景中,网络服务服务器750可为众多网络可访问服务中的任何一个,包括例如基于web的服务或基于云的服务。在一个示例中,web服务服务器750可被编程以向特定设备730和/或设备组730提供特定处理。
服务器740、742、746、750和770可经由任何合适的联网硬件和软件通信地耦合。例如,服务器可经由局域网或广域网进行通信。
外部系统760可出于任何数量的目的访问设备服务网络710。在一个示例中,外部系统760可为适于转发向设备服务网络710注册设备730的请求的系统。例如,外部系统760可包括由设备制造商操作或为设备制造商操作的服务器,该设备服务器向设备服务网络710且尤其是设备安全服务器746发送请求,以向设备服务网络710注册设备730以进行操作。类似地,外部系统760可为被操作以用于为实体(个人或组织)提供网关从而注册对特定设备730的所有权或控制关系的系统。
设备730可为可经由服务枢纽712或网络720与设备服务网络710通信地耦合的任何设备。例如,设备730可为计算设备,诸如智能电话和平板计算机、汽车、家用电器(诸如洗衣机和烘干机)、工业传感器、开关、控制系统等。在一个示例中,设备730中的每个可在网络720上进行通信,以存储反映特定设备730的操作的数据和/或请求例如由网络服务服务器750提供的处理。虽然图7示出了三个设备730,但是应当了解,任何数量的设备730可经由网关服务器740访问设备服务网络710。此外,将了解,设备730可采用各种不同的通信协议。例如,一些设备730可使用TCP来输送数据,而其他设备可使用UDP来传达数据。一些设备730可使用MQTT,而其他设备可使用CoAP,且还有一些设备可使用HTTPs。还应当了解,设备730中的每个可被编程以在其请求中发送和接收与其他设备或甚至设备服务网络710内的系统不兼容的特定函数或命令。网关服务器740可被编程以接收此类请求,并且如果需要,参与转换此类请求以用设备服务网络710进行处理。
图8是示出可用于实现上述设备服务网络的示例性服务提供商环境800的框图。服务提供商环境800可包括计算资源,该计算资源可包括物理主机802a-802e、计算实例804a-804e、虚拟化服务以及计算服务提供商的客户可购买和使用的其他类型的计算资源。计算资源可具有处理器能力、主存储器、磁盘存储装置和操作系统的许多不同配置。特别地,所示出的服务提供商环境800示出了可使用本文描述的技术的一种环境。
服务提供商环境800可为包括各种虚拟化服务资源的一种类型的环境,所述各种虚拟化服务资源可用于例如托管计算实例804a-804e。例如,服务提供商环境800可提供虚拟设备或硬件设备、数据库资源和实例、文件或块数据存储资源和/或联网资源,诸如载荷平衡资源、域名服务(“DNS”)资源、虚拟私有云(“VPC”)资源、虚拟局域网(“VLAN”)资源和/或永久性或按需的其他类型的硬件和软件计算资源或网络服务。计算资源还可包括但不限于计算实例804a-804e和图像、安全组、选项组、网关、选项集、网络访问控制列表(“ACL”)、子网、存储桶、网络接口、快照、现货市场请求和存储量。
在一种特定实现方式中,上述计算资源可由通过服务提供商运营的一个或多个数据中心来提供。如本领域技术人员所知,数据中心是被利用来容纳和操作计算机系统和相关联部件的设施。数据中心通常还包括冗余和备用电源、通信、冷却和安全系统。数据中心可位于地理上全异的区域中,并且还可连接到各种其他设施(诸如协同定位设施)和各种广域网812(“WAN”)(诸如,互联网)。
服务提供商环境800可能够将计算、存储和联网能力作为软件服务递送给终端接收者群体。在一个示例中,可由组织或代表组织为所述组织确立服务提供商环境800。也就是说,服务提供商环境800可提供“私有云环境”。在另一示例中,服务提供商环境800可支持多租户环境,其中多个客户可独立地操作(即,公共云环境)。一般而言,服务提供商环境800可提供以下模型:基础设施即服务(“IaaS”)、平台即服务(“PaaS”)和/或软件即服务(“SaaS”)。可提供其他模型。对于IaaS模型,服务提供商环境800可提供计算机作为物理机或虚拟机以及其他资源。虚拟机可由管理程序作为客户机运行,如下文进一步描述的。PaaS模型递送了计算平台,该计算平台可包括操作系统、编程语言执行环境、数据库和web服务器。
应用开发人员可在计算服务平台上开发和运行其软件解决方案,而不会招致购买和管理底层硬件和软件的成本。SaaS模型允许在服务提供商环境800中安装和操作应用软件。例如,终端客户可使用运行web浏览器或其他轻量客户端应用的联网客户端设备(诸如,台式计算机、笔记本计算机、平板计算机、智能手机等)访问服务提供商环境800。本领域技术人员将认识到,服务提供商环境800可被描述为“云”环境。
特别地示出的服务提供商环境800可包括多个服务器计算机802a-802e。虽然示出了四个服务器计算机,但是可使用任何数量,并且大型数据中心可能包括数千个服务器计算机。服务提供商环境800可提供用于执行计算实例804a-804e的计算资源。计算实例804a-804e可例如为虚拟机。虚拟机可为执行应用的比如物理机的机器(即,计算机)的软件实现方式的实例。在虚拟机的示例中,服务器计算机802a-802e中的每个可被配置成执行能够执行实例的实例管理器808a-808e。实例管理器808a-808e可为管理程序、虚拟机监视器(VMM)或另一类型的程序,其被配置成支持在单个服务器上执行多个计算实例804a-804e。另外,计算实例804a-804e中的每个可被配置成执行一个或多个应用。
可保留一个或多个服务器计算机816以执行用于管理服务提供商环境800和计算实例804a-804e的操作的软件部件。例如,服务器计算机816可执行管理部件818。客户可访问管理部件818以配置由客户购买的计算实例804a-804e的操作的各种方面。例如,客户可设置计算实例804a-804e,并对计算实例804a-804e的配置做出更改。
部署部件822可用于协助客户部署计算实例804a-804e。部署部件822可访问与计算实例804a-804e相关联的账户信息,诸如账户所有者的姓名、信用卡信息、所有者的国家等。部署部件822可从客户接收配置,该配置包括描述可如何配置计算实例804a-804e的数据。例如,配置可包括操作系统,提供要安装在计算实例804a-804e中的一个或多个应用,提供要被执行用于配置计算实例804a-804e的脚本和/或其他类型的代码,提供指定应如何制备应用高速缓存的高速缓存逻辑,以及其他类型的信息。部署部件822可利用客户提供的配置和高速缓存逻辑来配置、准备和启动计算实例804a-804e。可由客户访问管理部件818指定或者可通过直接将该信息提供给部署部件822来指定配置、高速缓存逻辑和其他信息。
客户帐户信息824可包括与多租户环境的客户相关联的任何期望的信息。例如,客户账户信息可包括客户的唯一识别符、客户地址、账单信息、许可信息、用于启动实例的定制参数、调度信息等。如上所述,客户账户信息824还可包括用于对API请求的异步响应进行加密的安全性信息。“异步”是指可在初始请求之后的任何时间并且使用不同的网络连接做出API响应。
网络810可被利用来互连服务提供商环境800和服务器计算机802a-802e、816。网络810可为局域网(LAN),并且可连接到广域网(WAN)812或互联网,以使得终端客户可访问服务提供商环境800。已经简化了图8中示出的网络拓扑结构,可利用更多的网络和联网设备来互连本文所公开的各种计算系统。
图9示出了计算设备910,该技术的模块可在该计算设备910上执行。示出了计算设备910,该技术的高级示例可在该计算设备910上执行。计算设备910可包括与存储器设备920通信的一个或多个处理器912。计算设备910可包括用于计算设备中的部件的本地通信接口918。例如,本地通信接口918可为可能期望的本地数据总线和/或任何相关地址或控制总线。
存储器设备920可包含可由处理器912执行的模块924和有关模块924的数据。一方面,存储器设备920可包括检查点管理器、迁移管理模块和其他模块。另一方面,存储器设备920可包括网络连接模块和其他模块。模块924可执行先前描述的功能。数据存储区922也可位于存储器设备920中,以便存储与模块924和其他应用以及可由处理器912执行的操作系统有关的数据。
其他应用还可存储在存储器设备920中,并且可由处理器912执行。使用方法的混合来编译、解释或执行了本描述中讨论的可使用高级编程语言以软件的形式来实现的部件或模块。
计算设备还可访问计算设备可用的I/O(输入/输出)设备914。联网设备916和类似的通信设备可包括在计算设备中。联网设备916可为连接到互联网、LAN、WAN或其他计算网络的有线或无线联网设备。
被示出为存储在存储器设备920中的部件或模块可由处理器912执行。术语“可执行”可能是指呈可由处理器912执行的形式的程序文件。例如,可将较高级语言的程序编译成呈可加载到存储器设备920的随机访问部分中并由处理器912执行的格式的机器代码,或者可通过另一可执行程序来加载源代码,并对其进行解释以在存储器的随机访问部分中生成指令以由处理器执行。可执行程序可存储在存储器设备920的任何部分或部件中。例如,存储器设备920可为随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、固态驱动器、存储器卡、硬盘驱动器、光盘、软盘、磁带或任何其他存储器部件。
处理器912可表示多个处理器,并且存储器设备920可表示与处理电路并行操作的多个存储器单元。这可为系统中的进程和数据提供并行处理通道。本地接口918可用作网络以促进多个处理器中的任何一个与多个存储器之间的通信。本地接口918可使用被设计用于协调通信的额外系统,诸如载荷平衡、批量数据传递和类似系统。
虽然针对该技术呈现的流程图可能暗示了特定的执行顺序,但是该执行顺序可能与示出的顺序不同。例如,可相对于示出的顺序重新布置两个以上框的顺序。此外,连续示出的两个或更多个框可并行或部分并行地执行。在一些配置中,可省略或跳过流程图中示出的一个或多个框。出于增强实用性、计费、性能、度量、故障排除的目的或类似原因,可将任意数量的计数器、状态变量、警告信号或消息添加到逻辑流。
在本说明书中描述的功能单元中的一些已经被标记为模块,以便更具体地强调它们的实现方式独立性。例如,可将模块实现为硬件电路,包括定制VLSI电路或门阵列、诸如逻辑芯片、晶体管等现成的半导体或其他离散部件。模块也可在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等可编程硬件设备中实现。
模块也可在软件中实现以由各种类型的处理器执行。举例来说,可执行代码的识别的模块可包括一个或多个计算机指令块,它们可被组织为对象、程序或函数。然而,识别的模块的可执行文件不必在实体上位于一起,而是可包括存储在包括模块的不同位置中的全异指令,并且当逻辑地结合在一起时达成模块的陈述的目的。
实际上,可执行代码的模块可为单个指令或许多指令,并且甚至可分布在几个不同的代码片段上、分布在不同程序之间以及跨几个存储器设备分布。类似地,本文中的操作数据可识别和示出在模块内,并且可体现为任何合适的形式和组织在任何合适的类型的数据结构内。可将操作数据收集为单个数据集,或者可将操作数据分布在不同位置上,包括分布在不同存储设备上。模块可为被动的或主动的,包括可操作以执行期望的功能的代理。
这里描述的技术还可存储在计算机可读存储介质上,该计算机可读存储介质包括用任何技术实现的易失性和非易失性、可移除和不可移除介质,用以存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息。计算机可读存储介质包括但不限于非暂时性机器可读存储介质,诸如RAM、ROM、EEPROM、快闪存储器或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储设备,或可用来存储期望的信息和所描述的技术的任何其他计算机存储介质。
本文所描述的设备还可包含允许所述设备与其他设备进行通信的通信连接或联网装置以及联网连接。通信连接是通信介质的示例。通信介质通常在诸如载波或其他输送机制的经调制数据信号中体现计算机可读指令、数据结构、程序模块和其他数据,并且包括任何信息传递介质。“经调制数据信号”是指其特性中的一个或多个已被设置或更改以使得在信号中对信息进行编码的信号。作为示例而非限制,通信介质包括有线介质(诸如有线网络或直接接线的连接)以及无线介质(诸如,声学、射频、红外和其他无线介质)。如本文所使用的术语计算机可读介质包括通信介质。
参考了附图中示出的示例,并且本文中使用特定语言来描述所述示例。然而,应当理解的是,由此并不意在限制本技术的范围。本文中示出的特征的改变和进一步修改以及本文中示出的示例的额外应用将视为在本描述的范围内。
鉴于以下示例可更好地理解上文。
示例1是一种系统,其包括:
至少一个处理器;
至少一个存储器设备,所述至少一个存储器设备包括指令,所述指令当由所述至少一个处理器执行时,致使所述系统:
在第一服务枢纽处接收程序代码函数,其中所述第一服务枢纽包括在本地设备网络中,所述本地设备网络包括多个服务枢纽和多个连接的设备,所述多个连接的设备连接到所述多个服务枢纽以访问由所述多个服务枢纽提供的服务;
接收在所述第一服务枢纽上执行所述程序代码函数的实例的指令;
在所述第一服务枢纽上挂起所述程序代码函数的所述实例的执行;
从所述第一服务枢纽的所述至少一个存储器设备获得有关所述程序代码函数的所述实例的执行指令和执行状态数据;
创建包含有关所述程序代码函数的所述实例的所述执行指令和所述执行状态数据的函数检查点;
识别所述本地设备网络中包括的可用于部分地基于所述函数检查点中包含的所述执行指令和所述执行状态数据在第二服务枢纽上执行所述程序代码函数的所述实例的所述第二服务枢纽;以及
将所述函数检查点从所述第一服务枢纽发送到所述第二服务枢纽,以支持使用所述函数检查点中包括的所述执行指令和所述执行状态数据来加载所述程序代码函数的所述实例的执行状态。
示例2是如示例1中的系统,其中存储器设备包括指令,所述指令当由至少一个处理器执行时,致使所述系统进一步:
获得与所述程序代码函数的所述实例在所述第一服务枢纽上的执行有关的元数据;以及
将所述元数据随所述函数检查点包括。
示例3包括示例1的主题,其中所述存储器设备包括指令,所述指令当由至少一个处理器执行时,致使所述系统将所述函数检查点存储到位于所述第一服务枢纽上的持久性存储装置。
示例4包括示例1和3中任一项所述的主题,其中第二服务枢纽从第一服务枢纽接收函数检查点,将函数检查点存储到位于第二服务枢纽上的持久性存储装置,并使用函数检查点中包括的执行指令和执行状态数据将程序代码函数的实例的执行状态加载到第二服务枢纽的存储器中。
示例5是一种计算机实现的方法,其包括:
接收在本地设备网络中包括的第一服务枢纽上执行程序代码函数的实例的指令,所述本地设备网络包括多个服务枢纽和多个连接的设备,所述多个连接的设备连接到所述多个服务枢纽以访问由所述多个服务枢纽提供的服务;
为加载在所述第一服务枢纽的存储器中的所述程序代码函数的所述实例创建函数检查点,所述函数检查点包含有关所述程序代码函数的所述实例的执行指令和执行状态数据;
识别所述本地设备网络中包括的第二服务枢纽;以及
将所述函数检查点发送到所述第二服务枢纽,以部分地基于所述函数检查点中包括的所述执行指令和所述执行状态数据,允许待在所述第二服务枢纽上执行的所述程序代码函数的所述实例的执行。
示例6包括示例5的主题,其还包括:
在所述第一服务枢纽上挂起所述程序代码函数的所述实例的执行;以及
从所述第一服务枢纽的所述存储器中检索所述执行指令和所述执行状态数据。
示例包括示例5的主题,其还包括:
检测到第一服务枢纽的健康状态不稳定;以及
选择程序代码函数的实例以移动到第二服务枢纽。
示例8包括示例5的主题,其还包括:
检测到第一服务枢纽上的计算资源过载;以及
选择程序代码函数的实例以移动到第二服务枢纽。
示例9包括示例5的主题,其还包括使用包括函数类型、函数执行状态或函数完成状态的选择标准来选择程序代码函数的实例以移动到第二服务枢纽。
示例10包括示例5的主题,其中识别本地设备网络中包括的第二服务枢纽还包括引用迁移配置文件,该迁移配置文件指派第二服务枢纽来托管程序代码函数的实例。
示例11包括示例5的主题,其中识别本地设备网络中包括的第二服务枢纽还包括部分地基于第二服务枢纽的计算工作量来识别第二服务枢纽。
示例12包括示例5的主题,其中创建函数检查点还包括创建软件容器的图像,所述软件容器提供用于执行程序代码函数的实例的隔离的环境。
示例13包括示例5和12中任一项所述的主题,其中创建函数检查点还包括周期性地创建函数检查点以备份到第二服务枢纽上的持久性存储装置。
示例14包括示例5和示例12-13中任一项所述的主题,其中将函数检查点发送到第二服务枢纽还包括通过局域网将函数检查点发送到第二服务枢纽。
示例15包括示例5和示例12-14中任一项所述的主题,其中将函数检查点发送到第二服务枢纽还包括将函数检查点发送到服务提供商环境中的检查点存储装置,并且第二服务枢纽可从服务提供商环境中的检查点存储装置检索所述函数检查点。
示例16包括示例5和示例12-15中任一项所述的主题,其中创建函数检查点并将函数检查点发送到第二服务枢纽还包括:
在所述第一服务枢纽的易失性存储器中创建所述函数检查点;以及
通过网络将所述函数检查点发送到所述第二服务枢纽,其中所述第二服务枢纽使用所述函数检查点中包括的所述执行指令和所述执行状态数据将所述程序代码函数的所述实例加载到所述第二服务枢纽上的易失性存储器中。
示例17包括示例5和示例12-16中任一项所述的主题,其还包括将程序代码函数部署到一组服务枢纽以被托管在所述一组服务枢纽中包括的服务枢纽上。
示例18是一种非暂时性机器可读存储介质,包括在其上体现的指令,所述指令当由一个或多个处理器执行时:
在本地设备网络中包括的第一服务枢纽上调用程序代码函数的实例,所述本地设备网络包括多个服务枢纽和多个连接的设备,所述多个连接的设备连接到所述服务枢纽以访问由所述多个服务枢纽提供的服务;
在所述第一服务枢纽上挂起所述程序代码函数的所述实例的执行;
获得有关所述程序代码函数的所述实例的执行指令、执行状态数据和函数元数据;
创建包含所述执行指令、所述执行状态数据和所述函数元数据的函数检查点;以及
将所述函数检查点发送到服务提供商环境以存储在所述服务提供商环境中,并且支持第二服务枢纽检索所述函数检查点,从而允许所述第二服务枢纽部分地基于所述函数检查点中包括的所述执行指令和所述执行状态数据来在所述第二服务枢纽上执行所述程序代码函数的所述实例。
示例19包括示例18所述的主题,其中函数检查点被保存到用于表示第二服务枢纽在服务提供商环境中的状态的设备表示,并且第二服务枢纽从设备表示中检索函数检查点。
示例20包括示例18-19所述的主题,其中第二服务枢纽是位于服务提供商环境中的计算实例,并且程序代码函数的实例的执行状态被加载到该计算实例上。
此外,在一个或多个示例中,可用任何合适的方式组合所描述的特征、结构或特性。在前面的描述中,提供了众多特定细节(诸如具有各种配置的示例),以提供对所描述的技术的示例的透彻理解。然而,将认识到,可在没有特定细节中的一个或多个的情况下或者在具有其他方法、部件、设备等的情况下实践该技术。在其他实例中,未详细示出或描述公知的结构或操作,以避免混淆该技术的各方面。
此外,在一个或多个示例中,可用任何合适的方式组合所描述的特征、结构或特性。在前面的描述中,提供了众多特定细节(诸如具有各种配置的示例),以提供对所描述的技术的示例的透彻理解。然而,相关领域技术人员将认识到,可在没有特定细节中的一个或多个的情况下或者在具有其他方法、部件、设备等的情况下实践该技术。在其他实例中,未详细示出或描述公知的结构或操作,以避免混淆该技术的各方面。
虽然已经用专用于结构特征和/或操作的语言对主题进行了描述,但是应当理解,所附权利要求中定义的主题不一定限于上文所描述的特定特征和操作。实际上,上文所描述的特定特征和动作是作为实现所附权利要求的示例性形式而公开的。在不脱离所描述的技术的精神和范围的情况下,可设计出众多修改和替代布置。
Claims (15)
1.一种系统,所述系统包括:
至少一个处理器;
至少一个存储器设备,所述至少一个存储器设备包括指令,所述指令当由所述至少一个处理器执行时,致使所述系统:
在第一服务枢纽处接收程序代码函数,其中所述第一服务枢纽包括在本地设备网络中,所述本地设备网络包括多个服务枢纽和多个连接的设备,所述多个连接的设备连接到所述多个服务枢纽以访问由所述多个服务枢纽提供的服务;
接收在所述第一服务枢纽上执行所述程序代码函数的实例的指令;
在所述第一服务枢纽上挂起所述程序代码函数的所述实例的执行;
从所述第一服务枢纽的所述至少一个存储器设备获得有关所述程序代码函数的所述实例的执行指令和执行状态数据;
创建包含有关所述程序代码函数的所述实例的所述执行指令和所述执行状态数据的函数检查点;
识别所述本地设备网络中包括的可用于部分地基于所述函数检查点中包含的所述执行指令和所述执行状态数据在第二服务枢纽上执行所述程序代码函数的所述实例的所述第二服务枢纽;以及
将所述函数检查点从所述第一服务枢纽发送到所述第二服务枢纽,以支持使用所述函数检查点中包括的所述执行指令和所述执行状态数据来加载所述程序代码函数的所述实例的执行状态。
2.如权利要求1所述的系统,其中所述存储器设备还包括指令,所述指令当由所述至少一个处理器执行时,致使所述系统:
获得与所述程序代码函数的所述实例在所述第一服务枢纽上的执行有关的元数据;以及
将所述元数据随所述函数检查点包括。
3.如权利要求1所述的系统,其中所述第二服务枢纽从所述第一服务枢纽接收所述函数检查点,将所述函数检查点存储到位于所述第二服务枢纽上的持久性存储装置,并使用所述函数检查点中包括的所述执行指令和所述执行状态数据将所述程序代码函数的所述实例的所述执行状态加载到所述第二服务枢纽的存储器中。
4.一种计算机实现的方法,所述方法包括:
接收在本地设备网络中包括的第一服务枢纽上执行程序代码函数的实例的指令,其中所述本地设备网络包括多个服务枢纽和多个连接的设备,并且所述多个连接的设备连接到所述多个服务枢纽以访问由所述多个服务枢纽提供的服务;
为加载在所述第一服务枢纽的存储器中的所述程序代码函数的所述实例创建函数检查点,所述函数检查点包含有关所述程序代码函数的所述实例的执行指令和执行状态数据;
识别所述本地设备网络中包括的第二服务枢纽;以及
将所述函数检查点发送到所述第二服务枢纽,以部分地基于所述函数检查点中包括的所述执行指令和所述执行状态数据,允许待在所述第二服务枢纽上执行的所述程序代码函数的所述实例的执行。
5.如权利要求4所述的方法,所述方法还包括:
在所述第一服务枢纽上挂起所述程序代码函数的所述实例的执行;以及
从所述第一服务枢纽的所述存储器中检索所述执行指令和所述执行状态数据。
6.如权利要求4所述的方法,所述方法还包括使用包括函数类型、函数执行状态或函数完成状态的选择标准来选择所述程序代码函数的所述实例以移动到所述第二服务枢纽。
7.如权利要求4所述的方法,其中识别所述本地设备网络中包括的所述第二服务枢纽还包括引用迁移配置文件,所述迁移配置文件指派所述第二服务枢纽来托管所述程序代码函数的所述实例。
8.如权利要求4所述的方法,其中识别所述本地设备网络中包括的所述第二服务枢纽还包括部分地基于所述第二服务枢纽的计算工作量来识别所述第二服务枢纽。
9.如权利要求4所述的方法,其中创建所述函数检查点还包括创建软件容器的图像,所述软件容器提供用于执行所述程序代码函数的所述实例的隔离的环境。
10.如权利要求4所述的方法,其中创建所述函数检查点还包括周期性地创建所述函数检查点以备份到所述第二服务枢纽上的持久性存储装置。
11.如权利要求4所述的方法,其中将所述函数检查点发送到所述第二服务枢纽还包括将所述函数检查点发送到服务提供商环境中的检查点存储装置,并且所述第二服务枢纽能从所述服务提供商环境中的所述检查点存储装置检索所述函数检查点。
12.如权利要求4所述的方法,其中创建所述函数检查点和将所述函数检查点发送到所述第二服务枢纽还包括:
在所述第一服务枢纽的易失性存储器中创建所述函数检查点;以及
通过网络将所述函数检查点发送到所述第二服务枢纽,其中所述第二服务枢纽使用所述函数检查点中包括的所述执行指令和所述执行状态数据将所述程序代码函数的所述实例加载到所述第二服务枢纽上的易失性存储器中。
13.一种系统,所述系统包括:
至少一个处理器;
至少一个存储器设备,所述至少一个存储器设备包括指令,所述指令当由所述至少一个处理器执行时,致使所述系统:
在本地设备网络中包括的第一服务枢纽上调用程序代码函数的实例,所述本地设备网络包括多个服务枢纽和多个连接的设备,所述多个连接的设备连接到所述服务枢纽以访问由所述多个服务枢纽提供的服务;
在所述第一服务枢纽上挂起所述程序代码函数的所述实例的执行;
获得有关所述程序代码函数的所述实例的执行指令、执行状态数据和函数元数据;
创建包含所述执行指令、所述执行状态数据和所述函数元数据的函数检查点;以及
将所述函数检查点发送到服务提供商环境以存储在所述服务提供商环境中,并且支持第二服务枢纽检索所述函数检查点,从而允许所述第二服务枢纽部分地基于所述函数检查点中包括的所述执行指令和所述执行状态数据来在所述第二服务枢纽上执行所述程序代码函数的所述实例。
14.如权利要求13所述的系统,其中所述函数检查点被保存到用于表示所述第二服务枢纽在所述服务提供商环境中的状态的设备表示,并且所述第二服务枢纽从所述设备表示中检索所述函数检查点。
15.如权利要求13所述的系统,其中所述第二服务枢纽是位于所述服务提供商环境中的计算实例,并且所述程序代码函数的所述实例的执行状态被加载到所述计算实例上。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/968,239 US10782950B2 (en) | 2018-05-01 | 2018-05-01 | Function portability for services hubs using a function checkpoint |
US15/968,239 | 2018-05-01 | ||
PCT/US2019/030070 WO2019213176A1 (en) | 2018-05-01 | 2019-04-30 | Function portability for services hubs using a function checkpoint |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112384895A true CN112384895A (zh) | 2021-02-19 |
Family
ID=66530475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980027665.2A Pending CN112384895A (zh) | 2018-05-01 | 2019-04-30 | 使用函数检查点实现服务枢纽的函数可移植性 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10782950B2 (zh) |
EP (1) | EP3788480A1 (zh) |
JP (1) | JP2021518018A (zh) |
CN (1) | CN112384895A (zh) |
WO (1) | WO2019213176A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113300985A (zh) * | 2021-03-30 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 数据处理方法、装置、设备和存储介质 |
CN115291964A (zh) * | 2018-12-21 | 2022-11-04 | 华为云计算技术有限公司 | 减少无服务器函数启动延迟的机制 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11088864B1 (en) | 2016-06-29 | 2021-08-10 | Amazon Technologies, Inc. | Device subcomponent representations |
US20190347127A1 (en) * | 2018-05-09 | 2019-11-14 | Red Hat, Inc. | Service provisioning and orchestration for virtual machine to container migration |
EP3803587A1 (en) * | 2018-05-29 | 2021-04-14 | Telefonaktiebolaget LM Ericsson (publ) | Improved performance of function as a service |
US10841171B2 (en) * | 2018-06-14 | 2020-11-17 | Infosys Limited | Method and system for virtual network service activation |
US10853115B2 (en) | 2018-06-25 | 2020-12-01 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US11099870B1 (en) * | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11016861B2 (en) * | 2019-04-11 | 2021-05-25 | International Business Machines Corporation | Crash recoverability for graphics processing units (GPU) in a computing environment |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11163603B1 (en) | 2020-07-06 | 2021-11-02 | International Business Machines Corporation | Managing asynchronous operations in cloud computing environments |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11645104B2 (en) * | 2020-12-22 | 2023-05-09 | Reliance Jio Infocomm Usa, Inc. | Intelligent data plane acceleration by offloading to distributed smart network interfaces |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1333507A (zh) * | 2000-07-14 | 2002-01-30 | 国际商业机器公司 | 分布式计算机系统中协调器服务的非中断性迁移 |
US6934755B1 (en) * | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
CN101460907A (zh) * | 2006-03-31 | 2009-06-17 | 亚马逊技术有限公司 | 管理由多个计算系统执行程序 |
US20120011519A1 (en) * | 2010-07-12 | 2012-01-12 | International Business Machines Corporation | Parallel checkpointing for migration of workload partitions |
US20120159462A1 (en) * | 2010-12-20 | 2012-06-21 | Microsoft Corporation | Method for checkpointing and restoring program state |
US8281317B1 (en) * | 2008-12-15 | 2012-10-02 | Open Invention Network Llc | Method and computer readable medium for providing checkpointing to windows application groups |
US20160132310A1 (en) * | 2014-11-07 | 2016-05-12 | Amazon Technologies, Inc. | Dynamic reconstruction of application state upon application re-launch |
US20160285958A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Application container for live migration of mobile applications |
US20170199770A1 (en) * | 2014-06-23 | 2017-07-13 | Getclouder Ltd. | Cloud hosting systems featuring scaling and load balancing with containers |
US20180113770A1 (en) * | 2016-10-21 | 2018-04-26 | International Business Machines Corporation | Scalable fault tolerant support in a containerized environment |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8752049B1 (en) * | 2008-12-15 | 2014-06-10 | Open Invention Network, Llc | Method and computer readable medium for providing checkpointing to windows application groups |
JP4887223B2 (ja) * | 2007-06-15 | 2012-02-29 | 株式会社日立製作所 | 情報処理システム、情報処理方法、およびプログラム |
US9086901B2 (en) * | 2008-03-07 | 2015-07-21 | Sap Se | Migration of applications from physical machines to virtual machines |
US9641553B2 (en) * | 2015-09-25 | 2017-05-02 | Intel Corporation | Methods and apparatus to facilitate end-user defined policy management |
US10715599B2 (en) * | 2015-11-30 | 2020-07-14 | Verizon Patent And Licensing, Inc. | Internet of things (IoT) platform and application framework |
-
2018
- 2018-05-01 US US15/968,239 patent/US10782950B2/en active Active
-
2019
- 2019-04-30 EP EP19723966.8A patent/EP3788480A1/en not_active Withdrawn
- 2019-04-30 WO PCT/US2019/030070 patent/WO2019213176A1/en unknown
- 2019-04-30 CN CN201980027665.2A patent/CN112384895A/zh active Pending
- 2019-04-30 JP JP2020556230A patent/JP2021518018A/ja active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6934755B1 (en) * | 2000-06-02 | 2005-08-23 | Sun Microsystems, Inc. | System and method for migrating processes on a network |
CN1333507A (zh) * | 2000-07-14 | 2002-01-30 | 国际商业机器公司 | 分布式计算机系统中协调器服务的非中断性迁移 |
CN101460907A (zh) * | 2006-03-31 | 2009-06-17 | 亚马逊技术有限公司 | 管理由多个计算系统执行程序 |
US8281317B1 (en) * | 2008-12-15 | 2012-10-02 | Open Invention Network Llc | Method and computer readable medium for providing checkpointing to windows application groups |
US20120011519A1 (en) * | 2010-07-12 | 2012-01-12 | International Business Machines Corporation | Parallel checkpointing for migration of workload partitions |
US20120159462A1 (en) * | 2010-12-20 | 2012-06-21 | Microsoft Corporation | Method for checkpointing and restoring program state |
US20170199770A1 (en) * | 2014-06-23 | 2017-07-13 | Getclouder Ltd. | Cloud hosting systems featuring scaling and load balancing with containers |
US20160132310A1 (en) * | 2014-11-07 | 2016-05-12 | Amazon Technologies, Inc. | Dynamic reconstruction of application state upon application re-launch |
US20160285958A1 (en) * | 2015-03-27 | 2016-09-29 | Intel Corporation | Application container for live migration of mobile applications |
US20180113770A1 (en) * | 2016-10-21 | 2018-04-26 | International Business Machines Corporation | Scalable fault tolerant support in a containerized environment |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115291964A (zh) * | 2018-12-21 | 2022-11-04 | 华为云计算技术有限公司 | 减少无服务器函数启动延迟的机制 |
US11658939B2 (en) | 2018-12-21 | 2023-05-23 | Huawei Cloud Computing Technologies Co., Ltd. | Mechanism to reduce serverless function startup latency |
CN113300985A (zh) * | 2021-03-30 | 2021-08-24 | 阿里巴巴新加坡控股有限公司 | 数据处理方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3788480A1 (en) | 2021-03-10 |
US20190339955A1 (en) | 2019-11-07 |
JP2021518018A (ja) | 2021-07-29 |
US10782950B2 (en) | 2020-09-22 |
WO2019213176A1 (en) | 2019-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10782950B2 (en) | Function portability for services hubs using a function checkpoint | |
US10719367B1 (en) | Management of workers executing program code functions | |
CN112119374B (zh) | 使用替代服务器名称选择性地提供相互传输层安全 | |
US11157304B2 (en) | System for peering container clusters running on different container orchestration systems | |
US10999234B1 (en) | Message processing using messaging services | |
CA3000767C (en) | Network-based resource configuration discovery service | |
US10833881B1 (en) | Distributing publication messages to devices | |
US11635990B2 (en) | Scalable centralized manager including examples of data pipeline deployment to an edge system | |
US9521194B1 (en) | Nondeterministic value source | |
US11265398B2 (en) | Managing client computing systems using distilled data streams | |
US11388234B2 (en) | Infrastructure for deploying a security information and event management application on a container platform | |
US10791144B1 (en) | Container life cycle management with honeypot service | |
US10691501B1 (en) | Command invocations for target computing resources | |
US11134098B1 (en) | Container life cycle management with session dilution time | |
JP2023500669A (ja) | クロス・クラウド・オペレーションのためのクラウド・サービス | |
US10547590B1 (en) | Network processing using asynchronous functions | |
US10817280B1 (en) | Overriding shared service interfaces | |
Mohamed et al. | MidCloud: an agent‐based middleware for effective utilization of replicated Cloud services | |
US20180307501A1 (en) | Network booting in a peer-to-peer environment using dynamic magnet links | |
US10649768B1 (en) | Development code execution using a service proxy | |
US11803410B2 (en) | Asserting initialization status of virtualized system | |
US11656944B1 (en) | Code function checkpoint and restore | |
US10951651B1 (en) | Container life cycle management with retention rate adjustment based on detected anomalies | |
US20220342707A1 (en) | Infrastructure for deploying a security information and event management application on a container platform | |
US10701167B1 (en) | Adaptive quorum for a message broker service |
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 |