CN104160378A - 用于复杂的分布式计算操作的容错功能 - Google Patents

用于复杂的分布式计算操作的容错功能 Download PDF

Info

Publication number
CN104160378A
CN104160378A CN201380014073.XA CN201380014073A CN104160378A CN 104160378 A CN104160378 A CN 104160378A CN 201380014073 A CN201380014073 A CN 201380014073A CN 104160378 A CN104160378 A CN 104160378A
Authority
CN
China
Prior art keywords
instruction
execution environment
distributed computing
computing system
object interface
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
Application number
CN201380014073.XA
Other languages
English (en)
Other versions
CN104160378B (zh
Inventor
伊凡·奥马尔·帕拉
道格拉斯·H·威廉姆斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NetSuite Inc
Original Assignee
NetSuite Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NetSuite Inc filed Critical NetSuite Inc
Publication of CN104160378A publication Critical patent/CN104160378A/zh
Application granted granted Critical
Publication of CN104160378B publication Critical patent/CN104160378B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

一种用于使分布式计算系统在客户端进程的执行期间能够容许系统故障的方法。方法包括实例化涉及客户端进程的执行环境;在执行环境内执行指令,所述指令引起执行环境发出另外的指令到分布式计算系统,另外的指令涉及相对于存储在分布式计算系统上的数据执行的动作。对象接口代理接收另外的指令并且监视接收的指令以确定执行环境是否在期望的保存状态条件下;并且如果执行环境是在期望的保存状态条件下,那么将执行环境的当前状态保存在数据存储区中。

Description

用于复杂的分布式计算操作的容错功能
相关申请的交叉引用
本申请要求于2012年1月13日递交的、名称为“Fault Tolerance forComplex Distributed Computing Operations”、序列号为61/586,472的美国临时专利申请的权益,出于所有目的,该美国临时专利申请通过引用以其整体并入本文。
背景技术
使用计算机和计算机网络以便利包括工作和娱乐的各种各样的活动已经变得司空见惯。现代的计算机网络结合虚拟层使得远程计算机和计算机构件实际上可以被分配特定的任务并且然后当任务完成时进行重新分配。用户有时称之为术语“云”计算,这是因为计算机和计算构件的方式分组可以响应于用户要求形成和拆分,并且还因为用户经常是从未看到最终提供计算服务的计算硬件。最近,已经开始出现不同类型的云计算和云服务。
云服务平台在它们提供的服务的类型和它们打算支持的应用的类型方面不同。在云服务平台范围的一端是“低层”服务,例如提供访问操作系统、一个或多个开发框架、数据库和其它类似的设施的平台。这些平台的主要目的是降低硬件和IT成本,而不另外限制应用开发者对技术解决方案或应用空间的选择。在云服务平台范围的另一端是提供便利以在已经存在的具有明确定义目的应用的情景下创建应用的平台。这样的“高层”云服务通常集中于例如业务应用的一个或多个明确定义的终端用户应用。这些平台的目的是使创建核心应用的扩展成为可能。在这种情况下提供的服务通常偏向嵌入应用的情景并且远离低层服务和技术解决方案的选择。一些高层云服务提供定制和/或扩展它们提供的最终用户应用中的一个或多个最终用户应用的能力,然而高层云服务通常不能提供对低层计算功能的直接访问。对于容错功能,这可能会是成问题的,例如,在经历例如电力或通信网络故障的意外或中断事件之后的数据和/或行为的完整性的维护,这是因为常规方法通常使用低层计算功能以实现容错功能。
图1描绘了可以从本发明的至少一个实施方式获益的示例计算环境100的各个方面。结合和/或结合到各种计算设备104的各种客户端应用程序(未示出)可以通过一个或多个网络112与多占用者分布式计算设备108进行通信。合适的计算设备104的实例包括个人计算机、服务器计算机、台式计算机、手提电脑、笔记本计算机、个人数字助理(PDA)、智能手机、蜂窝手机、计算机以及结合一个或多个例如一个或多个处理器的计算设备构件的消费电子产品。合适的网络的实例包括包含有线通信技术和无线通信技术的网络、根据任何合适的联网协议和/或通信协议操作的网络、专用内联网和/或因特网。
多占用者分布式计算设备108可以包括多个处理层,所述多个处理层包括用户界面层116、应用程序层120以及数据存储层124。用户界面层116可以保存多个用户界面128,多个用户界面128包括图形用户界面和/或基于网络的界面。用户界面128可以包括用于服务的默认用户界面以及由服务的一个或多个占用者定制的一个或多个用户界面。默认用户界面可以包括使占用者能保持自定义用户界面并且以其它方式管理其在服务中的参与的构件。每个层可以通过包括计算机服务器的分布的一组计算机和/或计算机构件实现。该数据存储层124可以包括核心服务数据存储区132以及用于存储占用者数据的数据存储区(或多个数据存储区)136。
多占用者分布式计算服务108的应用程序层120可以提供用于执行可定制的和/或可扩展的终端用户应用的应用程序服务器140。例如,应用程序层可以能够用例如脚本语言的编程语言进行定制。自定义的程序代码可以在由应用程序服务器140实例化的受控执行环境144中执行。例如,自定义的脚本可以通过脚本语言解释器来执行。
常规的尝试能够定制高层云服务,例如在图1中示出的多占用者分布式计算服务,然而其解决容错问题是低效的、无效的和/或具有不期望的副作用或其它缺点。
例如,在常规计算机操作系统中运行的程序通常可以使用由数据库提供的低层机制以确保在出现意料之外的中断的情况下保持数据一致性。对于特别长的运行进程,其它的机制可以被采用以跟踪程序的进展以便支持从例如电力损失、网络中断或其它的系统故障的意料之外的事件中恢复。例如,对数据对象的同构列表执行重复操作的程序可以将每个相同的操作封装在数据库事务中并且包括表示每个作业单元的完成的信息。如果进程被中断,则当系统重启时,程序可以查询未处理的对象并且恢复而不需要牺牲数据的一致性。
然而,在基于云的平台上运行的进程可能不能访问与可用于在操作系统上进行直接写操作的进程的低层设施相同的低层设施。在这样的系统上,数据一致性可能仅仅在一个系统级数据存取操作(例如业务对象的读取或写入)的范围之内得到保证。即使在其中长时间运行进程是从多个相同的计算单元中构建的情况下,这些单元也可以包括一个以上的数据存取操作。这可以在意料之外的中断不是发生在计算单元之间、而是发生在单个计算单元中时,造成进程容易受数据不一致的影响。
低层平台的用户处于管理一致性问题的地位,因为他们通常可以访问常规(非云、本地部署(on-premise)等)开发环境可用的设施。例如,关系数据库的事务性质可以与最大限度减少多个操作的架构相结合,所述多个操作在作为用于确保一致的、持久的数据状态的基础的单个事务中执行。
然而在高层平台上,程序可能不能直接访问数据库事务。相反,可以使用底层数据库事务以确保到这些平台交互的更高层业务对象的数据存取的一致性。为了创建跨越多个高层数据访问操作的原子进程,这些平台可以提供对跨越较小数量的存取的事务管理的限制形式和/或对可以在该事务期间利用的该种类型平台服务施加更多的限制。
例如在图1中示出的多占用者分布式计算服务的这种高层平台,可能会受到包括系统故障、资源支配机制、有计划的重启系统以及监控发起的重启的间歇性中断的影响。资源支配可以包括通过平台在每个占用者基础上跟踪的资源利用和根据在占用者和平台服务提供者之间的协议的资源利用限制。然而,对服务提供者有利的是,中断不需要被保证以提供允许客户端进程安全关机的信号。这样的中断可以被分类为:(i)在数据写入操作期间发生的那些中断;以及,(ii)在数据写入操作之外发生的那些中断。在前者(第(i)种)情况下,发生在数据写入操作内的中断可能不会造成业务对象处于不一致的状态,这是因为它们被底层数据库事务保护。然而,在后者(第(ii)种)类型中断情况下,在业务对象之间的数据一致性可能会丢失。
本发明的实施例针对单独解决和共同解决这些问题和其它问题。
发明内容
本发明内容是本方法和系统的各个方面的高层次概述,本方法和系统用于启用在执行客户端进程的分布式计算系统中的容错功能,并且本发明内容引进了在下文详细描述部分进一步描述的概念中的一些。本发明内容不是旨在识别所要求保护的主题的关键或重要特征,也不是旨在用于确定所要求保护的主题的范围。
特别地,下文描述的实施例的各个方面针对各种方法,方法可以包括实例化涉及所述客户端进程的执行环境的步骤和在所述执行环境内执行指令的步骤。所执行的指令依次引起执行环境发出另外的指令到分布式计算系统,另外的指令涉及相对于存储在分布式计算系统上的数据执行的动作。这些指令通过对象接口代理接收并且这些指令中的至少一个指令是保存状态指令,其使得对象接口代理在数据存储区中保存执行环境的当前状态。
下文描述的各个实施例的其它的方面针对各种系统,其可以包括在分布式计算系统上实例化的执行环境;具有容错模块且还在分布式计算系统上运行的对象接口代理;以及数据存储区。执行环境可以根据客户端进程在至少一个软件对象上执行指令并且对象接口代理充当用于将来自执行环境的这些指令路由到软件对象的接口。容错模块可以接收来自执行环境的保存状态指令,其将引起容错模块保存所述执行环境的当前状态到数据存储区。
下文描述的各个实施例的其它的方面针对各种方法,所述各种方法可以包括实例化涉及在分布式计算系统上运行的客户端进程的执行环境的步骤和在执行环境内执行指令的步骤。指令引起执行环境发出涉及相对于存储在分布式计算系统上的数据执行的动作的另外的指令。对象接口代理接收和监视这些指令并且确定执行环境是否在期望的保存状态条件。如果是在期望的保存状态条件,那么执行环境的当前状态被保存到数据存储区。
下文描述的各个实施例的其它的方面针对各种系统,所述各种系统可以包括在分布式计算系统上实例化的执行环境;具有容错模块并且还在分布式计算系统上运行的对象接口代理;以及数据存储区。执行环境可以根据客户端进程在至少一个软件对象上执行指令,并且对象接口代理充当用于将来自执行环境的那些指令路由到软件对象的接口。容错模块被配置为监视被容错模块接收的每个指令,并且确定指令的执行是否将执行环境置于期望的保存状态条件,并且如果将执行环境置于期望的保存状态条件,则将执行环境的当前状态保存在数据存储区中。
在回顾本发明的详细描述和所包括的附图的基础上,本发明的其它的目的和优点对于本领域的一个普通技术人员是显而易见的。
附图简述
根据本公开的各个实施例将参考附图进行描述,在附图中:
图1是根据本发明的至少一个实施例的描绘了示例计算环境的方面的示意图;
图2是根据本发明的至少一个实施例的描绘了示例高层分布式计算服务平台的方面的示意图;
图3是根据本发明的至少一个实施例的描绘了示例交互的方面的交互图;
图4a和4b是根据本发明的至少一个实施例的描绘了保存状态操作和恢复状态操作的方面的高层处理流程示意图;
图5a和5b是根据本发明的至少一个替代实施例的描绘了保存状态操作和恢复状态操作的方面的高层处理流程示意图;
图6是根据本发明的至少一个替代实施例的描绘了保存状态操作和恢复状操作的各方面的高层处理流程示意图。
图7是根据本发明的至少一个实施例的描绘了关于容错的示例步骤的流程图;
图8是根据本发明的至少一个实施例的描绘了示例计算机的方面的示意图。
应当注意的是,相同的标号在整个公开和附图中使用以引用相同的构件和特征。
详述
本文描述了具有专一性的本发明的实施例的主题以满足法定的要求,但是本描述不是必需旨在限制权利要求的范围。所要求保护的主题可以以其它的方式体现,可以包括不同的元件和步骤,并且可以与其它的现有技术或未来技术结合使用。除了当元件的各自的步骤或布置的顺序被明确描述时之外,本描述不应解释为意味着在各个步骤或各个元件之间存在任何特定的顺序或布置。
根据本发明的至少一个实施例,启用了用于复杂分布式计算操作的容错功能。保存状态机制可以持续受控的执行环境,并且在受控的执行环境检测到已经有中断发生时,所保存的状态可以被恢复。该保存状态机制可以响应于明确的“保存状态”调用或消息而行动、和/或当合适的执行状态被检测到时而行动。例如,基于保存状态机制的控制可以用编程接口提供给自定义程序代码开发者。
根据本发明的至少一个实施例,平台提供了到具有编程接口(有时称为应用程序编程接口或API)的业务对象的平台功能的访问。在分布式计算环境中,这样的接口可以被访问,例如,用合适的函数调用、远程功能调用和/或消息传送协议。该平台可以保证单独的接口元件操作的完整性,但是不必有涉及多个接口元件的激活的复杂操作和/或复合操作。业务对象接口访问监视器,其可以充当用于这样的接口访问的调用路由器或代理。此外,监视器可以结合保存状态机制,并且使得它具有编程接口可访问的,例如,具有“保存状态”元件和“恢复状态”元件。
根据本发明的至少一个实施例,脚本解释器可以执行引起关于一组业务对象的多个原子事务、简单事务和/或完整事务(统称为“原子”事务)的脚本。监视器构件可以监视关于该组业务对象的脚本动作,并且可以将脚本解释器的状态和/或业务对象的状态保存为恢复点,使得在该组多个原子事务被中断的情况下,脚本可以在恢复点重新开始。可以响应于通过脚本和/或至少部分地基于所监视的关于业务对象的脚本动作的明确指令来创建恢复点。
图2描绘了根据本发明的至少一个实施例的示例高层分布式计算服务平台200的各个方面。平台可以提供共享的服务和资源以使客户端进程204能够与嵌入式的、主应用程式的、多占用者应用208进行交互。客户端进程204可以通过应用程序编程接口(API)212与嵌入式应用程序208进行交互,应用程序编程接口(API)212包括用于搜索、读取和写入数据的方法215,以及与外部系统进行通信的方法和用于处理(非数据存取)计算的其它的实用方法。在嵌入式应用程序的数据存储区216和客户端进程204之间的信息交换可以穿过业务对象层218发生。例如,业务对象220可以对应于多个底层数据库表224。由API提供的每个数据存取操作都可以有利地保证例如对应于数据库事务的原子性、一致性、隔离性和耐久性(ACID)属性的完整性。然而,平台200可能容易受到包括系统故障、资源支配机制、有计划的系统重启以及监视发起的重启的间歇性中断。
该平台可以提供高层应用208,例如,可以提供至少部分带有在业务对象层218中的一组业务对象220的业务应用。高层应用208可以通过服务的占用者使用包括自定义设置、例如脚本的自定义程序代码、自定义程序模块以及任何合适的自定义配置构件的占用者管理的资源进行定制。执行环境236可以针对自定义程序代码和/或自定义程序模块实例化。例如,在自定义程序代码包括使用例如脚本语言的解释性编程语言编写的代码的情况下,解释器240可以针对脚本和/或相关的任务或作业实例化执行环境236。
例如,解释器240可以针对脚本实例化执行环境236。解释器240然后可以在实例化的执行环境236的情况下执行脚本。脚本可以引起在执行环境236和业务对象层220之间的一个或多个应用消息(例如业务对象接口调用和/或消息交换)通过对象接口代理248接收和/或拦截。消息然后可以被代理248路由到合适的业务对象220。
在应用程序执行环境236中运行的自定义代码可以通过对象接口代理248访问业务对象接口252。例如,对象接口代理248可以是仅仅监视远程功能调用和/或相关的协议消息(统称为“调用”)的“精简型代理(thinproxy)”、分配调用负载的负载平衡或路由代理、和/或缓存代理。根据本方法和系统的示例性实施例,对象接口代理248还可以包含容错模块256。例如,容错模块256可以提供“保存状态”和“恢复状态”接口元件260、264。由应用程序执行环境236中的程序代码激活“保存状态”接口元件260可以导致执行环境的状态的可恢复的“快照”被保存到数据存储区。关于应用程序执行环境236的“恢复状态”接口元件260的激活可以导致应用程序执行环境被恢复到对应于先前保存的“快照”的状态。如下所述,容错模块256还可以监视调用以检测最佳时刻和/或实际的时刻以保存应用程序执行环境实例的状态。
根据本方法和系统的至少一个实施例,对象接口代理248的保存状态功能可以捕捉当前执行进程的内部状态,例如通过封装由进程做出的所有的本地调用到精简型API层在执行环境236中执行的脚本。例如,很多脚本语言解释器引擎包括捕捉进程的当前执行状态的固有能力。根据本方法和系统的实施例,该能力可以被利用以将表示进程执行堆栈的二进制数据序列化,该二进制数据包括在解释器中和应用程序中固有的任何剩余的数据,并且将它写入到数据存储区。本方法和系统的实施例因此允许同时保存当前的执行状态以及保存在API调用之间发生故障的情况下的可靠的恢复点。
分布式计算设备平台的层和/或构件至少部分地可以利用在数据存储层和计算机操作系统层中的数据存储区和/或计算资源(例如计算机操作系统资源)来实现。
图3-6描绘了根据本方法和系统的至少一个实施例的示例平台构件交互的各个方面。高层云服务304,例如包括以上根据图2所述的功能的图1的多占用者分布式计算服务,可以通过发送合适的调用、或命令308到服务器来在应用程序服务器上启动进程、任务和/或作业(统称为“进程”)306,服务器可以启动表示被服务器执行的一系列指令以执行期望的进程306的相应的工作者线程312。进程306可以与特定的脚本语言相关联和/或用特定的脚本语言进行指定,并且工作者线程312可以因此执行调用313以通过解释器引擎来实例化执行环境316以继续执行进程306。因此,通过执行环境316,进程306可以做出多个调用318、319到对象接口代理320,例如以上参考图2描述的对象接口代理248。每个调用代表执行在进程306的执行中的离散的工作单元的指令。调用318可以依次被转发和/或路由到一个或多个合适的和/或指定的业务对象324或在调用319的情况下引起对象接口代理320根据其容错模块325的功能来执行。
对象接口代理320可以接收指示其激活其“保存状态”功能的保存状态调用319。响应于保存状态调用319,对象接口代理320可以序列化执行环境的当前执行堆栈和它的引用(例如通过解释器引擎维护的),并且将序列化的二进制数据保存到数据存储区(未示出)。如果经历中断和/或意料之外的事件,那么一旦高层云服务304可以获得合适的执行环境,该序列化的状态就可以被恢复。
图4描绘了应当已经导致调用418(a)-(f)的示例性进程。然而,进程经历了跟随调用418(c)的中断420,导致执行环境426的恶化。因为调用418(c)是保存状态调用,执行环境的状态被保存。
图4b描绘了在图4a中示出的跟随中断恢复的中断的进程。因为保存的执行环境状态存在,恢复的进程指令工作者线程312重新实例化执行环境424。对象接口代理426将实例化的执行环境425重新恢复到图4a的中断的执行环境的保存的状态428。恢复的进程可以继续好似没有发生过导致调用418(d)-(f)的中断。
图5a和5b描绘了另一个实例。如图5a中所示,进程应当导致调用518(a)-(g);然而它在调用518(f)之后被中断520。最近的保存状态调用是调用518(c)。如图5b中所示,因为保存的执行环境状态存在,恢复的进程指示工作者线程312重新实例化执行环境525。对象接口代理526将重新实例化的执行环境425恢复到图5a的中断的执行环境的保存的状态528。恢复的进程然后从恢复点继续进行,从而导致调用518(d)-(g)。
图4a-b和5a-b描绘了明确地通过执行进程进行的保存状态调用。例如,被解释器引擎执行的脚本可以包括引起保存状态调用的脚本语言语句。可选地,或此外,对象接口代理可以至少部分地基于通过独立的监视由执行环境引起的调用来自动地保存执行环境状态。
图6描绘了根据本方法和系统的示例,其中,对象接口代理604路由一系列调用606、607,其可能是仅仅涉及数据读取操作的调用(例如调用606),或涉及数据写入操作的调用(例如从执行环境608到合适的业务对象612的调用607)。对象接口代理可以相应地监视调用606、607,并且独立地执行保存状态操作616以保存遵循特定类型的调用中的每个调用的执行环境608的状态,所述每个调用例如涉及数据写入操作的调用607。对象接口代理604基于包括调用类型、调用容量、调用频率、调用模式和调用参数的所监控的调用和/或所监控的一组调用的任何合适的属性来做出保存状态决定。这样的自动的状态保存可以产生以某些性能为代价的更高的数据完整性、更少的编码维护和/或程度更清楚的抽象化。
图7描绘了根据例如参考图2示出的和描述的本方法和系统的示例性实施例的、用于在例如图1的多占用者分布式计算服务的高层云服务中启用容错功能的示例步骤700。对于特定的进程,占用者应用程序执行环境可以被实例化704。例如,解释器可以针对以上所述的脚本实例化执行环境。解释器随后可以在实例化执行环境的情况下执行脚本708。脚本可以做出到对象接口代理的一个或多个业务对象调用712,并且消息可以通过代理路由716到合适的业务对象。
如果对象接口代理被配置为针对如参考图6描述的执行环境创建自动恢复点,那么在接收调用712后,对象接口代理可以测试720进程的进度以检测保存状态条件。如果检测到了保存状态条件724,程序可以进展到保存726(例如持续)执行环境的当前状态。在路由调用之前可以执行保存状态操作,路由调用触发了保存状态操作或者与其并行。如果没有检测到保存状态条件728,对象接口代理可以继续接收并路由下一个业务对象调用。如果代理不被配置为创建如图4a-5b所描绘的自动的恢复点(例如出于性能原因),那么执行环境状态可以响应于明确的“设置恢复点”消息而被保存726。对象接口代理然后将下一个调用路由到合适的业务对象并且处理下一个调用730。
以上描述的各个方面和实例是具体的,但是它们并不是本方法和系统可以如何被实现和如何从中获得优点的全部的实例。然而,在本领域的普通技术人员将认识到,本方法和系统的教导同样适用于其它的实施例和/或可以使用替代术语进行类似描述。例如,对象接口代理的容错模块的以上描述可以同样适用于在分布式计算系统上运行的任何进程,分布式计算系统监视、路由或以其他方式跟踪在系统上运行的各个其它的软件元件之间的交互,跟踪那些元件中的一个或多于一个元件的当前的状态或它们的数目、类型、频率等,并且引起那些软件元件中的一个或多于一个元件的状态被保存,或以其他方式响应于来自软件元件中的一个元件的具体指令或根据预定义的规则集来“备份”。在发生故障或其它的中断正常操作的情况下,最近保存的状态(或多个状态)可以被恢复并且各个软件元件的操作可以从该点继续,而不必完全重新开始。
图8通过非限制性示例的方式描绘了可以存在于可以被配置为实施本方法和系统的至少一些实施例的示例性计算机结构800中的元件的方面。结构800包括通过系统总线802互连的子系统。子系统可以包括打印机804、键盘806、固定硬盘808和耦合到显示适配器812的监视器810。耦合到I/O控制器814的外围设备和输入/输出(I/O)设备可以通过本领域已知的例如通用串行总线(USB)端口816的任何数量的装置连接到计算机系统。例如,可以使用USB端口816或外部接口818以将计算机设备800连接到在图8中未示出的、包括例如因特网的广域网、鼠标输入设备和/或扫描仪的另外的设备和/或系统。通过系统总线802的互连允许一个或多个处理器820与每个子系统进行通信并且控制可以存储在系统储存器822和/或固定硬盘808中的指令的执行、以及在子系统之间的信息的交换。系统储存器822和/或固定硬盘808可以体现为有形的计算机可读介质。
应当理解的是,以上所述的本方法和系统可以以模块化或集成的方式用使用计算机软件的控制逻辑的形式实现。基于本文提供的公开和教导,本领域普通技术人员将知晓和理解使用硬件和硬件与软件的组合来实现本方法和系统的其它的方式和/或方法。
在本申请中描述的软件构件、进程或功能中的任何一个可以被实现为使用例如诸如Java、C++或Perl的任何合适的计算机语言的处理器、使用例如常规或面向对象的技术执行的软件代码。软件代码可以被存储为在例如随机存取储存器(RAM)、只读储存器(ROM)、例如硬盘驱动器的磁介质、例如闪存驱动器的固态设备或例如CD-ROM的光学介质的计算机可读介质上的一系列指令或命令。任何这样的计算机可读介质可以驻留在单个计算装置之上或之内,并且可以存在于在系统或网络内的不同的计算装置之上或之内。
本文引用的包括公布、专利申请和专利的所有参考据此通过引用相同的范围并入本文,如同每个参考被单独地和具体地表示为通过引用并入本文和/或以其整体在本文进行阐述。
除非本文另有说明或上下文清楚地否认,否则在说明书和在所附权利要求书中的术语“一(a)”和“一(an)”和“该(the)”以及类似的所指对象的使用被解释为包括单数和复数。除非另有说明,否则在说明书和所附权利要求书中的术语“具有”、“包括”、“包含”、以及类似的所指对象被解释为开放式术语(例如意为“包括但不限于”)。除非本文另有说明,否则本文值的范围的列举仅仅旨在用作单独参考包含地落入该范围的每个单独的值的便捷方法,并且每个单独的值被并入说明书如同本文对其进行单独列举一样。除非本文另有说明或上下文清楚地否认,否则本文描述的所有的方法可以以任何合适的顺序执行。除非另有声明,否则本文提供的任何实例和所有实例、或示例性语言(例如“例如”)的使用仅仅旨在更好地说明本发明的实施例并且不构成对本发明的范围的限制。在说明书中的语言都不应被解释为将任何不要求保护的元件考虑为是对本发明的每个实施例必不可少的元件。
为了说明的目的,本方法和系统的示例性实施例已经在上文和附图中进行了详细描述。然而,本方法和系统的范围被下文权利要求限定并且不限于以上描述的或在附图中描绘的实施例。鉴于该说明书作为一个整体,不同于本文描述的和示出的那些、但是仍然在限定的方法和/或系统的范围之内的实施例是被发明者预期的并且对在相关领域中的普通技术人员来说将是显而易见的。发明者旨在限定的方法和/或系统可以按照不同于如本文明确描述的进行实施。因此,限定的方法和系统包括如被适用法律所允许的主题的所有修改和等价物。

Claims (20)

1.一种用于启用在执行客户端进程的分布式计算系统中的容错功能的方法,所述方法包括:
(a)实例化涉及所述客户端进程的执行环境;
(b)在所述执行环境内执行指令,所述指令引起所述执行环境发出另外的指令到所述分布式计算系统,所述另外的指令涉及相对于存储在所述分布式计算系统上的数据执行的动作;以及
(c)通过对象接口代理接收所述另外的指令,其中,所述另外的指令中的至少一个指令是保存状态指令,所述保存状态指令引起所述对象接口代理将所述执行环境的当前状态保存在数据存储区中。
2.根据权利要求1所述的方法,其中,所述对象接口代理用作用于所述分布式计算系统的应用程序编程接口。
3.根据权利要求1所述的方法,还包括以下步骤:
(d)确定故障已经伴随所述客户端进程发生;
(e)实例化涉及所述客户端进程的新的执行环境;
(f)通过对象接口代理接收表示所述客户端进程已经经历所述故障的恢复状态指令;以及
(e)响应于所述恢复状态指令,从所述数据存储区恢复所述当前状态,并且使所述新的执行环境置于所述当前状态下。
4.根据权利要求3所述的方法,其中,所述对象接口代理用作用于所述分布式计算系统的应用程序编程接口。
5.根据权利要求3所述的方法,其中,在确定所述故障已经发生之前由所述分布式计算系统执行的、继所述保存状态指令之后接收的任何另外的指令在所述新的执行环境被置于所述当前状态中之后被再次执行。
6.一种用于使分布式计算系统能够容许系统故障的系统,所述分布式计算系统执行客户端进程,所述系统包括:
(a)第一执行环境,所述第一执行环境在所述分布式计算系统上实例化并且根据所述客户端进程在至少一个软件对象上执行指令;
(b)对象接口代理,所述对象接口代理在所述分布式计算系统上运行并且充当用于将被所述客户端进程执行的指令路由到所述至少一个软件对象的接口并且具有容错模块;以及
(c)数据存储区,所述数据存储区用于存储涉及所述第一执行环境的状态的数据;并且
其中所述容错模块被配置为:
(i)从所述第一执行环境接收保存状态指令,所述保存状态指令的接收引起所述容错模块将所述执行环境的当前状态保存到所述数据存储区。
7.根据权利要求6所述的系统,其中,所述对象接口代理用作用于所述分布式计算系统的应用程序编程接口。
8.根据权利要求6所述的系统,其中,所述容错模块还被配置为:
(ii)从第二执行环境接收恢复状态指令,所述恢复状态指令的接收引起所述容错模块将所述第二执行环境置于所述第一执行环境的所述当前状态中。
9.根据权利要求8所述的系统,其中,所述对象接口代理用作用于所述分布式计算系统的应用程序编程接口。
10.根据权利要求8所述的系统,其中,在确定所述故障已经发生之前被所述分布式计算系统执行的、继所述保存状态指令之后接收的任何另外的指令在所述新的执行环境被置于所述当前状态中之后被再次执行。
11.一种使分布式计算系统能够容许系统故障的方法,所述分布式计算系统执行客户端进程,所述方法包括:
(a)实例化涉及所述客户端进程的执行环境;
(b)在所述执行环境内执行指令,所述指令引起所述执行环境发出另外的指令到所述分布式计算系统,所述另外的指令涉及相对于存储在所述分布式计算系统上的数据执行的动作;
(c)通过对象接口代理接收所述另外的指令;
(d)监视所述接收的另外的指令并且确定所述执行环境是否在期望的保存状态条件下;以及
(e)如果所述执行环境是在期望的保存状态条件下,那么将所述执行环境的当前状态保存在数据存储区中。
12.根据权利要求11所述的方法,其中,步骤(d)包括确定由所述对象接口代理接收的另外的指令的容量。
13.根据权利要求11所述的方法,其中,步骤(d)包括确定由所述对象接口代理接收的另外的指令的类型。
14.根据权利要求13所述的方法,其中,步骤(d)包括确定由所述对象接口代理接收的所述类型的另外的指令的频率。
15.根据权利要求11所述的方法,其中,步骤(d)包括确定由所述对象接口代理接收的另外的指令的子参数。
16.一种用于使分布式计算系统能够容许系统故障的系统,所述分布式系统执行客户端进程,包括:
(a)执行环境,所述执行环境在所述分布式计算系统上实例化并且根据所述客户端进程在至少一个软件对象上执行指令;
(b)对象接口代理,所述对象接口代理在所述分布式计算系统上运行并且充当用于将被所述客户端进程执行的所述指令路由到所述至少一个软件对象的接口并且具有容错模块;以及
(c)数据存储区,所述数据存储用于存储涉及所述执行环境的状态的数据;并且
其中所述容错模块被配置为:
(i)监视所述指令并且确定所述执行环境是否在期望的保存状态条件下;以及
(ii)如果所述执行环境是在期望的保存状态条件,那么将所述执行环境的当前状态保存在所述数据存储区中。
17.根据权利要求16所述的系统,其中,步骤(d)包括确定由所述对象接口代理接收的另外的指令的容量。
18.根据权利要求16所述的系统,其中,步骤(d)包括确定由所述对象接口代理接收的另外的指令的类型。
19.根据权利要求18所述的系统,其中,步骤(d)包括确定由所述对象接口代理接收的所述类型的另外的指令的频率。
20.根据权利要求10所述的系统,其中,步骤(d)包括确定由所述对象接口代理接收的所述类型的另外的指令的频率。
CN201380014073.XA 2012-01-13 2013-01-11 用于启用分布式计算系统中的容错功能的方法和系统 Active CN104160378B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261586472P 2012-01-13 2012-01-13
US61/586,472 2012-01-13
PCT/US2013/021145 WO2013106649A2 (en) 2012-01-13 2013-01-11 Fault tolerance for complex distributed computing operations

Publications (2)

Publication Number Publication Date
CN104160378A true CN104160378A (zh) 2014-11-19
CN104160378B CN104160378B (zh) 2018-07-17

Family

ID=48780855

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380014073.XA Active CN104160378B (zh) 2012-01-13 2013-01-11 用于启用分布式计算系统中的容错功能的方法和系统

Country Status (7)

Country Link
US (3) US9122595B2 (zh)
EP (1) EP2802990B1 (zh)
CN (1) CN104160378B (zh)
AU (1) AU2013207906B2 (zh)
CA (1) CA2861257C (zh)
ES (1) ES2612180T3 (zh)
WO (1) WO2013106649A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108604195A (zh) * 2016-02-04 2018-09-28 三菱电机株式会社 母站装置、子站装置、进程移交管理方法、进程执行方法、进程移交管理程序和进程执行程序
CN112753019A (zh) * 2018-09-27 2021-05-04 亚马逊技术有限公司 按需代码执行系统中执行环境的有效状态维持
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
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122595B2 (en) * 2012-01-13 2015-09-01 NetSuite Inc. Fault tolerance for complex distributed computing operations
US9569517B1 (en) 2013-11-27 2017-02-14 Google Inc. Fault tolerant distributed key-value storage
US9733921B1 (en) * 2014-01-23 2017-08-15 NetSuite Inc. System and methods for management of cloud application extensions
US20150254577A1 (en) * 2014-03-07 2015-09-10 NetSuite Inc. System and methods for location based management of cloud platform data
US10505862B1 (en) * 2015-02-18 2019-12-10 Amazon Technologies, Inc. Optimizing for infrastructure diversity constraints in resource placement
US10489203B2 (en) * 2015-04-03 2019-11-26 Oracle International Corporation System and method for using an in-memory data grid to improve performance of a process defined by a process execution language in a SOA middleware environment
US10394639B2 (en) * 2016-09-26 2019-08-27 Microsoft Technology Licensing, Llc Detecting and surfacing user interactions
US11301020B2 (en) * 2017-05-22 2022-04-12 Intel Corporation Data center power management
US11792288B2 (en) * 2019-09-09 2023-10-17 Extreme Networks, Inc. Wireless network device with directional communication functionality
US11134062B1 (en) 2020-06-12 2021-09-28 Bank Of America Corporation Isolating and disabling unauthorized applications
US11258768B2 (en) 2020-07-03 2022-02-22 Bank Of America Corporation Optimization of the isolation and disabling of unauthorized applications by detection of false positives
US11425100B2 (en) 2020-07-16 2022-08-23 Bank Of America Corporation Optimization of redundant usage patterns based on historical data and security constraints
CN112527413A (zh) * 2020-12-23 2021-03-19 平安普惠企业管理有限公司 一种页面加载方法、装置、设备及存储介质

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875291A (en) 1997-04-11 1999-02-23 Tandem Computers Incorporated Method and apparatus for checking transactions in a computer system
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7127514B2 (en) * 2000-12-28 2006-10-24 Microsoft Corporation Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client
US20040153703A1 (en) 2002-04-23 2004-08-05 Secure Resolutions, Inc. Fault tolerant distributed computing applications
US6721907B2 (en) 2002-06-12 2004-04-13 Zambeel, Inc. System and method for monitoring the state and operability of components in distributed computing systems
US7191356B2 (en) 2003-02-27 2007-03-13 Sun Microsystems, Inc. Method for asynchronous support of fault-tolerant and adaptive communication
US7536673B2 (en) * 2003-07-22 2009-05-19 Sap Ag Application business object processing
US7801996B2 (en) 2005-09-12 2010-09-21 Sap Ag Systems and methods for providing a local client proxy
JP4620784B2 (ja) * 2006-01-27 2011-01-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 現存するitリソース構造を自動的に複製する方法及びシステム
US7523122B2 (en) * 2006-09-25 2009-04-21 Microsoft Corporation Automatic discovery of application settings' storage locations
US8161010B2 (en) * 2006-10-04 2012-04-17 Salesforce.Com, Inc. Methods and systems for providing fault recovery to side effects occurring during data processing
US7937618B2 (en) 2007-04-26 2011-05-03 International Business Machines Corporation Distributed, fault-tolerant and highly available computing system
US7779298B2 (en) * 2007-06-11 2010-08-17 International Business Machines Corporation Distributed job manager recovery
US8972978B2 (en) * 2008-05-02 2015-03-03 Skytap Multitenant hosted virtual machine infrastructure
CN101771563B (zh) * 2008-12-30 2012-07-25 北大方正集团有限公司 网络服务程序的监控方法
US8219990B2 (en) * 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
US8332688B1 (en) * 2009-07-21 2012-12-11 Adobe Systems Incorporated Failover and recovery of a computing application hosted by a virtual instance of a machine
US8607242B2 (en) * 2010-09-02 2013-12-10 International Business Machines Corporation Selecting cloud service providers to perform data processing jobs based on a plan for a cloud pipeline including processing stages
US8732290B2 (en) * 2010-10-05 2014-05-20 Citrix Systems, Inc. Virtual workplace software based on organization characteristics
US9223611B2 (en) * 2010-12-28 2015-12-29 Microsoft Technology Licensing, Llc Storing and resuming application runtime state
US9465697B2 (en) * 2011-09-21 2016-10-11 Netapp, Inc. Provision of backup functionalities in cloud computing systems
US20130145371A1 (en) * 2011-12-01 2013-06-06 Sap Ag Batch processing of business objects
US9122595B2 (en) * 2012-01-13 2015-09-01 NetSuite Inc. Fault tolerance for complex distributed computing operations
US9298715B2 (en) * 2012-03-07 2016-03-29 Commvault Systems, Inc. Data storage system utilizing proxy device for storage operations
US9110844B2 (en) * 2012-08-27 2015-08-18 Microsoft Technology Licensing, Llc State maintenance as a service
GB2507261A (en) * 2012-10-23 2014-04-30 Ibm Reverting to a snapshot of a VM by modifying metadata
US20150067393A1 (en) * 2013-08-27 2015-03-05 Connectloud, Inc. Method and apparatus to remotely take a snapshot of a complete virtual machine from a software defined cloud with backup and restore capacity
US9634965B2 (en) * 2013-09-20 2017-04-25 Oracle International Corporation System and method for providing a job manager for use with a cloud platform environment

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108604195A (zh) * 2016-02-04 2018-09-28 三菱电机株式会社 母站装置、子站装置、进程移交管理方法、进程执行方法、进程移交管理程序和进程执行程序
CN108604195B (zh) * 2016-02-04 2021-07-27 三菱电机株式会社 母站装置、子站装置、进程移交管理方法和进程执行方法
CN112753019A (zh) * 2018-09-27 2021-05-04 亚马逊技术有限公司 按需代码执行系统中执行环境的有效状态维持
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
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions

Also Published As

Publication number Publication date
ES2612180T3 (es) 2017-05-12
AU2013207906B2 (en) 2015-08-13
US9934105B2 (en) 2018-04-03
WO2013106649A3 (en) 2013-09-06
US20160055066A1 (en) 2016-02-25
AU2013207906A1 (en) 2014-08-21
US20160019123A1 (en) 2016-01-21
CA2861257A1 (en) 2013-07-18
WO2013106649A2 (en) 2013-07-18
US20130185603A1 (en) 2013-07-18
CN104160378B (zh) 2018-07-17
CA2861257C (en) 2017-06-27
EP2802990B1 (en) 2016-11-23
EP2802990A2 (en) 2014-11-19
US10162708B2 (en) 2018-12-25
EP2802990A4 (en) 2015-09-09
US9122595B2 (en) 2015-09-01

Similar Documents

Publication Publication Date Title
CN104160378A (zh) 用于复杂的分布式计算操作的容错功能
CN101814035B (zh) 允许快速平台重启的方法和系统
CN112596960A (zh) 一种分布式存储服务切换方法及装置
EP2645635B1 (en) Cluster monitor, method for monitoring a cluster, and computer-readable recording medium
CN102955714A (zh) 实现动态模拟远程接口的装置及方法
KR20210036874A (ko) 개발 키트 조작 임무 처리 방법, 장치, 기기 및 저장매체
CN103309796A (zh) 一种组件对象模型对象的监控方法和装置
CN100576805C (zh) 对象补救系统及方法
CN111324425A (zh) 一种数据访问方法、装置、设备及存储介质
CN111538585A (zh) 一种基于node.js的服务器进程调度方法、系统和装置
CN108369503A (zh) 对外部场可更换单元(fru)过程的自动系统响应
CN113608765A (zh) 数据处理方法、装置、设备以及存储介质
CN116881053B (zh) 数据处理方法及交换板、数据处理系统、数据处理装置
CN109445909A (zh) 虚拟机数据的备份方法、系统、终端及存储介质
Chen et al. Survivability modeling and analysis of cloud service in distributed data centers
CN109344059B (zh) 一种服务器压力测试方法及装置
CN115858222B (zh) 一种虚拟机故障处理方法、系统及电子设备
US20240086297A1 (en) Systems and methods for optimizing resources for applications deployed in primary and backup geographically dispersed cloud environments
AU2015249127B2 (en) Fault tolerance for complex distributed computing operations
US20180225201A1 (en) Preserving volatile memory across a computer system disruption
CN103995731A (zh) 一种管理中心部署方法和虚拟装置
CN114780270A (zh) 内存故障处理方法和装置、电子设备及计算机可读存储介质
CN116431286A (zh) 虚拟机系统、控制虚拟机的方法、计算机设备及存储介质
CN102567181B (zh) 基于资源访问模式预测、诊断应用故障并从其恢复
CN114035823A (zh) 一种业务服务的更新方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant