CN111399991B - 虚拟资源加锁方法和装置、存储介质及电子装置 - Google Patents

虚拟资源加锁方法和装置、存储介质及电子装置 Download PDF

Info

Publication number
CN111399991B
CN111399991B CN202010502826.3A CN202010502826A CN111399991B CN 111399991 B CN111399991 B CN 111399991B CN 202010502826 A CN202010502826 A CN 202010502826A CN 111399991 B CN111399991 B CN 111399991B
Authority
CN
China
Prior art keywords
target
server
interval
resource
servers
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
CN202010502826.3A
Other languages
English (en)
Other versions
CN111399991A (zh
Inventor
谢亚晋
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010502826.3A priority Critical patent/CN111399991B/zh
Publication of CN111399991A publication Critical patent/CN111399991A/zh
Application granted granted Critical
Publication of CN111399991B publication Critical patent/CN111399991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种虚拟资源加锁方法和装置、存储介质及电子装置。其中,该方法包括:获取目标客户端发送的目标访问请求,其中,目标访问请求中携带有用于标记目标访问请求所请求访问的目标资源的目标标识,目标资源存储在多个服务器中的目标服务器中,多个服务器中的每个服务器中存储有不同的资源,不同的资源对应不同的标识;从多个数据区间中确定目标标识所处的目标区间,其中,每一个数据区间与一个服务器对应;从多个服务器中确定出与目标区间匹配的目标服务器;向目标服务器发送加锁请求,其中,加锁请求用于请求锁住目标服务器中的目标资源。本发明解决了对虚拟资源加锁效率低的技术问题。

Description

虚拟资源加锁方法和装置、存储介质及电子装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种基于数据库的查询、修改等的虚拟资源加锁方法和装置、存储介质及电子装置。
背景技术
现有技术中,在服务器中通常可以存储有公共的虚拟资源,公共的虚拟资源可以被多个用户所访问。当多个用户中的一个用户访问公共的虚拟资源时,公共的虚拟资源通常被锁住,其他用户暂时无法访问锁住的公共的虚拟资源。当一个用户访问公共的虚拟资源完成后,其他用户可以申请访问公共的虚拟资源。
然而,现有技术中,通常情况下使用一台服务器作为处理加锁请求的服务器,即使使用多台服务器,在接收到一个加锁请求后,也需要向多台服务器同时发送上述加锁请求,造成每一台服务器都需要处理所有的加锁请求,每一台服务器运算数据量大,加锁效率低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种虚拟资源加锁方法和装置、存储介质及电子装置,以至少解决对虚拟资源加锁效率低的技术问题。
根据本发明实施例的一个方面,提供了一种虚拟资源加锁方法,包括:获取目标客户端发送的目标访问请求,其中,上述目标访问请求中携带有用于标记上述目标访问请求所请求访问的目标资源的目标标识,上述目标资源存储在多个服务器中的目标服务器中,上述多个服务器中的每个服务器中存储有不同的资源,不同的上述资源对应不同的标识;从多个数据区间中确定上述目标标识所处的目标区间,其中,每一个上述数据区间与一个上述服务器对应;从上述多个服务器中确定出与上述目标区间匹配的上述目标服务器;向上述目标服务器发送加锁请求,其中,上述加锁请求用于请求锁住上述目标服务器中的上述目标资源。
根据本发明实施例的另一方面,还提供了一种虚拟资源加锁装置,包括:获取单元,用于获取目标客户端发送的目标访问请求,其中,上述目标访问请求中携带有用于标记上述目标访问请求所请求访问的目标资源的目标标识,上述目标资源存储在多个服务器中的目标服务器中,上述多个服务器中的每个服务器中存储有不同的资源,不同的上述资源对应不同的标识;第一确定单元,用于从多个数据区间中确定上述目标标识所处的目标区间,其中,每一个上述数据区间与一个上述服务器对应;第二确定单元,用于从上述多个服务器中确定出与上述目标区间匹配的上述目标服务器;发送单元,用于向上述目标服务器发送加锁请求,其中,上述加锁请求用于请求锁住上述目标服务器中的上述目标资源。
作为一种可选的示例,上述获取单元包括:第二确定模块,用于在获取到上述目标客户端发送的多个第一访问请求后,在上述多个第一访问请求中包括多个上述目标访问请求的情况下,根据多个上述目标访问请求中的上述目标标识确定出上述目标服务器,其中,多个上述目标访问请求所携带的上述目标标识相同;发送模块,用于向上述目标服务器发送一次上述加锁请求。
作为一种可选的示例,上述第一确定单元包括:计算模块,用于对所述目标标识执行哈希运算,得到所述目标标识的哈希值;比对模块,用于将所述哈希值与所述多个数据区间的最小值与最大值进行比对;第一确定模块,用于在所述哈希值小于第一区间的最大值且大于所述第一区间的最小值的情况下,将所述第一区间确定为所述目标区间。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述虚拟资源加锁方法。
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的虚拟资源加锁方法。
在本发明实施例中,采用了获取目标客户端发送的目标访问请求,其中,上述目标访问请求中携带有用于标记上述目标访问请求所请求访问的目标资源的目标标识,上述目标资源存储在多个服务器中的目标服务器中,上述多个服务器中的每个服务器中存储有不同的资源,不同的上述资源对应不同的标识;从多个数据区间中确定上述目标标识所处的目标区间,其中,每一个上述数据区间与一个上述服务器对应;从上述多个服务器中确定出与上述目标区间匹配的上述目标服务器;向上述目标服务器发送加锁请求,其中,上述加锁请求用于请求锁住上述目标服务器中的上述目标资源的方法,由于在上述方法中,服务器分别存储不同的资源,从而在处理加锁请求时,不同的服务器处理针对不同资源的加锁请求,从而实现了降低每一台服务器的运算量,提高加锁效率的效果。进而解决了对虚拟资源加锁效率低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的虚拟资源加锁方法的应用环境的示意图;
图2是根据本发明实施例的另一种可选的虚拟资源加锁方法的应用环境的示意图;
图3是根据本发明实施例的一种可选的虚拟资源加锁方法的流程示意图;
图4是根据本发明实施例的一种可选的虚拟资源加锁方法的资源与区间示意图;
图5是根据本发明实施例的一种可选的虚拟资源加锁方法的服务器缩容示意图;
图6是根据本发明实施例的一种可选的虚拟资源加锁方法的服务器增容示意图;
图7是根据本发明实施例的一种可选的虚拟资源加锁方法的服务器与客户端交互示意图;
图8是根据本发明实施例的另一种可选的虚拟资源加锁方法的服务器与客户端交互示意图;
图9是根据本发明实施例的一种可选的虚拟资源加锁方法的示意图;
图10是根据本发明实施例的一种可选的虚拟资源加锁装置的结构示意图;
图11是根据本发明实施例的一种可选的电子装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种虚拟资源加锁方法,可选地,作为一种可选的实施方式,上述虚拟资源加锁方法可以但不限于应用于如图1所示的环境中。
图1中用户102与用户设备104之间可以进行人机交互。用户设备104中包含有存储器106,用于存储交互数据、处理器108,用于处理交互数据。用户设备104可以通过网络110与服务器112之间进行数据交互。服务器112包含多个。用户设备104可以获取用户设备104上运行的目标客户端发送的目标访问请求,然后根据目标访问请求中的目标标识确定出目标服务器112-2,之后用户设备104向目标服务器112-2发送加锁请求,以完成访问目标资源的操作。
或者,上述虚拟资源加锁方法可以但不限于应用于如图2所示的环境中。
图2中用户202与用户设备204之间可以进行人机交互。用户设备204中包含有存储器206,用于存储交互数据、处理器208,用于处理交互数据。用户设备204可以通过网络110与服务器212之间进行数据交互。服务器212中包含有数据库214,用于存储交互数据、处理引擎216,用于处理交互数据。服务器212可以与服务器218进行交互,服务器218包含多个。服务器212可以获取用户设备204上运行的目标客户端发送的目标访问请求,然后根据目标访问请求中的目标标识确定出目标服务器218-2,之后服务器212向目标服务器218-2发送加锁请求,以完成访问目标资源的操作。
上述服务器112、212、218可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。用户设备104、用户设备204可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。用户设备104、用户设备204以及服务器112、212、218可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
可选地,作为一种可选的实施方式,如图3所示,上述虚拟资源加锁方法包括:
S302,获取目标客户端发送的目标访问请求,其中,目标访问请求中携带有用于标记目标访问请求所请求访问的目标资源的目标标识,目标资源存储在多个服务器中的目标服务器中,多个服务器中的每个服务器中存储有不同的资源,不同的资源对应不同的标识;
S304,从多个数据区间中确定目标标识所处的目标区间,其中,每一个数据区间与一个服务器对应;
S306,从多个服务器中确定出与目标区间匹配的目标服务器;
S308,向目标服务器发送加锁请求,其中,加锁请求用于请求锁住目标服务器中的目标资源。
可选地,上述虚拟资源加锁方法可以但不限于应用于访问服务器中的公共资源的过程中。应用领域可以为多个方面,包括游戏领域、工作生活领域等任何需要访问公共资源的过程中的领域。
以游戏领域为例,游戏可以但不限于包括:二维(Two Dimension,简称2D)游戏、三维(Three Dimension,简称3D)游戏、虚拟现实(Virtual Reality,简称VR)游戏、增强现实(Augmented Reality, 简称AR)游戏、混合现实(Mixed Reality,简称MR)游戏。游戏中涉及到多个用户访问公共资源。
多个用户中的一个用户使用登录的客户端访问公共资源时,发送目标访问请求,目标访问请求中携带有访问公共资源中的目标资源的目标标识,通过目标标识,定位到多个数据区间的目标区间,通过目标区间定位到存储目标资源的目标服务器,并向目标服务器发送加锁请求,请求加锁目标资源并访问目标资源。如果目标服务器返回加锁成功的指令,则该用户可以访问目标资源 ,其他用户此时无法访问目标资源。
通过上述方法,通过服务器分别存储不同的资源,从而在处理加锁请求时,不同的服务器处理针对不同资源的加锁请求,即使同一时间有庞大数量的访问公共资源的访问请求,也可以分到不同的服务器单独进行处理,从而实现了降低每一台服务器的运算量,提高加锁效率的效果。
以工作领域为例,一家公司的多位员工都可以访问公司的公共资源。多位员工中的一位员工使用登录的客户端访问公共资源时,发送目标访问请求,目标访问请求中携带有访问公共资源中的目标资源的目标标识,通过目标标识,定位到多个数据区间的目标区间,通过目标区间定位到存储目标资源的目标服务器,并向目标服务器发送加锁请求,请求加锁目标资源并访问目标资源。如果目标服务器返回加锁成功的指令,则该员工可以访问目标资源 ,其他员工此时无法访问目标资源。
通过上述方法,通过服务器分别存储不同的资源,从而在处理加锁请求时,不同的服务器处理针对不同资源的加锁请求,即使同一时间有庞大数量的访问公共资源的访问请求,也可以分到不同的服务器单独进行处理,从而实现了降低每一台服务器的运算量,提高加锁效率的效果。
可选地,本方案中的目标资源的资源类型与资源内容是不做限定的。目标资源属于公共资源,公共资源为拥有权限的人都可以访问的资源。
可选地,本方案中的每一个公共资源均对应一个标识,不同的公共资源对应不同的标识。标识具有唯一性。
可选地,本方案中可以将公共资源分成多份,每一份公共资源的大小与数量可以相同或者不同,每一份公共资源可以存储到一个服务器中。
可选地,本方案中对公共资源分份时,可以根据公共资源的关联关系进行分份,或者根据公共资源的类型分份,或者随机分份等。
以根据公共资源的关联关系进行分份为例,例如公共资源包含多种资源,多种资源之间资源关联性有大有小。将关联性大的公共资源分为一份,存储到一个服务器中,将关联性小的公共资源存储到其他服务器中。具体关联性可以与阈值比较,以确定关联性的大小。
以根据公共资源的类型分份为例,公共资源可能涉及到不同的类型,如游戏资源可能涉及到好友、帮派、等级、野怪等多种类型,将每一种类型的公共资源分为一份存储到一个服务器中。
经过上述方法,可以设置多个服务器,不同的服务器分别存储不同的公共资源,资源相互之间不重叠。
需要说明的是,多个服务器之间存储的资源也可以重叠,当资源在多个服务器中均有存储时,确定出的目标服务器可能包含多个,此时可以从多个目标服务器中选择一个发送加锁请求。选择方法可以为随机选择,或者按照每个目标服务器存储的数据量选择,或者按照每个目标服务器当前服务的用户量进行选择。
可选地,每一个存储有公共资源的服务器均可以设置一个数据区间,数据区间与服务器存储的公共资源对应。
例如,如图4所示,将所有的公共资源视为一个集合402,则该集合402对应一个总数据区间404,每一个服务器存储一部分公共资源,则每个服务器对应的数据区间为总数据区间404的子区间406。可以将公共资源对应的标识确定为数据区间,也可以通过公共资源对应的数据标识计算数据区间。
例如,公共资源包括三种资源,对应的总数据区间为0-3,公共资源两种资源存储在服务器1中,一种资源存储在服务器2中,则服务器1对应的数据区间为与存储的两种资源对应的数字组成的子区间,例如为0-2,而存储一种资源的服务器2对应的数据区间为2-3。需要说明的是,以上数值仅为举例,并不是对本方案的限定。
可选地,每一个服务器存储有公共资源的一部分,若是一个服务器发生故障,则发送给该故障的服务器的加锁请求将请求失败,而发送给正常服务器的加锁请求正常处理。
服务器中保存的数据并不是固定的,某些情况下可能涉及到数据的合并或者分离。如将两个服务器中的共享数据进行合并,或者将一个服务器中的共享数据分离。则此时,两个服务器对应的数据区间也对应分离,或者一个服务器对应的数据区间分成对应的两个数据区间。
例如,如图5所示,图5中包括了服务器502、服务器504与服务器506,分别存储有不同的共享资源,分别对应区间1、区间2与区间3。若是将服务器502与服务器504中的共享资源合并存储到服务器504中,则需要将数据区间1与数据区间2合并,得到对应的数据区间4,数据区间4即为服务器504对应的新的数据区间。
例如,如图6所示,服务器602与服务器604中分别存储有共享资源。若是服务器602中的共享资源需要拆分到服务器602与服务器606中,则服务器602对应的数据区间1也需要根据共享资源的拆分做对应的拆分,拆分为数据区间3与数据区间4,分别与服务器602与服务器606对应,服务器604中的共享资源没有变化,数据区间2也没有发生变化。
需要说明的是,本方案中的每个数据区间与每个服务器中存储的共享资源相关,上述数值仅为了举例,并不是限定资源与区间的数值相同。数据区间可以在获取到所存储的共享资源后经过计算得到。例如,计算一个服务器的共享资源的标识的哈希值,得到哈希值范围,将哈希值范围确定为服务器的数据区间。数据区间可以连贯,也可以不连贯。
可选地,在确定每个服务器所存储的共享资源与每个服务器的数据区间之后,如果获取到一个目标客户端发送的目标访问请求。则可以首先确定目标访问请求中的目标标识对应的公共资源保存在哪一个服务器上,然后向该服务器发送加锁请求以请求加锁,并请求处理目标访问请求。
为了保证各个服务器之间不互相影响,在获取到目标标识后,对目标标识执行一致性哈希算法,确定出一个哈希值,然后比对哈希值位于哪一个服务器的数据区间之内,当确定哈希值位于一个服务器的数据区间之内时,则确定出了该目标标识对应的目标访问请求所要访问的服务器。通过该一致性哈希算法,即使一个服务区发生故障或者资源之间进行了合并或拆分,也不会影响其他服务器,能够准确高效的定位到所要访问的目标服务器。
当确定出目标服务器之后,可以向目标服务器发送加锁请求,加锁请求用于锁住目标访问请求所请求访问的目标资源,并由目标服务器响应目标访问请求,对目标资源进行增删查改操作等。目标服务器通过或不通过加锁请求,会向客户端返回加锁成功响应或者加锁失败响应。如果目标服务器返回了加锁成功响应,则其他客户端向服务器发送加锁请求会失败。同一时间允许一个客户端加锁目标资源并对目标资源进行访问。
例如,如图7所示,以游戏为例,公共资源为帮派资金资源,帮派的多名帮众通过不同的客户端登陆游戏,均希望访问帮派资金资源,此时,多名帮众先后通过步骤S702向服务器702发送访问请求与加锁请求,客户端704发送的加锁请求被第一个接收到,加锁成功,则客户端704可以访问帮派资金资源,其他加锁请求失败。
可选地,本方案中可能涉及到一个客户端在预定时长内发送多次目标访问请求,均请求访问目标资源。此时,只向目标服务器发送一次加锁请求,加锁成功之后目标服务器依次处理多个目标访问请求。
例如,如图8所示,客户端802与客户端804均向服务器806发送访问请求,客户端802先后通过步骤S802发送了三条访问请求,客户端804发送了一条访问请求。均访问服务器806中的帮派资金资源。此时。由于客户端802虽然发送了三条访问请求,但是由于三条访问请求的发送时间在预定时长内,则只向服务器806发送一条加锁请求。服务器加锁成功后依次处理三条访问请求,而客户端804发送的一条访问请求存入先入先出队列,等待服务器806中的帮派资金资源解锁。
以下结合一个具体示例进行说明。以游戏为例,游戏可以为大型多人在线角色扮演游戏(Massive Multipalyer Online Role-PlayingGame,简称为MMORPG), 游戏中多个用户可以通过不同的客户端登陆同一个虚拟世界,虚拟世界由服务器提供,共享数据保存在服务器侧。如图9的步骤S902到步骤S908所示,部署服务器1-3(多台锁服务器)每台锁服务器提供不同数据区间的锁服务,同时锁服务器的前端部署一台路由服务器(图9中的哈希路由),用于判断每个加锁解锁请求应发送至哪台锁服务器。以此解决单主机提供锁服务导致的读写压力过大的问题。服务器1-3中可以分别存储有共享数据1-3。
本方案首先需要对共享资源进行编号,例如共享数据包括帮派数据,帮派数据可以通过帮派id作为编号M。业务方发起加锁或解锁请求,应该带上对应的编号M。
路由服务器根据共享资源编号M进行哈希运算,得到数据所处的数据区间,决定该请求发送至哪个锁服务器进行处理。即编号哈希运算后位于不同区间的共享资源,加锁请求将发送至不同的锁服务器。例如,先入先出队列(First Input First Output,简称为FIFO)中的请求访问共享资源1的请求1与请求2经过一致性哈希计算后,确定出位于区间1内,则加锁请求发送给服务器1进行处理。服务器1返回加锁结果,如果加锁成功,则依次处理针对共享资源1的请求1请求2,处理完成之后,将针对共享资源1的请求1、2移出先入先出队列。如果加锁请求未通过,则针对共享资源1的请求1、2可以继续等待,或者移出先入先出队列。
常见的简单的哈希算法是取余运算,为了防止某服务器故障、或锁服务器数量扩容时,服务器数量变更导致原有路由大量失效的情况,本方案使用一致性哈希(hash)算法,减少影响范围。不同共享资源的加锁请求,将被分配至不同的区间,每个区间顺时针寻找最近的锁服务器locksvr,将加锁请求发往该锁服务器locksvr。
当某个锁服务器locksvr发生故障,对应区间的加锁请求将失败,但是不会影响其他区间的请求。
当需要增加锁服务器locksvr进行扩容时,只需向两台锁服务器locksvr之间,插入新的锁服务器locksvr,这时只需先屏蔽该区间内的加锁请求,等锁服务器locksvr扩容成功后,再继续接受加锁请求,将影响缩小到最低。
对于每个业务方的加锁操作,锁服务器都会为之分配一个全局唯一的锁编号,业务方此后的每次解锁、解锁请求都必须带上锁编号,锁服务器根据锁编号判断请求的合法性,保证锁的安全性。
由于业务逻辑复杂性,同一业务中不同模块由不同开发人员负责,经常出现同一个业务中不同模块先后发起相同的加锁请求,如果每次加锁都发送请求至锁服务器,将会增加网络压力。因此本发明将相同的加锁请求缓存在FIFO队列中,如图9所示,针对共享资源1的请求包括请求1与请求2,由同一业务方发起。只向锁服务器发起一次加锁请求。锁服务器将加锁结果通知业务方,业务方根据FIFO队列的顺序,依次处理各模块的请求的后续逻辑。
由于分布式锁的所有锁操作均为网络传输,每次发起加锁后,业务逻辑需要等待一段时间,才能收到加锁结果,加锁逻辑都是异步的,但是异步代码逻辑割裂,业务方需要为每个加锁请求,开发一个回调函数,即收到加锁结果后,再调用回调函数进行后续逻辑。这种异步回调的方式开发效率不高,需要开发人员为回调函数传递逻辑上下文数据。本发明提供的加锁操作均通过协程,解决加锁异步代码的逻辑割裂问题。开发人员可以在发起加锁请求后,在同一个代码上下文中继续开发后续逻辑,开发人员无需保存上下文数据,协程会自动保存上下文,提高了开发效率。
通过本实施例,通过服务器分别存储不同的资源,从而在处理加锁请求时,不同的服务器处理针对不同资源的加锁请求,即使同一时间有庞大数量的访问公共资源的访问请求,也可以分到不同的服务器单独进行处理,从而实现了降低每一台服务器的运算量,提高加锁效率的效果。
作为一种可选的实施方案,从多个数据区间中确定目标标识所处的目标区间包括:
对目标标识执行哈希运算,得到目标标识的哈希值;
将哈希值与多个数据区间的最小值与最大值进行比对;
在哈希值小于第一区间的最大值且大于第一区间的最小值的情况下,将第一区间确定为目标区间。
通过本实施例,通过上述方法,从而可以准确确定出目标访问请求所访问的目标资源的位置,避免增删服务器后大量路由失效的情况。
作为一种可选的实施方案,在从多个服务器中确定出与目标区间匹配的目标服务器之前,方法还包括:
将共享资源存储到多个服务器中,其中,每个服务器存储有第一资源,第一资源为共享资源的一部分资源;
为每一个服务器建立数据区间,其中,数据区间与第一资源相匹配。
通过本实施例,通过上述方法,从而可以准确确定出目标资源所在的目标服务器。
作为一种可选的实施方案,在为每一个服务器建立数据区间之后,方法还包括:
在新增一个服务器的情况下,在将多个服务器中的第一服务器中的第一资源中的第二资源存储到新增的服务器中之后,将第一服务器的数据区间拆分为第一区间与第二区间,其中,第一区间为与第一服务器中的第一资源中的剩余资源对应的区间,第二区间为与第二资源对应的区间,第二资源为第一资源的一部分;
将第一区间作为第一服务器的新的数据区间,将第二区间作为新增的服务器的数据区间。
通过本实施例,可以实现自动对服务器进行扩容或者缩容,提高了服务器存储共享资源的灵活性。
作为一种可选的实施方案,在为每一个服务器建立数据区间之后,方法还包括:
在删除一个服务器的情况下,在将删除的服务器存储的第一资源存储到多个服务器中的第二服务器中之后,将第二服务器的数据区间与删除的服务器的数据区间合并,得到第三区间;
将第三区间确定为第二服务器的新的数据区间。
通过本实施例,可以实现自动对服务器进行扩容或者缩容,提高了服务器存储共享资源的灵活性。
作为一种可选的实施方案,在获取目标客户端发送的目标访问请求时,方法还包括:
在获取到目标客户端发送的多个第一访问请求后,在多个第一访问请求中包括多个目标访问请求的情况下,根据多个目标访问请求中的目标标识确定出目标服务器,其中,多个目标访问请求所携带的目标标识相同;
向目标服务器发送一次加锁请求。
通过本实施例,从而可以在获取到多次访问请求时发送一次加锁请求,实现了减少服务器计算量,提高加锁效率的效果。
作为一种可选的示例,在获取到多个所述目标访问请求之后,所述方法还包括:
将多个所述目标访问请求按照接收时间的先后顺序存储到目标队列中,其中,所述接收时间越早,对应的所述目标访问请求在所述目标队列中的位置越靠前;
在接收到一个新的所述目标访问请求之后,将新的所述目标访问请求存储到所述目标队列的末尾。
可选地,目标队列可以为先入先出队列。通过本方法,通过将目标访问请求存储到先入先出队列,从而可以按照顺序依次处理各个目标访问请求,提高目标访问请求的处理准确度。
作为一种可选的实施方案,在向目标服务器发送一次加锁请求之后,方法还包括:
所述目标服务器按照所述目标队列中多个所述目标访问请求的先后顺序,依次处理多个所述目标访问请求;
在所述目标服务器处理完成一个所述目标访问请求之后,将处理完成的所述目标访问请求从所述目标队列中删除;
在所有的所述目标访问请求处理完成之后,获取所述目标客户端发送的解锁请求,其中,所述解锁请求用于请求解锁所述目标资源。
通过本实施例,从而可以在获取到多次访问请求时发送一次加锁请求,实现了减少服务器计算量,提高加锁效率的效果,此外,根据目标队列依次处理目标访问请求,将处理后的目标访问请求从目标队列中删除,提高了目标访问请求的处理准确度。
作为一种可选的实施方案,在向目标服务器发送加锁请求之后,方法还包括:
在加锁成功的情况下,目标服务器将目标资源的访问权限设置为仅允许发送目标访问请求的目标客户端访问;
在目标服务器接收到其他客户端发送访问目标资源的第二访问请求的情况下,拒绝其他客户端访问目标资源。
通过本实施例,实现了对目标资源的有效保护,提高了对目标资源进行访问的安全性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述虚拟资源加锁方法的虚拟资源加锁装置。如图10所示,该装置包括:
(1)获取单元1002,用于获取目标客户端发送的目标访问请求,其中,目标访问请求中携带有用于标记目标访问请求所请求访问的目标资源的目标标识,目标资源存储在多个服务器中的目标服务器中,多个服务器中的每个服务器中存储有不同的资源,不同的资源对应不同的标识;
(2)第一确定单元1004,用于从多个数据区间中确定目标标识所处的目标区间,其中,每一个数据区间与一个服务器对应;
(3)第二确定单元1006,用于从多个服务器中确定出与目标区间匹配的目标服务器;
(4)发送单元1008,用于向目标服务器发送加锁请求,其中,加锁请求用于请求锁住目标服务器中的目标资源。
可选地,上述虚拟资源加锁装置可以但不限于应用于访问服务器中的公共资源的过程中。应用领域可以为多个方面,包括游戏领域、工作生活领域等任何需要访问公共资源的过程中的领域。
以游戏领域为例,游戏可以但不限于包括:二维(Two Dimension,简称2D)游戏、三维(Three Dimension,简称3D)游戏、虚拟现实(Virtual Reality,简称VR)游戏、增强现实(Augmented Reality, 简称AR)游戏、混合现实(Mixed Reality,简称MR)游戏。游戏中涉及到多个用户访问公共资源。
多个用户中的一个用户使用登录的客户端访问公共资源时,发送目标访问请求,目标访问请求中携带有访问公共资源中的目标资源的目标标识,通过目标标识,定位到多个数据区间的目标区间,通过目标区间定位到存储目标资源的目标服务器,并向目标服务器发送加锁请求,请求加锁目标资源并访问目标资源。如果目标服务器返回加锁成功的指令,则该用户可以访问目标资源 ,其他用户此时无法访问目标资源。
通过上述方法,通过服务器分别存储不同的资源,从而在处理加锁请求时,不同的服务器处理针对不同资源的加锁请求,即使同一时间有庞大数量的访问公共资源的访问请求,也可以分到不同的服务器单独进行处理,从而实现了降低每一台服务器的运算量,提高加锁效率的效果。
以工作领域为例,一家公司的多位员工都可以访问公司的公共资源。多位员工中的一位员工使用登录的客户端访问公共资源时,发送目标访问请求,目标访问请求中携带有访问公共资源中的目标资源的目标标识,通过目标标识,定位到多个数据区间的目标区间,通过目标区间定位到存储目标资源的目标服务器,并向目标服务器发送加锁请求,请求加锁目标资源并访问目标资源。如果目标服务器返回加锁成功的指令,则该员工可以访问目标资源 ,其他员工此时无法访问目标资源。
通过上述方法,通过服务器分别存储不同的资源,从而在处理加锁请求时,不同的服务器处理针对不同资源的加锁请求,即使同一时间有庞大数量的访问公共资源的访问请求,也可以分到不同的服务器单独进行处理,从而实现了降低每一台服务器的运算量,提高加锁效率的效果。
可选地,本方案中的目标资源的资源类型与资源内容是不做限定的。目标资源属于公共资源,公共资源为拥有权限的人都可以访问的资源。
可选地,本方案中的每一个公共资源均对应一个标识,不同的公共资源对应不同的标识。标识具有唯一性。
可选地,本方案中可以将公共资源分成多份,每一份公共资源的大小与数量可以相同或者不同,每一份公共资源可以存储到一个服务器中。
可选地,本方案中对公共资源分份时,可以根据公共资源的关联关系进行分份,或者根据公共资源的类型分份,或者随机分份等。
以根据公共资源的关联关系进行分份为例,例如公共资源包含多种资源,多种资源之间资源关联性有大有小。将关联性大的公共资源分为一份,存储到一个服务器中,将关联性小的公共资源存储到其他服务器中。具体关联性可以与阈值比较,以确定关联性的大小。
以根据公共资源的类型分份为例,公共资源可能涉及到不同的类型,如游戏资源可能涉及到好友、帮派、等级、野怪等多种类型,将每一种类型的公共资源分为一份存储到一个服务器中。
经过上述方法,可以设置多个服务器,不同的服务器分别存储不同的公共资源,资源相互之间不重叠。
需要说明的是,多个服务器之间存储的资源也可以重叠,当资源在多个服务器中均有存储时,确定出的目标服务器可能包含多个,此时可以从多个目标服务器中选择一个发送加锁请求。选择方法可以为随机选择,或者按照每个目标服务器存储的数据量选择,或者按照每个目标服务器当前服务的用户量进行选择。
可选地,每一个存储有公共资源的服务器均可以设置一个数据区间,数据区间与服务器存储的公共资源对应。
例如,如图4所示,将所有的公共资源视为一个集合402,则该集合402对应一个总数据区间404,每一个服务器存储一部分公共资源,则每个服务器对应的数据区间为总数据区间404的子区间406。可以将公共资源对应的标识确定为数据区间,也可以通过公共资源对应的数据标识计算数据区间。
例如,公共资源包括三种资源,对应的总数据区间为0-3,公共资源两种资源存储在服务器1中,一种资源存储在服务器2中,则服务器1对应的数据区间为与存储的两种资源对应的数字组成的子区间,例如为0-2,而存储一种资源的服务器2对应的数据区间为2-3。需要说明的是,以上数值仅为举例,并不是对本方案的限定。
可选地,每一个服务器存储有公共资源的一部分,若是一个服务器发生故障,则发送给该故障的服务器的加锁请求将请求失败,而发送给正常服务器的加锁请求正常处理。
服务器中保存的数据并不是固定的,某些情况下可能涉及到数据的合并或者分离。如将两个服务器中的共享数据进行合并,或者将一个服务器中的共享数据分离。则此时,两个服务器对应的数据区间也对应分离,或者一个服务器对应的数据区间分成对应的两个数据区间。
例如,如图5所示,图5中包括了服务器502、服务器504与服务器506,分别存储有不同的共享资源,分别对应区间1、区间2与区间3。若是将服务器502与服务器504中的共享资源合并存储到服务器504中,则需要将数据区间1与数据区间2合并,得到对应的数据区间4,数据区间4即为服务器504对应的新的数据区间。
例如,如图6所示,服务器602与服务器604中分别存储有共享资源。若是服务器602中的共享资源需要拆分到服务器602与服务器606中,则服务器602对应的数据区间1也需要根据共享资源的拆分做对应的拆分,拆分为数据区间3与数据区间4,分别与服务器602与服务器606对应,服务器604中的共享资源没有变化,数据区间2也没有发生变化。
需要说明的是,本方案中的每个数据区间与每个服务器中存储的共享资源相关,上述数值仅为了举例,并不是限定资源与区间的数值相同。数据区间可以在获取到所存储的共享资源后经过计算得到。例如,计算一个服务器的共享资源的标识的哈希值,得到哈希值范围,将哈希值范围确定为服务器的数据区间。数据区间可以连贯,也可以不连贯。
可选地,在确定每个服务器所存储的共享资源与每个服务器的数据区间之后,如果获取到一个目标客户端发送的目标访问请求。则可以首先确定目标访问请求中的目标标识对应的公共资源保存在哪一个服务器上,然后向该服务器发送加锁请求以请求加锁,并请求处理目标访问请求。
为了保证各个服务器之间不互相影响,在获取到目标标识后,对目标标识执行一致性哈希算法,确定出一个哈希值,然后比对哈希值位于哪一个服务器的数据区间之内,当确定哈希值位于一个服务器的数据区间之内时,则确定出了该目标标识对应的目标访问请求所要访问的服务器。通过该一致性哈希算法,即使一个服务区发生故障或者资源之间进行了合并或拆分,也不会影响其他服务器,能够准确高效的定位到所要访问的目标服务器。
当确定出目标服务器之后,可以向目标服务器发送加锁请求,加锁请求用于锁住目标访问请求所请求访问的目标资源,并由目标服务器响应目标访问请求,对目标资源进行增删查改操作等。目标服务器通过或不通过加锁请求,会向客户端返回加锁成功响应或者加锁失败响应。如果目标服务器返回了加锁成功响应,则其他客户端向服务器发送加锁请求会失败。同一时间允许一个客户端加锁目标资源并对目标资源进行访问。
例如,如图7所示,以游戏为例,公共资源为帮派资金资源,帮派的多名帮众通过不同的客户端登陆游戏,均希望访问帮派资金资源,此时,多名帮众先后通过步骤S702向服务器702发送访问请求与加锁请求,客户端704发送的加锁请求被第一个接收到,加锁成功,则客户端704可以访问帮派资金资源,其他加锁请求失败。
可选地,本方案中可能涉及到一个客户端在预定时长内发送多次目标访问请求,均请求访问目标资源。此时,只向目标服务器发送一次加锁请求,加锁成功之后目标服务器依次处理多个目标访问请求。
例如,如图8所示,客户端802与客户端804均向服务器806发送访问请求,客户端802先后通过步骤S802发送了三条访问请求,客户端804发送了一条访问请求。均访问服务器806中的帮派资金资源。此时。由于客户端802虽然发送了三条访问请求,但是由于三条访问请求的发送时间在预定时长内,则只向服务器806发送一条加锁请求。服务器加锁成功后依次处理三条访问请求,而客户端804发送的一条访问请求存入先入先出队列,等待服务器806中的帮派资金资源解锁。
通过本实施例,通过服务器分别存储不同的资源,从而在处理加锁请求时,不同的服务器处理针对不同资源的加锁请求,即使同一时间有庞大数量的访问公共资源的访问请求,也可以分到不同的服务器单独进行处理,从而实现了降低每一台服务器的运算量,提高加锁效率的效果。
作为一种可选的实施方案,第一确定单元包括:
(1)计算模块,用于对目标标识执行哈希运算,得到目标标识的哈希值;
(2)比对模块,用于将哈希值与多个数据区间的最小值与最大值进行比对;
(3)第一确定模块,用于在哈希值小于第一区间的最大值且大于第一区间的最小值的情况下,将第一区间确定为目标区间。
通过本实施例,通过上述方法,从而可以准确确定出目标访问请求所访问的目标资源的位置,避免增删服务器后大量路由失效的情况。
作为一种可选的实施方案,装置还包括:
(1)存储单元,用于在从多个服务器中确定出与目标区间匹配的目标服务器之前,将共享资源存储到多个服务器中,其中,每个服务器存储有第一资源,第一资源为共享资源的一部分资源;
(2)创建单元,用于为每一个服务器建立数据区间,其中,数据区间与第一资源相匹配。
通过本实施例,通过上述方法,从而可以准确确定出目标资源所在的目标服务器。
作为一种可选的实施方案,装置还包括:
(1)拆分单元,用于在为每一个服务器建立数据区间之后,在新增一个服务器的情况下,在将多个服务器中的第一服务器中的第一资源中的第二资源存储到新增的服务器中之后,将第一服务器的数据区间拆分为第一区间与第二区间,其中,第一区间为与第一服务器中的第一资源中的剩余资源对应的区间,第二区间为与第二资源对应的区间,第二资源为第一资源的一部分;
(2)第三确定单元,用于将第一区间作为第一服务器的新的数据区间,将第二区间作为新增的服务器的数据区间。
通过本实施例,可以实现自动对服务器进行扩容或者缩容,提高了服务器存储共享资源的灵活性。
作为一种可选的实施方案,装置还包括:
(1)合并单元,用于在为每一个服务器建立数据区间之后,在删除一个服务器的情况下,在将删除的服务器存储的第一资源存储到多个服务器中的第二服务器中之后,将第二服务器的数据区间与删除的服务器的数据区间合并,得到第三区间;
(2)第四确定单元,用于将第三区间确定为第二服务器的新的数据区间。
通过本实施例,可以实现自动对服务器进行扩容或者缩容,提高了服务器存储共享资源的灵活性。
作为一种可选的实施方案,获取单元还包括:
(1)第二确定模块,用于在获取到目标客户端发送的多个第一访问请求后,在多个第一访问请求中包括多个目标访问请求的情况下,根据多个目标访问请求中的目标标识确定出目标服务器,其中,多个目标访问请求所携带的目标标识相同;
(2)发送模块,用于向目标服务器发送一次加锁请求。
通过本实施例,从而可以在获取到多次访问请求时发送一次加锁请求,实现了减少服务器计算量,提高加锁效率的效果。
作为一种可选的实施方案,所述获取单元还包括:
第一存储模块,用于在获取到多个所述目标访问请求之后,将多个所述目标访问请求按照接收时间的先后顺序存储到目标队列中,其中,所述接收时间越早,对应的所述目标访问请求在所述目标队列中的位置越靠前;
第二存储模块,用于在接收到一个新的所述目标访问请求之后,将新的所述目标访问请求存储到所述目标队列的末尾。
通过本实施例,通过上述方法,从而可以在获取到多个目标访问请求之后,按照接收时间将目标访问请求存储到目标队列中,在处理多个目标访问请求时,按照目标队列中多个目标访问请求的顺序依次处理多个目标访问请求,提高了目标访问请求的处理准确度。
根据本发明实施例的又一个方面,还提供了一种用于实施上述虚拟资源加锁方法的电子装置,如图11所示,该电子装置包括存储器1102和处理器1104,该存储器1102中存储有计算机程序,该处理器1104被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
获取目标客户端发送的目标访问请求,其中,目标访问请求中携带有用于标记目标访问请求所请求访问的目标资源的目标标识,目标资源存储在多个服务器中的目标服务器中,多个服务器中的每个服务器中存储有不同的资源,不同的资源对应不同的标识;
从多个数据区间中确定目标标识所处的目标区间,其中,每一个数据区间与一个服务器对应;
从多个服务器中确定出与目标区间匹配的目标服务器;
向目标服务器发送加锁请求,其中,加锁请求用于请求锁住目标服务器中的目标资源。
可选地,本领域普通技术人员可以理解,图11所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图11并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图11中所示更多或者更少的组件(如网络接口等),或者具有与图11所示不同的配置。
其中,存储器1102可用于存储软件程序以及模块,如本发明实施例中的虚拟资源加锁方法和装置对应的程序指令/模块,处理器1104通过运行存储在存储器1102内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的虚拟资源加锁方法。存储器1102可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1102可进一步包括相对于处理器1104远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1102具体可以但不限于用于存储公共资源等信息。作为一种示例,如图11所示,上述存储器1102中可以但不限于包括上述虚拟资源加锁装置中的获取单元1002、第一确定单元1004、第二确定单元1006与发送单元1008。此外,还可以包括但不限于上述虚拟资源加锁装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1106包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1106为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子装置还包括:显示器1108,用于显示公共资源操作界面;和连接总线1110,用于连接上述电子装置中的各个模块部件。
根据本发明的实施例的又一方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
获取目标客户端发送的目标访问请求,其中,目标访问请求中携带有用于标记目标访问请求所请求访问的目标资源的目标标识,目标资源存储在多个服务器中的目标服务器中,多个服务器中的每个服务器中存储有不同的资源,不同的资源对应不同的标识;
从多个数据区间中确定目标标识所处的目标区间,其中,每一个数据区间与一个服务器对应;
从多个服务器中确定出与目标区间匹配的目标服务器;
向目标服务器发送加锁请求,其中,加锁请求用于请求锁住目标服务器中的目标资源。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (14)

1.一种虚拟资源加锁方法,其特征在于,包括:
在获取到目标客户端发送的多个第一访问请求之后,获取所述多个第一访问请求中的多个相同的目标访问请求,其中,所述目标访问请求中携带有用于标记所述目标访问请求所请求访问的目标资源的目标标识,所述目标资源存储在多个服务器中的目标服务器中,所述多个服务器中的每个服务器中存储有不同的资源,不同的所述资源对应不同的标识;
从多个数据区间中确定所述目标标识所处的目标区间,其中,每一个所述数据区间与一个所述服务器对应;
从所述多个服务器中确定出与所述目标区间匹配的所述目标服务器;
向所述目标服务器发送一次加锁请求,其中,所述加锁请求用于请求锁住所述目标服务器中的所述目标资源。
2.根据权利要求1所述的方法,其特征在于,所述从多个数据区间中确定所述目标标识所处的目标区间包括:
对所述目标标识执行哈希运算,得到所述目标标识的哈希值;
将所述哈希值与所述多个数据区间的最小值与最大值进行比对;
在所述哈希值小于第一区间的最大值且大于所述第一区间的最小值的情况下,将所述第一区间确定为所述目标区间。
3.根据权利要求1所述的方法,其特征在于,在从多个服务器中确定出与所述目标区间匹配的目标服务器之前,所述方法还包括:
将共享资源存储到所述多个服务器中,其中,每个所述服务器存储有第一资源,所述第一资源为所述共享资源的一部分资源;
为每一个所述服务器建立所述数据区间,其中,所述数据区间与所述第一资源相匹配。
4.根据权利要求3所述的方法,其特征在于,在为每一个所述服务器建立所述数据区间之后,所述方法还包括:
在新增一个所述服务器的情况下,在将所述多个服务器中的第一服务器中的所述第一资源中的第二资源存储到新增的所述服务器中之后,将所述第一服务器的所述数据区间拆分为第一区间与第二区间,其中,所述第一区间为与所述第一服务器中的所述第一资源中的剩余资源对应的区间,所述第二区间为与所述第二资源对应的区间,所述第二资源为所述第一资源的一部分;
将所述第一区间作为所述第一服务器的新的所述数据区间,将所述第二区间作为新增的所述服务器的所述数据区间。
5.根据权利要求3所述的方法,其特征在于,在为每一个所述服务器建立所述数据区间之后,所述方法还包括:
在删除一个所述服务器的情况下,在将删除的所述服务器存储的第一资源存储到所述多个服务器中的第二服务器中之后,将所述第二服务器的所述数据区间与删除的所述服务器的所述数据区间合并,得到第三区间;
将所述第三区间确定为所述第二服务器的新的所述数据区间。
6.根据权利要求1所述的方法,其特征在于,在获取所述多个第一访问请求中的多个相同的所述目标访问请求之后,所述方法还包括:
将多个所述目标访问请求按照接收时间的先后顺序存储到目标队列中,其中,所述接收时间越早,对应的所述目标访问请求在所述目标队列中的位置越靠前;
在接收到一个新的所述目标访问请求之后,将新的所述目标访问请求存储到所述目标队列的末尾。
7.根据权利要求6所述的方法,其特征在于,在向所述目标服务器发送一次所述加锁请求之后,所述方法还包括:
所述目标服务器按照所述目标队列中多个所述目标访问请求的先后顺序,依次处理多个所述目标访问请求;
在所述目标服务器处理完成一个所述目标访问请求之后,将处理完成的所述目标访问请求从所述目标队列中删除;
在所有的所述目标访问请求处理完成之后,获取所述目标客户端发送的解锁请求,其中,所述解锁请求用于请求解锁所述目标资源。
8.根据权利要求1所述的方法,其特征在于,在向所述目标服务器发送所述加锁请求之后,所述方法还包括:
在加锁成功的情况下,所述目标服务器将所述目标资源的访问权限设置为仅允许发送所述目标访问请求的所述目标客户端访问;
在所述目标服务器接收到其他客户端发送访问所述目标资源的第二访问请求的情况下,拒绝所述其他客户端访问所述目标资源。
9.一种虚拟资源加锁装置,其特征在于,包括:
获取单元,用于在获取到目标客户端发送的多个第一访问请求之后,获取所述多个第一访问请求中的多个相同的目标访问请求,其中,所述目标访问请求中携带有用于标记所述目标访问请求所请求访问的目标资源的目标标识,所述目标资源存储在多个服务器中的目标服务器中,所述多个服务器中的每个服务器中存储有不同的资源,不同的所述资源对应不同的标识;
第一确定单元,用于从多个数据区间中确定所述目标标识所处的目标区间,其中,每一个所述数据区间与一个所述服务器对应;
第二确定单元,用于从所述多个服务器中确定出与所述目标区间匹配的所述目标服务器;
发送单元,用于向所述目标服务器发送一次加锁请求,其中,所述加锁请求用于请求锁住所述目标服务器中的所述目标资源。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
存储单元,用于在从多个服务器中确定出与所述目标区间匹配的目标服务器之前,将共享资源存储到所述多个服务器中,其中,每个所述服务器存储有第一资源,所述第一资源为所述共享资源的一部分资源;
创建单元,用于为每一个所述服务器建立所述数据区间,其中,所述数据区间与所述第一资源相匹配。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
拆分单元,用于在为每一个所述服务器建立所述数据区间之后,在新增一个所述服务器的情况下,在将所述多个服务器中的第一服务器中的所述第一资源中的第二资源存储到新增的所述服务器中之后,将所述第一服务器的所述数据区间拆分为第一区间与第二区间,其中,所述第一区间为与所述第一服务器中的所述第一资源中的剩余资源对应的区间,所述第二区间为与所述第二资源对应的区间,所述第二资源为所述第一资源的一部分;
第三确定单元,用于将所述第一区间作为所述第一服务器的新的所述数据区间,将所述第二区间作为新增的所述服务器的所述数据区间。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括:
合并单元,用于在为每一个所述服务器建立所述数据区间之后,在删除一个所述服务器的情况下,在将删除的所述服务器存储的第一资源存储到所述多个服务器中的第二服务器中之后,将所述第二服务器的所述数据区间与删除的所述服务器的所述数据区间合并,得到第三区间;
第四确定单元,用于将所述第三区间确定为所述第二服务器的新的所述数据区间。
13.一种计算机可读的存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7任一项中所述的方法。
14.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现权利要求1至7任一项中所述的方法。
CN202010502826.3A 2020-06-05 2020-06-05 虚拟资源加锁方法和装置、存储介质及电子装置 Active CN111399991B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010502826.3A CN111399991B (zh) 2020-06-05 2020-06-05 虚拟资源加锁方法和装置、存储介质及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010502826.3A CN111399991B (zh) 2020-06-05 2020-06-05 虚拟资源加锁方法和装置、存储介质及电子装置

Publications (2)

Publication Number Publication Date
CN111399991A CN111399991A (zh) 2020-07-10
CN111399991B true CN111399991B (zh) 2020-09-29

Family

ID=71431911

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010502826.3A Active CN111399991B (zh) 2020-06-05 2020-06-05 虚拟资源加锁方法和装置、存储介质及电子装置

Country Status (1)

Country Link
CN (1) CN111399991B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113014650B (zh) * 2021-03-01 2022-12-23 中国工商银行股份有限公司 针对数据请求的处理方法、装置、计算设备和介质
CN113032405A (zh) * 2021-05-25 2021-06-25 湖南省第二测绘院 时空数据管理方法、系统、主机及计算机可读存储介质
CN113535415B (zh) * 2021-06-21 2023-08-04 福建天泉教育科技有限公司 一种资源获取方法及终端

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529906B1 (en) * 2000-01-28 2003-03-04 Oracle Corporation Techniques for DLM optimization with re-mastering events
CN108270581A (zh) * 2016-12-31 2018-07-10 中国移动通信集团湖北有限公司 共享资源计费处理方法及装置
CN109617986A (zh) * 2018-12-27 2019-04-12 华为技术有限公司 一种负载均衡方法及网络设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101650646B (zh) * 2009-09-22 2012-02-08 杭州华三通信技术有限公司 一种共享数据一致性的实现方法及装置
CN110968563B (zh) * 2018-09-29 2023-11-17 华为技术有限公司 一种数据存储方法、元数据服务器及客户端

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529906B1 (en) * 2000-01-28 2003-03-04 Oracle Corporation Techniques for DLM optimization with re-mastering events
CN108270581A (zh) * 2016-12-31 2018-07-10 中国移动通信集团湖北有限公司 共享资源计费处理方法及装置
CN109617986A (zh) * 2018-12-27 2019-04-12 华为技术有限公司 一种负载均衡方法及网络设备

Also Published As

Publication number Publication date
CN111399991A (zh) 2020-07-10

Similar Documents

Publication Publication Date Title
CN111399991B (zh) 虚拟资源加锁方法和装置、存储介质及电子装置
CN109496419B (zh) 文件处理方法、装置和系统
CN109951547B (zh) 事务请求并行处理方法、装置、设备和介质
WO2020173287A1 (en) Systems and methods for determining network shards in blockchain network
CN107656988A (zh) 文档编辑方法及系统
CN109684414A (zh) 区块数据的同步方法、装置、设备及存储介质
CN106776785B (zh) 一种数据写入方法及装置和数据处理系统
CN112015811A (zh) 用于区块链系统的节点管理的方法、节点和计算设备
CN110888858A (zh) 数据库的操作方法和装置、存储介质、电子装置
CN104618388B (zh) 快速注册登录方法及对应的重置服务器、信息服务器
CN113687964B (zh) 数据处理方法、装置、电子设备、存储介质及程序产品
CN112527901A (zh) 数据存储系统、方法、计算设备及计算机存储介质
CN109936539B (zh) 帐号信息的传输方法
US20190372825A1 (en) Communication apparatus, communication method, and recording medium
CN113254424B (zh) 数据服务迁移方法、装置及设备
US9977795B1 (en) System and method for multiplayer network gaming
CN112131240A (zh) 脏数据的处理方法和装置、存储介质及电子设备
WO2020224241A1 (zh) 一种云通信方法及装置、用户设备、网络设备
CN112138372B (zh) 分布式系统中的数据同步方法及相关设备
CN105933352B (zh) 基于客户端的服务器之间数据同步方法、客户端及系统
CN114470746A (zh) 服务器系统、数据传输方法、装置、设备及存储介质
CN109710183B (zh) 一种数据同步方法及装置
CN114116655A (zh) 基于虚拟机的并行文件存储方法、装置、设备及存储介质
CN111821687A (zh) 一种基于云游戏的游戏数据存档共享方法及系统
JP3555471B2 (ja) 3次元共有仮想空間におけるマスタ端末割り当て方法及びシステム及び3次元共有仮想空間におけるマスタ端末割り当てプログラムを格納した記憶媒体

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40025782

Country of ref document: HK