在服务的次要位置重放作业的制作方法

xiaoxiao2020-7-22  17

在服务的次要位置重放作业的制作方法
【专利摘要】确定在故障转移事件之前和/或之后的一时间段内被提交至服务的主要位置的作业并将其重新提交至该服务的次要位置。例如,在次要位置重新提交在故障转移事件之前十五分钟提交的作业以及在到第二位置的故障转移完成之前被提交至主要网络的作业。在发生故障转移事件之后,用代替服务的主要位置的次要网络来更新作业。作业输入参数(例如,标识符和/或秘密)从主要位置到次要位置的映射由作业在其被重新提交至次要位置时使用。每一作业确定要对基于该作业被重新提交的作业请求做出什么改变。
【专利说明】在服务的次要位置重放作业
[0001]背景
[0002]基于web的服务包括位于web服务器上的文件以及存储在数据库中的数据。例如, 存在处理被定向到该服务的通信的大量服务器。在某些情况下,服务可能灾难性地发生故 障以使得丢失工作。将操作转移至新服务可能是昂贵、耗时的过程。
[0003]概述
[0004]提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的选择的 概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助 确定所要求保护的主题的范围。
[0005]确定在故障转移事件之前和/或之后的一时间段内被提交至服务的主要位置的 作业并将其重新提交至该服务的次要位置。例如,在次要位置重新提交在故障转移事件之 前十五分钟提交的作业以及在到第二位置的故障转移完成之前被提交至主要网络的作业。 在发生故障转移事件之后,用代替服务的主要位置的次要网络来更新作业。作业输入参数 (例如,标识符和/或秘密)从主要位置到次要位置的映射由作业在其被重新提交至次要位 置时使用。每一作业确定要对基于该作业由于发生故障转移事件而被重新提交的作业请求 做出什么改变。例如,一些作业可确定它们不需要被重新提交,而其它作业可简单地将相同 的作业重新提交至次要位置。
[0006]附图简述
[0007]图1示出了用于在服务的次要位置重放作业的云管理系统;
[0008]图2示出了用于在服务的次要位置重放作业的系统;
[0009]图3示出了示例性作业记录;
[0010]图4示出了用于在次要网络重放作业的过程;以及
[0011]图5示出了说明性计算机体系结构。
[0012]详细描述
[0013]现将参考其中相同的标号代表相同的元件的附图来描述各实施例。
[0014]一般而言,程序模块包括执行特定作业或实现特定抽象数据类型的例程、程序、组 件、数据结构和其它类型的结构。也可使用其他计算机系统配置,包括手持式设备、多处理 器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机等等。还可使用在 其中作业由通过通信网络链接的远程处理设备执行的分布式计算环境。在分布式计算环境 中,程序模块可位于本地和远程存储器存储设备两者中。
[0015]图1示出了用于在服务的次要位置重放作业的云管理系统。系统100示出了云管 理器105,该云管理器105被连接到可能分布在世界各地的不同网络并对其进行管理。网 络中的每个网络被配置成为一个或多个承租人(例如客户、顾客)提供内容服务。这些网络 可以被主存(host)在云服务内和/或内部部署(on-premises)数据中心内。云管理器105 用于对这些网络进行部署、配置和管理。云管理器被配置为通过可容忍间歇性网络故障的 幂等且异步的应用web服务应用编程接口(API) 150来接收请求。
[0016]如所示的,云管理器105包括工作管理器110、机器管理器115、应用专用管理器120、脚本130、重放过滤器26以及诸如数据存储140(例如,数据库)之类的中央储存库。未 包括在所示管理器之一内的功能可以驻留在云管理器的某个其他位置。根据一个实施例, 应用管理器120是SharePoint承租人管理器,该管理器包括SharePoint专用逻辑。
[0017]一般而言,云管理器105帮助为诸如在在线内容管理服务之类的在线服务部署和 管理网络。云管理器系统是一种中央协调服务,其接收执行与在网络中配置、更新和执行 用于提供在线服务的作业相关的操作的请求。例如,可以调用云管理器来管理所述网络中 的一个或多个内的资产(例如服务器、场、用户属性等等)。对这些资产的管理可以包括:部 署机器;更新机器;移除机器;对服务器、虚拟机(VM)执行配置改变;以及执行与管理相关 的其他作业。云管理器被配置为即使在该云管理器的升级期间仍然为所附连的网络提供服 务。云管理器被配置为通过不能依靠可靠网络的幂等和异步应用编程接口(API)来接收请 求。
[0018]如图所示,网络I和网络2是活动地服务于用户的实况网络。次要网络I和次要 网络2是作为对应的实况网络的内容和配置的镜像的次要网络。次要网络在主要网络活动 时并不活动地服务于用户。根据一实施例,次要网络被保持“温暖”以使得来自主要网络的 用户负载可以在停机/灾难/故障转移的情况下被快速切换至次要网络。
[0019]主要网络被配置成执行备份(完整、增量),包括被例行地且频繁地采用(例如,至 少一小时几次)的SQL事务日志备份。来自主要网络(例如,网络I和网络2)的备份在这些 备份被创建之后被复制到次要网络(例如,次要网络I和2)。根据一实施例,次要网络在从 对应的主要网络接收到事务日志时重放这些事务日志。在对应的温暖次要网络上自动重放 在实况主要网络上进行的管理操作以使得主要网络和次要网络保持同步。
[0020]工作管理器110管理作业的执行,并且启用对较长时间运行的作业的调度和重 试。工作管理器110启动存储在作业队列112中的作业并且跟踪运行中的作业。当已经流 逝了预定的时间时,工作管理器110可以自动地取消任务并且执行与该任务相关的某些进 一步的处理。根据一个实施例,作业队列112中的作业由工作管理器110通过调用一个或 多个脚本130来执行。例如,可以使用诸如微软的PowerShell?之类的脚本语言来对由工 作管理器110执行的作业进行编程。每个脚本可以作为新进程运行。尽管将每个脚本作为 新进程来执行可以具有相当高的CPU开销,但是该系统是可伸缩的,并且有助于为每次脚 本执行确保干净的环境,加上在脚本完成时进行完全的清理。
[0021]当将要在次要位置重新提交作业(例如,响应于到该次要位置的故障转移)时,工 作管理器110可用于确定要重新提交的作业。例如,工作管理器110可确定在故障转移事 件之前的时间窗口内以及直到次要位置处理作业请求被提交以在服务的主要位置执行的 作业。
[0022]机器管理器115被配置成管理网络(例如网络1、网络2、次要网络1、次要网络 2)中的物理机器。一般而言,机器管理器115理解网络、物理机器、虚拟机(VM)、VM映像 (VHD)等等。机器管理器不必牢固绑定于网络内运行的特定服务,而是按照“角色”跟踪网 络中的各种组件。例如,可以通过API150请求机器管理器115在网络2上部署具有版本 12.34.56.78的“Foo”型VM。响应于对云管理器105的请求,机器管理器115对位于网络 2上的合适物理机器进行定位,并且根据与VM的角色相关联的VM映像来配置VM。使用具 有版本12.34.56.78的类型为Foo的VHD来配置物理机器,该VHD被存储在诸如数据存储140之类的数据存储内。对次要网络2做出对应的改变。在网络内使用的映像也可以存储 在其他位置处,诸如用于所述网络中的一个或多个网络的本地数据共享中。可以运行脚本 来执行VHD在物理机器上的安装以及用于执行任何部署后的配置。机器管理器115跟踪每 个网络的机器配置。例如,机器管理器115可以跟踪VM的角色(VM的类型)、VM的状态(供 应中(Provisioning)、运行中、已停止、故障)、版本以及VM是否存在于给定场中(这隐含了 其网络)。
[0023]配置数据库116包含每一个网络的地图。例如,配置数据库116可包括与网络中 的场、数据库、站点集合等中的每一个相关的信息。配置数据库116可包括关于每一个网络 的每一个物理机器、VM、场等的行。根据一实施例,网络内的每个VHD、场和VM具有相关联 的版本串。
[0024]脚本130被配置为存储将要执行以便既本地地为云管理器105执行工作又远程地 在所述网络中的一个或多个网络上执行工作的脚本。脚本130中的一个或多个还可以存储 在其他位置。例如,将要在网络(例如网络1、网络2)上执行的脚本可被本地地存储到该网 络。这些脚本可用于许多不同目的。例如,所述脚本可以用于执行:对所述网络之中的一个 或多个网络中的机器的配置;改变之前配置的机器的设定;添加新的VM ;添加新的数据库; 将数据从一个机器移动到另一个机器;移动承租人;改变方案等等。根据一个实施例,这些 脚本是微软的PowerShell?脚本。可以使用其他编程实施方式。例如,可以使用经编译的 编程语言和/或前期绑定的编程语言来实现该功能。然而,脚本是一种相当精确的用于表 达将要执行的许多作业的语言。以诸如C#之类的编程语言对其等价物进行编程常常将需 要冗长得多的实施方式。脚本还被后期绑定,这意味着,可以以多个版本的底层代码库为目 标,而不必不断地链接到不同的接口 DLL。使用PowerShell脚本允许进程由云管理器105 本地地启动,该云管理器105进而可启动远程机器(即所附连的网络之一中的物理机)上的 进程。还可以使用其他技术来启动远程机器上的进程,比如安全Shell (SSH)等等。当脚 本在主要位置(例如,网络I)运行时,该脚本也可以在次要位置(例如,次要网络2)运行,以 使得该主要和次要位置以相同的方式配置。
[0025]云管理器105所管理的应用特定的信息由应用管理器120来执行。根据一个 实施例,应用特定的信息涉及微软SharePoint?。因此,应用管理器120被配置为了解 SharePoint承租人、站点集合等等。
[0026]每个网络都可以被配置成用于承租人的专用网络和/或服务于一个以上客户的 多承租人网络。该网络可以包括改变数目的物理/虚拟机,其中所述物理/虚拟机的配置 在部署以后也改变。根据一实施例,服务的主要位置和次要位置以相同的方式配置。
[0027]一般而言,只要未超过联网极限(例如负载平衡器和网络交换机),网络就可以继 续增长。例如,网络可以从十个服务器开始,并且之后扩充为一百个或更多服务器。当主要 网络改变时,对应的次要网络被自动改变以反映对主要网络做出的改变。可以给网络内的 物理机分配类或类型。例如,这些机器中的一些可以是计算机器(用于web前端和应用服务 器),并且其他机器可以是与计算机器相比配备有更多存储的存储机器。根据一实施例,云 管理器105用多个版本的映像文件来配置网络内的机器。根据一实施例,场常常具有相同 版本的映像文件。
[0028]根据一个实施例,在网络内由云管理器100通过虚拟化所述机器并且管理该网络内独立地行动的“场”来管理软件极限。每个网络都可以包括一个或多个场(例如参见网络 I)。根据一个实施例,网络被认为是经网络负载平衡的机器的单个群集,其中所述机器向外 部世界展示一个或多个VIP (虚拟IP)并且可以将该通信量路由到该网络内的任何机器。 网络中的机器一般而言是紧密耦合的,并且具有最小等待时间(即〈lrns的查验(ping)等待 时间)。
[0029]场是用于对需要紧密绑定关系的应用进行协调的机器的基本编组。例如,内容场 可以部署在每个网络内以用于诸如Microsoft SharePoint?之类的内容管理应用。一般而 言,每个场中的那组机器一起提供web服务和应用服务器功能。通常,场内的机器运行相同 构建的应用(即SharePoint)并且共享公共的配置数据库以服务于特定承租人和站点集合。
[0030]场可以包含不同种类的虚拟机组。云管理器105在数据存储140内维护“场目标”, 该场目标是每个场的扮演每种角色的机器的目标数目。一些角色包括内容前端、内容中央 管理、内容计时器服务、联合中央管理、联合应用服务器等。例如,内容场是处理接入消费者 请求的基本SharePoint场。联合服务场包含可以在场的范围内运行的诸如搜索和简档存 储之类的SharePoint服务。场可以用于主控大容量公共因特网站点。一些场可以包含一 组活动目录服务器和供应端口监控程序(Daemon)。云管理器105自动地部署网络中的虚拟 机和/或让网络中的虚拟机退役,以帮助满足所定义的目标。这些场目标可以自动地和/ 或人工地来配置。例如,场目标可以响应于活动和容量需求的改变而改变。网络场一每 个网络存在一个如下的网络场:该网络场包含可以作为整个网络的资源的容易扩展的所有 VM角色。
[0031]云管理器web服务API150被设计为在可大规模伸缩的全球服务的上下文中工作。 该API假定:任何网络请求都可能失败和/或停留在传送中。对云管理器105的调用可以 被配置为幂等的。换言之,可以对云管理器105多次进行相同调用(只要参数相同)而不改 变结果。
[0032]云管理器105维护记录以跟踪对服务的当前请求。例如,云管理器105更新本地 数据库中的记录,并且在需要的情况下在此后调度“作业”以执行更长的活动。
[0033]云管理器105跟踪作为用于在网络内部署新机器的模板的映像(比如虚拟盘映 像)。该映像引用可以存储在诸如数据库140之类的数据库中和/或某个其他位置处。这些 映像可以存储在对于上面将部署该映像的网络而言为本地的一个或多个共享数据存储中。 根据一个实施例,每个映像都包括:虚拟机(VM)角色类型,其指定该映像可以部署的VM的 类型;该映像应当使用的处理器的数目;将分配给该映像的RAM的数量;用于找出附近安装 点的网络ID (使得它们不反复地通过跨数据中心链接被复制);以及可以被部署代码用于访 问VHD的共享路径。
[0034]一般而言,由云系统100所管理的网络中的机器不是以传统方式通过下载数据并 且将该数据合并到机器上的现有软件中来升级的。相反,机器是通过用经更新的VHD替换 VHD来更新的。例如,当场需要新版本的软件时,部署安装了该新版本的新场。当新场被部 署时,承租人被从旧场移动到该新场。通过这种方式,由于升级造成的停工期被最小化,并 且场中的每个机器都具有已经过测试的相同版本。当虚拟机需要升级时,该机器上的VM可 以被删除并且被用配置为运行所期望的服务的VM替换。
[0035]尽管对现有软件的升级不是最优的,但是网络内的一些服务器不使用原地升级的传统升级过程。例如,活动目录域控制器是通过在不完全替换机器上的映像的情况下升级 服务器上的当前软件来升级的。在一些实例中,云管理器也可以原地升级。
[0036]根据一个实施例,云管理器包括日志系统,该日志系统被配置为为每个web服务 调用记录日志条目。可以实现包括如所期望的那样少和/或那样多的特性的日志系统。
[0037]重放管理器26被配置成将作业重新提交至次要网络。当发生故障转移事件时,重 放管理器26确定故障转移事件之前和/或之后的一时间段内的服务的主要位置处的作业, 并且在该服务的次要位置重新提交这些作业。例如,在次要位置处重新提交在故障转移事 件之前十五分钟被提交至网络I的作业以及在到次要网络的故障转移完成之前被提交至 主要网络的任何作业。在发生故障转移事件后,重放管理器26告知作业次要网络代替主要 网络。
[0038]重放管理器26还被配置成维护映射表114。映射表114包括诸如标识符和/或 秘密等与主要网络相关联的作业输入参数到次要网络的映射。例如,在与服务的主要位置 (例如,主要网络I和2)相关联的数据库、场和网络以及与服务的次要位置(例如,次要网络 I和2)相关联的对应数据库、场和网络之间存在映射。
[0039]根据一实施例,每一作业确定将对基于在主要位置发生的故障转移事件的对次要 网络的作业请求做出什么改变。例如,一些作业可确定它们无需被重新提交,而其它作业可 简单地将相同的作业重新提交至次要位置。
[0040]图2示出了用于在服务的次要位置重放作业的系统。如图所示,系统200包括主 要服务210、次要服务220、云管理器230和计算设备240。
[0041]所使用的计算设备可以是被配置成执行与计算设备的使用有关的操作的任何类 型的计算设备。例如,这些计算设备中的一些可以是:移动计算设备(例如,蜂窝电话、平 板计算机、智能电话、膝上型计算机等等);一些可以是台式计算设备,其他计算设备可以被 配置为服务器。一些计算设备可以被安排为提供基于云的在线服务(例如服务210和服务 220);—些计算设备可以被安排为提供数据存储服务的数据共享,一些计算设备可以被安 排在本地网络中;一些计算设备可以被安排在可通过因特网访问的网络中,等等。
[0042]计算设备通过因特网18耦合。一般而言,网络18用于在诸如服务210、服务220、 云管理器230和计算设备240之类的计算设备之间传送数据。
[0043]计算设备240包括应用242、Web浏览器244以及用户界面246。如示出的,用户使 用计算设备240与诸如服务210之类的在线服务交互。根据一实施例,服务210和220是 多承租服务。一般而言,多承租是指顾客间的数据(有时包括备份)、使用和管理的隔离。换 言之,即使来自每个承租人的数据可以被存储在相同数据存储内的相同数据库中,但来自 一个顾客(承租人I)的数据也不可被另一顾客(承租人2)访问。
[0044]用户界面(UI) 246用于与对于计算设备240可以是本地/非本地的各种应用交 互。可以使用一种或多种类型的一个或多个用户界面来与内容进行交互。例如,UI246可以 包括上下文菜单、菜单栏内的菜单、选自功能区用户界面的菜单项、图形菜单等等的使用。 一般而言,UI246被配置成使得用户可以容易地与应用的功能交互。例如,用户可简单地选 择W246中的向云管理器230提交作业的选项。
[0045]如示出的,数据存储212和212’包括用于不同承租人的承租人数据,承租人数据 包括相应的备份数据。数据存储可以存储承租人数据的全部/部分。例如,一些承租人可以使用多于一个数据存储,而其他承租人与许多其他承租人共享该数据存储。尽管同一个数 据存储内示出了承租人的相应的备份数据,但是该备份数据可以被存储在其他位置。例如, 可以使用一个数据存储来存储承租人数据,并且可以使用一个或多个其他数据存储来存储 相应的备份数据。一般而言,数据存储212’中的数据是数据存储212中的数据的镜像。对 与主要服务210相关联的数据(即,有关管理改变的数据和承租人数据)作出的改变被镜像 映射到次要服务220。根据一实施例,完整备份(例如,每周)、增量备份(例如,每小时、每天) 以及事务日志在维护作出的改变时被使用。根据一实施例,对主要服务作出的改变被复制 到次要服务,从而使次要服务与主要服务基本保持同步(例如,五分钟内、十分钟内)。周期 性地验证被复制至次要服务的数据以帮助确保该数据已经被正确地复制。可以使用不同的 方法来执行该验证(例如,校验和、散列函数,等等)。数据存储236包括有关服务(例如,月艮 务210、服务220)的操作和/或配置的数据。例如,数据存储236可包括作业队列、映射表 和/或配置数据库。
[0046]服务210被配置为在线服务的主要位置,该在线服务被配置成提供与显示与来自 多个承租人的数据的交互相关的服务。服务210为多个承租人提供共享的基础设施。根据 一个实施例,服务210是微软公司的SHAREPOINT ONLINE服务。不同的承租人可以使用服 务210来主控他们的web应用/站点集合。承租人也可以仅使用专用服务或者与服务210 所提供的服务结合使用。服务220被配置为基本作为服务210的镜像的服务的次要位置。
[0047]当在主要服务210发生故障转移事件后,先前在发生故障的主要服务网络上操作 的作业的每一个作业由重放管理器26重新指向至次要网络220,以使得该作业可完成它在 主要网络中操作的任务。根据一实施例,在次要位置重放的每一个作业决定它在该次要位 置执行的操作。一般而言,存在三种类别的作业,包括:对于次要网络无操作的作业;幂等 且能够简单地从头开始的作业;以及计算整理并且用新整理的输入参数来重新实例化其本 身的作业。
[0048]存在可由服务执行的许多不同类型的作业。根据一实施例,这些类型的作业包括 无操作作业、升级作业、承租人供应、站点供应、幂等作业和数据迁移作业。无操作作业是执 行非常特定于发生故障的网络的动作的作业类型,并且这些作业的动作一般不在次要网络 中重放。升级作业可以是可触发升级回滚以使得可以可靠地执行升级的长过程。承租人供 应是供应承租人的作业。站点供应作业检查系统状态,将底层对象状态设回开始并且从就 在故障转移事件之前的时刻重试/重新运行作业。幂等作业可以被重新运行,因为不管该 作业运行了几次状态均不会改变。数据迁移作业可以重新执行和/或检查以确定迁移是否 已经完成。
[0049]重放管理器26被配置成检查作业日志232中的作业以确定将在次要网络处重放 什么作业。例如,选择在次要网络处重放已被发送到主要网络但未被执行的任何作业。还 选择重放在故障转移事件的预定时间内(例如,五分钟、十分钟、十五分钟、三十分钟、一小 时等)已经以主要位置为目标的作业。根据一实施例,使用协调世界时间(UTC)来确定故障 转移事件的时间以使得每一个网络都参考相同的时间。
[0050]重放管理器26被配置成在次要位置处的被重放的作业中包括标识该作业由于故 障转移事件而被重新提交的故障转移标志。使用该故障转移标志,作业能够确定将响应于 故障转移事件而执行的动作。例如,响应于对故障转移标志的检查,作业可将特定于主要网络参数的任何参数重新映射到新的次要网络。根据一实施例,作业可以对云管理器做出调用以确定新映射信息。例如,重放管理器26可访问映射表234以确定由于将作业移至次要网络而受影响的参数(例如,数据库、场以及任何网络ID)。作业可提供为了获取映射而请求的故障网络标识符和参数类型(例如,Get-GridFailOverMapping - FailingNetworkID (故障网络 ID)#_SourceId (源 Id)#_Type (类型)〈Network (网络)|Farm (场)!Database (数据库)>)。一些作业可以不检查故障转移标志,因为这些作业在每一次运行时都以相同方式操作。
[0051]重放管理器26还可更新应用于次要网络中的场的任何秘密以使得涉及这些秘密(例如,口令)的操作可以在次要位置执行。
[0052]以下是在故障转移事件发生之前正在主要网络上执行的作业的示例。出于讨论的目的(且不旨在是限制性的),假设该作业在被提交至主要网络时具有以下参数(作业类型:部署站点;网络ID:12 ;作业数据:ID=234 ;秘密:15 ;状态:正在执行;步骤:2 ;故障转移:无)。当故障转移时,该作业由云管理器置于挂起状态并且然后带着以下信息被重新提交至次要网络(作业类型:部署站点;网络ID:22 ;作业数据:ID ;秘密:25 ;状态:正在执行;步骤:2 ;故障转移:12)。如可见的,网络ID参数已从12更新成22,秘密参数已从15变成25,而故障转移标志已从无变成12。
[0053]一般而言,当重新提交作业时,作业执行各种动作。根据一实施例,在次要位置重放的每一个作业可检查以查看是否已经发生故障转移(例如,Fai1-Over (故障转移)! =NulI(无))。如果的确发生故障转移,则作业执行以下动作中的零个或更多:结束(清除)当前作业;转换作业命令行;确定要执行的下一步骤;改变底层对象的状态;以及创建新作业。
[0054]一般而言,结束(清除)当前作业在该作业非常聚焦于与故障网络交互且在次要网络中是无操作作业时由该作业执行。在这些情况下,该作业不执行进一步动作并从队列中清除自身。`
[0055]作业可转换作业命令行。根据一实施例,每一个作业都具有唯一的命令行。该命令行包含关于数据库、网络和场的特定ID。每一个作业都可使用和命名不同的参数(例如,ID=12可相关于各种不同的项目)。
[0056]作业可确定要执行的下一步骤。作业可知道它在故障转移之前正在操作什么步骤,但不确定该工作在发生故障转移事件之前被复制到次要网络。由此,作业可检查直到当前作业步骤所执行的工作的当前状态并相应地设置下一步骤值。作业步骤可被设置回退一个或多个步骤。在某些情况下,作业可将下一步骤重设回I并重做依靠幂等的工作以处理该情况。
[0057]作业可改变底层对象的状态。许多作业已实现性能优化以允许该作业在对象处于特定状态的情况下跳过工作。在某些情况下(例如,部署站点),对象的状态被设回“起始”状态以使得跳过任何优化。由此,底层对象经历完整的状态转换周期。
[0058]作业可创建新作业。在许多情况下,简单地创建具有针对次要网络的经转换的参数的新作业并终止(清除)现有作业对于作业而言更加容易。
[0059]重放管理器26还可使得同步点在时间上回滚。使同步在时间上回滚为灾难时间附近的新承租人供应重新创建所有作业。这有助于确保在故障转移期间创建的新承租人不陷入僵持状态。但它不涵盖部署新站点(终端用户触发)的大量其它工作以及其它操作触发的作业。根据一实施例,在作业已经在次要网络中重放后同步被设为在时间上回退。
[0060] 图3示出了示例性作业记录。如所示的,记录300包括作业标识符302、类型304、数据306、所有者308、步骤310、上一次运行312、期满时间314、下一次时间316、状态(state) 318、状况(status) 320、秘密322、故障转移324、故障转移时间326和网络ID328。
[0061]一般而言,针对所请求执行的每个任务/作业,云管理器在数据库350 (例如,图1中的作业队列112)中创建记录。
[0062]作业标识符302用于为所请求的任务指定唯一标识符。
[0063]类型304指定要执行的任务。例如,类型可以包括将要执行的脚本的名称。例如,当任务是要运行名称为“DeployVM.psl”的脚本时,数据306则可以包括标识符(例如“-VMID123”)。这允许将新任务类型添加到系统,而不需要对该系统的已编译或其他二进制部分进行任何改变。
[0064]数据306用于存储与任务相关联的数据。例如,数据可以对其上将执行该任务的承租人、机器、网络、VM等等设置。数据306还可以存储数据库中的值所被设置成的一个或多个值。执行任务的过程可以注意作业记录以查看所需机器数目被设置为何值。脚本使用数据库中的值来执行操作。
[0065]所有者308指定过程/执行该过程的机器。例如,当云管理器机器开始执行作业时,该机器使用机器的ID来更新记录的所有者308部分。
[0066]步骤310提供对当前脚本的步骤的指示。例如,脚本可以将任务划分成任何数目的步骤。当该进程完成该脚本的步骤时,步骤310被更新。进程还可以查看步骤310以确定在脚本中要执行什么步骤并且避免必须重新执行之前已完成的步骤。
[0067]上一次运行312提供上一次启动脚本的时间。每次启动脚本时,更新上一次运行时间。
[0068]期满时间314是指示该进程应当何时终止的时间。根据实施例,期满时间是在进程被启动之后的预定的时间量(例如5分钟、10分钟……)。期满时间可以通过经由web服务API的请求进程来更新。
[0069]下次时间316是指示任务下次应当何时执行的时间。例如,进程可以在完成某步骤之后停止,并且被指示等待直到所指定的下次时间316以恢复处理。
[0070]状态318指示当前状态。
[0071]状况320指示作业的状况(例如,已创建、已挂起、已恢复、正在执行、已删除)。
[0072]秘密322包括在执行对机器/网络的操作时使用的信息。例如,秘密322可包括口令信息、机器信息等。
[0073]故障转移标志324指示故障转移事件何时在网络发生。根据一实施例,当故障转移标志为NULL (空)时,则未发生故障。当故障转移标志被设为网络ID时,则该故障转移标志标识故障网络。该信息可用于确定当在次要网络中重放作业请求时在该作业请求中使用的任何映射。
[0074]故障转移时间326是故障的时间。根据一实施例,故障时间是UTC时间。
[0075]网络ID328标识在其上提交作业的网络。
[0076]如果数据库中的重复行具有相同的任务类型和数据值,则它们可以在执行之前被移除。例如,可以进行多个请求以执行存储在数据库的多个行中的相同的任务。[0077]作业可以具有与其相关联的一个或多个锁355。如果锁不可用,则作业将不被调度运行,直到锁可用。这些锁可以以许多不同的方式来配置。例如,锁可以基于互斥、信号量等。一般而言,互斥防止代码被一个以上线程并发执行,并且信号量将共享资源的同时使用的数目限制在最大数目。根据一实施例,锁是表示资源的字符串。该资源可以是任何类型的资源。例如,锁可以是场、机器、承租人等。一般而言,锁被用于延迟一个或多个作业的执行。每个作业可以指定其在运行以前需要的一个或多个锁。作业可以在其操作期间的任何时间释放锁。当存在锁时,作业不被调度。需要一个以上锁的作业一次请求所需的全部锁。例如,已经持有锁的作业不可以请求附加的锁。这样的方案有助于防止由多个作业间的循环锁依赖性造成的可能的死锁情况。
[0078]不同的作业可取决于该作业的需求而使用不同的域。
[0079]现在参考图4,将描述用于在次要网络中重放作业的过程。
[0080]在阅读本文中给出的例程的讨论时,应该理解,各个实施例的逻辑操作被实现为:
(I)一系列运行于计算系统上的计算机实现的动作或程序模块;和/或(2)计算系统内的互连的机器逻辑电路或电路模块。这种实现是取决于实现本发明的计算系统的性能需求的选择问题。因此,所例示并构成本文中描述的实施例的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以用软件、固件、专用数字逻辑,以及其任何组合来实现。
[0081]在开始操作之后,过程400流转至操作410,在那里检测故障转移事件。故障转移事件可响应于计划/非计划事件来检测。例如,故障转移事件可由主要网络处的灾难性故障导致或者可由停止使用主要网络的判定导致。故障转移事件可以手动/自动发起。例如,授权用户可触发从主要网络到次要网络的故障转移或者故障转移可基于对一个或多个条件(例如,一个或多个机器的故障)的检测来自动触发。
[0082]流转至操作420,从故障网络获取将在次要网络重放的作业。根据一实施例,从主要网络获取的作业包括在故障转移事件之前一时间段(例如,15分钟)提交的作业以及直至到次要网络的故障转移完成被提交至主要网络的作业。
[0083]移至操作430,更新所获取的作业以反映次要网络以及故障转移在主要网络处的发生。根据一实施例,用故障网络的ID、故障转移事件的时间、次要网络的ID以及将由新作业使用的任何秘密来更新作业。
[0084]转移至操作440,更新特定于其上正在执行作业的网络的任何参数(例如,标识符)。例如,作业可针对在主要网络中具有ID12,而在次要网络中具有ID26的特定数据库。根据一实施例,作业向云管理器提交查询以接收关于该作业的所需映射信息。
[0085]移至操作450,在次要网络上提交作业。当在次要网络上被提交时,作业可执行不同的动作。例如,作业可结束其自身,可转换其命令行参数,确定要执行的接下来的步骤,改变对象的状态,创建新作业等。根据一实施例,作业通过执行脚本来启动。执行该脚本可以调用远程调用来启动脚本和/或在远程机器上执行某一其他任务。
[0086]随后该过程移至结束操作并返回以处理其它动作。
[0087]现在参考图5,将描述在各实施例中利用的计算机500的说明性计算机架构。图5所示的计算机体系结构可被配置为服务器、台式或移动计算机,并且包括中央处理单元5(“CPU”)、包括随机存取存储器9 (“RAM”)和只读存储器(“ROM”)11的系统存储器7、以及将存储器耦合至中央处理单元(“CPU”)5的系统总线12。
[0088]在ROMll中存储基本输入/输出系统,该系统包含有助于诸如在启动期间在计算机内的各元件之间传输信息的基本例程。计算机500还包括大容量存储设备14,用于存储操作系统16、应用程序10、数据存储24、文件、以及与云系统100的执行和同云系统100的交互相关的云程序25。
[0089]大容量存储设备14通过连接至总线12的大容量存储控制器(未示出)连接至CPU5。大容量存储设备14及其相关联的计算机可读介质为计算机500提供非易失性存储。虽然本文中包含的对计算机可读介质的描述涉及诸如硬盘或CD-ROM驱动器等大容量存储设备,但是计算机可读介质可以是能够由计算机100访问的任何可用介质。
[0090]作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、可擦除可编程只读存储器(“EPROM”)、电可擦可编程只读存储器(“EEPR0M”)、闪存或其他固态存储器技术、⑶-ROM、数字多功能盘(“DVD”)或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备,或能用于存储所需信息且可以由计算机500访问的任何其他介质。
[0091]根据各实施例,计算机500可以使用通过诸如因特网18的网络至远程计算机的逻辑连接在联网环境中操作。计算机500可以通过连接至总线12的网络接口单元20来连接到因特网18。网络连接可以是无线的和/或有线的。网络接口单元20也可用于连接到其他类型的网络和远程计算机系统。计算机500还可以包括用于接收和处理来自多个其他设备的输入的输入/输出控制器22,这些设备包括键盘、鼠标或者电子指示笔(未在图5中示出)。类似地,输入/输出控制器22可以为显示屏28、打印机或其它类型的输出设备提供输出。
[0092]如上面简要提到的,多个程序模块和数据文件可以存储在计算机500的大容量存储设备14和RAM9内,包括适于控制联网计算机的操作的操作系统16,比如华盛顿州雷蒙德市的微软公司的WINDOWS?操作系统。大容量存储设备14和RAM9还可以存储一个或多个程序模块。具体而言,大容量存储设备14和RAM9可以存储诸如云程序25的执行与云系统相关的作业的一个或多个应用程序。
[0093]以上说明、示例和数据提供了对本发明的组成部分的制造和使用的全面描述。因为可以在不背离本发明的精神和范围的情况下做出本发明的许多实施例,所以本发明落在所附权利要求的范围内。
【权利要求】
1.一种用于在服务的网络中重放作业的方法,包括:检测故障转移事件何时发生以便将操作从所述服务的主要位置移至所述服务的次要位置,所述次要位置基本上与所述服务的主要位置相同地配置;从所述服务的主要位置获取作业;在所述服务的次要位置提交所获取的作业。
2.如权利要求1所述的方法,其特征在于,还包括将与所述服务的主要位置相关联的作业输入参数映射到与所述服务的次要位置相关联的对应的作业输入参数。
3.如权利要求1所述的方法,其特征在于,从所述服务的主要位置获取作业包括获取在所述故障转移事件之前的预定时间和之后的预定时间内被提交至所述主要位置的每一个作业。
4.如权利要求1所述的方法,其特征在于,每一个作业查询中央服务以确定所述主要位置和所述次要位置之间的映射。
5.如权利要求1所述的方法,其特征在于,还包括使所述主要位置的同步时间回滚预定时间量以使得所述主要位置与所述次要位置重新同步。
6.如权利要求1所述的方法,其特征在于,在所述服务的次要位置提交所获取的作业包括改变所提交的作业的网络标识符以反映所述服务的次要位置并更新与所述次要位置相关的任何秘密。
7.如权利要求1所述的方法,其特征在于,在所述服务的次要位置提交所获取的作业包括每一个作业提交其请求。
8.一种具有计算机可执行指令的计算机可读存储介质,所述计算机可执行指令用于在服务的网络中重放作业,包括:确定故障转移事件何时发生以便将操作从所述服务的主要位置移至所述服务的次要位置,所述次要位置基本上与所述服务的主要位置相同地配置;从所述服务的主要位置获取在离所述故障转移事件预定时间内被提交以执行的作业;将所述作业中的取决于所述服务的主要位置的物理特性的参数改成所述服务的次要位置;在所述服务的次要位置提交所获取的作业;以及在所述作业中的每一个作业中设置故障转移标志。
9.一种用于在服务的网络中重放作业的系统,包括:处理器和计算机可读介质;存储在所述计算机可读介质上并在所述处理器上执行的操作环境;以及云管理器,所述云管理器用于执行动作,包括:确定故障转移事件何时发生以便将操作从所述服务的主要位置移至所述服务的次要位置,所述次要位置基本上与所述服务的主要位置相同地配置;从所述服务的主要位置获取作业;将所述作业中的取决于所述服务的主要位置的物理特性的标识符改成所述服务的次要位置;以及在所述服务的次要位置提交所获取的作业。
10.如权利要求9所述的系统,其 特征在于,还包括使同步时间回滚预定时间量。
【文档编号】G06F15/16GK103562904SQ201280026439
【公开日】2014年2月5日 申请日期:2012年5月28日 优先权日:2011年6月1日
【发明者】D·布拉德, A·霍普曼, S·R·沙哈, V·塔拉诺弗, T·塞维尔米什, N·沃伦可夫 申请人:微软公司

最新回复(0)