管理对外部资源的锁租赁的制作方法

文档序号:19418590发布日期:2019-12-14 01:11阅读:160来源:国知局
管理对外部资源的锁租赁的制作方法



背景技术:

在客户端服务器环境中,多个客户端通常在创建和编辑服务器拥有和管理的网络资源(诸如文件、应用、数据等)时相互协作。客户端通常在本地存储或高速缓存与网络资源有关的数据,其中客户端对本地存储或高速缓存的数据进行改变。在本地访问和修改数据更加有效,并且减轻了服务器的负担,使得服务器可以处理更多请求。对数据的本地访问通常还可以改善诸如应用等网络资源的响应时间,因为网络资源不需要等待客户端在每次请求时通过网络向服务器发送数据。

附图说明

本公开的特征通过示例的方式示出并且在附图中不受限制,在附图中,相同的标号指示相同的元件,在附图中:

图1描绘了根据本公开的实施例的可以在其中实现例如客户端机器等装置的各种特征的网络环境的框图;

图2示出了根据本公开的实施例的装置状态机的图;

图3示出了根据本公开的实施例的用于管理对外部资源的锁租赁的过程流程图;

图4示出了根据本公开的实施例的用于管理外部资源的锁租赁的方法的流程图;以及

图5示出了根据本公开的实施例的用于管理服务器上的外部资源的锁租赁的续订的方法的流程图。

具体实施方式

为了简单和说明的目的,通过主要参考实施例来描述本公开。在以下描述中,阐述了很多具体细节以便提供对本公开的透彻理解。然而,应当很清楚,可以实践本公开而不限于这些具体细节。在其他情况下,未详细描述一些方法和结构,以免不必要地混淆本公开。

在整个本公开中,术语“一个(a)”和“一个(an)”旨在表示至少一个特定元件。如本文中使用的,术语“包括(includes)”表示包括但不限于,术语“包括(including)”表示包括但不限于。术语“基于(basedon)”表示至少部分基于。

提供对外部资源(等效地是网络资源)的协作访问的一个考虑是确保多个客户端机器不对外部资源执行冲突动作。例如,两个客户端可以在将外部资源的本地存储版本保存在服务器处之前对其进行更新,因此,当将外部资源的版本保存在服务器处时可能会发生冲突。一种用于防止多个客户端之间发生这种类型的冲突的机制是一次向一个客户端授予对外部资源的锁租赁,其中具有授予的锁租赁的客户端被授予对外部资源的排他性编辑控制。锁租赁通常是对外部资源的锁的限时租赁。也就是说,锁租赁通常在授予客户端的锁租赁之后具有到期时间,并且如果客户端在该到期时间之前未续订锁租赁,则客户端将丢失锁租赁。

本文中公开了可以使当多个用户正在处理或编辑同一外部资源时发生冲突的可能性最小化的装置和方法。外部资源可以定义为服务器拥有和管理的文件、应用、数据等。在特定示例中,外部资源可以是可从microsoftcorporationtm获取的powerappstm应用。服务器可以使外部资源可用于由多个用户在经由一个或多个网络连接到服务器的多个客户端机器上创建和编辑。另外,外部资源可能不支持共同创作,因此,每个用户可以在相应的客户端机器上存储或高速缓存外部资源的副本以在任何给定时间编辑外部资源。与在服务器处对外部资源进行这样的编辑时相比,处理存储或高速缓存在客户端机器上的外部资源的副本可以使得对外部资源的编辑更加有效,并且可以减轻服务器的负担。

本文中公开的方法和装置可以通过一次向客户端机器之一授予对外部资源的排他性编辑控制来最小化冲突的可能性。锁租赁可以是有时间限制的锁租赁,并且因此可以在预定义的时间段之后到期,该时间段可以按分钟、小时、天等来定义。客户端机器可以有机会通过在预定义时间段到期之前续订锁租赁来维护锁租赁的所有权。为了确保客户端机器不会无意间丢失锁租赁,客户端机器可以设置一个任务(诸如后台任务)以在锁租赁到期之前以某个周期性间隔自动续订锁租赁。

可能出现锁租赁不是以周期性的时间间隔自动续订的情况。例如,如果客户端机器与服务器之间的网络连接不稳定,例如已经发生故障,已经中断,等等,则可能不会续订锁租赁。如果客户端机器出现故障,诸如电缆拔出、网络接口出现故障、客户端机器上的病毒等,锁租赁也可能不会及时续订。根据实施例,在本文中公开的方法和装置中,客户端机器可以在不稳定的网络条件下并且以减少的用户干预需求来维持锁租赁。

传统上将客户端机器表示为处于以下两种状态之一:“已获取”和“未获取”。处于“已获取”状态的客户端机器是已经获取锁租赁的客户端机器,而所有其他客户端机器处于“未获取”状态。处于“已获取”状态的客户端机器可以保持处于该状态,只要客户端机器可以证明客户端机器是锁租赁的唯一所有者,例如,通过在锁租赁期到期之前续订锁租赁。如果客户端机器在锁租赁到期之前不续订锁租赁,则客户端机器可能会丢失锁租赁并且可能会提交获取锁租赁的另一请求。如使用以下示例所述,将客户端机器限制为这两种状态可能会导致不必要的“噪声”:

1)客户端机器获取排他性锁租赁并且进入“已获取”状态。

2)客户端机器无法续订锁(例如,由于网络不稳定),并且丢失锁租赁。客户端机器现在处于“未获取”状态。

3)重新建立网络连接,并且客户端机器可以重新获取锁租赁。

在一些系统中,事件(2)和(3)可能导致向客户端机器的用户示出对话框,其中对话框示出信息并且可能请求输入有关如何进行的指令。另外,在上述示例中,可能没有任何其他客户端机器尝试获取事件(2)和(3)之间的互斥锁。因此,在该示例中,可能不需要示出给用户的对话框,但之所以示出它们是因为客户端机器不确定另一客户端机器是否已经获取了锁租赁(例如,在该示例是由于网络不稳定)。这样,与用于管理网络资源的锁租赁的传统方法相关的技术问题可能是可能不必要地将对话框或通知输出给用户,这可能会不必要地消耗客户端机器的系统资源。

根据本文中公开的实施例,当客户端机器不确定是否将续订对外部资源的锁租赁时,客户端机器可以进入特定状态。该特定状态可以称为“先前已获取但当前未知”状态。在这种状态下,客户端机器可以在客户端机器将能够重新获取丢失的锁租赁这一乐观假定下进行操作。也就是说,例如,当客户端机器不确定是否已经续订锁租赁时,客户端机器可能不会自动向用户输出关于锁租赁已经丢失的通知。而是,当客户端机器确定锁租赁已经丢失时,客户端机器可以输出通知,这可以在客户端机器与服务器之间的通信恢复之后发生。

通过实现本文中公开的方法和装置,可以减少或最小化当客户机器无法续订锁租赁时输出给用户的通知的数目。这样,针对上述技术问题的技术解决方案可以是,由于客户端机器中的诸如处理器等系统资源可以输出较少数目的通知,因此可以减少客户端机器的系统资源的利用率。另外,通过实现本文中公开的方法和装置,可以输出包含针对用户的相关信息的通知,这可以帮助用户做出关于是否进行以下操作的决策:放弃他们对外部资源的本地存储副本所做的改变,使用其他名称来保存外部资源的本地存储副本,或者使用外部资源的本地存储副本来强制外部资源的最新版本的覆盖。

图1描绘了根据本公开的实施例的可以在其中实现例如客户端机器等装置的各种特征的网络环境100的框图。网络环境100可以包括经由网络106与服务器104通信的装置102。网络106可以是局域网、广域网、因特网等。尽管在图1中已经描绘了单个装置102,但是,应当理解,关于装置102具有相似或不同配置的多个装置可以被包括在网络环境100中。另外,尽管在图1中描绘了单个服务器104,但是应当理解,关于服务器104具有相似或不同配置的多个服务器可以被包括在网络环境100中。

装置102可以是客户端机器,诸如个人计算机、膝上型计算机、平板计算机、智能电话等。另外,装置102可以包括可以经由接口112与服务器104通信的处理器110。处理器110可以是基于半导体的微处理器、中央处理单元(cpu)、专用集成电路(asic)、现场可编程门阵列(fpga)和/或其他硬件设备。接口112可以包括硬件、软件或其组合,以促进与服务器104之间的信息通信。尽管装置102被描绘为具有单个处理器110,但是应当理解,在不脱离装置102的范围的情况下,装置102可以包括附加处理器110。

装置102还可以包括数据存储库114、输出设备116和存储器118。数据存储库114可以是包括电子、磁性、光学或其他类型的物理存储设备的非暂态计算机可读介质。输出设备116可以是扬声器、显示器、打印机等,处理器110可以在其上或通过其等向用户输出通知。存储器118可以是例如随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom)、存储设备、光盘等。也可以被称为计算机可读存储介质的存储器118可以是非暂态机器可读存储介质,其中术语“非暂态”不包括暂态传播信号。无论如何,存储器118可以在其上存储机器可读指令120-126。数据存储库114可以类似于以上关于存储器118列出的任何设备。另外,或在其他示例中,数据存储库114和存储器118可以是同一设备。

处理器110可以获取、解码和执行指令120以将外部资源140的副本132存储在装置102上。如图所示,外部资源140可以存储在服务器104上并且可以是网络资源,例如文件、应用、数据等。作为特定示例,外部资源140可以是microsoftpowerappstm应用。服务器104可以拥有和管理外部资源140,并且可以使外部资源140可用于由多个用户在多个装置(例如,客户端机器)上创建和编辑。处理器110可以将外部资源140的副本132下载和存储在装置102的数据存储库114中,使得处理器110可以对外部资源140的副本132实现用户控制的动作,例如访问、修改、续订等。如本文中讨论的,通过作用于存储在装置102上的外部资源140的副本132,而不是作用于存储在服务器104上的外部资源140,与与作用于保存在服务器104上的外部资源140相关联的响应时间相比,与作用于外部资源相关联的响应时间可以减少。

处理器110可以获取、解码和执行指令122以获取外部资源140的锁租赁134。处理器110可以将锁租赁134或装置102已经获取外部资源140的锁租赁134的指示存储在数据存储库114中。锁租赁134可以在一段时间内向装置102授予对外部资源140的排他性编辑控制。特别地,例如,锁租赁134可以是装置102(客户端)与服务器104之间的合同,其中服务器104在一段时间内向装置102授予对外部资源140的排他性编辑控制。服务器104可以遵守合同,直到该时间段到期,和/或可以响应于从装置102接收到扩展请求而扩展合同。换言之,虽然已经向装置102授予锁租赁134,但是服务器104可以忽略来自其他装置(例如,客户端机器)的对外部资源140的排他性编辑控制的请求,和/或可以防止其他装置被授予对外部资源140的锁租赁。

一旦被授予装置102,则对外资源140的锁租赁134可以在预定义时间段内处于活动状态,该时间段可以是用户定义的,由服务器104的管理员定义的,等等。在预定义时间段到期之前,处理器110可以获取、解码和执行指令124以传输对锁租赁134的续订请求。例如,处理器110可以设置任务(例如,后台任务)以在锁租赁134到期的预定义时间段到期之前周期性地传输对锁租赁134的续订请求。

在正常情况下,例如,当装置102和服务器104正常运行并且到网络106的连接正常运行时,服务器104可以接收对锁租赁134的续订请求。另外,服务器104可以向装置102发送应答,其指示锁租赁134已经被续订或指示锁租赁134尚未被续订。然而,当存在诸如网络106中断、网络中断或其他错误等错误时,服务器104可能未接收到对锁租赁134的续订请求和/或装置102可能未接收到来自服务器106的应答。基于未能接收到对续订请求的应答,处理器110可以获取、解码和执行指令126以进入特定状态,在该状态下,处理器110处理对外部资源140的所存储的副本132的新的操作。新的操作可以是在装置102进入特定状态之后用户可以发起并且处理器110可以执行的操作。另外,在处于特定状态时,处理器110还可以处理现有操作,例如,在装置102进入特定状态之前,处理器110已经正在处理和/或处于要处理的队列中的操作。此外,在处于特定状态时并且在确定锁租赁丢失之后,处理器110可以输出装置102丢失锁租赁134的通知。

也就是说,例如,处理器110可以确定从处理器110传输对锁租赁134的续订请求开始的特定时间量内,处理器110尚未从服务器104接收到对续订请求的应答。该特定时间量可以是与在装置102与服务器104之间的正常通信之间经过的正常时间量相对应的时间量。该特定时间量可以附加地或替代地与用户定义的时间段相对应。无论如何,代替自动输出关于装置102已经丢失锁租赁134的通知,处理器110可以进入本文中讨论的状态,例如乐观状态,在该状态下,处理器110在装置102将重新获取锁租赁134的这一假定下进行操作。

如本文中讨论的,当处于乐观状态时,处理器110可以继续处理对外部资源140的存储副本132的现有操作和新的操作。例如,处理器110可以继续处理对外部资源140的存储副本132的诸如现有编辑命令和新编辑命令等操作。此外,处理器110可以保持处于乐观状态,直到处理器110确定装置102已经丢失锁租赁134。响应于从服务器104接收到装置102已经丢失锁租赁134的应答,处理器110可以确定装置102已经丢失锁租赁134。例如,当装置102不能与服务器104通信时,服务器104可以撤消锁租赁134。例如,由于在服务器104接收到对锁租赁134的续约请求之前,锁租赁134保持有效的时间段可能已经到期,因此服务器104可能撤消锁租赁134。基于确定装置102已经丢失锁租赁134,处理器110可以输出关于装置102已经丢失锁租赁134的通知。

如上所述,输出设备116可以是扬声器、显示器、打印机等。因此,例如,处理器110可以输出关于装置102已经丢失锁租赁134的通知作为视觉和/或听觉通知。通过执行指令122-126,处理器110可以延迟通知的输出,直到处理器110确定装置102已经丢失锁租赁134。一方面,通过以这种方式延迟通知的输出,因为在装置102在先前未能从服务器104接收到应答之后获取或重新获取锁租赁134的情况下,处理器110可以不输出通知,因此处理器110可以输出相对较少数目的通知。

现在参考图2,示出了根据一个实施例的装置状态机200的描述。参考图1中描绘的元件进行图2的描述。特别地,图2关于外部资源140的锁租赁134来描绘装置102的各种状态。如图2所示,装置102可以处于初始状态202,例如,“未获取”状态,在这种状态下,装置102不具有外部资源140的锁租赁134。在向服务器104传送对锁租赁134的请求之后,装置102可以如箭头204所示获取锁租赁134。换言之,装置102可以获取外部资源140的分布式排他性锁,并且因此可以处于“已获取”状态206。作为特定示例,当用户向装置102提供输入以打开特定应用以进行编辑时,装置102可以获取排他性锁,例如锁租赁134。装置102可以在设置的时间段内获取锁租赁134,其中分布式锁服务(例如,服务器104)和装置102都可以知道该设置的时间段。一旦获取到锁租赁134,装置102可以例如在数据存储库114中本地下载和存储外部资源140的副本132。

如箭头208所示,处理器110可以运行任务,例如后台任务,该任务在锁租赁134到期之前定期尝试续订锁租赁134。只要续订成功并且用户仍然正在编辑外部资源140的副本132,处理器110就可以继续运行任务208。

由于网络不稳定兴以及其他潜在问题,处理器110可能无法在锁租赁134有效的设置的时间段到期之前续订锁租赁134。另外,如箭头210所示,处理器110可以基于装置102的时钟和最近的锁租赁134的已知持续时间来确定锁租赁134已经到期。在这种情况下,装置102可以进入“先前已获取但当前未知”状态212。在该状态下,处理器110可能不知道锁租赁134是否可用,或者服务器104是否已经向另一客户端机器授予对外部资源140的锁租赁。基于处理器110传输对锁租赁134的续订请求,处理器110在特定时间段内未能接收到对该请求的应答,或者锁租赁134到期,装置102可以进入“先前已获取但当前未知”状态212。

当处于“先前已获取但当前未知”状态212时,处理器110可以继续运行后台任务以重新获取锁租赁134。这样,当到服务器104的网络连接再次可用时,处理器110可以成功地重新获取锁租赁134,如箭头214所示。另外,一旦用户完成了对外部资源140的副本132的编辑并且保存了编辑,则装置102可以如箭头216所示释放锁租赁134,使得其他装置或装置102可以在将来获取锁租赁134。在这种情况下,在箭头210和214指示的操作之间发生的网络不稳定期间,可能不要求或不需要用户干预。

根据本公开的示例,当装置102处于“已获取”状态206或处于“先前已获取但当前未知”状态212时,可以允许用户编辑并且继续编辑装置102上的外部资源140的副本132。然而,当装置102处于“已获取”状态206时,可以允许尝试将外部资源140的副本132保存在服务器104上,但是当装置102处于“先前已获取但当前未知”状态212时,可能不允许尝试。

当处于“先前已获取但当前未知”状态212时,并且在到服务器104的网络连接再次可用之后,可以向用户提供使用另一文件名将外部资源140的副本132保存在服务器104上的选项。就这一点而言,可以向用户提供对服务器104上的外部资源140的副本132执行“另存为”操作的选项。在将副本132保存在服务器140上的同时,可能会检测到冲突(例如,当装置102处于“先前已获取但当前未知”状态212时,其他用户可能已经保存了外部资源140的更新版本)。在这种情况下,可以向用户提供覆盖其他用户的改变、“另存为”其他名称或放弃当前用户改变的选项。

在从“已获取”状态206到“先前已获取但当前未知”状态212的转换210时,可以向用户输出信息消息(例如,经由输出设备116),以指示允许用户继续对副本进行编辑132,但是在装置102返回到“已获取”状态206之前,对服务器104的保存操作可能不可用。此外,在从“先前已获取但当前未知”状态212到“已获取”状态206的转换214时,可以向用户(例如,经由输出设备116)输出信息消息,以指示可以确保保存到服务器104的保存处于有效状态。

当处于“先前已获取但当前未知”状态212时,并且在到服务器104的网络连接再次可用之后,处理器110可以从服务器104接收指示装置102已经丢失对外部资源140的锁租赁134的应答。也就是说,例如,服务器104可以向装置102发送指示装置102已经丢失锁租赁134并且锁租赁134仍然可用的应答。替代地,该应答可以指示装置102已经丢失锁租赁134并且另一客户端机器已经获取锁租赁134。在这些情况中的任一种中,装置102可以进入“未获取”状态202,例如,装置102不具有对外部资源140的锁租赁134的状态。

在从“先前已获取但当前未知”状态212到“未获取”状态202的转换218之前和/或期间,处理器110可以经由输出设备116显示提示对话框,以向用户通知从“先前已获取但当前未知”状态212到“未获取”状态218的转换。提示对话框可以指示另一用户已经拥有外部资源140的所有权,例如,另一用户已经获取对外部资源140的锁租赁。提示对话框还可以指示不再建议继续编辑外部资源140的副本132。此外,提示对话框可以向用户提供将副本132作为另一文件存储在服务器104上或者继续自己承担风险的选项,在这种情况下,用户可能不希望其他用户将其改变保存到外部资源140。

现在参考图3,示出了根据一个实施例的用于管理对外部资源140的锁租赁134的过程流程图300。参考图1中描绘的元件来进行图3的描述。最初,用户(usera)当前可能不具有对外部资源140的锁租赁134,如框302所示。此外,用户可以尝试在用户的客户端机器(例如,装置102)上打开外部资源140,例如,尝试打开应用。这可能导致装置102的处理器110尝试从服务器104获取对外部资源140的锁租赁134。如果尝试成功,则装置102可以获取对外部资源140的锁租赁134,如箭头304和框306所示,并且用户可以具有对外部资源140的排他性编辑访问。此外,外部资源140的副本132可以本地存储在装置102上,如本文中讨论的。

处理器110可以调度任务以在锁租赁134到期之前续订锁租赁134。另外,如框306所示,处理器110可以如箭头308所示成功地续订锁租赁134,以继续具有对外部资源140的有效锁租赁134,如框306所示。处理器110可以继续尝试定期续订锁租赁134,例如在锁租赁134期限到期之前。

然而,如果续订尝试不成功,例如由于连接问题(用户处于脱机状态)、网络106发生中断等,则处理器110可以重试续订尝试。在续订尝试期间或之后,在框312处,处理器110可以确定锁租赁134已经到期。在确定锁租赁134已经到期之后,处理器110可以继续尝试续订锁租赁134,如箭头314所示。处理器110可以继续进行续订尝试,直到处理器110确定已经达到多个条件之一。例如,如箭头316所示,处理器110可以确定续订锁租赁134的尝试成功。在这种情况下,如框306所示,装置102可能已经重新获取锁租赁134,并且处理器110可以如上所述继续续订尝试。

如果续订尝试314失败,例如,因为另一用户(userb)在用户(usera)脱机或从服务器104断开连接时获取了对外部资源140的锁租赁,如箭头318所示,可以向usera通知其他人正在积极地编辑外部资源140。换言之,如框320所示,处理器110可以确定另一客户端机器具有对外部资源140的锁租赁。另外,处理器110可以向usera通知用户可以决定保留或放弃与外部资源140的副本132的会话。

处理器110还可以按照规则的时间间隔(例如,每5分钟,每10分钟,等等)调度定期任务以重试获取对外部资源140的锁租赁134。另外,处理器110可以尝试以规则的时间间隔获取锁租赁134,如箭头322所示,直到装置102能够获取对外部资源140的排他性锁租赁134(例如,另一用户不具有对外部资源140的有效锁租赁)。如果重试成功,则装置102(例如,usera)可以如箭头324所示重新获取对外部资源140的排他性锁租赁134。

作为在314或322处的续订尝试的一部分或除此之外,处理器110可以如箭头326所示执行版本检查。处理器110可以执行版本检查以确定用户仍然对其进行操作的装置102上的外部资源140的副本132是否是外部资源140的最新版本。如果版本检查失败,这表明在装置102处于脱机状态或与服务器104断开连接时另一用户已经改变了服务器104上的外部资源140,则处理器110可以输出指示版本不匹配的消息。也就是说,处理器110可以确定外部资源已经被改变,如框328所示。此外,处理器110可以提示用户放弃用户对外部资源140的副本132进行的改变或强制覆盖服务器104上的外部资源140。处理器110可以接收强制用装置102上的副本132的版本覆盖外部资源140的版本的用户指令,并且装置102可以再次获取锁租赁134,如箭头330所示。处理器110可以替代地接收放弃用户对外部资源140的副本132所做的改变的用户指令,在这种情况下,装置102可能不会丢弃锁租赁134,并且可以返回到框302。

如果装置102重新获取锁租赁134并且返回到框306,则处理器110可以继续尝试续订锁租赁134,直到用户完成对外部资源140的副本132的编辑。如果用户已经完成编辑副本132并且已经在服务器104上上传或覆盖外部资源140的更新版本,则处理器110可以如箭头332所示丢弃锁租赁134。因此,装置102可以返回到框302,其中装置102不具有锁租赁134。此外,在锁租赁134被覆盖的情况下,例如,服务器104与装置102一起取消锁租赁134并且将锁租赁授予另一客户端机器时,装置102可以返回到框302。

现在转向图4,示出了根据一个实施例的用于管理外部资源140的锁租赁134的方法400的流程图。对于本领域的普通技术人员应当很清楚的是,方法400可以表示一般性说明,并且在不脱离方法400的范围的情况下,可以添加其他操作或者可以删除、修改或重新布置现有操作。出于说明目的,参考图1所示的装置102和服务器104来进行方法400的描述。应当理解,在不脱离方法400的范围的情况下,可以实现具有其他配置的装置以执行方法400。

在框402处,处理器110可以执行指令120以将外部资源140的副本132存储在装置102上。外部资源140可以被存储和/或托管在服务器104上。此外,响应于接收到存储和/或执行外部资源140的用户指令,处理器110可以首先经由网络106访问外部资源140。在将外部资源140的副本132存储在装置102上(例如,在装置102的数据存储库114中)之前、期间或之后,服务器104可以向装置110授予对外部资源140的排他性锁,例如锁租赁134。处理器110可以通过尝试从服务器104下载外部资源140的副本来请求锁租赁134。如果另一客户端机器当前未获取对外部资源140的锁租赁,则服务器104可以授予锁租赁。无论如何,可以将锁租赁134设置为在预定义时间段之后到期,并且处理器110和服务器104都可以知道该预定义时间段,一旦处理器110已经获取了锁租赁,该预定义时间段就可以开始。

在框404处,处理器110可以执行指令124以传输对外部资源140的锁租赁134的续订请求。如本文中讨论的,处理器110可以在锁租赁134到期之前传输对锁租赁134的续订请求。处理器110可以将续订请求传输到存储和/或托管有外部资源140的服务器104。响应于接收到授予续订的应答,处理器110可以重置计时器或计数器,使得处理器110可以在当前锁租赁134到期之前传输另一续订请求。根据示例,处理器110可以进行设置后台任务以在预定义时间段到期之前周期性地续订锁租赁134。

在框406处,处理器110可以执行指令126以基于未能接收到对续订请求的应答而使装置102进入特定状态。在该特定状态下,处理器110可以处理对外部资源140的存储副本132的新的操作。此外,处理器110可以处理现有操作,例如,处理器110在装置100进入特定状态之前已经正在处理和/或处于处理队列中的操作。就这一点而言,处理器110可以在特定状态下继续实现用户指令以编辑外部资源140的副本132。另外,在特定状态下,在确定锁租赁134丢失之后,处理器110可以输出关于装置102已经丢失锁租赁134的通知。一方面,处理器110可以不输出该通知,直到处理器110确定锁租赁134丢失。如本文中讨论的,通过延迟通知的输出,处理器110可以在可以重新获取锁租赁134这一乐观信念下进行操作。

现在参考图5,示出了根据一个实施例的用于管理服务器104上的外部资源140的锁租赁134的续订的方法500的流程图。处理器110可以在图4中描绘的方法400的执行期间或之后执行方法500。这样,例如,处理器110可以在获取外部资源140的锁租赁134之后并且在处理器110处于以上关于框406讨论的特定状态时执行方法500。出于说明目的,参考图1所示的网络环境102和图3所示的过程流程图300来进行方法500的描述。

在框502处,处理器110可以确定已经达到续订外部资源140的锁租赁134的时间段。可以将续订锁租赁134的时间段设置为在锁租赁134的时间段到期之前达到。作为示例,可以设置续订锁租赁134的时间段以为处理器110提供足够的时间来提交续订请求并且在锁租赁134到期之前批准续订请求。

在框504处,处理器110可以向服务器104发送锁租赁续订请求,该请求控制锁租赁134在多个客户端机器之间的分配。在框506处,处理器110可以确定是否已经接收到来自服务器104的对锁租赁续订请求的响应。例如,当存在网络错误或中断时,处理器110可以不从服务器104接收响应。基于确定未接收到对锁租赁续订请求的响应,如框508所示,处理器110可以递增计数器和/或计时器。此外,在框510处,处理器110可以确定计数器是否和/或计时器自处理器110发送锁租赁续订请求以来是否已经到期,例如达到预定计数或预定时间。

基于在框510处确定计数器和/或计时器尚未到期,处理器110可以在框504处发送另一锁租赁续订请求。处理器110可以重复框504-510,只要处理器110在框506处继续未能从服务器104接收到响应并且在框510处计数器和/或计时器未到期。然而,基于在框510处确定计数器和/或计时器已经到期,在框512处,处理器110可以输出关于计数器和/或计时器已经到期而没有接收到来自服务器104的响应的指示。处理器110可以经由输出设备116输出通知,使得用户可以确定未能从服务器104接收到响应的原因。此外,方法500可以如框514所示结束。

在框514之后,处理器110可以继续向服务器104发送锁租赁续订请求,如以上关于图3讨论的。也就是说,例如,由于锁租赁134可能已经在框514之后到期,因此在处理器110从服务器104接收到响应之后,处理器110可以确定锁租赁134可用并且外部资源140尚未改变。在这种情况下,装置102可以如箭头316所示重新获取锁租赁。在另一示例中,处理器110可以确定另一客户端机器已经获取锁租赁(框320),并且处理器110可以强制服务器104将锁租赁丢弃给另一客户机并且向装置102提供锁租赁134,如箭头324所示。在另一示例中,处理器110可以确定另一客户机已经改变外部资源(框328)。在该示例中,处理器110可以强制覆盖已改变的外部资源,并且可以重新获取外部资源140的锁租赁134。

再次参考图5,在框506处,基于确定从服务器104接收到响应,处理器110可以确定处理器110是在锁租赁134时间段到期之前还是之后从服务器104接收到响应。在处理器110在锁租赁134时间段到期之前从服务器104接收到响应的情况下,处理器110可以在框518处确定锁租赁134已经被续订。此外,在框518之后,处理器110可以从框502开始重复方法500。

然而,在处理器110在锁租赁134时间段到期之后接收到响应的情况下,处理器110可以在框520处确定锁租赁134是否可用。基于确定锁租赁134不可用,则处理器110可以输出关于另一用户(或等效地为另一客户端机器)已经获取外部资源140的锁租赁的通知。处理器110可以经由输出设备116输出该通知。在一些示例中,方法500可以在框522之后结束。在其他示例中,处理器110可以继续向服务器104发送锁租赁续订请求,如上面关于图3讨论的。

基于确定外部资源140的锁租赁可用,在框524处,处理器110可以从服务器104请求外部资源140的版本信息,并且可以确定是否外部资源140的更新版本(例如,较新版本)是否已经保存在服务器104处。基于确定外部资源140的更新版本尚未保存到服务器104,处理器110可以重新获取锁租赁134,如框526所示。另外,在框526之后,处理器110可以从框502开始重复方法500。

然而,基于确定外部资源140的更新版本已经被保存到服务器140,处理器110可以输出关于外部资源140的更新版本被保存在服务器104处的通知。处理器110可以经由输出设备116输出该通知。就这一点而言,处理器110可以向装置102的用户通知保存在数据存储库114中的外部资源140的副本132可能不是外部资源140的最新版本。在一些示例中,方法500可以在框528之后结束。在其他示例中,并且如以上关于图3讨论的,处理器110可以提示用户放弃用户对外部资源140的副本132所做的改变,或者强制覆盖服务器104上的外部资源140。处理器110可以接收用处理器110可以执行的装置102上的副本132的版本来强制覆盖外部资源140的版本的用户指令,并且装置102可以再次获取锁租赁134,如箭头330所示。或者,处理器110可以接收放弃用户对外部资源140的副本132所做的改变的用户指令,在这种情况下,装置102可以不丢弃锁租赁134并且可以返回到框302。

方法400和500中阐述的某些或全部操作可以作为实用程序、程序或子程序被包含在任何期望的计算机可访问介质中。另外,方法400和500可以由计算机程序来体现,计算机程序可以按照活动和不活动的各种形式存在。例如,它们可以作为机器可读指令存在,包括源代码、目标代码、可执行代码或其他格式。以上任何内容都可以在非暂态计算机可读存储介质上被实现。

非暂态计算机可读存储介质的示例包括计算机系统ram、rom、eprom、eeprom和磁盘或光盘或磁带。因此,将理解,能够执行上述功能的任何电子设备可以执行上面列举的那些功能。

尽管贯穿整个本公开的全文被具体描述,但是本公开的代表性示例在各种应用中具有实用性,并且上述讨论并非旨在并且不应当被解释为是限制性的,而是被提供作为对本公开的各方面的说明性讨论。

已经在本文中被描述和说明的是本公开的示例以及它的变型中的一些变型。本文中被使用的术语、描述和附图仅以举例说明的方式被提出,并且不意味着限制。在本公开的精神和范围内,很多变化是可能的,本公开的精神和范围旨在由所附权利要求及其等同物来定义,其中除非另外指出,否则所有术语均以其最广泛的合理含义而被表示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1