CN105283838B - 云计算环境中的分布式锁管理 - Google Patents

云计算环境中的分布式锁管理 Download PDF

Info

Publication number
CN105283838B
CN105283838B CN201480033024.5A CN201480033024A CN105283838B CN 105283838 B CN105283838 B CN 105283838B CN 201480033024 A CN201480033024 A CN 201480033024A CN 105283838 B CN105283838 B CN 105283838B
Authority
CN
China
Prior art keywords
lock
network
distributed
client
dlm
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.)
Active
Application number
CN201480033024.5A
Other languages
English (en)
Other versions
CN105283838A (zh
Inventor
G·O·詹金斯
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies 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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN105283838A publication Critical patent/CN105283838A/zh
Application granted granted Critical
Publication of CN105283838B publication Critical patent/CN105283838B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Abstract

分布式锁管理器(DLM)可以在向客户端提供虚拟化计算资源和/或虚拟计算服务的分布式计算系统中实现。响应于来自客户端的相应请求,可以由所述DLM创建并管理锁。所述DLM的组件可以通过除了客户端应用组件借以彼此通信或存取由所述锁保护的共享资源的网络外的网络来彼此通信。例如,DLM组件可以通过云计算环境的控制平面网络来通信,而应用组件可以通过所述云计算环境的数据平面网络来通信。所述DLM可以将API呈现给客户端,允许它们对同一节点上的DLM组件进行本地调用以进行各种锁管理操作。锁值的含义可以通过它们在客户端应用中的使用来确定。

Description

云计算环境中的分布式锁管理
背景技术
许多公司和其它组织运营将众多计算系统互连以支持它们的操作的计算机网络,例如具有位于同一处的计算系统(例如,作为局域网的部分)或改为位于多个不同地理位置中的计算系统(例如,经由一个或多个专用或公用中间网络连接)。例如,容纳大量互连的计算系统的数据中心已变得很平常,例如由并代表单个组织运营的专用数据中心和当作生意向顾客或客户端提供计算资源的、由多个实体运营的公用数据中心。一些公用数据中心运营商为各种客户端拥有的硬件提供网络接入、电源和安全安装设施,而其它公用数据中心运营商提供还包括可供其客户端使用的硬件资源的“全服务”设施。然而,随着典型数据中心的规模和范围不断增加,准备、管控和管理物理计算资源的任务变得日益复杂。
用于商品硬件的虚拟化技术的出现提供了为具有不同需要的许多客户端管理大规模计算资源方面的好处,从而允许各种计算资源被多个客户端有效且安全地共享。例如,虚拟化技术可以通过为每一用户提供由单个物理计算机器托管的一个或多个虚拟机来允许所述单个物理计算机器在多个用户之间共享,其中每一此类虚拟机是充当不同逻辑计算系统的软件模拟,这样向用户提供他们是给定硬件计算资源的唯一操作者和管理员的错觉,同时还在各个虚拟机之间提供应用隔离和安全性。此外,一些虚拟化技术能够提供跨越两个或两个以上物理资源的虚拟资源,例如具有跨越多个不同物理计算系统的多个虚拟处理器的单个虚拟机。作为另一实例,虚拟化技术可以通过为每一用户提供虚拟化数据存储区来允许数据存储硬件在多个用户之间共享,所述虚拟化数据存储区可以分布在多个数据存储装置中,其中每一此类虚拟化数据存储区充当不同的逻辑数据存储区,这样向用户提供他们是数据存储资源的唯一操作者和管理员的错觉。
在支持分布式计算的一些系统中,分布式应用的应用组件或进程可以(不时地)存取各种类型的共享资源。在一些此类系统中,使用分布式锁管理器来控制和/或同步对那些共享资源的存取。
附图说明
图1是示出了用于在提供虚拟计算系统的分布式计算系统中提供分布式锁管理器的方法的一个实施方案的流程图。
图2是示出了根据至少一些实施方案的示例提供商网络环境的框图。
图3是示出了根据一些实施方案的示例数据中心的框图。
图4是示出了根据一些实施方案的在控制平面中实现分布式锁管理器的示例数据中心的框图。
图5是示出了用于在提供虚拟化资源的分布式计算系统中实现分布式锁管理器的方法的一个实施方案的流程图。
图6是示出了用于使客户端应用或进程存取在云计算环境中实现的分布式锁管理器的功能性的方法的一个实施方案的流程图。
图7是示出了根据一些实施方案的示例数据中心的框图,所述示例数据中心在控制平面中实现分布式锁管理器并且将所述分布式锁管理器呈现给在其环境外部执行的进程。
图8是示出了用于使在云计算环境外部执行的客户端应用或进程存取在云计算环境中实现的分布式锁管理器的功能性的方法的一个实施方案的流程图。
图9是示出了根据不同实施方案的实现本文所描述的一些或全部技术的示例计算机系统的框图。
虽然本文中通过举出若干实施方案和示意图来描述实施方案,但是本领域的技术人员将认识到实施方案不限于所描述的实施方案或图。应理解,所述图和其详细描述不希望将实施方案限于所公开的特定形式,而是相反地,希望涵盖属于如由所附权利要求书界定的精神和范围内的所有修改、等效物和替代物。本文中所使用的标题仅用于组织目的并且没有打算用以限制说明书或权利要求书的范围。如贯穿本申请所使用,词语“可以”是在许可意义(即,表示有可能)而非强制性意义(即,表示必须)上使用。类似地,词语“包括”、“包括了”和“包括有”表示包括但不限于。
具体实施方式
本文描述了用于在向客户端提供虚拟化计算资源的系统中实现分布式锁管理的系统和方法的各种实施方案。在一些实施方案中,分布式锁管理器(DLM)的组件可以通过与另一网络(或网络的部分)在物理上或逻辑上不同的网络(或网络的部分)来彼此通信以管理共享资源的锁,其中存取所述共享资源的分布式应用的应用组件通过所述另一网络来彼此通信和/或与所述共享资源通信。例如,在一些实施方案中,DLM组件可以通过云计算环境的控制平面网络来彼此通信,而分布式应用的应用组件可以通过云计算环境的数据平面网络来彼此通信和/或与共享资源通信。在一些实施方案中,除了呈现给在云计算环境内执行的客户端应用(或其组件)外,应用编程接口(API)还可以呈现给在云计算环境外执行的客户端应用(或其组件)。在此类实施方案中,客户端应用(或其组件)中的任一者都可以加入到DLM的锁定机制中(例如,以开始对用于那些客户端应用共享的资源的锁的锁管理操作)。
应指出,在群集环境(例如实现分布式应用和/或向客户端应用提供虚拟化计算资源的群集环境)中,在资源之间可能有不同的共享等级。这些系统可以实现各种机制来管理需要到处移动(例如,响应于计算节点的故障或在其它失效转移的情形中)的资源。例如,在其中十个虚拟化实例是在虚拟专用云(VPC)内执行的系统中,有时可能会希望在不同实例之间移动网络接口(例如,弹性网络接口或ENI,或另一类型的虚拟网络接口)(例如,使它与一个实例断开连接并重新连接至另一实例)。
一些现有的系统使用分布式锁管理器来控制和同步对共享资源的存取,但这些系统通常需要网络连接性。例如,一些群集技术使用网络作为用于DLM的互连机制,所述DLM用以管理群集使用的锁。在各种实施方案中,本文所描述的系统可以实现不需要此类网络连接性的分布式锁管理器(DLM)。而是,可以在云计算环境的控制平面中实现DLM,并且可以使用各种API调用由在云计算环境中的资源实例上执行的分布式应用来存取DLM(例如,以便管理可以由那些分布式应用存取的资源的一个或多个锁)。在一些实施方案中,例如,在顾客想让他们的应用与其它应用隔离(即,其它应用或顾客不可见和/或在与其它应用不同的虚拟机上运行)时,分布式应用的应用组件在上面执行的资源实例可以被配置为虚拟专用云(VPC)。在一些实施方案中,可以向在虚拟专用云中执行的每一虚拟机给予它自己的专用IP地址。在一些实施方案中,可以选择这些专用IP地址(它们也可以被称为“虚拟专用IP地址”),使得它们不与客户端自己的专用网络中的任何IP地址重叠。在一些实施方案中,VPC内的资源实例可以使用公用服务API向DLM发送服务请求,而在其它实施方案中,VPC内的资源实例可以使用专用服务API向DLM发送服务请求。
由于群集系统通常包括至少一些共享资源,因此DLM在这些环境中可能是非常有用的。如上所述,分布式锁管理器可以由分布式应用用来控制和/或同步对各种类型的共享资源的存取。在各种实施方案中,锁可以与任何类型的资源(例如,磁盘卷、ENI或另一类型的虚拟网络接口、数据库行或文件)或者一般来说是多个进程对它的访问应进行控制的任何实体(例如,包括应用组件或资源实例)相关联。
在一些实施方案中,DLM可以实现具有任意数目的等级的锁定层级,使得可以锁定个别资源/实体,或者可以锁定资源/实体的集合(例如,包括两个或两个以上“子”资源的“父”资源)。在一些实施方案中,在可以获得较低等级的资源(例如,子资源)的锁之前,必须获得较高等级的资源(例如,父资源)的锁。
在各种实施方案中,本文所描述的分布式锁管理器可以支持多种锁模式,其中每一者可以指示相关联的资源/实体(或它的锁)的共享性质。例如,在不同实施方案中,可以支持以下锁模式中的任一者或全部:
·空锁模式,所述模式允许持有处于此模式的锁的进程表达对相关联的共享资源的兴趣,但并不阻止所述进程或其它进程对相关联的共享资源的任何存取
·并发读取锁模式,所述模式允许所述进程读取(但不修改)相关联的共享资源并允许其它进程读取或修改相关联的共享资源,但所述模式阻止对相关联的共享资源的独占存取
·并发写入锁模式,所述模式允许所述进程读取或修改相关联的共享资源并允许其它进程读取或修改相关联的共享资源,但所述模式阻止对相关联的共享资源的独占存取
·受保护的读取锁模式,所述模式允许所述进程读取(但不修改)相关联的共享资源并允许其它进程读取(但不修改)相关联的共享资源
·受保护的写入锁模式,所述模式允许所述进程读取或修改相关联的共享资源并允许具有并发读取存取的其它进程读取(但不修改)相关联的共享资源
·独占锁模式,所述模式允许所述进程读取或修改相关联的共享资源,但所述模式阻止其它进程对相关联的共享资源的任何存取
在一些实施方案中,获得(获取)共享资源的锁可以包括(例如,向DLM的组件)传送获得所述锁的请求和/或入队等待所述锁(例如,将发出请求的进程的指示符加入到等待获得/获取所述锁的进程的队列中)。在不同实施方案中,锁请求可以是同步的(例如,所述进程可以等待锁被给予)或异步的(例如,所述进程可以继续进行不需要所述锁的其它操作,但是如果锁被给予那么所述进程可能会中断)。
在一些实施方案中,锁数据结构(或由DLM创建和/或管理的锁的其它表示)可以包括锁值,所述锁值的含义可以通过它在应用中的使用来确定。在一些此类实施方案中,DLM可能不知道(或不需要知道)锁值的含义是什么。在一些实施方案中,锁值可以识别拥有与锁相关联的共享资源的进程或应用。在一些实施方案中,锁值可以是代表用于锁或用于相关联的共享资源的版本标识符的单调递增的值。在一些实施方案中,在存取共享资源之前,进程(或应用)可以读取相关联的锁的值。如果自从进程(或应用)上次获得锁以来值都没有改变,那么所述进程(或应用)可能知道自从所述进程(或应用)上次存取共享资源以来所述共享资源都没有被另一进程(或应用)修改。在一些实施方案中,本文所描述的DLM可以支持或提供死锁检测。
如前所述,在一些实施方案中,DLM可以在分布式计算环境(例如,向客户端提供虚拟化计算资源和/或虚拟计算服务的云计算环境)中以使得DLM组件通过控制平面网络(例如,使用除了分配给在云中执行的客户端应用外的网络连接性或吞吐量)彼此通信的方式来实现。在此类实施方案中,DLM组件之间的通信可能不会消耗打算给客户端应用使用的网络资源或可能不会以其它方式干扰客户端应用的组件之间的通信。
在不同实施方案中,本文所描述的系统和方法可以在网络环境内的一个或多个计算系统上或由网络环境内的一个或多个计算系统实现。本文所描述的分布式锁管理器的实施方案可以在上面实现的示例计算机系统示出于图9中。用于实现这些分布式锁管理器的各种系统和方法的实施方案在本文中是在服务提供商的背景中大体描述,所述服务提供商经由中间网络(例如因特网)向客户端提供在服务提供商的提供商网络上实现的虚拟化资源(例如,虚拟化计算和存储资源)。图2至图4、图7和图9(以及其对应描述)示出和描述了在其中可以实现本文所描述的系统和方法的实施方案的示例环境,并且不打算是限制性的。在至少一些实施方案中,经由提供商网络提供给服务提供商的客户端的至少一些资源可以是在与其它客户端共享的多租户硬件上和/或在专用于特定客户端的硬件上实现的虚拟化计算资源。每一虚拟化计算资源可以被称为资源实例。资源实例可以(例如)出租或租赁给服务提供商的客户端。例如,服务提供商的客户端可以经由至提供商网络的一个或多个服务的API来存取所述服务,以获得并配置资源实例以及建立和管理包括所述资源实例的虚拟网络配置(例如虚拟化专用网络)。
在一些实施方案中,可以(例如)根据硬件虚拟化技术来实现资源实例,所述硬件虚拟化技术使多个操作系统能够在主机计算机上同时运行,即,作为主机上的虚拟机(VM)。主机上的管理程序或虚拟机监视器(VMM)可以向主机上的VM呈现虚拟平台并监视VM的执行。每一VM可以具有一个或多个专用IP地址;主机上的VMM可能知道主机上的VM的专用IP地址。采用此类硬件虚拟化技术的系统的实例示出于图3中并且在下文进行详细描述。
在一些实施方案中,VMM可以使用因特网协议(IP)隧道技术来封装客户端数据包并通过网络底层在提供商网络内的不同主机上的客户端资源实例之间路由所述客户端数据包。提供商网络可以包括物理网络底层,所述物理网络底层包括联网装置(例如路由器、交换机、网络地址转换器(NAT)等等)以及所述装置之间的物理连接。提供商网络可以采用IP隧道技术来提供覆盖网络,经由所述覆盖网络,可以通过网络底层经由隧道或覆盖网络路由来传递经封装的包(也就是说,已标记有覆盖网络元数据以便在覆盖网络上进行路由的客户端包,所述元数据包括但不限于覆盖网络地址信息)。IP隧道技术可以提供用于在网络底层上创建覆盖网络的映射和封装系统,并且可以为覆盖网络层(公用IP地址)和网络底层层(专用IP地址)提供单独的命名空间。在至少一些实施方案中,可以对照映射目录来检查覆盖网络层中的经封装的包,以确定它们的隧道底层目标(专用IP地址)应当是什么。IP隧道技术可以提供覆盖在物理网络底层上的虚拟网络拓扑;向客户端呈现的接口(例如,服务API)附接至覆盖网络,使得当客户端资源实例提供包将要被发往的IP地址时,通过与可以确定IP覆盖地址在哪里的映射服务通信而使所述IP地址在虚拟空间中运行。覆盖网络技术的示例使用示出于图3中并且在下文进行详细描述。
主机上的客户端资源实例可以根据有状态协议(例如传输控制协议(TCP))和/或根据无状态协议(例如用户数据报协议(UDP))与同一主机上或不同主机上的其它客户端资源实例通信。然而,客户端包是根据覆盖网络协议由进行发送的VMM封装以及由进行接收的VMM解封。主机上的VMM在从主机上的客户端资源实例接收到目标是另一客户端资源实例的IP地址的客户端包(例如,TCP或UDP包)后根据覆盖网络(或IP隧道)协议对所述客户端包进行封装或标记并且将经封装的包发送至覆盖网络上以便递送。接着可以根据IP隧道技术经由覆盖网络将经封装的包路由至另一VMM。其它VMM从包剥去覆盖网络封装并且将客户端包(例如,TCP或UDP包)递送至主机上的、实现目标客户端资源实例的适当VM。换句话说,在一些实施方案中,虽然在服务提供商计算环境(例如,服务提供商数据中心)中可能存在单个下层物理网络,但是本文所描述的封装可以使得看起来像是每一客户端应用(或一个或多个客户端应用在上面执行的每一客户端资源实例)在它自己的虚拟网络上运行(例如,用于多个客户端应用的数据包可以在同一物理网络上行进,但是可能看起来像是指向所述客户端应用中的每一者的流量是在专用网络上行进)。
在一些实施方案中,覆盖网络可以是根据无连接(或无状态)IP协议实现的无状态网络。在一些此类实施方案中,进行发送的VMM将经封装的包发送至覆盖网络以便路由和递送,但不接收应答(ACK)或关于包的递送的其它响应。在其它实施方案中,VMM可以接收ACK或关于经封装的包的递送的其它响应。
与其中分布式锁管理器的组件在与采用它们所管理的锁的应用相同的数据平面内执行和/或通信的现有系统中不同,在本文所描述的系统的一些实施方案中,分布式锁管理器可以结合至分布式计算系统(例如,向客户端提供虚拟计算资源和/或虚拟计算服务的系统)的控制平面层中,并且此控制平面层可以具有与在所述系统中的虚拟化资源上执行的客户端软件不同的网络可用性。在一些实施方案中,客户端软件可能不知道控制平面层或DLM的网络可用性,所述网络可用性可以作为服务呈现给客户端(例如通过API)。
如上所述,在包括DLM的现有系统中,DLM的组件用来彼此通信的连接机制是客户端应用存取与锁相关联的资源所用的相同连接机制。然而,在本文所描述的系统的一些实施方案中,情况不是这样的。而是,客户端应用可能只需要进行本地API调用以便加入到本文所描述的锁和锁定机制中。在一些实施方案中,由DLM管理的锁可能具有唯一标识符(或具有特定命名空间的唯一标识符),从API的角度来看,所述标识符可以被认为是锁的“句柄”。如上所述,在一些实施方案中,客户端应用可能不需要知道关于由DLM组件用来进行彼此通信的网络连接的任何东西。而是,它可以通过调用一个或多个API对锁进行操作,每一API对应于特定的锁管理操作。在一些实施方案中,可能是客户端应用负责确定如何使用锁和/或如何公布锁。在一些实施方案中,在进程或应用创建锁后,一个或多个其它进程或应用(有时也被称为“参与者”)可以订购锁(例如,作为观察者或根据其它锁模式)。
与一些现有DLM不同,本文所描述的DLM可以包括到它们在其中实现的分布式系统的控制平面中的钩子,所述钩子允许用户创建具有不同共享等级的锁并且管理那些锁,而无需依赖于使用所述锁的应用的网络连接性。
在一些实施方案中,本文所描述的分布式锁管理器可以跨越本地主机(例如,在客户端网络上执行的那些主机)和在提供商网络(例如,公用或专用的云计算环境)中执行的主机之间的边界。在一些实施方案中,实现本文所描述的技术可以包括建置一组软件组件,所述软件组件允许在客户端网络上(例如,在顾客的所在地处)的主机和/或在云计算环境内的主机获得、操纵和管理DLM锁。锁本身可以是相对简单的,并且可以是完全由客户端应用设计者决定什么资源应被锁定以及它们何时应被锁定。在各种实施方案中,与锁相关联的资源可以包括磁盘卷、虚拟网络适配器、文件、数据库内的记录或其它项、或应用开发者希望使之免遭多个进程非同步存取的任何其它资源。如上所述,锁可以被分组到层级中。例如,可能存在与文件锁相关联的记录锁或共享一组锁的主机群组。
在一些实施方案中,在锁的状态改变时(例如,在为了独占写入存取而获取所述锁时),所述锁的所有订户将具有所述锁的一致的时间点视图。换句话说,锁状态改变可以是不可分割的,因为一次只有一个进程可以修改锁状态(并且只有在所述进程持有独占锁时),并且在任何给定时间,所述锁的所有参与者都将看到相同的值。在一些实施方案中,锁本身可以是持久的,因为即使没有任何订户,所述锁也能持续下去。例如,如果有三个主机共享磁盘卷的锁(例如,两个在云计算环境中而一个在本地),其中一个持有所述锁以进行独占写入,并且如果所有三个主机发生故障或者是关闭并随后重新启动,那么可以通过锁管理器保存锁的状态并且独占写入锁仍然可以由获得它的主机持有。例如,锁状态可以保存在加入到锁定机制中的控制平面中除了使用所述锁的应用组件在其上执行的主机上外的某处。在一些实施方案中,本地进程(例如,在云计算环境中和/或在客户端网络上的各种资源实例中执行的客户端应用)可以保存DLM代表它们创建的每一锁的锁状态的经高速缓存的视图,并且在云计算环境中的持久数据存储区中(例如在数据库中)还可以存在每一锁的锁状态的副本。
在一些实施方案中,在锁可能会具有需要验证才能加入锁群组或存取锁才能查看和/或修改锁的安全存取性质的意义上,锁也可以是安全的。如前所述,锁可以包括值,其含义是由利用锁的应用或虚拟计算服务来确定。应指出,在一些实施方案中,可能是客户端应用负责遵照它们自己的锁定规则。例如,如果在云计算环境中执行的应用将锁与磁盘卷相关联,那么所述云计算环境可能不知道或不需要知道这种关联退出。而是,可以是由应用知道关联是什么以及锁是如何与资源相关联。在一些实施方案中,锁与对应资源之间的关联可能甚至是云计算环境中的其它实体(例如,云计算环境的管控组件)不可见的。如前所述,也可以是由客户端应用(或应用的设计者)决定如何使用锁以及它们的值表示什么(例如,可以是由客户端应用限定锁与它们保护和/或控制对其的存取的共享资源之间的关系)。例如,在文件四处传递的群集应用中,与文件相关联的锁可以指示哪个应用组件或进程在任何给定时间点拥有所述文件。
在一些实施方案中,如上所述,值可以是单调递增的版本号。在一些实施方案中,本文所描述的技术可以通过软件库来实现和/或通过命令行工具来激活,所述命令行工具是针对各种操作系统来开发的,包括开源或专属(封闭)操作系统和/或用于智能电话或其它移动装置的操作系统。
用于在分布式计算系统中提供分布式锁管理器的方法的一个实施方案通过图1中的流程图示出,其中所述分布式计算系统向客户端提供虚拟计算系统。如110处所示,在此实例中,所述方法可以包括向客户端提供虚拟计算服务(例如,使用虚拟化计算资源实现的服务)的分布式系统实现向客户端呈现API的分布式锁管理器(DLM)。如在120中,所述方法还可以包括DLM的组件从在相同节点上执行的资源实例接收对共享资源的锁执行锁管理操作的请求,其中所述资源实例实现分布式应用的一部分(例如,进程或其它组件)。
如此实例中所示,如在130中,所述方法可以包括所述DLM组件执行所请求的操作并且通过控制平面网络与另一DLM组件通信以共享锁的状态信息(例如,由执行所述操作产生的经修改的锁值或其它状态信息),所述控制平面网络与数据平面网络(其一部分被分配给所述应用)在物理上或逻辑上不同。如在140中,所述方法还可以包括DLM(例如,接收请求和/或执行所请求的操作的DLM组件)将状态信息高速缓存在本地(例如,在此DLM组件在上面执行的节点上),并且将所述状态信息写入至持久存储区(例如,通过接收请求和/或执行所请求的操作的DLM组件或通过DLM的另一组件)。
示例提供商网络环境
本部分描述了在其中可以实现本文所描述的方法的实施方案的示例提供商网络环境。然而,这些示例提供商网络环境不希望是限制性的。
图2示出了根据至少一些实施方案的示例提供商网络环境。提供商网络200可以经由一个或多个虚拟化服务210向客户端提供资源虚拟化,所述虚拟化服务允许客户端购买、租赁或以其它方式获得在一个或多个数据中心中的提供商网络内的装置上实现的虚拟化资源的实例212,所述虚拟化资源包括但不限于计算和存储资源。专用IP地址216可以与资源实例212相关联;专用IP地址是提供商网络200上的资源实例212的内部网络地址。在一些实施方案中,提供商网络200还可以提供客户端可以从提供商200获得的公用IP地址214和/或公用IP地址范围(例如,因特网协议版本4(IPv4)或因特网协议版本6(IPv6)地址)。
常规上,提供商网络200经由虚拟化服务210可以允许服务提供商的客户端(例如,操作客户端网络250A的客户端)动态地将指派或分配给客户端的至少一些公用IP地址214与指派给客户端的特定资源实例212相关联。提供商网络200还可以允许客户端将之前映射至分配给客户端的一个虚拟化计算资源实例212的公用IP地址214重新映射至也分配给客户端的另一虚拟化计算资源实例212。使用由服务提供商提供的虚拟化计算资源实例212和公用IP地址214,服务提供商(例如,客户端网络250A的运营商)的客户端可以(例如)实现客户端特定的应用以及在中间网络240(例如因特网)上呈现客户端的应用。中间网络240上的其它网络实体220可以接着产生去往由客户端网络250A发布的目标公用IP地址214的流量;所述流量被路由至服务提供商数据中心,并且在所述数据中心处经由网络底层路由至目前映射至目标公用IP地址214的虚拟化计算资源实例212的专用IP地址216。类似地,来自虚拟化计算资源实例212的响应流量可以经由网络底层往回路由至中间网络240上以返回源实体220。
如本文所使用,专用IP地址是指提供商网络中的资源实例的内部网络地址。专用IP地址仅在提供商网络内是可路由的。源自提供商网络外部的网络流量不直接路由至专用IP地址;而是,所述流量使用映射至资源实例的公用IP地址。提供商网络可以包括提供网络地址转换(NAT)或类似功能性以进行从公用IP地址至专用IP地址和从专用IP地址至公用IP地址的映射的网络装置或器具。
如本文所使用,公用IP地址是由服务提供商或由客户端指派给资源实例的因特网可路由网络地址。路由至公用IP地址的流量(例如)经由1:1网络地址转换(NAT)进行转换并转发至资源实例的相应专用IP地址。
一些公用IP地址可以由提供商网络基础设施指派给特定资源实例;这些公用IP地址可以被称为标准的公用IP地址或简称为标准IP地址。在至少一些实施方案中,资源实例的标准IP地址至专用IP地址的映射是所有资源实例类型的默认启动配置。
至少一些公用IP地址可以分配给提供商网络200的客户端或由提供商网络200的客户端获得;客户端可以接着将它们的所分配公用IP地址指派给分配给所述客户端的特定资源实例。这些公用IP地址可以被称为客户端公用IP地址或简称为客户端IP地址。代替如在标准IP地址的情况中由提供商网络200指派给资源实例,客户端IP地址可以由客户端(例如)经由由服务提供商提供的API指派给资源实例。与标准IP地址不同,客户端IP地址被分配给客户端帐户并且可以在需要或希望时由相应客户端重新映射至其它资源实例。客户端IP地址与客户端的帐户而不是特定资源实例相关联,并且客户端控制所述IP地址,直到客户端选择将其释放为止。与常规静态IP地址不同,客户端IP地址允许客户端通过将客户端的公用IP地址重新映射至与客户端的账户相关联的任何资源实例来掩盖资源实例或可用性区失效。客户端IP地址(例如)使客户端能够通过将客户端IP地址重新映射替换的资源实例来解决客户端的资源实例或软件的问题。
图3示出了根据至少一些实施方案的示例数据中心(例如,使用IP隧道技术在网络底层上实现覆盖网络的数据中心)。如此实例中所示,提供商数据中心300可以包括网络底层,所述网络底层包括联网装置312,例如路由器、交换机、网络地址转换器(NAT)等。至少一些实施方案可以采用因特网协议(IP)隧道技术来提供覆盖网络,经由所述覆盖网络,可以使用隧道通过网络底层310传递经封装的包。IP隧道技术可以提供用于在网络(例如,图3的数据中心300中的本地网络)上创建覆盖网络的映射和封装系统,并且可以为覆盖层(公用IP地址)和网络底层310层(专用IP地址)提供单独的命名空间。可以对照映射目录(例如,由映射服务330提供)来检查覆盖层中的包,以确定它们的隧道底层目标(专用IP地址)应该是什么。IP隧道技术提供了虚拟网络拓扑(覆盖网络);向客户端呈现的接口(例如,服务API)附接至覆盖网络,使得当客户端提供客户端想要将包发往的IP地址时,通过与知道IP覆盖地址是哪里的映射服务(例如映射服务330)通信而使所述IP地址在虚拟空间中运行。
在至少一些实施方案中,IP隧道技术可以将IP覆盖地址(公用IP地址)映射至底层IP地址(专用IP地址)、将包封装在两个命名空间之间的隧道中,以及经由隧道将包递送至正确的端点,在所述端点处从包剥去封装。在图3中,示出了从主机320A上的虚拟机(VM)324A至中间网络350上的装置的示例覆盖网络隧道334A和在主机320B上的VM 324B与主机320C上的VM 324C之间的示例覆盖网络隧道334B。在一些实施方案中,在发送之前可以按覆盖网络包格式对包进行封装,并且在接收之后可以将覆盖网络包剥去。在其它实施方案中,代替将包封装在覆盖网络包中,可以在发送之前将覆盖网络地址(公用IP地址)嵌入于包的底层地址(专用IP地址)中,并且在接收后从包地址剥去覆盖网络地址。作为一个实例,可以使用32位IPv4(因特网协议版本4)地址作为公用IP地址来实现覆盖网络,并且IPv4地址可以作为在底层网络上作为专用IP地址使用的128位IPv6(因特网协议版本6)地址的部分嵌入。
参看图3,在其中可以实现本文所描述的分布式锁管理器的实施方案的至少一些网络可以包括使多个操作系统能够在主机计算机(例如,图3的主机320A和320B)上同时运行(即,作为主机320上的虚拟机(VM)324)的硬件虚拟化技术。VM 324可以(例如)出租或租赁给网络提供商的客户端。主机320上的管理程序或虚拟机监视器(VMM)322向主机上的VM324呈现虚拟平台并监视VM 324的执行。每一VM 324可以具有一个或多个专用IP地址;主机320上的VMM 322可能知道主机上的VM 324的专用IP地址。映射服务330可能知道所有网络IP前缀和路由器或本地网络上供应IP地址的其它装置的IP地址。这包括服务多个VM 324的VMM 322的IP地址。映射服务330可以集中(例如)在服务器系统上,或者可以分布在两个或两个以上服务器系统或网络上的其它装置之间。网络可以(例如)使用映射服务技术和IP隧道技术(例如)在数据中心300网络内的不同主机320上的VM 324之间路由数据包;应指出,可以使用内部网关协议(IGP)来在此类本地网络内交换路由信息。
另外,网络,例如提供商数据中心300网络(它有时被称为自治系统(AS)),可以使用映射服务技术、IP隧道技术和路由服务技术将包从VM 324路由至因特网目标以及从因特网源路由至VM 324。应指出,外部网关协议(EGP)或边界网关协议(BGP)通常用于在因特网上的源和目标之间的因特网路由。图3示出了根据至少一些实施方案的实现了网络的示例提供商数据中心300,所述网络提供资源虚拟化技术并且经由连接至因特网转接提供商的边缘路由器314提供全因特网接入。提供商数据中心300可以(例如)使客户端能够经由硬件虚拟化服务实现虚拟计算系统(VM 324)以及能够经由存储虚拟化服务在存储资源318上实现虚拟化数据存储区316。
在一些实施方案中,数据中心300网络可以实现IP隧道技术、映射服务技术和路由服务技术以将流量路由至虚拟化资源和从虚拟化资源路由流量,例如,将包从数据中心300中的主机320上的VM 324路由至因特网目标以及从因特网源路由至VM 324。因特网源和目标可以(例如)包括连接至中间网络340的计算系统370和连接至本地网络350的计算系统352,所述本地网络连接至中间网络340(例如,经由将网络350连接至因特网转接提供商的边缘路由器314)。提供商数据中心300网络还可以在数据中心300中的资源之间对包进行路由,例如从数据中心300中的主机320上的VM 324至同一主机上或数据中心300中的其它主机320上的VM 324。
提供数据中心300的服务提供商还可以提供额外的数据中心360,所述额外的数据中心包括与数据中心300类似的硬件虚拟化技术并且也可以连接至中间网络340。包可以从数据中心300转发至其它数据中心360,例如,从数据中心300中的主机320上的VM 324至另一类似的数据中心360中的另一主机上的另一VM,并且反之亦然。
虽然上文描述了使多个操作系统能够在主机计算机上作为主机上的虚拟机(VM)同时运行的硬件虚拟化技术,其中所述VM可以出租或租赁给网络提供商的客户端,但是所述硬件虚拟化技术还可以用于以类似方式将其它计算资源(例如存储资源318)作为虚拟化资源提供给网络提供商的客户端。
应指出,公用网络可以被广泛地定义为提供开放接入和多个实体间的互连性的网络。因特网或万维网(WWW)是公用网络的实例。与对它的接入通常不受限的公用网络相反,共享网络可以被广义地定义为对它的接入被限于两个或两个以上实体的网络。共享网络可以(例如)包括一个或多个局域网(LAN)和/或数据中心网络、或者经互连以形成广域网(WAN)的两个或两个以上LAN或数据中心网络。共享网络的实例可以包括(但不限于)公司网络和其它企业网络。共享网络可以是从覆盖局部区域的网络到全球网络的范围中的任何地方。应指出,共享网络可以与公用网络共享至少一些网络基础设施,并且共享网络可以耦接至一个或多个其它网络,所述其它网络可以包括公用网络,其中在其它网络与共享网络之间有受控的接入。与例如因特网等公用网络相反,共享网络也可以被看作是专用网络。在实施方案中,共享网络或公用网络都可以充当提供商网络与客户端网络之间的中间网络。
在一些实施方案中,本文所描述的DLM可以在分布式计算环境(例如,向客户端提供虚拟化计算资源和/或服务的云计算环境)中实现,例如在图2或图3中示出以及在上文描述的示例提供商网络环境中的一者。在一些实施方案中,在此类系统中实现的DLM的组件可以通过控制平面网络彼此通信(例如,使用除了分配给在云计算环境中执行的客户端应用或被客户端应用的组件用来彼此通信和/或存取受锁保护的共享资源外的网络连接性和/或吞吐量)。
在一些实施方案中,多个资源实例可以在云计算环境中执行以代表客户端实现分布式应用。如前所述,云计算环境可以是多租户环境,其中每一应用(和/或每一虚拟专用网络)可以具有它自己的命名空间。在一些实施方案中,每一客户端可以具有它自己的网络连接性和/或吞吐量(带宽)的分配。例如,数据平面网络中的网络连接性和/或吞吐量可以是准备(例如,指定或保留)给各种客户端使用的。在一些实施方案中,DLM的一个或多个组件(或实例)也可以在资源实例中的一者是在其上执行的每一节点上执行,并且这些组件可以使用除了分配给客户端应用用来彼此通信外的网络连接性和/或吞吐量。例如,在各种实施方案中,可以是每节点一个DLM组件(或实例)或者每一节点上的每顾客一个DLM组件(或实例)。
在一些实施方案中,客户端应用的组件可以通过与网络连接不同的连接机制对同一节点上的DLM组件/实例进行本地API调用,通过所述网络连接,客户端应用的组件作为其常规工作的部分(例如,除了锁管理外的工作)而彼此通信。通过进行本地API调用来激活各种锁管理操作(例如,用于创建锁、指定锁的一个或多个性质、获得锁的列表、订购锁、获取锁、释放锁或删除锁的操作),客户端应用的组件可以加入到由DLM管理的锁中。
在一些实施方案中,虽然存在执行所有客户端应用和其中描述的其它进程的物理计算机,但是客户端应用可以在物理计算机上作为虚拟机运行。例如,云计算环境的内部进程可以在云计算环境中的控制平面层(或管理程序)中执行,所述内部进程被配置以管理这些虚拟机的创建、为这些虚拟机准备资源和/或代表客户端和/或它们的应用执行其它管控任务(例如,监视资源使用、顾客记账、服务计费等)。相比之下,客户端应用(例如,实现应用组件的每一资源实例)可以在云计算环境的数据平面层中执行。在一些实施方案中,在这些层下面,可能是仅一个物理网络卡用于每一主机节点(或用于多个主机节点),但每一资源实例可以执行,就好像它具有它自己的网络(例如,虚拟网络)一样。在一些实施方案中,每一资源实例可以具有它自己的数据平面网络连接,但也可以进行本地API调用(例如,对同一节点上的DLM组件的调用)而无需依赖于这些数据平面网络连接。
在一些实施方案中,DLM也可以实现为在控制平面(管理程序)层上运行的进程。因此,它可以具有客户端进程不知道并且不能获得的网络接入。在此类实施方案中,DLM可能不会消耗数据平面的任何资源(例如,计算实例或网络连接性/带宽),并且可能不会与客户端应用竞争那些资源,而是可以只消耗控制平面的资源。在各种实施方案中,DLM组件(或实例)可以使用各种下层网络和联网机制中的任一者来共享它创建的锁的锁状态信息。在一个实施方案中,DLM组件可以采用针对群集通信而设计的高速互连(例如,符合架构规范的通信链路)作为借以共享锁状态信息的机制。例如,当对锁的状态进行改变时,修改所述锁的DLM组件(或另一DLM组件)可以通知一个或多个其它DLM组件(例如,与订购锁的任何客户端应用组件在相同的节点上执行的DLM组件)锁状态已改变和/或将经修改的锁状态值传送至订户。在各种实施方案中,修改锁的DLM组件(或另一DLM组件)可以负责更新锁的锁状态信息在持久数据存储区(例如,在云计算环境中)的副本。
图4是示出了根据一些实施方案的在控制平面中实现分布式锁管理器的示例服务提供商系统的框图。在一些实施方案中,提供商系统(示出为图4中的提供商系统400)可以类似于图3中所示的提供商数据中心300。例如,图4中的每一主机节点上的控制平面可以实现图3中所示的管理程序或虚拟机监视器的一些或全部功能性。类似地,在图4中的每一主机节点上在数据平面中执行的实例可以是实现图3中所示的虚拟机的一些或全部功能性的虚拟计算实例。
更具体地说,在所示实例中,提供商系统400包括多个虚拟化数据存储区440、主机节点420和430(其中每一者包括数据平面部分和控制平面部分)、数据平面网络410和控制平面网络415(在不同实施方案中,它可能是在或可能不是在与数据平面网络410不同的物理硬件上实现)。
在此实例中,在系统的控制平面的相应部分(示出为424和434)中执行的实例428a-428b和438a-438b可以实现一个或多个客户端应用或进程,所述应用或进程中的至少一些被配置以存取由锁(例如,由分布式锁管理器或DLM管理的锁)保护的共享资源。在此实例中,为实现应用/进程,这些实例可以被配置以通过数据平面网络410彼此通信和/或与其它应用组件(例如,虚拟化数据存储区440中的存储装置445)通信。
在图4所示的实例中,在主机节点420上执行的实例428a-428b可以被配置以对DLM实例426进行API调用以开始各种锁管理操作,并且在主机节点430上执行的实例438a-438b可以被配置以对DLM实例436进行API调用以开始各种锁管理操作。在此实例中,DLM(它包括DLM实例426和436,并且它能够接近虚拟化数据存储区440)在系统的控制平面中(例如,在控制平面的示出为424和434的相应部分中)执行,并且其组件可以被配置以通过控制平面网络415彼此通信以代表实例428a-428b和438a-438b管理共享资源的一个或多个锁。
如图4中所示,在一些实施方案中,服务提供商系统可以包括控制平面中(例如,在控制平面网络415上)的DLM协调器组件(例如,DLM协调器450)。例如,在DLM实例的多个活动一起工作以提供分布式锁服务时,DLM协调器组件(它可以是控制平面中的云管理器组件的子组件)可以管理和/或协调所述活动中的至少一些。在各种实施方案中,DLM实例可以通过控制平面网络415彼此通信和/或与DLM协调器450通信。例如,DLM协调器415可以作为中间人来安排去向DLM实例426和436和/或在DLM实例426和436之间的消息,以(例如)方便分布式锁服务维持通过DLM管理的锁的状态的一致(或最终一致)视图(例如,以使由每一DLM实例高速缓存在本地的全部锁状态信息保持为最新的)。在其它实施方案中,DLM实例可以(至少某些时间内)通过控制平面网络415彼此直接通信以共享锁状态信息和/或确保本地存储在每一DLM实例上的锁状态信息保持最新。在一些实施方案中,DLM协调器450可以被配置以维护用于锁状态信息(未图示)的持久数据存储区。
用于在提供虚拟化资源的分布式计算系统中实现分布式锁管理器的方法的一个实施方案通过图5中的流程图示出。如510处所示,在此实例中,所述方法可以包括分布式计算系统从客户端接收对虚拟计算服务的请求。如在520处,响应于所述请求,所述方法可以包括分布式计算系统为相应计算节点上的客户端准备两个或两个以上资源实例以实现分布式应用,以及在所述系统中对它们进行配置使得这些资源实例通过数据平面网络彼此通信。例如,在一些实施方案中,所述系统可以准备各种计算实例或执行平台实例,所述实例可以包括数据平面网络上的所准备的计算资源、所准备的存储容量、所准备的网络连接性和/或所准备的吞吐量(例如,带宽)。应指出,数据平面网络可以是分布式应用的组件借以彼此通信以进行它们的工作(例如,除了锁管理外的工作)的网络。
如此实例中所示,如在530处,所述方法可以包括分布式计算系统准备在计算节点中的每一者上的资源实例以实现分布式锁管理器(DLM),以及在系统中对这些DLM实例进行配置使得它们通过控制平面网络彼此通信。例如,在一些实施方案中,所述系统可以准备各种计算实例或执行平台实例,所述实例可以包括控制平面网络上的所准备的计算资源、所准备的存储容量、所准备的网络连接性和/或所准备的吞吐量(例如,带宽)。应指出,控制平面网络可以是以下一种网络,通过它,除了客户端进程外的进程(例如,用于监视资源使用、客户端计费、验证服务和/或分布式计算系统的其它管控任务的进程)执行和/或彼此通信。
如540处所示,所述方法可以包括分布式应用(例如,分布式应用的应用组件)使用对本地DLM实例的API调用(例如,与应用组件在相同的计算节点上执行使得所述调用不需要行进通过公用或专用网络连接的DLM实例)来开始锁管理操作的执行。例如,应用组件可以根据API来开始锁的创建、锁的获取、锁的释放或另一锁管理操作,其中所述API界定这些和其它操作。在一些实施方案中,如在550中,所述方法可以包括本地DLM实例执行所请求的锁管理操作以及与其它DLM实例共享锁状态信息(例如,由执行所述操作产生的经修改的锁值或其它状态信息)。如本文所述,在一些实施方案中,DLM的组件可以通过分布式计算系统的控制平面网络而不是通过所述系统的数据平面网络来彼此通信。如在560中,所述方法还可以包括DLM实例向锁的订户通知锁的状态信息的任何改变。例如,每一DLM实例可以负责向同一节点上的进程通知它们订购的锁的锁状态信息的任何改变和/或负责将锁状态信息改变传播给在某些节点上执行的其它DLM实例,其中锁的其它订户在所述某些节点上执行。
用于本文所描述的分布式锁管理器的应用编程接口可以为共享资源的锁界定各种锁管理操作,包括但不限于:
·创建锁(应指出,这可能不会包括锁与资源的关联,它可以是调用程序的响应性)
·设置锁的某些性质的值(例如,以指定共享性质或锁的锁模式)
·获得客户端可以订购的锁的列表
·查看锁的状态信息(例如,此类API可以允许锁的多个订户查看锁的状态,并且因为状态是不可分割地改变,所以订户将得到锁状态的一致视图)
·请求成为给定锁的锁群组的成员(即,订购给定锁),响应于所述请求,DLM可以返回用于锁的句柄或锁的状态信息
在一些实施方案中,锁可以用于管理弹性网络接口(ENI)或另一类型的虚拟网络接口。例如,在一些现有系统中,如果网络接口可以四处移动,那么这使得更难以尝试使用网络本身作为用于在所述系统中管理锁的媒介(如在一些现有系统中)。换句话说,如果网络接口是用于特定应用或资源实例的唯一网络接口并且如果要移动它必须使它断开,那么可以对锁管理器封锁所述应用或资源实例。然而,在本文所描述的系统中,分布式锁管理器可能不使用相同的物理或逻辑网络来管理用于网络接口的锁(例如,管理锁与网络接口的关联或锁的所有权)。而是,锁管理器可以使用云计算环境的控制平面网络作为其连接性机制,并且可能对客户端应用隐藏控制平面网络。在一个实例中,ENI可以响应于实例的失效而移动至另一主机(连同其IP地址和其连接的客户端)。由于将ENI移动至另一主机会将其IP地址连同它一起移动,因此客户端仅需要知道一个IP地址;客户端不需要知道所述ENI连接至哪里。在传统的DLM解决方案中,如果所述ENI本身是数据平面连接性机制,那么它不能移动(因为如果它移动了,那么至数据平面的任何连接都将丢失)。
在另一实例中,群集文件系统类型的应用可以创建磁盘卷的锁,并且可以保持备用数据库开启和运行(例如,对主要主机上的那些磁盘卷产生镜像)。在此实例中,如果主要主机发生故障,那么对应的磁盘卷可以从主要主机断开连接并重新连接至备用装置中的一者(例如,辅助主机)。一般来说,只要在分布式计算系统中有共享资源,那么将锁与那些资源相关联可能是有用的,因为那些锁可以用于向锁的参与者指示所述参与者中的一者持有用于特定卷的锁,和/或将所述锁拥有者的标识符传送至其它参与者。
用于使客户端应用或进程存取在云计算环境中实现的分布式锁管理器的功能性的方法的一个实施方案通过图6中的流程图示出。如610处所示,在此实例中,所述方法可以包括在云计算环境中执行的客户端应用或进程对本地DLM实例(例如,在同一计算节点上执行的DLM实例)进行API调用以创建共享资源的锁,以及响应于所述锁被创建,接收新创建的锁的标识符(例如,锁句柄)。在不同实施方案中,应用可以是分布式应用或在单个节点上运行的应用或进程,所述单个节点存取也可以由另一应用或进程存取的资源。在一些实施方案中,创建锁还可以包括进行一个或多个额外API调用以设置锁的一个或多个性质(例如,共享性质)的值。
如此实例中所示,如在620中,所述方法可以包括客户端应用/进程对本地DLM实例进行API调用以获得(获取)共享资源的锁。例如,所述请求可以包括所述锁的标识符(或句柄)并且可以从创建所述锁的相同应用/进程或也加入到所述锁中的不同应用/进程接收。应指出,客户端应用可能不具有对任何其它DLM实例的存在或位置的可视性或可能不具有与任何其它DLM实例(它们通过云计算网络的控制平面网络彼此通信)通信的能力。
如果锁被另一应用或进程持有(示出为从630的肯定退出),那么如在635中,所述方法可以包括客户端应用/进程入队等待锁或为锁进行轮询直到它释放(或以其它方式使之可被获取)为止。如果锁没有被另一应用/进程持有(示出为从630的否定退出)或在它已被持有锁的另一应用/进程释放后,那么如在640中,所述方法可以包括客户端应用/进程被给予所述锁并且存取共享资源。在一些实施方案中,给予所述锁可以包括不可分割地更新锁状态在持久数据存储区中的副本和/或更新锁状态在其它DLM实例(它们全部通过控制平面网络彼此通信)中的高速缓存在本地的副本。在一些实施方案中,客户端应用/进程在云计算环境中通过数据平面网络存取共享资源。
如图6中所示,在某些时候(例如,在应用或进程不再需要存取共享资源时),如在650中,所述方法可以包括客户端应用/进程对本地DLM实例进行API调用以释放锁。随后,如在660中,所述方法可以包括另一客户端应用或进程对一个或多个本地DLM实例进行一个或多个API调用以查看和/或修改锁的状态。例如,另一客户端应用或进程可以进行API调用以询问锁(例如,以便确定共享资源是否被锁上和/或确定当前拥有者)或获得/获取(以及在之后释放)锁。
在一些实施方案中,本文所描述的分布式锁管理器可以允许锁延伸至云计算环境的控制平面外。例如,在一些实施方案中,顾客可能能够在他们自己本地下载并安装软件进程(例如,在客户端网络上的主机计算节点上下载并安装客户端DLM代理)以将锁延伸至云计算环境外。在此类实施方案中,在客户端网络上的主机计算节点上运行的应用可以对客户端DLM进行API调用以执行各种锁管理操作。在一些实施方案中,客户端借以进行API调用的机制是安全信道,并且客户端可以从云计算环境外的代理进行API调用。
在一个实例中,顾客可以在云计算环境内建置应用,但是可能想要应用控制器(包括锁管理器)处在本地(例如,在客户端网络本地的主机节点上执行的机器上)。更具体的实例是,顾客可以请求准备十个资源实例来在云计算环境中使用它们,并且可以将锁与那十个实例相关联,但是顾客还可能想要让锁与在云计算环境外部的资源(例如,在他们本地机器上的文件)相关联。本文所描述的分布式锁管理器可以允许顾客创建所述文件的锁并且设置锁(或文件)的某些共享性质,并且可以允许所述锁的所有订户查看锁的一致状态信息。
在另一实例中,顾客可能有应用在本地机器上运行,但是可能希望在云计算环境中准备一些资源实例以便在本地机器上发生故障的情况下使用。在此实例中,可能存在与所述应用相关联的锁,并且在发生故障的情况下,可以将锁移动至云计算环境中的资源实例。
应指出,在其中DLM横跨在云计算环境与本地客户端网络之间的一些实施方案中,客户端应用和/或DLM可以在VCP(虚拟专用云)内实现。
图7是示出了根据一些实施方案的示例服务提供商系统的框图,所述服务提供商系统在控制平面中实现分布式锁管理器并且将所述分布式锁管理器呈现给在其环境外部(例如,服务提供商系统外部)执行的进程。在各种实施方案中,提供商系统700可以类似于图3中所示的提供商数据中心300和/或图4中所示的提供商系统400。例如,图7中的每一主机节点上的控制平面可以实现图3中所示的管理程序或虚拟机监视器的一些或全部功能性。类似地,在图7中的每一主机节点上的数据平面中执行的实例可以是实现图7中所示的虚拟机的一些或全部功能性的虚拟计算实例。
更具体地说,在所示实例中,提供商系统700包括多个虚拟化数据存储区740、主机节点720和730(其中每一者包括数据平面部分和控制平面部分)、数据平面网络710和控制平面网络715(在不同实施方案中,它可以是或可以不是在与数据平面网络710不同的物理硬件上实现)。
在此实例中,在系统的控制平面的相应部分(示出为724和734)中执行的实例728a-728b和738a-738b可以实现一个或多个客户端应用或进程,所述客户端应用或进程中的至少一些被配置以存取由锁(例如,通过分布式锁管理器或DLM管理的锁)保护的共享资源。在此实例中,为实现应用/进程,这些实例可以被配置以通过数据平面网络710彼此通信和/或与其它应用组件(例如,虚拟化数据存储区740中的存储装置745)通信。
在图7所示的实例中,在主机节点720上执行的实例728a-728b可以被配置以对DLM实例726进行API调用以开始各种锁管理操作,并且在主机节点730上执行的实例738a-738b可以被配置以对DLM实例736进行API调用以开始各种锁管理操作。在此实例中,DLM(它包括DLM实例726和736,并且它能够接近虚拟化数据存储区740)在系统的控制平面中(例如,在控制平面的示出为724和734的相应部分中)执行,并且其组件可以被配置以通过控制平面网络715彼此通信以代表实例728a-728b和738a-738b管理共享资源的一个或多个锁。
如图7中所示,在一些实施方案中,服务提供商系统可以包括在控制平面中(例如,在控制平面网络715上)的DLM协调器组件(例如,DLM协调器750)。例如,在DLM实例的多个活动一起工作以提供分布式锁服务时,DLM协调器组件(它可以是控制平面中的云管理器组件的子组件)可以管理和/或协调所述活动中的至少一些。在各种实施方案中,DLM实例可以通过控制平面网络715彼此通信和/或与DLM协调器750通信。例如,DLM协调器715可以作为中间人来安排去向DLM实例726和736和/或在DLM实例726和736之间的消息,以(例如)方便分布式锁服务维持通过DLM管理的锁的状态的一致(或最终一致)视图(例如,以使由每一DLM实例高速缓存在本地的全部锁状态信息保持为最新的)。在其它实施方案中,DLM实例可以(至少某些时间内)通过控制平面网络715彼此直接通信以共享锁状态信息和/或确保本地存储在每一DLM实例上的锁状态信息保持最新。在一些实施方案中,DLM协调器750可以被配置以维护用于锁状态信息(未图示)的持久数据存储区。
与图4所示的实例中不同,到图7所示的提供商系统700的DLM的接口可以呈现给在提供商系统700外部执行的进程。在此实例中,在客户端网络770上的主机节点775上执行的各种应用和/或进程可以能够通过各种API 760加入到DLM的锁定机制中(例如,以开始对由那些应用/进程和在主机节点720或主机节点730上执行的应用/进程共享的资源的锁进行锁管理操作)。如本文所述,在一些实施方案中,DLM客户端代理可以在主机节点775上具现化以允许在主机775上执行的应用或进程使用对DLM客户端代理的本地API调用来存取由DLM管理的锁。在此类实施方案中,在提供商系统外部执行的应用/进程可以订购这些锁和/或加入到这些锁的管理中而不需要知道关于在提供商系统700内实现的DLM组件的网络地址、网络连接性和/或网络资源的任何东西,因为本地DLM客户端代理将响应于各种本地API调用而处置与那些组件的通信。
在图7所示的实例中,由在客户端网络770上的主机节点775上执行的应用/进程对分布式锁管理器(或由分布式锁管理器的组件提供的分布式锁服务)进行的API调用(例如,符合API 760的API调用)可以通过DLM协调器750作为中间人进行安排,所述DLM协调器可以确定API调用将被路由至的特定主机节点(或,更具体地,在特定主机节点上的DLM实例)。在其它实施方案中,由在客户端网络770上的主机节点775上执行的应用/进程进行的API调用可以被引导至特定主机节点上的特定DLM实例,而不是通过DLM协调器750路由。例如,在一些实施方案中,由于在主机节点775上执行的应用/进程订购特定锁(例如,通过由DLM协调器750或另一控制平面组件在中间安排的通信),可以在所述应用/进程与特定DLM实例之间建立通信信道(例如,控制平面网络715上的覆盖网络隧道,或控制平面网络715上的另一类型的通信信道)。在订购已被给予和/或通信信道已建立后,在主机节点775上执行的应用/进程与特定DLM实例之间的后续通信(例如,符合API 760的各种API调用)可以通过此通信信道(例如,直接地)发生,而不是通过DLM协调器750发生。
用于使在云计算环境外部执行的客户端应用或进程存取在云计算环境中实现的分布式锁管理器的功能性的方法的一个实施方案通过图8中的流程图示出。如810处所示,在此实例中,所述方法可以包括在云计算环境外部执行的客户端进程对在云计算环境中执行的分布式锁管理器的本地代理进行API调用以订购与在云计算环境中执行的一个或多个进程共享的资源的锁。例如,所述客户端进程可以对与发起调用的进程在同一计算节点上执行的客户端DLM代理进行API调用。如在820中,响应于所述调用,所述方法可以包括在云计算环境外部执行的客户端进程接收锁的标识符(例如,锁句柄)或锁的值,其后它可以对分布式锁管理器的本地代理进行API调用以获得(获取)共享资源的锁。在一些实施方案中,这可能会又开始本地客户端DLM代理与在云计算环境中执行的DLM的组件之间的通信(例如,为了与其它订户共享锁的锁状态信息)。
如此实例中所示,如在835中,如果锁被另一进程持有(示出为从830的肯定退出),那么所述方法可以包括客户端进程入队等待锁或为锁进行轮询直到它释放(或以其它方式使之可被获取)为止。应指出,锁可以被在云计算环境外部执行的另一进程或被在云计算环境内部执行的进程持有。如果锁没有被另一进程持有(示出为从830的否定退出)或在它已被持有锁的另一进程释放后,那么如在840中,所述方法可以包括客户端进程被给予所述锁并且存取共享资源。在一些实施方案中,给予所述锁可以包括不可分割地更新锁状态在持久数据存储区中的副本和/或更新锁状态在本地客户端DLM代理中和/或在云计算环境中的其它DLM组件(它们中的一些或全部可以通过控制平面网络彼此通信)中的本地高速缓存的副本。在一些实施方案中,给予所述锁可以包括DLM返回锁状态值,所述值指示已将锁给予所述进程。
如图8中所示,在某些时候(例如,在进程不再需要存取共享资源时),如在850中,所述方法可以包括客户端进程对本地客户端DLM代理进行API调用以释放锁。在一些实施方案中,这可能会又开始本地客户端DLM代理与在云中执行的DLM的一个或多个组件之间的通信(例如,为了与其它订户共享锁的状态信息)。随后,如在860中,所述方法可以包括另一进程对在云计算环境外部执行的本地客户端DLM代理或对在云计算环境内部执行的本地DLM实例进行一个或多个API调用以查看和/或修改锁的状态。换句话说,其它进程可以对所述进程本地的DLM代理或实例(例如,在云计算环境中或在云计算环境外部与所述进程在同一主机节点上执行的DLM代理或实例)进行API调用。例如,另一客户端应用或进程可以进行API调用以询问锁(例如,以便确定共享资源是否被锁住和/或确定目前的拥有者)或获得/获取(以及之后释放)锁。
说明性系统
在至少一些实施方案中,实现用于实现如本文所描述的分布式锁管理器的一些或全部技术的服务器可以包括通用计算机系统,所述计算机系统包括非暂时性计算机可存取媒介或被配置以存取非暂时性计算机可存取媒介,例如图9中所示的计算机系统900。在所示的实施方案中,计算机系统900包括经由输入/输出(I/O)接口930耦接至系统存储器920的一个或多个处理器910。计算机系统900还包括耦接至I/O接口930的网络接口940。
在各种实施方案中,计算机系统900可以是包括一个处理器910的单处理器系统,或包括几个处理器910(例如,两个、四个、八个或另一合适数目)的多处理器系统。处理器910可以是能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器910可以是实现各种指令集架构(ISA)(例如,x86、PowerPC、SPARC或MIPS ISA,或任何其它合适的ISA)中的任一者的通用或嵌入式处理器。在多处理器系统中,处理器910中的每一者通常可能是但不一定是实现相同ISA。
系统存储器920可以被配置以存储处理器910可存取的指令和数据。在各种实施方案中,可以使用任何合适的存储器技术来实现系统存储器920,例如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型存储器或任何其它类型的存储器。在所示的实施方案中,实现一个或多个所要功能的程序指令和数据(例如,用于实现分布式锁管理器的上述那些方法、技术和数据)如图所示作为代码925和数据926存储在系统存储器920内。
在一个实施方案中,I/O接口930可以被配置以协调处理器910、系统存储器920和所述装置中的任何外围装置(包括网络接口940或其它外围接口)之间的I/O流量。在一些实施方案中,I/O接口930可以执行任何必要的协议、定时或其它数据变换以将来自一个组件(例如,系统存储器920)的数据信号转换成适合于由另一组件(例如,处理器910)使用的格式。在一些实施方案中,I/O接口930可以包括对通过各种类型的外围总线(例如,外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变型)附接的装置的支持。在一些实施方案中,例如,I/O接口930的功能可以分到两个或两个以上单独的组件中,例如北桥和南桥。此外,在一些实施方案中,I/O接口930(例如,至系统存储器920的接口)的一些或全部功能性可以直接结合至处理器910中。
例如,网络接口940可以被配置以允许在计算机系统900与附接至网络950的其它装置960(例如如图中所示的其它计算机系统或装置)之间交换数据。在各种实施方案中,例如,网络接口940可以支持经由任何合适的有线或无线的一般数据网络(例如,多种类型的以太网)进行通信。此外,网络接口940可以支持经由电信/电话网络(例如模拟语音网络或数字光纤通信网络)、经由存储区域网络(例如光纤信道SAN)或经由任何其它合适类型的网络和/或协议进行通信。
在一些实施方案中,系统存储器920可以是被配置以存储如上文针对图1至图12所描述的、用于实现本文所描述的分布式锁管理器的各种实施方案的程序指令和数据的计算机可存取媒介的一个实施方案。然而,在其它实施方案中,可以在不同类型的计算机可存取媒介上接收、发送或存储程序指令和/或数据。一般来说,计算机可存取媒介可以包括非暂时性存储媒介或存储器媒介如磁或光媒介,例如经由I/O接口930耦接至计算机系统900的磁盘或DVD/CD。非暂时性计算机可存取存储媒介还可以包括任何易失性或非易失性媒介,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等,所述易失性或非易失性媒介可以作为系统存储器920或另一类型的存储器包括在计算机系统900的一些实施方案中。此外,计算机可存取媒介可以包括传输媒介或经由通信媒介如网络和/或无线链路传送的信号(例如电、电磁或数字信号),所述通信媒介例如可以经由网络接口940实现。
可以另外鉴于以下条款来理解前述内容:
1.一种系统,包括:
多个计算节点,所述计算节点通过网络耦接至彼此并且共同地向一个或多个客户端提供虚拟计算服务,所述计算节点中的每一者包括至少一个处理器和存储器;
两个或两个以上虚拟计算实例,其各自是在所述计算节点中的两者或两者以上中的相应者上执行,其中所述虚拟计算实例中的每一者被配置以代表客户端实现分布式应用的应用组件,并且其中所述虚拟计算实例被配置以通过所述网络的至少一部分来彼此通信;以及
分布式锁管理器,所述分布式锁管理器包括两个或两个以上组件,其各自是在所述两个或两个以上计算节点中的相应者上执行,其中所述分布式锁管理器组件被配置以共享相应共享资源的一个或多个锁的状态,并且其中为了共享所述一个或多个锁的状态,所述分布式锁管理器组件被配置以通过网络彼此通信,所述网络与所述虚拟计算实例借以彼此通信的所述网络的所述至少一部分在物理上或逻辑上不同;
其中所述应用组件中的一者被配置以激活对在相应计算节点上执行的所述分布式锁管理器组件的调用以开始对由所述分布式应用存取的共享资源的锁进行锁管理操作,其中实现所述应用组件的所述虚拟计算实例是在所述相应计算节点上执行。
2.如条款1所述的系统,其中所述分布式锁管理器组件借以彼此通信的所述网络包括服务提供商计算环境的控制平面网络,并且其中所述虚拟计算实例借以彼此通信的所述网络的所述至少一部分包括所述服务提供商计算环境的数据平面网络。
3.如条款1所述的系统,其中,响应于对所述分布式锁管理器组件的所述调用,所述分布式锁管理器组件被配置以:
执行所述锁管理操作;以及
将所述锁的所得状态传送至在除了所述分布式锁管理器组件在上面执行的计算节点之外的计算节点上执行的至少一个分布式锁管理器组件。
4.如条款1所述的系统,其中所述两个或两个以上计算节点实现用于所述客户端的虚拟专用网络。
5.一种方法,包括:
通过一个或多个计算机执行:
通过在多个计算节点中的给定者上执行的分布式锁管理器的组件接收对共享资源的锁进行锁管理操作的请求,其中所述接收包括从在所述给定计算节点上执行的计算实例接收所述请求,并且其中所述计算实例使用为所述计算实例分配的网络资源能力来存取所述共享资源;以及
执行所述所请求的锁管理操作,其中所述执行包括所述分布式锁管理器组件使用除了为所述计算实例分配的所述网络资源能力外的网络资源能力与在所述多个计算节点中的另一者上执行的另一分布式锁管理器组件通信以共享所述锁的状态信息。
6.如条款5所述的方法,
其中所述计算实例实现分布式应用的应用组件;以及
其中所述方法还包括所述应用组件使用为所述计算实例分配的所述网络资源能力与所述分布式应用的至少一个其它组件通信。
7.如条款5所述的方法,其中所述多个计算节点实现分布式锁服务。
8.如条款5所述的方法,其中所述多个计算节点实现一个或多个虚拟计算服务。
9.如条款5所述的方法,其中所述执行所述锁管理操作包括将所述锁与所述共享资源相关联,并且其中所述通信包括将所述关联传送至所述另一分布式锁管理器组件。
10.如条款5所述的方法,其中所述执行所述锁管理操作包括修改所述锁的值。
11.如条款10所述的方法,其中所述锁的所述值识别所述共享资源的拥有者。
12.如条款10所述的方法,还包括:
所述分布式锁管理器的组件将所述锁的所述经修改的值写入至持久数据存储区。
13.如条款10所述的方法,其中所述修改所述锁值包括不可分割地修改所述锁值。
14.如条款5所述的方法,其中为所述计算实例分配的所述网络资源能力包括网络连接性资源或输入/输出吞吐量。
15.如条款5所述的方法,其中所述执行还包括将所述锁的状态信息高速缓存在所述给定计算节点上。
16.一种存储程序指令的非暂时性计算机可读存储媒介,所述程序指令当在一个或多个计算机上执行时使所述一个或多个计算机执行:
通过在多个计算节点中的给定者上执行的分布式锁管理器的组件接收对与对其的共享存取将受控制的实体相关联的锁进行锁管理操作的请求,其中所述接收包括从在所述给定计算节点上执行的资源实例接收所述请求,其中所述多个计算节点实现分布式锁服务,其中所述资源实例存取与所述锁相关联的所述实体,并且其中所述请求符合界定由所述分布式锁管理器支持的一个或多个锁管理操作的应用编程接口;以及
执行所述所请求的锁管理操作,其中所述执行包括所述分布式锁管理器组件使用除了所述资源实例借以存取与所述锁相关联的所述实体的网络连接性外的网络连接性来与所述分布式锁管理器的、在所述多个计算节点中的另一者上执行的另一组件通信以共享所述锁的状态信息。
17.如条款16所述的非暂时性计算机可读存储媒介,其中所述请求包括创建锁的请求,其中所述执行所述所请求的锁管理操作包括创建锁并将所述锁的标识符返回至自其接收所述请求的所述资源实例,并且其中所述通信包括将所述锁的所述标识符传送至所述分布式锁管理器的所述另一组件。
18.如条款16所述的非暂时性计算机可读存储媒介,其中所述请求包括订购所述锁的请求或设置所述锁的性质的值的请求。
19.如条款16所述的非暂时性计算机可读存储媒介,其中所述请求包括获取所述锁的请求或释放所述锁的请求,其中所述执行所述所请求的操作包括修改所述锁的锁值,并且其中所述通信包括将所述经修改的锁值传送至所述分布式锁管理器的所述另一组件。
20.如条款16所述的非暂时性计算机可读存储媒介,
其中所述多个计算节点通过网络耦接至彼此并且共同地向一个或多个客户端提供虚拟计算服务;
其中当在所述一个或多个计算机上执行时,所述程序指令还使所述一个或多个计算机执行:
接收对所述锁进行锁管理操作的第二请求,其中所述第二请求是从除了通过所述网络耦接至彼此并且共同地向一个或多个客户端提供虚拟计算服务的所述多个计算节点中的一者外的计算节点接收,并且其中所述请求符合界定由所述分布式锁管理器支持的所述一个或多个锁管理操作的所述应用编程接口。
21.如条款16所述的非暂时性计算机可读存储媒介,其中与所述锁相关联的所述实体包括虚拟网络接口。
各种实施方案还可以包括在计算机可存取媒介上接收、发送或存储根据前文描述实现的指令和/或数据。一般来说,计算机可存取媒介可以包括存储媒介或存储器媒介如磁或光媒介,例如磁盘或DVD/CD-ROM;易失性或非易失性媒介,例如RAM(例如,SDRAM、DDR、RDRAM、SRAM等)、ROM等;以及传输媒介或经由通信媒介(例如网络和/或无线链路)传送的信号,例如电、电磁或数字信号。
如图中所示和本文所描述的各种方法代表方法的示例性实施方案。可以用软件、硬件或其组合来实现所述方法。方法的次序可以改变,并且可以对各种元件进行添加、重排、组合、省略、修改等。
如了解了本公开的本领域的技术人员将显而易见的是,可以作出各种修改和变化。希望涵盖所有此类修改和变化,并且因此将以说明性而非限制意义来看待上文的描述。

Claims (15)

1.一种用于分布式锁管理的系统,包括:
多个计算节点,所述多个计算节点通过网络彼此耦接并且共同地向一个或多个客户端提供虚拟计算服务,所述计算节点中的每一个包括至少一个处理器和存储器;
两个或更多个虚拟计算实例,其各自在两个或更多个所述计算节点中的相应一个上执行,其中所述虚拟计算实例中的每一个被配置为代表客户端实现分布式应用的应用组件,并且其中所述虚拟计算实例被配置为通过所述网络的至少一部分来彼此通信;以及
分布式锁管理器,所述分布式锁管理器包括两个或更多个组件,其各自在所述两个或更多个计算节点中的相应一个上执行,其中所述分布式锁管理器组件被配置为共享相应共享资源上的一个或多个锁的状态,并且其中为了共享所述一个或多个锁的状态,所述分布式锁管理器组件被配置为通过网络彼此通信,该网络与所述虚拟计算实例借以彼此通信的网络的所述至少一部分在物理上或逻辑上不同;
其中所述应用组件中的一个被配置为激活对在相应计算节点上执行的所述分布式锁管理器组件的调用以开始对由所述分布式应用存取的共享资源上的锁进行锁管理操作,其中实现所述应用组件的所述虚拟计算实例在所述相应计算节点上执行。
2.如权利要求1所述的系统,其中所述分布式锁管理器组件借以彼此通信的网络包括服务提供商计算环境的控制平面网络,并且其中所述虚拟计算实例借以彼此通信的网络的所述至少一部分包括所述服务提供商计算环境的数据平面网络。
3.如权利要求1所述的系统,其中,响应于对所述分布式锁管理器组件的所述调用,所述分布式锁管理器组件被配置为:
执行所述锁管理操作;以及
将所述锁的所得状态传送至在除了所述分布式锁管理器组件在上面执行的计算节点之外的计算节点上执行的至少一个分布式锁管理器组件。
4.如权利要求1所述的系统,其中所述两个或更多个计算节点实现用于所述客户端的虚拟专用网络。
5.一种用于分布式锁管理的方法,包括:
通过一个或多个计算机执行:
通过在多个计算节点中的一个给定计算节点上执行的分布式锁管理器的组件接收对共享资源上的锁进行锁管理操作的请求,其中所述接收包括从在所述给定计算节点上执行的计算实例接收所述请求,并且其中所述计算实例使用为所述计算实例分配的网络资源能力来存取所述共享资源;以及
执行所请求的锁管理操作,其中所述执行包括所述分布式锁管理器组件使用除了为所述计算实例分配的所述网络资源能力外的网络资源能力与在所述多个计算节点中的另一计算节点上执行的另一分布式锁管理器组件通信以共享所述锁的状态信息。
6.如权利要求5所述的方法,
其中所述计算实例实现分布式应用的应用组件;以及
其中所述方法还包括所述应用组件使用为所述计算实例分配的所述网络资源能力与所述分布式应用的至少一个其它组件通信。
7.如权利要求5所述的方法,其中所述多个计算节点实现一个或多个虚拟计算服务。
8.如权利要求5所述的方法,其中所述执行锁管理操作包括将所述锁与所述共享资源相关联,并且其中所述通信包括将所述关联传送至所述另一分布式锁管理器组件。
9.如权利要求5所述的方法,其中所述执行锁管理操作包括修改所述锁的值。
10.如权利要求9所述的方法,其中所述锁的所述值识别所述共享资源的拥有者。
11.如权利要求9所述的方法,还包括:
所述分布式锁管理器的组件将所述锁的经修改的值写入至持久数据存储区。
12.如权利要求9所述的方法,其中所述修改锁值包括原子级地修改所述锁值。
13.如权利要求5所述的方法,其中为所述计算实例分配的所述网络资源能力包括网络连接性资源或输入/输出吞吐量。
14.如权利要求5所述的方法,其中所述执行还包括将所述锁的状态信息缓存在所述给定计算节点上。
15.一种用于分布式锁管理的系统,包括:
一个或多个处理器;
一个或多个存储器,所述一个或多个存储器上存储有程序指令,所述程序指令当在所述一个或多个处理器上执行时使所述一个或多个处理器执行:
通过在多个计算节点中的一个给定计算节点上执行的分布式锁管理器的组件接收对锁进行锁管理操作的请求,该锁与一实体相关联,对该实体的共享存取将受控制,其中所述接收包括从在所述给定计算节点上执行的资源实例接收所述请求,其中所述多个计算节点实现分布式锁服务,其中所述资源实例存取与所述锁相关联的实体,并且其中所述请求符合用于定义由所述分布式锁管理器支持的一个或多个锁管理操作的应用编程接口;以及
执行所请求的锁管理操作,其中所述执行包括所述分布式锁管理器组件使用除了所述资源实例借以存取与所述锁相关联的实体的网络连接性外的网络连接性,来与所述分布式锁管理器的、在所述多个计算节点中的另一个上执行的另一组件通信以共享所述锁的状态信息。
CN201480033024.5A 2013-06-10 2014-06-10 云计算环境中的分布式锁管理 Active CN105283838B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/914,104 2013-06-10
US13/914,104 US9658899B2 (en) 2013-06-10 2013-06-10 Distributed lock management in a cloud computing environment
PCT/US2014/041724 WO2014201012A1 (en) 2013-06-10 2014-06-10 Distributed lock management in a cloud computing environment

Publications (2)

Publication Number Publication Date
CN105283838A CN105283838A (zh) 2016-01-27
CN105283838B true CN105283838B (zh) 2018-02-06

Family

ID=52006403

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480033024.5A Active CN105283838B (zh) 2013-06-10 2014-06-10 云计算环境中的分布式锁管理

Country Status (8)

Country Link
US (1) US9658899B2 (zh)
EP (1) EP3008580B1 (zh)
JP (1) JP6333967B2 (zh)
CN (1) CN105283838B (zh)
AU (1) AU2014278314B2 (zh)
CA (1) CA2914802C (zh)
SG (1) SG11201510030WA (zh)
WO (1) WO2014201012A1 (zh)

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9658899B2 (en) * 2013-06-10 2017-05-23 Amazon Technologies, Inc. Distributed lock management in a cloud computing environment
US9736159B2 (en) 2013-11-11 2017-08-15 Amazon Technologies, Inc. Identity pool bridging for managed directory services
US10908937B2 (en) 2013-11-11 2021-02-02 Amazon Technologies, Inc. Automatic directory join for virtual machine instances
US10447610B1 (en) 2013-11-11 2019-10-15 Amazon Technologies, Inc. Techniques for network redirection
US9459931B2 (en) 2014-01-06 2016-10-04 International Business Machines Corporation Administering a lock for resources in a distributed computing environment
US9887937B2 (en) * 2014-07-15 2018-02-06 Cohesity, Inc. Distributed fair allocation of shared resources to constituents of a cluster
US9836332B2 (en) * 2014-07-31 2017-12-05 Corent Technology, Inc. Software defined SaaS platform
US10200258B2 (en) * 2014-08-14 2019-02-05 Juniper Networks, Inc. Transaction integrity for network services configuration
US20160094668A1 (en) * 2014-09-29 2016-03-31 Alcatel-Lucent Usa Inc. Method and apparatus for distributed customized data plane processing in a data center
WO2016122631A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Memory-driven out-of-band management
US10509663B1 (en) 2015-02-04 2019-12-17 Amazon Technologies, Inc. Automatic domain join for virtual machine instances
US10129156B2 (en) 2015-03-31 2018-11-13 At&T Intellectual Property I, L.P. Dynamic creation and management of ephemeral coordinated feedback instances
US10277666B2 (en) 2015-03-31 2019-04-30 At&T Intellectual Property I, L.P. Escalation of feedback instances
US9524200B2 (en) 2015-03-31 2016-12-20 At&T Intellectual Property I, L.P. Consultation among feedback instances
US9769206B2 (en) 2015-03-31 2017-09-19 At&T Intellectual Property I, L.P. Modes of policy participation for feedback instances
US10129157B2 (en) 2015-03-31 2018-11-13 At&T Intellectual Property I, L.P. Multiple feedback instance inter-coordination to determine optimal actions
US9992277B2 (en) 2015-03-31 2018-06-05 At&T Intellectual Property I, L.P. Ephemeral feedback instances
US10079693B2 (en) * 2015-12-28 2018-09-18 Netapp, Inc. Storage cluster management proxy
US9674108B1 (en) * 2015-12-30 2017-06-06 Accenture Global Solutions Limited Hub-and-spoke connection architecture
US11669320B2 (en) 2016-02-12 2023-06-06 Nutanix, Inc. Self-healing virtualized file server
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10248174B2 (en) 2016-05-24 2019-04-02 Hedvig, Inc. Persistent reservations for virtual disk using multiple targets
US10432450B2 (en) 2016-06-30 2019-10-01 Microsoft Technology Licensing, Llc. Data plane API in a distributed computing network
CN106293954A (zh) * 2016-08-08 2017-01-04 浪潮(北京)电子信息产业有限公司 一种基于分布式锁的高可用服务管理方法
CN107783842B (zh) * 2016-08-31 2021-09-03 阿里巴巴集团控股有限公司 一种分布式锁实现方法、设备及存储装置
CN106648909A (zh) 2016-10-13 2017-05-10 华为技术有限公司 一种磁盘锁的管理方法、装置和系统
CN106453390B (zh) * 2016-11-11 2019-10-18 北京邮电大学 一种云存储系统
US11562034B2 (en) 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
CN106648903B (zh) * 2017-01-03 2019-03-26 北京百度网讯科技有限公司 调用分布式文件系统的方法和装置
US10623487B2 (en) * 2017-01-11 2020-04-14 International Business Machines Corporation Moveable distributed synchronization objects
US11153224B2 (en) 2017-02-09 2021-10-19 Radcom Ltd. Method of providing cloud computing infrastructure
US10474664B2 (en) * 2017-03-09 2019-11-12 Sap Se Lock mode determination service
CN108632070B (zh) * 2017-03-23 2020-04-28 华为技术有限公司 虚拟网络设备的配置方法及服务器
CN109101341B (zh) * 2017-06-21 2022-02-22 阿里巴巴集团控股有限公司 分布式锁的分配方法及设备
CN107329830A (zh) * 2017-06-28 2017-11-07 郑州云海信息技术有限公司 一种分布式集群系统优化的方法及装置
US10536397B2 (en) 2017-10-03 2020-01-14 Sap Se Packet count-based object locking protocol
US10848468B1 (en) 2018-03-05 2020-11-24 Commvault Systems, Inc. In-flight data encryption/decryption for a distributed storage platform
US10749971B2 (en) * 2018-04-24 2020-08-18 Microsoft Technology Licensing, Llc Virtual private network gateway management
US10817505B2 (en) * 2018-05-08 2020-10-27 Sap Se Maintaining consistency within a federated cloud environment
US10460235B1 (en) * 2018-07-06 2019-10-29 Capital One Services, Llc Data model generation using generative adversarial networks
US11474978B2 (en) 2018-07-06 2022-10-18 Capital One Services, Llc Systems and methods for a data search engine based on data profiles
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US11636068B2 (en) 2019-05-09 2023-04-25 Citrix Systems, Inc. Distributed file locking for a network file share
US11176121B2 (en) * 2019-05-28 2021-11-16 International Business Machines Corporation Global transaction serialization
US10949124B2 (en) 2019-06-28 2021-03-16 Amazon Technologies, Inc. Virtualized block storage servers in cloud provider substrate extension
WO2020263578A1 (en) * 2019-06-28 2020-12-30 Amazon Technologies, Inc. Virtualized block storage servers in cloud provider substrate extension
US11044118B1 (en) 2019-06-28 2021-06-22 Amazon Technologies, Inc. Data caching in provider network substrate extensions
US10949131B2 (en) 2019-06-28 2021-03-16 Amazon Technologies, Inc. Control plane for block storage service distributed across a cloud provider substrate and a substrate extension
US10949125B2 (en) 2019-06-28 2021-03-16 Amazon Technologies, Inc. Virtualized block storage servers in cloud provider substrate extension
US11374789B2 (en) 2019-06-28 2022-06-28 Amazon Technologies, Inc. Provider network connectivity to provider network substrate extensions
US11411771B1 (en) 2019-06-28 2022-08-09 Amazon Technologies, Inc. Networking in provider network substrate extensions
US11695665B2 (en) 2019-07-09 2023-07-04 Vmware, Inc. Cross-cloud connectivity checks
CN110677453A (zh) * 2019-08-15 2020-01-10 平安普惠企业管理有限公司 基于ZooKeeper的分布式锁服务实现方法、装置、设备及存储介质
US11669368B2 (en) * 2019-09-28 2023-06-06 Intel Corporation Multi-tenant data protection in edge computing environments
US11050647B1 (en) * 2019-12-16 2021-06-29 Vmware, Inc. Simulation-based cross-cloud connectivity checks
CN113076187B (zh) * 2020-01-03 2024-01-09 阿里巴巴集团控股有限公司 分布式锁管理方法及装置
CN111209593A (zh) * 2020-01-10 2020-05-29 杭州溪塔科技有限公司 基于区块链的分布式锁处理方法及相关装置和电子设备
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
CN111415146A (zh) * 2020-06-08 2020-07-14 浙江口碑网络技术有限公司 资源数据的处理方法、装置及设备
US11449241B2 (en) 2020-06-08 2022-09-20 Amazon Technologies, Inc. Customizable lock management for distributed resources
CN111756826B (zh) * 2020-06-12 2023-07-18 浪潮电子信息产业股份有限公司 一种dlm的锁信息传输方法以及相关装置
US11669498B2 (en) * 2020-07-24 2023-06-06 EMC IP Holding Company LLC Facilitating exclusive local locks on a distributed file system
CN111858079B (zh) * 2020-07-27 2024-03-12 北京达佳互联信息技术有限公司 分布式锁迁移方法、装置及电子设备、存储介质
CN112181653A (zh) * 2020-09-28 2021-01-05 中国建设银行股份有限公司 一种作业调度和执行方法、装置、设备、系统和存储介质
US20220114157A1 (en) * 2020-10-12 2022-04-14 Oracle International Corporation Lock management for distributed application pods
US20220182384A1 (en) * 2020-11-04 2022-06-09 Netapp, Inc. Multi-protocol lock manager for distributed lock management
US11880350B2 (en) * 2021-06-08 2024-01-23 International Business Machines Corporation Identifying resource lock ownership across a clustered computing environment
CN114679465A (zh) * 2022-03-28 2022-06-28 北京火山引擎科技有限公司 资源操作方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101013381A (zh) * 2007-01-26 2007-08-08 华中科技大学 基于对象存储系统的分布式锁
CN101273333A (zh) * 2005-04-13 2008-09-24 普罗格雷斯软件公司 容错分布式锁定管理
CN102355473A (zh) * 2011-06-28 2012-02-15 用友软件股份有限公司 分布式计算环境下的锁定控制系统和方法
US8458517B1 (en) * 2010-04-30 2013-06-04 Amazon Technologies, Inc. System and method for checkpointing state in a distributed system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7325064B2 (en) * 2001-07-17 2008-01-29 International Business Machines Corporation Distributed locking protocol with asynchronous token prefetch and relinquish
US8543781B2 (en) 2004-02-06 2013-09-24 Vmware, Inc. Hybrid locking using network and on-disk based schemes
US7581066B2 (en) * 2005-04-29 2009-08-25 Sap Ag Cache isolation model
US20060271395A1 (en) * 2005-05-25 2006-11-30 Harris Steven T Distributed object identity in a virtual machine cluster
US8595729B2 (en) * 2006-11-06 2013-11-26 Intel Corporation Managing sequenced lock requests
US8111707B2 (en) 2007-12-20 2012-02-07 Packeteer, Inc. Compression mechanisms for control plane—data plane processing architectures
US20080243847A1 (en) 2007-04-02 2008-10-02 Microsoft Corporation Separating central locking services from distributed data fulfillment services in a storage system
US8429739B2 (en) * 2008-03-31 2013-04-23 Amazon Technologies, Inc. Authorizing communications between computing nodes
US8914511B1 (en) * 2009-06-26 2014-12-16 VMTurbo, Inc. Managing resources in virtualization systems
US8510334B2 (en) 2009-11-05 2013-08-13 Oracle International Corporation Lock manager on disk
EP3002683B1 (en) 2009-12-14 2017-07-12 Citrix Systems Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
US8352658B2 (en) 2010-05-27 2013-01-08 Microsoft Corporation Fabric based lock manager service
EP2628100A4 (en) 2010-10-12 2016-12-21 Nasuni Corp SHARED VERSION FILE SYSTEM
US20120239810A1 (en) * 2011-03-18 2012-09-20 International Business Machines Corporation System, method and computer program product for clustered computer environment partition resolution
US8533171B2 (en) 2011-04-08 2013-09-10 Symantec Corporation Method and system for restarting file lock services at an adoptive node during a network filesystem server migration or failover
US8924370B2 (en) * 2011-05-31 2014-12-30 Ori Software Development Ltd. Efficient distributed lock manager
US8504542B2 (en) 2011-09-02 2013-08-06 Palantir Technologies, Inc. Multi-row transactions
US9658899B2 (en) * 2013-06-10 2017-05-23 Amazon Technologies, Inc. Distributed lock management in a cloud computing environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101273333A (zh) * 2005-04-13 2008-09-24 普罗格雷斯软件公司 容错分布式锁定管理
CN101013381A (zh) * 2007-01-26 2007-08-08 华中科技大学 基于对象存储系统的分布式锁
US8458517B1 (en) * 2010-04-30 2013-06-04 Amazon Technologies, Inc. System and method for checkpointing state in a distributed system
CN102355473A (zh) * 2011-06-28 2012-02-15 用友软件股份有限公司 分布式计算环境下的锁定控制系统和方法

Also Published As

Publication number Publication date
US20140365549A1 (en) 2014-12-11
JP2016524760A (ja) 2016-08-18
CA2914802C (en) 2019-03-26
US9658899B2 (en) 2017-05-23
WO2014201012A1 (en) 2014-12-18
EP3008580B1 (en) 2023-05-31
SG11201510030WA (en) 2016-01-28
AU2014278314A1 (en) 2016-01-07
JP6333967B2 (ja) 2018-05-30
CA2914802A1 (en) 2014-12-18
EP3008580A1 (en) 2016-04-20
EP3008580A4 (en) 2017-01-18
AU2014278314B2 (en) 2017-01-19
CN105283838A (zh) 2016-01-27

Similar Documents

Publication Publication Date Title
CN105283838B (zh) 云计算环境中的分布式锁管理
CN103946834B (zh) 虚拟网络接口对象
CN102571698B (zh) 一种虚拟机访问权限的控制方法、系统及装置
US11218364B2 (en) Network-accessible computing service for micro virtual machines
CN105393219B (zh) 用于虚拟桌面的应用市场
CN104090825B (zh) 动态迁移计算机网络
CN109818918A (zh) 基于软件定义网络加密策略的策略驱动的工作负载启动
CN104320418B (zh) 提供对远程服务的本地安全网络访问
CN105408882B (zh) 自动化桌面布置
CN108431778A (zh) 对虚拟桌面实例池的管理
US20020169975A1 (en) Security policy management for network devices
CN108459988A (zh) 持续性远程直接存储器存取
CN105579965A (zh) 经由提供商定义接口的客户端驻地资源控制
CN108780410A (zh) 计算系统中的容器的网络虚拟化
CN107113219A (zh) 虚拟环境中的vlan标记
CN104583955A (zh) 用于编配计算环境中的ip授权与解除授权的方法和设备
WO2011072270A1 (en) Unified user login for co-location facilities
CN104067261B (zh) 向有多承租人能力的服务供应承租人的方法和系统
CN108780407A (zh) 使用访问和执行环境的应用程序流式传输
CN109445912A (zh) 一种虚拟机的配置方法、配置系统及sdn控制器
JP5190921B2 (ja) コミュニティ通信ネットワーク、通信制御方法、コミュニティ管理サーバ、コミュニティ管理方法、およびプログラム
US20240098089A1 (en) Metadata customization for virtual private label clouds
CN107454088A (zh) 一种数据访问控制方法及装置
JP2000132523A (ja) 分散エージェント処理方法、分散エージェントシステム、及び分散エージェントプログラムを記録した記録媒体

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