分布式系统中的自更新功能的制作方法
【专利摘要】描述的是提供服务的计算机节点的分布式系统经由分布式系统的组件进行自更新的技术。这样的自更新运行向分布式系统中的成员计算机节点中的每一个应用一个或多个更新,同时维持由分布式系统提供的服务。该更新运行可包括将工作负载从要被更新的每个计算机节点移开、更新那个节点、并在更新后恢复工作负载。执行更新运行可包括将更新相关责任(其可以是工作负载)从一个计算机节点移到另一个计算机节点。
【专利说明】分布式系统中的自更新功能
[0001] 背景
[0002] 分布式系统通过节点/服务器的集合(诸如安排为群集)向客户机提供各种计算 机服务(包括应用)。当计算机软件被部署在分布式系统上的产品中时,企业等很难以最新 调整和软件改善来保持软件最新,而不干扰由该分布式系统提供的服务。结果,为了更新分 布式系统,管理员执行相对详尽的计划,以旨在更新分布式系统的集合中的节点/服务上 的软件清单而不影响由该集合提供的服务,有时被称为在更新方面"是服务知晓的"。
[0003] 典型的管理步骤包括将这些服务从这样的分布式系统集合中的每个服务器/节 点迁移,以及将这些服务重新主存到这样的分布式系统集合中的每个服务器/节点,使得 节点可被更新,而确保,例如,全部集合的容错"临界量"(例如群集法定数量)在更新过程 中保持,并使用以节点为中心的更新软件来更新每个节点。一些管理员手动执行这些任务, 而其他管理员使用自组织脚本来试图自动化该过程的部分。在一些情况下,可能有用于与 特定类型的软件更新管理软件耦合的特定类型的聚类服务的端到端工具。在任何情况下, 这样的信息技术(IT)方法是费力的、易出错的,需要IT专家来管理,并且在正在进行的基 础上维护是昂贵的。
[0004] 随着分布式系统的数量增加,这些手动过程/脚本的操作花费以及需要运行/维 护它们的IT管理员对于IT组织来说变成相当可观的操作成本负担。这对于中小型的企业 以及倾向于具有无本地IT专家可用的多个分支机构的组织来说尤其如此。
[0005] 概述
[0006] 提供本概述以便以简化形式介绍将在以下的【具体实施方式】中进一步描述的一些 代表性概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在以 限制所要求保护的主题的范围的任何方式来使用。
[0007] 简言之,在此描述的主题的各个方面涉及提供服务的诸计算机节点的分布式系统 经由该分布式系统的组件进行自更新的技术。诸计算机节点的成员资格被确定,并且该组 件执行将一个或多个更新应用到有成员资格的多个计算机节点的每一个,同时维持由分布 式系统提供的服务的更新运行。执行更新运行可包括潜在地多次重新引导和/或重启有成 员资格的多个计算机节点中的每一个。
[0008] 在一个方面,执行更新运行包括将任何工作负载从每个要更新的计算机节点移 开,并在那个计算机节点的更新完成后恢复那个计算机节点上的至少一个工作负载。执行 更新运行可包括将协调器(orchestrator)责任从一个计算机节点移到另一个计算机节 点。可在将协调器责任从一个计算机节点移到另一个计算机节点之前持久保存更新相关的 状态信息,并在将协调器责任从一个计算机节点移到另一个计算机节点之后在第二节点处 读取该更新相关的状态信息。
[0009] 结合附图阅读以下【具体实施方式】,本发明的其他优点会变得显而易见。
[0010] 附图简述
[0011] 作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或 相似的元素,附图中:
[0012] 图1A是示出通过分布式系统的软件组件执行自更新的分布式系统的示例组件的 框图。
[0013] 图1Β是示出通过分布式系统的硬件/固件执行自更新的替换分布式系统的示例 组件的框图。
[0014] 图2 - 6包括示出在自更新运行期间处于各种不同状态的示例自更新分布式系统 的诸计算机节点和组件的示例表示的框图。
[0015] 图7是表示在自更新运行期间处于各种不同状态的示例自更新分布式系统中可 采取的示例步骤的流程图。
[0016] 图8是表示示例性非限制联网环境的框图,其中可实现本文所描述的各种实施 例。
[0017] 图9是表示示例性非限制计算系统或运行环境的框图,其中可实现本文所描述各 种实施例的一个或多个方面。
[0018] 详细描述
[0019] 此处所描述的技术的各方面一般针对允许分布式系统以服务知晓方式将其诸节 点自更新到当前所需软件级别。一般来说,这提供了一种不要求本地IT专家在场来更新分 布式系统软件的端到端分布式系统更新方案。
[0020] 如将会理解的,自更新分布式系统可在无需外部帮助或监控的情况下运行。分布 式系统中的各计算机节点可继续用对IT组织适用的更新(补丁)适用性规则和策略来管 控,同时足够智能以自更新它们自己而将分布式系统的全局服务可用性考虑作为整体来考 虑。
[0021] 在此使用分布式系统的各种不同的示例,诸如故障转移群集,应当理解,此处的任 何示例均是非限制性的。因此,本发明不限制于在此描述的任何具体的实施例、方面、概念、 结构、功能或示例。相反,此处所描述的实施例、方面、概念、结构、功能或示例中的任一个都 是非限制性的,并且本发明一般能够以在计算和分布式系统方面提供好处和优点的各种方 式来使用。
[0022] -般而言且如在此所描述的,自更新群集软件(例如,进程/线程)在所有者节点 上运行、确定分布式系统的成员资格、并更新每个成员;(注意,在允许诸如新的、未连接的 或非正在运行的机器的非成员成为分布式系统的成员之前或作为其一部分,更新可在那些 非成员上执行)。为此,自更新群集软件可更新除了自己之外的每个其它节点,并可操作以 更新它在其上运行的节点。在一个情形中,自更新群集软件从所有者节点"移"到新所有者 节点,新所有者节点随后运行自更新群集软件的实例来更新先前的所有者节点,包括执行 任何那个节点所需的重新引导。与更新相关的状态信息可被持久保存并经由"共享存储设 备"发送到新所有者节点。注意在"无共享"分布式系统的特定实施例中,共享存储设备可 被分布式存储服务取代,其中该服务可从分布式系统中作为持久存储的的诸节点处访问, 即使当不需要到全部节点的真实共享存储连接性时也是如此。此外,注意在替换情形中,自 更新群集软件不需要在另一个节点上运行以将更新安装到其自己的节点上。例如,如果不 需要重新引导,自更新群集软件只需要安装更新。可替换地,如果需要重新引导且所有者节 点能够将其工作负载移到能够继续分布式系统的服务的其它节点,所有者节点的自更新软 件能够重新引导其自身以完成该更新;所有者节点可写入任何可访问持久存储以跨一次或 多次重新引导持久保存状态信息。
[0023] 图1A示出了包含包括多个计算机节点104-104的自更新分布式系统102的一个 示例实现的框图。例如,计算机节点可以是虚拟机或物理机器。分布式系统可具有少到两 个节点多到符合实际的任何数量的节点。事实上,在此描述的自更新技术对于小到两个刀 片的服务器群集也是有益的,因为除了其它益处,小的自更新服务器群集可被配置为需要 很少或不需要手动维护的器具型设备。
[0024] 节点的每一个包含一个或多个相应的工作负载(示为106「1(^和107^1070,其 包括可在系统102的诸节点之间分布的服务(可能包括应用)。这样的分布式系统的一个 示例是故障转移群集,其中在一个节点发生故障或暂停(其可由非预计的(例如,崩溃相 关的)或故意的(例如,维护相关的)事件导致)时,该一个节点的工作负载实际上自动 "移动""故障转移")到一个或多个其它节点。为此,一旦需要将工作负载从一个节点移 开,对应的工作负载的实例被加载到一个或多个其它节点上并因此继续对节点客户机透明 地运行。其它类型的分布式系统出于其它理由(例如为了执行自动负载平衡或作为手动维 护的一部分)而移动工作负载。耦合到分布式系统通信机制llOi-llOM的共享联网基础架 构108促进工作负载的这样的移动所需要的通信。
[0025] -般而言,分布式系统的诸节点时常需要用对诸节点的相应节点本地软件清单 的更新来更新。许多这些更新涉及重新引导节点和/或停止节点的服务,并且至 今为止管理员为这样的更新作计划。
[0026] 如在此所描述的,分布式系统102被配置来通过向分布式系统102添加自更新相 关软件作为其软件的部分来进行自更新。例如,涉及自更新工作负载的.dll文件可被安装 为每个节点的节点本地软件清单的部分。如将会理解的,自更新相关软件,在作 为协调器的本地代理120运行时,将一个或多个更新应用到有成员资格的多个计算机节点 的每一个,同时维持由分布式系统提供的服务。
[0027] 在图1B的节点13(^和1302的分布式系统中表示的替换实现中,可基于使用专用 自更新机制132来进行更新,专用自更新机制132经由将节点13〇i和130 2耦合到嵌入式硬 件和/或固件组件134的接口来实例化并协调更新运行,嵌入式硬件和/或固件组件134 永久地耦合到每个节点(其中"永久"旨在意味着不打算容易地解耦合,不像远程计算机)。 尽管在图1B的示例中仅示出两个节点13〇i和130 2,可以理解这样的实现可包括任何实际 数量的节点。此外,应注意,图1B的分布式系统可方便地结合到器具型设备中(图1A例示 的实现也是如此)。
[0028] -般而言,自更新相关软件发起包括一个通过分布式系统的自更新循环的"更新 运行",该自更新循环在一个实现中顺序地(或以其它方式,诸如在大型分布式系统的各小 组中)以受控方式更新分布式系统节点中的每个。在一个实现中,自更新相关软件包括工 作负载。除了其它益处,这使得更新相关软件跨分布式系统高度可用,包括对于分布式系统 102中的计算机节点故障有复原力。
[0029] 在一个实现中,实例化并协调更新允许的那部分软件(例如,进程/线程)被称为 服务知晓更新协调器,或简称为"协调器"。协调器顺序地(或以其它方式,诸如在大型分 布式系统的各小组中)以受控方式更新分布式系统节点的每个。在此处描述的自更新模式 中,协调器可在当前更新运行期间也要被更新的分布式系统节点上运行,这可通过在对协 调器先前在其上运行的节点进行更新前将协调器移到另一个节点而发生。
[0030] 如图1A所表示的,服务知晓更新协调器111-114(例如,包括一个或多个进程和 /或线程)协调更新分布式系统102的端到端操作。一般而言,在分布式系统中一次仅运行 协调器的一个实例(例如111),并且该协调器的一个实例可在更新运行过程期间按需跨分 布式系统内的各计算机节点移动(如至虚线框114 N的虚线箭头所指示)。
[0031] 在图1A的示例实现中,每个节点包含一个或多个节点软件更新工具,这 些工具自动从一个或多个合适的软件更新源118下载更新。用于软件更新的例如来自企业 本地分布点、来自公共互联网(例如,微软?更新)、来自公共云(例如,Windows Azure?)、 来自私有云(例如,Windows Azure私有应用)等等的各种不同源可被支持。
[0032] 在图1A所表示的示例中,本地协调器代理(例如,Windows?管理工具,或基于 丽I的组件)被安装在每个分布式系统节点上,如代理所表示的。每个代理在 更新运行期间并在更新运行之后促进协调器到节点的交互并提供分布式状态管理。代理 也和其相应的节点本地软件更新工具进行交互,以使软件更新影响到 在计算机节点本地的其相应的软件清单112fll2N。
[0033] 图2 - 6示出自更新可如何针对示例三节点(由节点220r2203表示)分布式系 统执行的各种示例状态上的示例。如图2所表示的,这些节点之一成为运行自更新相关工 作负载222的实例的所有者节点22〇i。自更新相关工作负载222可由调度器组件、通过经 由合适接口的手动交互,和/或响应于另一事件(诸如在重新引导后自动)而启动。
[0034] 在一个实现中,自更新相关负载222可包含操作以执行更新的协调器代码223。在 替换实现中,自更新相关工作负载222可操作来启动操作以执行更新的协调器代码223 (例 如,如在节点的节点本地软件清单中所维护的)的本地实例。在任何事件中,在此示例 中,如在此所描述的,工作负载/协调器代码222和223能够在更新运行过程期间跨节点 22(^-22(^ 移动。
[0035] 每个计算机节点22(^-22(^主存多个分布式系统服务工作负载224r224 3。一般而 言,由这些工作负载221-2243提供的服务需要在用希望的软件更新来更新分布式系统时 维持可用。
[0036] -般而言,如图3所表示的,协调器代码222操作以移动正在被更新的节点(在该 示例中是节点220 2)的工作负载。这由随着移动的系统服务工作负载3242被移动到节点 2203的系统服务工作负载2 242表示(也以虚线节点/工作负载2242上虚线叉掉的"X"表 示)。例如,在故障转移群集中,这可以已知方式通过请求群集系统软件CSS暂停节点220 2 来自动发生。注意,群集系统软件CSS代替将工作负载移动到节点2203或除了将工作负载 移动到节点220 3之外,还基于它自己的机制将工作负载2242或其某个子集移动到节点22〇i 是切实可行的,然而为了简化起见这没有在图3中示出。
[0037] -旦被移动,协调器代码222接着操作以更新节点2202,节点2202为了效率可能 已经下载了这些更新中的一些或全部,并或者采取一或多步来准备这些更新。不再运行系 统服务工作负载的节点220 2可被重新引导达使得节点软件(且可能甚至固件)进入希望 的更新状态所需的次数。
[0038] 如上面描述的,共享存储226 (例如,高可靠性和可用性)可被诸节点访问,包括读 和写与自更新相关的状态信息。协调器代码可在任何合适的时间将信息写到共享存储以反 映更新运行的状态,使得例如更新状态已知,而不管协调器代码222的任何故障,包括因所 有者节点22〇i的故障。例如,一旦对节点220 2的更新完成,状态信息就被更新以指示更新 完成,从而如果另一个节点必须接管更新运行的话,这个状态信息是已知的。
[0039] 此时,节点2202被更新并且可以恢复运行一个或多个工作负载。在图4的示例中, 来自节点220 3的工作负载2243和3242是出于该目的而被移动到节点2202的。再一次,节 点220 3的一些或全部工作负载可被移到22〇i是切实可行的,然而为简化起见,在此示例中, 它们被示为被移动到节点220 2,并被表示为经移动系统服务工作负载444。一旦被移动,节 点2203准备好更新。一旦被更新,包括任何重新引导操作,节点220 3可恢复运行一个或多个 工作负载。在图4的示例之后,仅所有者节点22〇i还需要被更新。如上面描述的,取决于分 布式系统的容量和配置,协调器代码223可以移动其工作负载、更新其自己的节点软件,并 在重新引导后自动重启,并且因此更新该节点而无需移动到另一个节点。然而,在图2 - 6 的示例中,协调器代码223需要移动到另一个节点来允许它当前正在其上运行的节点22〇i 被更新。
[0040] 协调器代码223可移动到另一个节点的一种方式是通过向群集系统软件CSS请 求。另一个方式是如果群集系统软件CSS允许则请求节点22〇i暂停自己,如果是这样,工 作负载被移动,并且因为自更新相关工作负载222也是工作负载,移动使用现有群集技术 自动发生。
[0041] 在图5的示例中,为了更新节点22〇i,节点22〇i的自更新相关工作负载222(以及 如果其中结合有的话,协调器代码223)以及系统服务工作负载221通过如群集系统软件 CSS所指导的在其它节点220 2和2203上启动其实例而被移动到那些节点。尽管可以理解, 群集系统软件CSS可根据其自己的机制将工作负载移到其它节点220 2和2203,在图5的示 例中,自更新相关工作负载222被移到节点2202成为自更新相关工作负载522的另一个实 例,且系统服务工作负载221移到节点220 3成为系统服务工作负载555。如果协调器代码 523没有被结合到自更新相关工作负载522中,则一旦启动自更新相关工作负载522,就操 作以启动协调器代码523。此时,节点220 2变成拥有自更新相关工作负载520/协调器代码 523的新所有者。
[0042] 协调器代码523,在被启动时,读取共享存储228并从持久保存的状态信息确定节 点22(^需要更新。这可包括将任何其它工作负载从节点22〇i移开,(尽管如上面所描述 的这样的其它工作负载已经连同移动自更新相关工作负载222而被移开)。随后更新节点 22〇i,包括按需更新任何重新引导操作。
[0043] 图6示出了在对节点22〇i - 2203完成更新运行之后,这3个节点的示例分布式系 统。注意此时,自更新相关工作负载可将状态信息写入共享存储226,(或清除该信息)以 指示更新运行完成。自更新相关工作负载522(和/或协调器代码523)可随后休眠和/或 整体或部分终止,直到下一次更新事件或调度,如图6中虚线框所示)。还注意如系统服务 工作负载66(^ - 6603所表不,群集系统软件CSS可按需到处移动工作负载,诸如以便平衡 工作负载。这可包括使从已更新机器移开的至少一个工作负载在更新后又更新回到那个机 器之前或作为更新回到那个机器的部分来恢复。
[0044] 尽管并非必要,用户接口可被提供以允许用户与更新过程交互,诸如耦合到图1A 的本地代理或作为其部分。交互的部分可以是初始化(例如,为系统设置一次, 除非且直到被改变)。例如,更新相关软件的任何选项可以是用户可配置的,例如,相对于 默认值。用户还可以查看,例如,记录在共享存储或另一个可访问位置的关于更新状态的信 息,以监控进展。使用合适的接口,用户可将非成员设备耦合到分布式系统以和更新进行一 定程度的交互。
[0045] 例如,如果用户希望,自更新模式可诸如通过用户接口或命令行(例如, Windows? PowerShell cmdlet)来临时挂起。当用户例如通过类似交互重新启用自更新 相关负载时,下一个更新运行的发生通过在分布式工作负载选项中定义的调度来确定。
[0046] 在一个实现中,诸如为了检查分布式系统更新基础结构中经改变的设置或确保更 新不必须等待调度,更新运行可按需开始,即使当分布式系统整体上继续处在自更新模式。 用户接口或命令行选项(例如"UpdateNow(现在更新)"选项)这一次超控所定义的自更 新调度,并启动更新运行。
[0047] 图7是概述实现的示例步骤的流程图,其中协调器过程运行在分布式系统所有者 节点上,如在用户定义调度处,并且用任何用户定义的运行选项开始更新运行。如在此示例 中将看到的,当所有者节点要被更新时,协调器被移到不同的计算机节点,通常是在这个更 新运行中已经被更新的一个节点。亦如在此示例中将看到的,新(经移动的)协调器过程 继续相同更新运行,并确保更新运行通过更新留下的尚未更新的任何节点来正确完成。
[0048] 步骤700涉及协调器确定包括要被更新的那些节点的成员资格。通常,分布式系 统想要让其所有的节点在彼此的更新方面处于一致的状态,(除了更新运行期间临时地), 然而替换实现可允许更新到不同成员设置。步骤700还表示协调器或其它更新相关软件确 保(例如通过群集系统软件)更新能够被以维持分布式系统提供的服务的可用性的方式来 应用。例如,如果当前仅仅一个节点在操作,更新运行不能被允许暂停或关闭那一个节点。 此外,如果工作负载在被移动到一个或多个其他节点的情况下不能够被这一个或多个其他 节点充分地处理,诸如如果分布式系统那时正高负载,更新可被延迟到较不繁忙的时间。因 此,更新可能需要等待直到足够节点/资源可用于允许更新而不干扰所提供的系统服务。
[0049] 步骤702表示协调器检查共享存储以获取这个更新运行的任何现存状态。注意在 这个示例中,协调器在启动时不知道它是否开始了新的运行或完成另一个运行,并因此访 问状态信息(尽管参数等被用于区分新更新运行是切实可行的)。
[0050] 步骤704表示暂停要被更新的下一个节点。这可从状态信息确定,例如,因为节点 有系统唯一身份,并且哪个或哪些节点已经被更新(如果有)是记录在状态信息中的数据。 如上面描述的,(例如,对群集系统软件作出的)暂停请求将暂停节点的工作负载移到一个 或多个其它节点。
[0051] 步骤706在准备好时,例如,在其工作负载被移开之后,更新被暂停的节点。注意, 例如,取决于正被更新的代码,一些更新进程在工作负载正被移开时开始也是可行的。
[0052] 步骤708表示更新共享存储中的状态信息以反映在步骤706更新的节点的更新。 更新通常包括重新引导一次或多次,如上面所描述的。注意状态信息可在其它时间被更新, (图7未示出),诸如以便偶尔提供一些状态/进展数据或在故障时有准备,然而相当多的 时间是当节点更新完成时,因为另一个节点可在此时恢复更新运行。
[0053] 步骤710将暂停的节点添加回去作为分布式系统的成员。这可以通过对群集系统 软件的请求来完成,并允许当前更新的节点如群集系统软件所指导的开始处理分布式系统 服务工作负载。工作负载的一个可以是自更新相关工作负载,如在双节点系统的情况下。
[0054] 步骤712评估要被更新的所有的其它成员节点(不包括运行协调器的节点)是否 已经被更新。如果否,步骤712分支回到步骤704来继续更新运行。
[0055] -旦要被更新全部其它节点已经被更新,步骤712分支到步骤714。步骤714评估 更新运行是否完成,即包括运行协调器的节点在内的所有成员节点已经更新。如果否,步骤 716表示移动协调器,这可通过移动包含协调器的自更新相关工作负载,或通过在自更新相 关工作负载启动协调器时移动自更新相关工作负载来实现。在任何事件中,协调器被移动 到新节点并在步骤718启动。
[0056] 步骤718回到步骤702来重复该过程。在没有故障的通常情形中,在步骤704,唯 一没有被更新的节点是最初运行协调器的那个节点,然而由于故障有一个或多个节点要更 新是可能的。在任何情况下,该过程重复,直到是成员的或保留为成员的全部的节点被更 新。
[0057] 在某个时刻,在步骤714,正在运行协调器的节点已经如步骤712所评估的对全部 其它节点上完成该更新运行,并且它本身如步骤714所评估的已经被更新。这时,更新运行 完成,且在步骤720,共享存储中的状态信息被更新以反映更新完成。取决于该实现,例如, 状态信息可被清除,使得下一个更新运行意识到整个新的更新运行要被执行,尽管其它信 息(诸如节点已经被更新到的版本数据)可被保留。
[0058] 示例性联网以及分布式环境
[0059] 本领域技术人员可以理解,此处描述的各实施例和方法可结合任何计算机或其它 客户机或服务器设备来实现,其可被部署为计算机网络的部分或在分布式计算环境中,并 且可以被连接到任何类型一个或多个数据存储。在这一点上,此处描述的各实施例可在具 有任何数量的存储器或存储单元的、并且任何数量的应用和进程跨任何数量的存储单元发 生的任何计算机系统或环境中实现。这包括但不限于具有部署在具有远程或本地存储的网 络环境或分布式计算环境中的服务器计算机和客户计算机的环境。
[0060] 分布式计算通过计算设备和系统之间的通信交换来提供计算机资源和服务的共 享。这些资源和服务包括信息的交换、对于诸如文件之类的对象的高速缓存存储和盘存储。 这些资源和服务还包括多个处理单元之间的处理能力共享以便进行负载平衡、资源扩展、 处理专门化等等。分布式计算利用网络连接,从而允许客户机利用其集体力量来使整个企 业受益。就此,各种设备可具有可如参考本发明的各实施例描述地参与资源管理机制的应 用、对象或资源。
[0061] 图8提供了示例性的联网或分布式计算环境的示意图。该分布式计算环境包括计 算对象810、812等以及计算对象或设备820、822、824、826、828等,这些计算对象或设备可 包括如由示例应用830、832、834、836、838表示的程序、方法、数据存储、可编程逻辑等。可 以理解,计算对象810、812等以及计算对象或设备820、822、824、826、828等可包括不同的 设备,诸如个人数字助理(PDA)、音频/视频设备、移动电话、MP3播放器、个人计算机、膝上 型计算机等。
[0062] 每个计算对象810、812等以及计算对象或设备820、822、824、826、828等可经由通 信网络840直接或间接地与一个或多个其他计算对象810、812等以及计算对象或设备820、 822、824、826、828等通信。尽管在图8中被示为单个元件,但通信网络840可包括向图8的 系统提供服务的其他计算对象和计算设备和/或可表示未示出的多个互连网络。每个计算 对象810、812等或计算对象或设备820、822、824、826、828等还可以包含应用,诸如可以利 用API或其他对象、软件、固件和/或硬件的、适于根据本发明的各实施例所提供的应用实 现与其进行通信的应用830、832、834、836、838。
[0063] 存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统可由有线 或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网,后 者为广泛分布的计算提供了基础结构并包含许多不同的网络,但任何网络基础结构都可用 于便于与如各实施例中所描述的系统的示例性通信。
[0064] 由此,可使用诸如客户机/服务器、对等、或混合体系结构之类的网络拓扑结构和 网络基础结构的主机。"客户机"是使用与其无关的另一类或组的服务的一类或组中的成 员。客户机可以是进程,例如,大致上是请求另一程序或进程所提供的服务的一组指令或任 务。客户机进程使用所请求的服务,而无需"知道"关于其他程序或服务本身的任何工作细 节。
[0065] 在客户机/服务器体系结构中,尤其在联网系统中,客户机通常是访问另一计算 机(例如,服务器)所提供的共享网络资源的计算机。在图8的图示中,作为非限制性示 例,计算对象或设备820、822、824、826、828等可被认为是客户机而计算对象810、812等可 被认为是服务器,其中计算对象810、812等作为提供数据服务的服务器,诸如从客户机计 算对象或设备820、822、824、826、828等接收数据、存储数据、处理数据、向客户机计算对象 或设备820、822、824、826、828等发送数据,但任何计算机都可取决于环境而被认为是客户 机、服务器、或两者。
[0066] 服务器通常是可通过诸如因特网或无线网络基础架构之类的远程网络或本地网 络访问的远程计算机系统。客户机进程可在第一计算机系统中活动,而服务器进程可在第 二计算机系统中活动,它们通过通信介质相互通信,由此提供分布式功能并允许多个客户 机利用服务器的信息收集能力。
[0067] 在通信网络840或总线是因特网的网络环境中,例如,计算对象810、812等可以是 其他计算对象或设备820、822、824、826、828等经由诸如超文本传输协议(HTTP)之类的多 种已知协议中的任一种与其通信的Web服务器。计算对象810、812等作为服务器还可用作 例如计算对象或设备820、822、824、826、828等的客户机,这可以是如分布式计算环境的特 性。
[0068] 示例计算设备
[0069] 如上所述,有利地,本文所描述的技术可应用于任何设备。因此,应当理解,构想了 结合各实施例使用的所有种类的手持式、便携式和其它计算设备和计算对象。因此,以下在 图9中所述的通用远程计算机只是计算设备的一个示例。
[0070] 各实施例可部分地经由操作系统来实现,以供设备或对象的服务开发者使用和/ 或被包括在用于执行此处所述的各实施例的一个或多个功能方面的应用软件内。软件可以 在由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的诸如程序模块等计 算机可执行指令的通用上下文中描述。本领域的技术人员可以理解,计算机系统具有可用 于传递数据的各种配置和协议,并且由此没有特定配置或协议应当被认为是限制性的。
[0071] 图9由此示出了其中可实现本文所述的各实施例的一个或多个方面的合适的计 算系统环境900的一个示例,尽管如上所述,计算系统环境900仅为合适的计算环境的一个 示例,并非对使用范围或功能提出任何限制。此外,也不应当将计算系统环境900解释为对 在示例性计算系统环境900中所示的组件中的任何一个或其组合有任何依赖。
[0072] 参考图9,用于实现一个或多个实施例的示例性远程设备包括计算机910形式的 通用计算设备。计算机910的组件可包括,但不限于,处理单元920、系统存储器930、以及 将包括系统存储器的各种系统组件耦合到处理单元920的系统总线922。
[0073] 计算机910通常包括各种计算机可读介质,并且可以是可由计算机910访问的任 何可用介质。系统存储器930可包括诸如只读存储器(ROM)和/或随机存取存储器(RAM) 之类的易失性和/或非易失性存储器形式的计算机存储介质。作为示例而非限制,系统存 储器930还可包括操作系统、应用程序、其他程序模块、以及程序数据。
[0074] 用户可通过输入设备940向计算机910输入命令和信息。监视器或其他类型的显 示设备也经由诸如输出接口 950之类的接口连接到系统总线922。除监视器以外,计算机还 可包括诸如扬声器和打印机之类的其他外围输出设备,它们可通过输出接口 950连接。
[0075] 计算机910可使用到一个或多个其他远程计算机(诸如远程计算机970)的逻辑 连接在联网或分布式环境中操作。远程计算机970可以是个人计算机、服务器、路由器、网 络PC、对等设备或其他常见网络节点、或者任何其他远程媒体消费或传输设备,并且可包括 以上关于计算机910所述的任何或全部元件。图9所示的逻辑连接包括诸如局域网(LAN) 或广域网(WAN)之类的网络960和接口 972,但也可包括其他网络/总线。这些联网环境在 家庭、办公室、企业范围的计算机网络、内联网和因特网中是常见的。
[0076] 如上所述,尽管结合各种计算设备和网络体系结构描述了各示例性实施例,但基 本概念可被应用于其中期望改进资源使用的效率的任何网络系统和任何计算设备或系统。
[0077] 而且,存在实现相同或相似功能的多种方法,例如适当的API、工具箱、驱动程序代 码、操作系统、控件、独立或可下载软件对象等,它们使得应用和服务能够使用此处提供的 技术。由此,此处的各实施例从API (或其他软件对象)的观点以及从实现如此处描述的一 个或多个实施例的软件或硬件对象构想。由此,此处所述的各实施例可具有完全采用硬件、 部分采用硬件并且部分采用软件、以及采用软件的方面。
[0078] 为避免疑惑,本文所公开的主题不限于这些示例。另外,在此所述的被描述为"示 例"的任意方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。此外,在使 用术语"包括"、"具有"、"包含"和其他类似词语的程度上,为避免疑惑,这些术语旨在当用 于权利要求中时以类似于术语"包括"作为开放的过渡词的方式是包含性的而不排除任何 附加或其他元素。
[0079] 如所述的,此处所述的各种技术可结合硬件或软件或,在适当时,以两者的组合来 实现。如此处所使用的,术语"组件"、"模块"、"系统"等同样旨在指计算机相关实体,或者 是硬件、硬件和软件的组合、软件或者是执行中的软件。例如,组件可以是但不限于在处理 器上运行的进程、处理器、对象、可执行件、执行的线程、程序、和/或计算机。作为说明,在 计算机上运行的应用和计算机都可以是组件。一个或多个组件可驻留在进程和/或执行的 线程内,并且组件可位于一个计算机上和/或分布在两个或更多的计算机之间。
[0080] 如前所述的系统已经参考若干组件之间的交互来描述。可以理解,这些系统和组 件可包括组件或指定的子组件、某些指定的组件或子组件和/或附加的组件,并且根据上 述内容的各种置换和组合。子组件还可作为通信地耦合到其他组件的组件来实现,而不是 被包括在父组件内(层次性)。另外,应注意到一个或多个组件可被组合成提供聚集功能的 单个组件,或被分成若干单独的子组件,且诸如管理层等任何一个或多个中间层可被设置 成通信耦合到这样的子组件以便提供集成功能。此处所述的任何组件也可与一个或多个此 处未专门描述的但本领域技术人员一般已知的其他组件进行交互。
[0081] 鉴于本文所述的示例系统,可根据参考各附图的流程图还可理解根据所述的主题 来实现方法。尽管为了说明简洁起见,作为一系列框示出和描述的方法,但是应当理解,各 实施例不仅仅限于框的次序,因为一些框可以与此处所描绘和描述的框不同的次序发生和 /或与其他框并发地发生。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实 现达到相同或类似结果的各种其他分支、流程路径和框的次序。此外,某些示出的框在实现 下文所述的方法中是可选的。
[0082] 结语
[0083] 尽管本发明易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出 并在上面被详细地描述。然而应当了解,这不旨在将本发明限于所公开的具体形式,而是相 反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。
[〇〇84] 除此处所述的各实施例以外,应当理解,可使用其他类似实施例,或者可对所述实 施例作出修改和添加以便执行对应实施例的相同或等效功能而不背离这些实施例。此外, 多个处理芯片或多个设备可共享此处所述的一个或多个功能的性能,并且类似地,存储可 跨多个设备实现。因此,本发明不应限于任何单个实施例,而是应当根据所附权利要求书的 广度、精神和范围来解释。
【权利要求】
1. 一种在计算环境中的、至少部分地在至少一个处理器上执行的方法,包括,确定提 供服务的分布式系统的多个计算机节点的节点成员资格,并经由所述分布式系统的至少一 个组件执行更新运行,所述更新运行将一个或多个更新应用到有所述成员资格的多个计算 机节点的每一个,同时维持由所述分布式系统提供的服务。
2. 如权利要求1所述的方法,其特征在于,执行所述更新运行包括重新引导或重启有 所述成员资格的所述多个计算机节点的每一个,或重新引导并重启有所述成员资格的所述 多个计算机节点的每一个两者至少一次。
3. 如权利要求1所述的方法,其特征在于,执行所述更新运行包括,对于要被更新的每 个计算机节点,在更新该计算机节点之前或作为更新该计算机节点的部分,或在更新该计 算机节点之前以及作为更新该计算机节点的部分,将任何工作负载从该计算机节点移开, 并在完成对该计算机节点的更新之后恢复该计算机节点上的至少一个工作负载。
4. 如权利要求1所述的方法,其特征在于,执行所述更新运行包括运行作为协调器的 过程或线程以实例化并协调所述更新运行。
5. 如权利要求1所述的方法,其特征在于,执行所述更新运行包括,使用配置用于实例 化并协调所述更新运行的自更新机制,其中自更新机制至少部分地在嵌入式硬件或固件中 实现。
6. 如权利要求1所述的方法,其特征在于,执行所述更新运行包括,将协调器责任从要 被更新的一个计算机节点移动到另一个计算机节点。
7. 如权利要求1所述的方法,其特征在于,执行所述更新运行包括,将协调器责任从一 个计算机节点移动到另一个计算机节点。
8. 如权利要求7所述的方法,其特征在于,所述协调器与自更新相关工作负载相关联, 并且其中移动所述协调器软件包括移动所述自更新相关工作负载。
9. 如权利要求7所述的方法,其特征在于,所述分布式系统包括故障转移群集,其中所 述协调器与自更新相关工作负载相关联,并且其中移动所述协调器软件包括对所述自更新 相关工作负载进行故障转移。
10. 如权利要求7所述的方法,其特征在于,还包括,在将所述协调器责任从所述一个 计算机节点移动到另一个计算机节点之前,持久保存更新相关状态信息,并在将所述协调 器责任从所述一个计算机节点移动到所述另一个计算机节点之后,在所述另一个节点读取 所述更新相关的状态信息。
11. 一种系统,包括:被安排为分布式系统的多个计算机节点;所述分布式系统内的自 更新组件,所述自更新组件配置用于在更新运行中使用软件更新来更新所述计算机节点的 每一个,包括通过协调所述软件更新以在所述更新运行期间维持由所述分布式系统提供的 服务,在所述更新运行期间包括在所述分布式系统的任何节点的重新引导或重启或者重新 引导并重启两者期间。
12. 如权利要求11所述的系统,其特征在于,所述分布式系统包括共享存储或分布式 存储服务,并且其中自更新组件包括软件工作负载,所述软件工作负载被配置以在所述更 新运行期间在至少两个计算机节点之间移动,包括通过将更新运行状态信息写入所述共享 存储或所述分布式存储服务。
13. 如权利要求11所述的系统,其特征在于,所述自更新组件包括至少部分实现在永 久耦合到每个计算机节点的硬件或固件上的机制。
14. 如权利要求11所述的系统,其特征在于,所述分布式系统被结合到器具型设备中。
15. 如权利要求11所述的系统,其特征在于,所述分布式系统包括故障转移群集。
16. -个或多个具有计算机可执行指令的计算机可读介质,所述计算机可执行指令在 被执行时执行以下步骤,包括,在包括多个计算机节点的分布式系统上运行更新运行,包 括: (a) 在所述更新运行期间选择尚未被更新的计算机节点; (b) 将工作负载从所选的计算机节点移到另一个计算机节点; (c) 经由所述分布式系统的自更新协调器组件用一个或多个软件更新的集合来更新所 选计算机节点;以及 (d) 返回步骤(a)直到所述分布式系统的每一个计算机节点已被更新。
17. 如权利要求16所述的一个或多个计算机可读介质,其特征在于,更新已被选中的 所述计算机节点包括重新引导或重启所述节点,或重新引导并重启所述节点至少一次。
18. 如权利要求16所述的一个或多个计算机可读介质,其特征在于,所述自更新协调 器组件包括工作负载,并且其中将所述工作负载从所选计算机节点移动到另一个计算机节 点包括移动所述自更新协调器组件。
19. 权利要求16所述的一个或多个计算机可读介质,其特征在于,移动所述工作负载 包括暂停所选节点。
20. 权利要求16所述的一个或多个计算机可读介质,其特征在于,还包括包含以下的 计算机可执行指令:将指示所述更新运行的状态的状态信息写入共享存储或分布式存储服 务。
【文档编号】G06F9/06GK104094248SQ201380007760
【公开日】2014年10月8日 申请日期:2013年1月29日 优先权日:2012年2月2日
【发明者】D·J·汤普森, A·E·图尔科格鲁, G·O·德斯潘德, M·查达拉帕卡 申请人:微软公司