在分布式协定协议中绑定crud型协议的制作方法

文档序号:7792655阅读:122来源:国知局
在分布式协定协议中绑定crud型协议的制作方法
【专利摘要】各实施例使得冗余服务或副本服务(诸如“云”服务)能够在地理上分布的各位置处运行。每一副本都能够执行跨所有副本普遍地、相同地执行的操作。在一个位置处中断的情况下,其他位置处的服务可快速并自动地接管各操作。在一个或多个实施例中,利用分布式协定协议来绑定CRUD型协议以作为状态机。绑定通过使用位于分布有该服务的每一位置处的逆向代理来发生。在至少一些实施例中,分布式协定协议被实现为Paxos协议或其变型,和/或CRUD型协议包括HTTP协议。
【专利说明】在分布式协定协议中绑定CRUD型协议
[0001] 通过因特网提供的服务(诸如,所谓的"云"服务)可遭受中断,这些中断可使用 户体验降级。除了使用户体验降级外,这样的中断可在业务成本(诸如实际的金钱损失以 及信誉损失)方面具有较大的组织影响。
[0002]
[0003] 提供本概述是为了以简化的形式介绍将在以下【具体实施方式】中进一步描述的概 念选择。本概述并非旨在标识出所要求保护的主题的关键特征或必要特征。
[0004] 各实施例使得冗余服务或副本服务(诸如"云"服务)能够在各地理上分布的位 置处运行。每一副本都能够执行跨所有副本普遍地、相同地执行的操作。在一个位置处中 断的情况下,其他位置处的服务可快速并自动地接管各操作。
[0005] 在一个或多个实施例中,利用分布式协定协议来绑定CRUD型协议以作为状态机。 绑定通过使用位于分布有该服务的每一位置处的逆向代理来发生。在至少一些实施例中, 分布式协定协议被实现为Paxos协议或其变型,和/或CRUD型协议包括超文本传输协议 (HTTP)。
[0006] 附图简沭
[0007] 在全部附图中,使用相同的附图标记来指示相同的特征。
[0008] 图1示出了根据一个或多个实施例的示例操作环境。
[0009] 图2示出了根据一个或多个实施例的示例操作环境。
[0010] 图3是描述根据一个或多个实施例的方法中的各步骤的流程图。
[0011] 图4示出了根据一个或多个实施例的示例系统。
[0012] 图5示出了根据一个或多个实施例的示例设备。
[0013] 详细描沭
[0014] 概览
[0015] 各实施例使得冗余服务或副本服务(诸如"云"服务)能够在各地理上分布的位 置处运行。每一副本都能够执行跨所有副本普遍地、相同地执行的操作。在一个位置处中 断的情况下,其他位置处的服务可快速并自动地接管各操作。
[0016] 在一个或多个实施例中,利用分布式协定协议来绑定CRUD型协议绑定以作为状 态机。绑定通过使用位于分布有该服务的每一位置处的逆向代理来发生。在至少一些实施 例中,分布式协定协议被实现为Paxos协议或其变型,和/或CRUD型协议包括超文本传输 协议(HTTP)。然而,将领会和理解,本文档中描述的技术可结合任何合适的无状态REST(代 表性状态转移)协议来采用。如本领域技术人员将领会的,REST定义了藉此可将web服务 设计成聚焦于系统的资源的体系结构原理集合,该体系结构原理集合包括以不同语言写的 大范围的客户机如何寻址资源状态并通过HTTP传输这些资源状态。如本领域的技术人员 将领会的,REST型体系结构是结合客户机和服务器来利用的。客户机通常发起对服务器的 请求,这些服务器随后处理该请求并返回合适的响应。请求和响应是围绕资源表示的传输 而构建的。资源可包括可寻址到的任何相干且有意义的概念。资源的表示通常是捕捉资源 的当前状态或预期状态的文档。在客户机准备好作出到新状态的转变时,该客户机通过发 送请求来发起通信。在一个或多个请求未完结时,客户机被认为在转变中。每一状态的表 示可包含下一次客户机选择发起新状态转变时可使用的链接。
[0017] 在以下讨论中,首先描述可采用本文描述的技术的示例环境。随后描述可在该示 例环境以及其他环境中执行的示例过程。因此,各示例过程的执行不限于该示例环境,并且 该示例环境不限于执行各示例过程。
[0018] 示例环塏
[0019] 图1概括地在100处示出根据一个或多个实施例的操作环境。环境100包括本地 客户端机器形式的计算设备102,该计算设备102具有一个或多个处理器104、一个或多个 计算机可读存储介质106和驻留在计算机可读存储介质上并可由处理器104执行的一个或 多个应用108。计算设备102还包括web浏览器110和如以下所描述的那样操作的操作系 统 111。
[0020] 计算设备102可被具体化为任何合适的计算设备,诸如作为示例而非限制,台式 计算机、便携式计算机、手持式计算机(诸如个人数字助理(PDA)、移动电话)、电视机、平板 计算机等等。计算设备102的各个不同示例之一在以下图4和5中示出并描述。
[0021] 应用108可包括任何合适类型的应用。Web浏览器110被配置成经由网络112导 航。虽然网络112被示为因特网,但是该网络可以采用各种各样的配置。例如,网络112可 以包括广域网(WAN)、局域网(LAN)、无线网络、公共电话网和内联网等等。此外,虽然只示 出了单一网络112,但是,网络112可以被配置成包括多个网络。
[0022] 浏览器可被配置成经由网络112导航以与可从一个或多个服务器114(诸如web 服务器)获得的内容交互以及将数据传送给一个或多个服务器114,例如执行下载和上传。 服务器114可被配置成提供一个或多个服务,诸如可经由网络112访问并可由计算设备102 消耗的web服务(也被称为"云服务")。这样的服务的示例包括地图服务、电子邮件、网 页、照片共享站点、社交网络、内容共享服务、媒体流式传输服务、数据检索和/或显示服务 等等。
[0023] 应用108中的一个或多个还可被配置成访问网络112,例如它们直接访问网络和/ 或通过浏览器访问网络。例如,应用108中的一个或多个可被配置成传递消息(诸如电子 邮件、即时消息等)。在更多示例中,例如应用108可被配置成访问社交网络、获得天气更 新、与由web服务器114中的一个或多个实现的书店服务交互、支持文字处理、提供电子表 格功能、支持演示的创建和输出等等。
[0024] 因此,应用108还可被配置用于可涉及直接或间接网络112访问的各种功能。例 如,应用108可包括可由应用108本地地使用并且与在另一计算设备上执行的应用同步的 配置设置和其它数据。以此方式,这些设置可被这些设备共享。也可构想各种其他实例。因 此,计算设备102可按各种方式与来自各个不同源的内容交互。
[0025] 在所示和所描述的实施例中,服务器114各自可支持作为冗余web服务的web服 务。即,每一冗余web服务都是其他web服务的复制或副本。这些web服务可能并且通常 在地理上分布的位置处运行或执行。每一副本服务都能够执行跨所有副本普遍地、相同地 执行的操作。在一个位置处中断的情况下,其他位置处的服务可快速并自动地接管各操作。
[0026] 在一个或多个实施例中,利用分布式协定协议来绑定CRUD型协议绑定以作为状 态机。绑定通过对位于分布有该服务的每一位置处的逆向代理的使用来发生。在至少一些 实施例中,分布式协定协议被实现为Paxos协议或其变型,和/或CRUD型协议包括HTTP协 议,如以下将变得更明显的。
[0027] -般而言,此处描述的任何功能可使用软件、固件、硬件(例如,固定逻辑电路)、 或这些实现的组合来实现。本文使用的术语"模块"、"功能"和"逻辑"一般表示软件、固件、 硬件或其组合。在软件实现的情况下,模块、功能或逻辑表示当在处理器(例如,一个或多 个CPU)上执行时执行指定任务的程序代码。程序代码可被储存在一个或多个计算机可读 存储器设备中。下面所描述的技术的特征是平台无关的,意味着所述技术可以在具有各种 处理器的各种商用计算平台上实现。
[0028] 例如,计算设备102还可包括使得计算设备102的硬件或虚拟机(例如处理器、功 能块等等)执行各操作的实体(例如软件)。例如,计算设备102可包括计算机可读介质, 该计算机可读介质被配置成维护使得计算设备尤其是计算设备102的操作系统和相关联 的硬件执行各操作的指令。因此,这些指令用于配置操作系统和相关联的硬件来执行这些 操作,并以此方式致使操作系统和相关联的硬件变换以执行各功能。这些指令可由计算机 可读介质通过各种不同配置提供给计算设备102。
[0029] -种这样的计算机可读介质配置是信号承载介质,并因此被配置来诸如经由网络 将这些指令(例如,作为载波)传送到计算设备。计算机可读介质还可被配置为计算机可 读存储介质,因此不是信号承载介质。计算机可读存储介质的示例包括:随机存取存储器 (RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器,和可使用磁、光以及用于存储指令和其 他数据的其他技术的其他存储设备。
[0030] 在描述了示例环境后,现在考虑对分布式协定协议(DAP)的讨论以及这样的DAP 可如何与CRUD型协议(诸如,HTTP协议)一起利用以绑定CRUD型协议以作为状态机。
[0031] 分布式协定协议
[0032] 随着信息系统由于如从分布式系统的本质暗示的可缩放性、自主性和容错性等益 处而日益被转换成分布式架构,在这样的分布式系统内维护组织和同步的挑战变得越来越 具挑战性。分布式系统的一个目标是使得用作对等体的每一处理器或节点高效并灵活地就 满足特定协定条件的一个共同值达成协定。
[0033] 可利用分布式协定协议,以便使得分布式系统内的各节点能够以高效的方式就这 样的共同值达成协定。一个这样的分布式协定协议是以下描述的Paxos协议。Paxos协议 可被利用在本文档中描述的各个实施例中。然而,将领会和理解,可以利用其它分布式协定 协议而不背离所要求保护的主题的精神和范围。例如,一个这样的分布式协定协议是查询 /更新(Q/U)协议,如本领域的技术人员将领会的。
[0034] Paxos 协议
[0035] 以下讨论描述了 Paxos协议,该Paxos协议一般仅作为可被利用来绑定CRUD型协 议(例如HTTP)以作为Paxos协议内的状态机的分布式协定协议的一个示例。
[0036] Paxos协议用于实现容错式分布式系统。随后的讨论将应用所获得的Paxos算法 或协议解释为与用于构建分布式系统的状态机方法一致。首先考虑问题的上下文中的一致 性算法。假设可提议值的过程的集合。一致性算法确保所提议值之间的单个值被选择。如 果没有值被提议,则没有值应被选择。如果选择了值,则各过程应当能够获悉所选择的值。 针对一致性的安全性考虑是:(1)仅已提议的值可被选择,(2)仅单个值被选择,以及(3)除 非值实际上已被选择,否则过程永远不会获悉该值已被选择。目标是确保所提议的一些值 最后被选择,并且如果值已被选择,则过程最后可获悉该值。
[0037] -致性算法中的三个角色由以下三个代理类来执行:提议器、接受器和获悉器。在 一实现中,单个过程可充当一个以上的代理。还假设各代理可通过发送消息彼此通信。在 该讨论的上下文中,利用定制的异步、非拜占庭模型,其中(1)各代理以任意速度操作,可 由于停止而失效,并可重启;由于所有代理都可在值被选择后失效并可随后重启,因此除非 已经失效并重启的代理可想起一些信息,否则解决方案是不可能;以及(2)消息可花费任 意长的时间来递送,可被复制,并且可被丢失,但这些消息不会被破坏。
[0038] 现在考虑选择值的概念。选择值的最容易的方式是具有单个接受器代理。提议器 向接受器发送提议,接受器选择它接收到的第一个所提议的值。虽然简单,但该解决方案并 不令人满意,因为接受器的失效使得任何进一步进展变得不可能。取代单个接受器,可使用 多个接受器代理。提议器向接受器集合发送所提议的值。接受器可接受所提议的值。当足 够大的接受器集合接受值时,该值被选择。多大为足够大呢?为了确保仅单个值被选择,可 令足够大的集合由这些代理中的任何多数代理组成。由于任何两个多数代理具有至少一 个共有的接受器,因此这在接受器可接受最多一个值的情况下起作用。在没有失效或消息 丢失的情况下,希望即使在仅一个值被单个提议器提议的情况下仍选择值。这提出以下要 求:
[0039] P1.接受器必须接受它接收的第一提议。
[0040] 然而,这要求提出了问题。若干值可由不同的提议器在大约相同的时间提议,从而 导致其中每一个接受器接受了一个值但是没有单个值被这些接受器中的大多数接受的情 况。即使仅具有两个所提议的值,如果每一值被大约一半这些接受器接受,则单个接受器的 失效可使得无法获悉这两个值中的哪个值被选择。
[0041] P1和值仅在它被大多数接受器接受时才被选择的要求暗示必须允许接受器接受 一个以上提议。为了允许这个,通过以下方式来跟踪接受器可接受的不同提议:向每一提议 分配(自然)编号,使得提议由所提议的编号和值组成。为了防止混淆,要求不同的提议具 有不同的编号。这如何达成取决于该实现,使得出于讨论的目的现在仅对其作出假定。值 在具有该值的单个提议已被这些接受器中的大多数接受时被选择。在那个情况下,表示该 提议(以及其值)已被选择。
[0042] 可允许多个提议被选择,但必须保证所有所选择的提议具有相同的值。通过对提 议编号的归纳,它足以保证:
[0043] P2.如果选择了具有值v的提议,则所选的每一个带更高编号的提议均具有值V。
[0044] 由于各编号全部被排序,因此条件P2保证了仅单个值被选择的安全属性。
[0045] 为了被选择,提议必须被至少一个接受器接受。因此,可通过满足以下来满足P2 : P2a。
[0046] 如果选择了具有值v的提议,则任何接受器所接受的每一个带更高编号的提议均 具有值V。
[0047] 仍维护P1以确保某个提议被选择。由于通信是异步的,因此提议可在某个特定接 受器c从未接收到任何提议的情况下被选择。假设一新提议器"苏醒",并且发出具有不同 值的带更高编号的提议。P1要求c接受该提议,而违反P2 a。维护P1和P2a两者要求将P2a 加强为:P2b。
[0048] 如果选择了具有值v的提议,则任何提议器所发出的每一个带更高编号的提议均 具有值V。
[0049] 由于提议必定由提议器在该提议可被接受器接受之前发出,因此P2b暗示了 P2a, P2a进而暗示了 P2。
[0050] 为了发现如何满足P2b,考虑将如何证明它有效。将假定具有编号m和值V的某个 提议被选择,并示出所发出的具有编号n>m的任何提议也具有值V。通过以下将使得该证 明更容易:使用对η的归纳,使得在所发出的具有m. .. (n-1)中的编号的每一提议具有值v 的附加假定下,可以证明提议编号η具有值V,其中i. . j表示从i到j的编号的集合。在带 编号m的提议被选择的情况下,必定存在由大多数接受器组成的某一集合C,使得C中的每 一接受器均接受该提议。将此与归纳假定组合,m被选择的假设暗示:
[0051] C中的每一接受器已接受了具有m. . (η-I)中的编号的提议,并且被任何接受器接 受的具有m.. (η-I)中的编号的每一提议均具有值V。
[0052] 由于由大多数接受器组成的任何集合S均包含C的至少一个成员,通过确保以下 不变量被维护可推断出带编号η的提议具有值v :Ρ2、
[0053] 对于任何ν和η,如果具有值ν和编号η的提议被发出,则存在由大多数接受器组 成的集合S,使得要么(a)S中的接受器都不接受带小于η的编号的任何提议,要么(b)v是 被S中的接受器接受的带小于η的编号的所有提议中带最高编号的提议的值。
[0054] 可因此通过维护不变量Ρ2ε来满足P2b。
[0055] 为了维护不变量P2e,想要发出带编号η的提议的提议器必须获悉已被或者将被一 些大多数接受器中的每一接受器接受的、具有小于η的编号的带最高编号的提议(如果存 在任何的话)。获悉已经被接受的提议足够容易;从而预测将来的接受是困难的。取代尝 试预测将来,提议器通过提取将不存在任何这样接受的承诺来对其进行控制。换言之,提议 器请求接受器不再接受带小于η的编号的提议。这导致用于发出提议的以下算法。
[0056] 1.提议器选择新提议编号η,并向某一接受器集合中的每一成员发送请求,以请 求它用以下来作出响应:
[0057] (a)永远都不会再接受带少于η的编号的提议的承诺,以及
[0058] (b)它已经接受的、具有小于η的最高编号的提议(如果有的话)。
[0059] 这样的请求被称为具有编号η的"准备请求"。
[0060] 2.如果提议器从大多数接受器中接收了所请求的响应,则该提议器可发出具有编 号η和值ν的提议,其中ν是这些响应中带最高编号的提议的值,或者在响应器没有报告提 议的情况下是提议器所选择的任何值。
[0061] 提议器通过向某一接受器集合发送提议被接受的请求来发出该提议。(该接受器 集合不需要是对初始请求作出响应的相同的接受器集合。)该请求将被称为接受请求。
[0062] 接受器可从提议器接收两种类型的请求:准备请求和接受请求。接受器可忽略任 何请求,而不危及安全。因此,需要声明这仅在接受器被允许对请求作出响应时才行。它可 能总对准备请求作出响应。它可对接受请求作出响应,从而接受该提议(仅在它尚未承诺 不接受提议的情况下)。换言之:
[0063] Pla.仅在接受器尚未对具有大于η的编号的准备请求作出响应的情况下,该接受 器可接受带编号η的提议。
[0064] 观察到ΡΓ包含Ρ1。现在具有用于选择满足所要求的安全属性(假设唯一的提议 编号)的值的完整算法。最后的算法通过作出一个小优化来获得。假设接受器接收了带编 号η的准备请求,但它已经对带大于η的编号的准备请求作出了响应,由此承诺不接受任何 新的带编号η的提议。因此不存在接受器对新的准备请求作出响应的任何理由,因为它将 不会接受该提议器想要发出的带编号η的提议。因此使该接受器忽略这样的准备请求。还 使该接受器忽略针对该接受器已经接受的提议的准备请求。
[0065] 通过该优化,接受器仅需要记住该接受器曾经接受过的带最高编号的提议,以及 该接受器已作出过响应的带最高编号的准备请求的编号。由于P2e必须保持不变而不管失 效,因此接受器必须记住该信息,即使它失效并随后重启。注意提议器可能总是放弃提议并 完全忘记它--只要该提议器永远不尝试发出具有相同编号的另一提议。
[0066] 将提议器和接受器的动作放在一起,可明白该算法在以下两个阶段中操作。
[0067] 阶段 1
[0068] (a)提议器选择提议编号n,并将具有编号η的准备请求发送给大多数接受器。
[0069] (b)如果接受器接收到具有比该接受器已经作出响应的任何准备请求的编号更大 的编号η的准备请求,则该接受器用不再接受任何带少于η的编号的提议的承诺以及该接 受器已经接受的带最高编号的提议(如果有的话)对该请求作出响应。
[0070]阶段 2
[0071] (a)如果提议器从大多数接受器接收到对其准备请求(带编号η)的响应,则该提 议器向这些接受器中的每一个发送对具有值ν的带编号η的提议的接受请求,其中ν是这 些响应中带最高编号的提议的值,或者在这些响应没有报告提议的情况下是任何值。
[0072] (b)如果接受器接收到了对带编号η的提议的接受请求,则该接受器接受该提议, 除非该接受器已经对具有大于η的编号的准备请求作出了响应。
[0073] 提议器可作出多个提议,只要该提议器遵循每一个提议的算法。它可在任何时间 放弃处于协议中间的提议。即使对提议的请求和/或响应在该提议被放弃了很长时间之后 才可到达其目的地,正确性仍被维护。如果某一提议器已开始尝试发出带更高编号的提议, 则放弃提议可能是个好注意。因此,如果接受器忽略了准备请求或接受请求,因为该接受器 已经接收到了具有更高编号的准备请求,则该接受器应可能通知提议器,该提议器随后应 放弃其提议。这是不影响正确性的性能优化。
[0074] 现在考虑获悉所选择的值的概念。为了获悉值已被选择,则获悉器查明提议已被 大多数接受器接受。实现这个的一种方式是使得每一接受器在无论何时它接受了一提议时 都对所有获悉器作出响应,从而向它们发送该提议。这允许获悉器一有可能就查明关于所 选的值的情况,但这要求每一接受器对每一获悉器都作出响应--响应的数目等于接受器 的数目和获悉器的数目的积。
[0075] 非拜占庭失效的假定使得一个获悉器可容易地从另一获悉器查明值已被接受。可 使各接受器通过其接受来对区别获悉器作出响应,该区别获悉器转而向其他获悉器通知已 在何时选择了值。该方法要求额外的循环以供所有这些获悉器发现所选的值。它也较不可 靠,因为区别获悉器可能失效。但它要求响应的数目仅等于接受器的数目和获悉器的数目 的和。
[0076] 更一般地,接受器可用其接受对区别获悉器的某一集合作出响应,这些区别获悉 器中的每一个向所有这些获悉器通知何时选择了值。使用越大的区别获悉器集合会以越大 的通信复杂性为代价提供越大的可靠性。
[0077] 由于消息丢失,可选择获悉器都不曾查明的值。获悉器可询问接受器它们已接受 了什么提议,但接受器的失效可使得它不可能知道是否大多数都接受了特定提议。在那个 情况下,各获悉器将仅在选择了新提议时查明会选择什么值。如果获悉器需要知道是否选 择了值,它可使用以上描述的算法使提议器发出提议。
[0078] 现考虑进展的问题以及如何保证算法的进展以多产的方式继续。考虑其中两个提 议器各自保持以增加的编号(这些编号中没有一个编号曾被选择)发出提议序列的场景。 提议器P对提议编号1^完成阶段1。另一提议器q随后对提议编号11 2>111完成阶段1。针 对带编号^的提议的提议器p的阶段2接受请求被忽略,因为这些接受器全部都已承诺不 接受带小于n 2的编号的任何新提议。因此,提议器p随后开始并完成针对新提议编号n3>n2 的阶段1,从而导致提议器q的第二阶段2接受请求将被忽略,并以此类推。
[0079] 为了保证进展,区别提议器被选作尝试发出提议的唯一提议器。如果该区别提议 器可成功地与大多数接受器进行通信,并且如果它使用具有大于任何已使用的编号的提 议,则它将成功发出被接受的提议。通过在它获悉具有较高提议编号的某请求的情况下放 弃提议并再次尝试,区别提议器将最终选择足够高的提议编号。
[0080] 如果该系统的足够部分(提议器、接受器和通信网络)合适地工作,则活跃度可因 此通过选取单个区别提议器来实现。用于选取提议器的可靠算法可随机使用或例如通过使 用超时来实时使用。然而,
[0081] 安全被确保,而不管该选取是成功还是失败。
[0082] 现在考虑一些实现问题。Paxos算法假定过程网络。在其一致性算法中,每一过程 扮演提议器、接受器和获悉器的角色。该算法选择领导者,该领导者扮演区别提议器和区别 获悉器的角色。Paxos -致性算法是以上描述的算法,其中各请求和响应被作为普通消息来 发送。响应消息标有相应的提议编号以防止混淆。在失效期间保存的稳定存储被用于维护 接受器将记住的信息。接受器在实际上发送响应之前将其预期响应记录在稳定存储中。 [0083] 剩下的所有部分将描述用于保证不曾发出具有相同编号的两个提议的机制。不同 的提议器从不相交的编号集合中选择其编号,使得两个不同的提议器永远都不会发出具有 相同编号的提议。每一提议器在稳定存储中记录它尝试发出过的带最高编号的提议,并用 比它已经使用过的任何编号高的提议编号开始阶段1。
[0084] 现在对照Paxos算法的背景考虑状态机的实现。
[0085] 实现分布式系统的一种方式是作为向中央服务器发出命令的客户机集合。该服务 器可被描述成以某一顺序执行客户机命令的确定性状态机。状态机具有当前状态;它通过 将命令取作输入并产生输出和新状态来执行步骤。例如,分布式银行系统的客户机可以是 提款机,并且该状态机状态可由所有用户的账户余额组成。取款将通过以下方式来执行:仅 在账户余额大于提取的量的情况下,执行减少该余额的状态机命令,从而产生原来的余额 和新的余额作为输出。使用单个中央服务器的实现在该服务器失效的情况下失效。
[0086] 因此改为使用服务器集合,每一服务器独立地实现状态机。由于状态机是确定性 的,因此所有服务器都将产生相同的状态序列和输出,如果它们全部执行相同的命令序列 的话。发出命令的客户机随后可使用任何服务器针对其生成的输出。
[0087] 为了保证所有服务器都执行相同的状态机命令序列,实现Paxos -致性算法的各 单独实例的序列,由第i个实例选择的值是该序列中的第i个状态机命令。每一服务器在 该算法的每一实例中扮演全部角色(提议器、接受器和获悉器)。出于该示例的目的,假定 该服务器集合是固定的,使得一致性算法的所有实例使用相同的代理集合。
[0088] 在常规操作时,单个服务器被选作领导者,其在一致性算法的所有实例中都充当 区别提议器(即,尝试发出提议的唯一提议器)。客户机向领导者发送命令,该领导者判定 在该序列中每一命令应出现在哪里。如果领导者判定某一客户机命令应该是第135条命 令,则它尝试使得那个命令被选作该一致性算法的第135个实例的值。它通常都将成功。它 可能因为失效,或者因为另一服务器相信它自己也是领导者并且对第135条命令应当是什 么具有不同的主意,而失败。但是该一致性算法确保至多一条命令可被选为第135条命令。
[0089] 在Paxos -致性算法中,这个方法的效率被增强了,因为要提议的值直到阶段2才 会被选择。回想在完成了提议器的算法的阶段1后,要么要提议的值被确定,要么提议器自 由地提议任何值。
[0090] 现考虑Paxos状态机实现在常规操作期间如何工作。考虑在先前领导者刚刚失效 且新领导者已被选择时会发生什么。新领导者(在该一致性算法的所有实例中都是获悉 器)应该知道已经被选择的大多数命令。假设该新领导者知道命令1-134U38和139--即 在该一致性算法的实例1-134、138和139中所选择的值。该新领导者随后执行实例135-137 以及大于139的所有实例的阶段1。假设这些执行的结果确定实例135和140中要提议的 值,但使得所提议的值在所有其他实例中不受约束。该领导者随后针对实例135和140执 行阶段2,由此选择命令135和140。
[0091] 领导者以及获悉该领导者所知道的所有命令的任何其他服务器现在可执行命令 1-135。然而,该领导者无法执行它也知道的命令138-140,因为命令136和137尚未被选 择。该领导者可取客户机所请求的下两条命令来作为命令136和137。相反,令它通过提议 使得状态保持不变的特殊"noop (空操作)"命令作为命令136和137来立即填充间隙。它 通过执行一致性算法的实例136和137的阶段2来实现这个。一旦选择了这些"noop"命 令,就可执行命令138-140。
[0092] 命令1-140现在已被选择。领导者也完成了大于该一致性算法的140的所有实例 的阶段1,并且该领导者在那些实例的阶段2中自由地提议任何值。领导者将命令编号141 分配给客户机所请求的下一命令,从而在该一致性算法的实例141的阶段2中提议该下一 命令作为值。领导者提议它所接收的下一客户机命令作为命令142,并以此类推。
[0093] 领导者可在它获悉它所提议的命令141已被选择之前提议命令142。领导者在提 议命令141时发送的所有这些消息都被丢失,并且命令142在任何其他服务器已获悉领导 者提议了什么作为命令141之前被选择是可能的。
[0094] 当领导者没能接收到对其在实例141中的阶段2消息的预期响应时,该领导者将 重新传输那些消息。如果一切顺利,其所提议的命令将被选择。然而,它可能先失效,从而 在所选命令序列中留下间隙。一般来说,假设领导者可提前获得α条命令一即,在命令 1到i被选择后,它可提议命令i+Ι到i+α。随后可引起最多α -1条命令的间隙。
[0095] 新选择的领导者为一致性算法的无限多实例(在以上场景中,为实例135-137以 及大于139的所有实例)执行阶段1。通过对所有实例使用相同的提议编号,它可通过向其 他服务器发送单个相当短的消息来实现这个。在阶段1,接受器仅在它已经从某一提议器接 收到了阶段2消息的情况下才用不止简单0K的消息来作出响应。在该场景中,仅实例135 和140是这种情况。因此,服务器(充当接受器)可用单个相当短的消息来对所有实例作 出响应。执行阶段1的这些无限多实例因此没有提出问题。
[0096] 由于领导者的失效以及对新领导者的选取应当是不常发生的事件,因此执行状态 机命令(即实现关于命令/值的一致性)的效率成本是仅执行一致性算法的阶段2的成本。 可示出,Paxos -致性算法的阶段2在用于在出现错误时达成协定的任何算法中具有最少 的可能成本。因此,Paxos算法在本质上是最优的。
[0097] 对该系统的常规操作的讨论假定除了在当前领导者的失效以及新领导者的选取 之间的短暂时段以外,总存在单个领导者。在异常环境中,领导者选取可失败。如果没有 服务器充当领导者,则将不提议新命令。如果多个服务器认为它们是领导者,则它们可在 该一致性算法的同一实例中全部都提议值,这可防止任何值被选择。然而,安全性得到了保 持--两个不同的服务器永远都不会不同意被选为第i个状态机命令的值。对单个领导者 的选取仅被需要来确保进展。
[0098] 如果服务器集合可改变,则必须存在确定什么服务器实现一致性算法的什么实例 的某种方式。实现这个的最简单的方式是通过状态机本身。服务器的当前集合可变成该状 态的一部分,并可随普通状态机命令而改变。通过在执行了第i条状态机命令后依据状态 来指定执行一致性算法的实例i+α的服务器集合可允许领导者提前获得α条命令。这准 许任意复杂重配置算法的简单实现。
[0099] 以上讨论构成了对可如何利用Paxos算法来实现容错分布式系统的描述。Paxos 协议包括可结合本文中描述的实施例来利用的其他家族成员或变型。这些其他家族成员包 括(作为示例而非限制)所谓的多Paxos、廉价Paxos、快速Paxos和拜占庭Paxos。这些其 他家族成员可在以下描述的各个实施例中利用。
[0100] 在讨论了分布式协定协议,并给出了特定协议的示例(即,Paxos协议及其相关的 家族成员)后,现在考虑对CRUD (创建、阅读、更新、删除)协议并且特别是超文本传输协议 (HTTP)的简短讨论。
[0101] 何括HTTP的CRUD协议
[0102] CRUD(创建、阅读、更新、删除)协议指的是允许创建、阅读、更新和删除资源的协 议族。CRUD协议的一个类型是超文本传输协议(HTTP)。超文本传输协议(HTTP)是用于分 布式、协作、超媒体信息系统的应用协议,并且是用于万维网的数据通信基础。
[0103] HTTP用作客户机-服务器计算模型中的请求-响应协议。在HTTP中,web浏览器 例如充当客户机,而在托管网站的计算机上运行的应用用作服务器。客户机将HTTP请求消 息提交给服务器。存储内容或提供资源(诸如HTML文件)或代表客户机进行执行的服务 器向客户机返回响应消息。响应包含关于该请求的完成状态信息并可在其消息主体中包含 客户机所请求的任何内容。
[0104] web浏览器(或客户机)通常被称为用户代理(UA)。其他用户代理可包括搜索提 供者(已知为web爬行器)所使用的索引软件,或web浏览器的变型,诸如呈现交互式语音 用户界面的语音浏览器。
[0105] HTTP是被设计在因特网协议套件的框架内的应用层协议。该协议定义假定用于主 机到主机数据传输的可靠传输层协议。传输控制协议(TCP)是使用中的用于这个目的的主 要协议。然而,HTTP可以与诸如用户数据报协议(UDP)的其他协议和诸如简单服务发现协 议(SSDP)的方法一起使用。
[0106] HTTP资源由统一资源标识符(URI)--或者,更具体地,统一资源定位符 (URL)--使用一个或多个http URI模式来标识并被位于网络上。URI和超文本标记语言 (HTML)形成因特网上的相互链接的资源(被称为超文本文档)的系统。
[0107] HTTP会话是网络请求-响应事务的序列。HTTP客户机通过建立到服务器上的特 定端口的传输控制协议(TCP)连接来发起请求。监听那个端口的HTTP服务器等待客户机 的请求消息。在接收到该请求后,服务器发送回状态行(诸如HTTP/200"0K")及其自己的 消息。该消息的主体通常为所请求的资源,但是错误消息或其他信息也可被返回。
[0108] HTTP定义指示要对所标识的资源执行的期望动作的九种方法(有时被称为"动 词")。该资源表示什么(是预先存在的数据还是动态生成的数据)取决于服务器的实现。 通常,该资源对应于文件或驻留在服务器上的可执行指令的输出。
[0109]
【权利要求】
1. 一种计算机实现的方法,包括: 接收预期用于具有REST特性的web服务器的通信,所述通信与要由具有REST特性的 web服务器所实现的web服务来执行的操作相关联; 响应于所述接收,发起与一个或多个节点的分布式协定协议; 利用所述分布式协定协议来在所述节点之间达到相对于所述操作的一致性;以及 启用对所述操作的执行。
2. 如权利要求1所述的方法,其特征在于,每一节点对应于实现所述web服务的不同的 具有REST特性的web服务器。
3. 如权利要求1所述的方法,其特征在于,每一节点对应于实现所述web服务的位于不 同地理的具有REST特性的web服务器。
4. 如权利要求1所述的方法,其特征在于,所述操作包括CRUD型操作或HTTP操作之 〇
5. 如权利要求1所述的方法,其特征在于,所述分布式协定协议包括Paxos协议。
6. 如权利要求1所述的方法,其特征在于,所述接收由逆向代理组件执行。
7. 如权利要求1所述的方法,其特征在于,所述操作包括HTTP操作,且所述分布式协定 协议包括Paxos协议。
8. -个或多个包括计算机可读指令的计算机可读存储介质,所述指令在被执行时实现 一种方法,所述方法包括: 接收预期用于REST特性的web服务器的通信,所述通信与要由具有REST特性的web 服务器所实现的web服务来执行的操作相关联; 响应于所述接收,发起与一个或多个节点的分布式协定协议,每一节点对应于实现所 述web服务的不同的具有REST特性的web服务器;以及 利用所述分布式协定协议来在所述节点之间达到相对于所述操作的一致性;以及 启用对所述操作的执行。
9. 如权利要求8所述的一个或多个计算机可读存储介质,其中所述操作包括CRUD型操 作,并且所述分布式协定协议包括Paxos协议。
10. 如权利要求8所述的一个或多个计算机可读存储介质,其中所述操作包括HTTP操 作,并且所述分布式协定协议包括Paxos协议。
【文档编号】H04L29/08GK104247380SQ201380020950
【公开日】2014年12月24日 申请日期:2013年4月15日 优先权日:2012年4月20日
【发明者】D·E·兰沃西, J·P·休丘卡, W·L·波特诺依 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1