CN108319496A - 资源访问方法、业务服务器、分布式系统及存储介质 - Google Patents

资源访问方法、业务服务器、分布式系统及存储介质 Download PDF

Info

Publication number
CN108319496A
CN108319496A CN201710035584.XA CN201710035584A CN108319496A CN 108319496 A CN108319496 A CN 108319496A CN 201710035584 A CN201710035584 A CN 201710035584A CN 108319496 A CN108319496 A CN 108319496A
Authority
CN
China
Prior art keywords
target resource
thread
information
lock information
service server
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.)
Granted
Application number
CN201710035584.XA
Other languages
English (en)
Other versions
CN108319496B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710035584.XA priority Critical patent/CN108319496B/zh
Publication of CN108319496A publication Critical patent/CN108319496A/zh
Application granted granted Critical
Publication of CN108319496B publication Critical patent/CN108319496B/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

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

资源访问方法、业务服务器、分布式系统及存储介质
技术领域
本申请涉及数据处理技术领域,尤其涉及一种资源访问方法、业务服务器、分布式系统及存储介质。
背景技术
随着数据处理技术的不断发展,需要处理的数据量也在与日俱增,传统的单机处理数据的速度已经无法满足海量数据的处理需求。在这种情况下,分布式系统应运而生。
分布式系统中可以包括能够共享同一个资源池的多个节点。其中,每个节点均可以为物理机或者架设于物理机上的虚拟机,所述资源池中可以包含数据处理所需的各种资源。分布式系统中的各个节点在进行数据处理时,可以执行一系列的任务,而这些任务往往需要对资源池中的同一个资源进行访问,而同一个资源同一时间往往只能够被一个任务访问。鉴于此,在当前的分布式系统中,采用了名为ZooKeeper的分布式应用程序协调服务。
在节点执行的任务需要访问某个资源时,可以在ZooKeeper指定的目录下创建顺序节点。在所述指定的目录中的顺序节点可以按照创建时间进行排序,最早创建顺序节点的任务便可以获得对该资源的锁信息。在需要访问该资源的任务执行完成之后,便可以释放该资源,这样,其它的任务便可以继续按照创建顺序节点的先后顺序来对该资源进行访问。
由上可见,现有技术中在执行一系列相关联的任务时,如果这些任务均需要对同一个资源进行访问,那么每个任务都需要经过对该资源进行权限获取和权限释放的过程,这无疑将增加整个系统的消耗。
应该注意,上面对技术背景的介绍只是为了方便对本申请的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本申请的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
发明内容
本申请实施方式的目的在于提供一种资源访问方法、业务服务器、分布式系统及存储介质,能够在对资源进行访问时减少系统的消耗。
为实现上述目的,本申请一方面提供一种分布式系统,包括管理服务器和业务服务器,其中:所述业务服务器用于在线程执行的任务需访问目标资源时,查询所述线程中是否存在所述管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
为实现上述目的,本申请另一方面还提供一种分布式系统中的资源访问方法,所述方法包括:在线程执行的任务需访问目标资源时,查询所述线程中是否存在管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
为实现上述目的,本申请另一方面还提供一种分布式系统中的业务服务器,所述业务服务器包括:网络通信模块,用于进行网络数据通信;处理器,所述处理器包括预设数量的线程,每个线程中执行至少一个任务,用于在线程执行的任务需访问目标资源时,查询所述线程中是否存在管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
为实现上述目的,本申请另一方面还提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:在线程执行的任务需访问目标资源时,查询所述线程中是否存在管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
本申请实施方式提供的一种资源访问方法、业务服务器、分布式系统及存储介质,在同一个线程中执行的任务可以共享同一个资源的锁信息。这样,在业务服务器的线程中执行的任务需要访问目标资源时,管理服务器可以按照预设规则将所述目标资源的锁信息反馈给所述业务服务器。这样,所述业务服务器便可以为所述线程配置所述目标资源的锁信息。当所述线程中执行的其它任务需要访问该目标资源时,可以根据线程中配置的锁信息对所述目标资源进行访问。这样便可以避免多个任务均需要重复执行权限请求和权限释放的过程,从而节省了整个系统的消耗。
参照后文的说明和附图,详细公开了本申请的特定实施方式,指明了本申请的原理可以被采用的方式。应该理解,本申请的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本申请的实施方式包括许多改变、修改和等同。
针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
附图说明
所包括的附图用来提供对本申请实施方式的进一步的理解,其构成了说明书的一部分,用于例示本申请的实施方式,并与文字描述一起来阐释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本申请实施方式提供的一种分布式系统的架构示意图;
图2为本申请实施方式中业务服务器的工作流程示意图;
图3为本申请实施方式中分布式系统的工作流程示意图;
图4为本申请实施方式中资源访问方法的流程图;
图5为本申请实施方式中业务服务器的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施方式,都应当属于本申请保护的范围。
如图1所示。本申请实施方式提供一种分布式系统。所述分布式系统可以包括管理服务器和业务服务器。在本实施方式中,所述管理服务器可以包括具有数据信息处理功能的硬件设备和驱动该硬件设备工作所需必要的软件。所述管理服务器可以提供有预定端口,通过该预定端口可以向所述业务服务器发送信息。例如,所述管理服务器可以基于HTTP、TCP/IP或FTP等网络协议以及网络通信模块与业务服务器进行网络数据交互。
在本实施方式中,所述业务服务器同样可以包括具有数据信息处理功能的硬件设备和驱动该硬件设备工作所需必要的软件。所述业务服务器可以提供有预定端口,通过该预定端口可以向所述管理服务器发送信息。例如,所述业务服务器可以基于HTTP、TCP/IP或FTP等网络协议以及网络通信模块与管理服务器进行网络数据交互。
在本实施方式中,所述管理服务器可以通过集群(cluster)的方式进行部署。具体地,在所述分布式系统中,可以将多个管理服务器构成管理服务器集群,位于集群中的多个管理服务器可以处理相同的任务。例如,所述业务服务器向管理服务器集群发送了一个数据请求,那么所述管理服务器集群中的任一管理服务器均可以处理该数据请求。在实际应用场景中,往往可以根据集群中各个管理服务器当前的负载情况,选取负载最低的管理服务器来处理所述业务服务器发来的数据请求,以最大化利用集群的处理能力。
在本实施方式中,与所述管理服务器/管理服务器集群相连的业务服务器的数量可以为多个,这多个业务服务器可以分别处理同一个业务中的不同子任务,以提高整个业务的处理速度。在本实施方式中,这多个业务服务器可以连接至同一个管理服务器上。此外,这多个业务服务器也可以与管理服务器集群建立连接,并且每个业务服务器可以分别与集群中的一个管理服务器建立连接。这样,通过管理服务器或者管理服务器集群,便可以对分布式系统中的多个业务服务器进行调控。
在本实施方式中,所述业务服务器可以用于在线程执行的任务需访问目标资源时,查询所述线程中是否存在所述管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
具体地,在本实施方式中,业务服务器中可以具备至少一个线程。所述线程可以是在业务服务器中能够独立运行的最小单元,所述线程可以包括线程标识、当前指令指针、寄存器集合以及堆栈。在所述线程中往往不具备资源,或者可以仅仅拥有在运行时必不可少的资源。所述资源可以为虚拟数据或者硬件实体。例如,所述虚拟数据可以为网络通信地址、虚拟机等,所述硬件实体可以为磁盘、硬盘等。
在本实施方式中,每个线程中均可以执行至少一个任务。所述任务可以是由代码构成的独立的程序单元。所述任务可以是复杂任务中的一个子任务,在所述线程中可以依次执行所述复杂任务中的各个子任务。所述线程执行任务的方式可以是按照程序单元中代码的编写顺序和编写逻辑,对代码进行解析,从而得到所述程序单元对应的结果。
在本实施方式中,由于线程中往往不具备系统资源,因此为了保证任务能够正常完成,在线程中执行的任务往往需要访问所需的目标资源。在本实施方式中,所述目标资源可以为同一时间仅能被一个任务进行访问的虚拟数据或者硬件实体。例如,所述虚拟数据可以为网络通信地址、虚拟机等,所述硬件实体可以为磁盘、硬盘等。在分布式系统中由于存在多个业务服务器,而各个业务服务器中还可能存在多个线程,那么同时执行的任务数量较多,从而导致可能在同一时间会有多个任务需要对同一资源进行访问。在这种情况下,所述管理服务器可以对业务服务器中执行的任务所需访问的资源进行协调,以使得业务服务器中执行的任务能够按照预设规则对资源进行访问。在本实施方式中,所述管理服务器中可以加载名为ZooKeeper的分布式应用程序协调服务,通过ZooKeeper便可以使得业务服务器中执行的任务能够按序对所需的资源进行访问。
在本实施方式中,在线程中执行的任务访问目标资源的方式可以是获取所述目标资源在分布式系统中存储的路径,并根据获取的路径对所述目标资源发起访问。其中,所述目标资源在分布式系统中存储的路径可以记录于管理服务器中。
在本实施方式中,所述目标资源在分布式系统中存储的路径可以是被所有业务服务器已知的,但是需要所述目标资源对应的锁信息才能够成功访问所述目标资源。这样,在线程中执行的任务访问目标资源的方式还可以是获取所述目标资源对应的锁信息,并根据所述锁信息以及已知的目标资源的存储路径,对所述目标资源进行访问。其中,所述目标资源对应的锁信息可以是通过所述管理服务器进行分配的。
在本实施方式中,所述目标资源的锁信息一旦被所述线程获取之后,便可以配置于所述线程中。这样,所述线程中执行的各个任务在需要访问所述目标资源时,可以查询所述线程中是否包含所述目标资源的锁信息。
需要说明的是,由于所述线程在执行任务时,可能会同时需要访问多个资源。这样,在所述线程获取到多个资源分别对应的锁信息后,可以将这多个锁信息均配置于所述线程中。这样,这多个锁信息便可以构成锁信息集合。在所述锁信息集合中,各个锁信息可以通过对应资源的标识进行划分。这样,当需要对所述目标资源的锁信息进行查询时,可以向所述线程发送包含所述目标资源标识的查询指令。所述线程在获取到所述查询指令之后,便可以从所述锁信息集合中获取与所述查询指令中携带的资源标识相匹配的访问请求。
在本实施方式中,配置所述目标资源的锁信息的方式可以是将所述目标资源的锁信息写入所述线程的线程变量中。所述业务服务器中的每个线程均可以对应一个线程变量。所述线程变量可以是一个空的字节,在所述空的字节中可以写入一定长度的字符串。所述线程变量可以被该线程中的各个任务访问,从而可以获取所述线程变量中写入的字符串。在本实施方式中,所述业务服务器可以将所述目标资源的锁信息写入所述线程的线程变量中。具体地,将所述锁信息写入所述线程变量中的方式可以为依次读取所述锁信息中的各个字符,并按照读取字符的顺序将读取的字符依次记录于所述线程变量中。这样,在所述线程中执行的任务需要访问所述目标资源时,可以先查询所述线程中是否配置了所述目标资源的锁信息。
在本实施方式中,如果线程中配置了所述锁信息,所述线程中执行的任务便可以通过所述锁信息对所述目标资源进行访问。在当前任务执行完成之后,可以暂时不释放线程中配置的所述目标资源的锁信息,从而省去权限释放的过程。当下一个任务需要访问所述目标资源时,可以直接从线程中获取所述目标资源的锁信息,而可以省去从管理服务器中通过创建顺序节点的方式来获取权限的过程,从而能够节省整个系统的消耗。
在本实施方式中,所述锁信息可以是所述目标资源在分布式系统中的存储路径。那么在线程中执行的任务访问目标资源的方式可以是根据获取的存储路径对所述目标资源发起访问。
在本实施方式中,所述锁信息还可以是所述目标资源对应的验证码。那么在线程中执行的任务访问目标资源的方式可以是线程中执行的任务在访问所述目标资源时,向管理所述目标资源的程序或者所述目标资源本身提供验证码。只有当验证码正确时才可以对所述目标资源发起访问。
在本申请一个实施方式中,当所述线程中不包含所述目标资源的锁信息时,可以查询所述线程连接至的缓存中是否包含所述目标资源的占用信息。
在本实施方式中,由于在线程中配置的锁信息通常只能被该线程中执行的任务访问,而所述业务服务器中的其它线程则无法获知当前是否有线程已经获取了所述目标资源的锁信息。基于此,在本实施方式中,在获取到所述目标资源的锁信息时,可以将所述目标资源的占用信息写入业务服务器的本地缓存中,以使所述业务服务器中的其它线程执行的任务需访问所述目标资源时能从所述本地缓存中确认所述目标资源是否被占用。
在本实施方式中,所述本地缓存可以是所述业务服务器中用于数据交换的缓冲区。所述本地缓存中存储的数据可以被所述业务服务器中的各个线程查询。
此外,本地缓存中记录的占用信息只能被业务服务器中的各个线程查询,而无法被其它业务服务器查询。在这种情况下,可以在所述分布式系统中预先设置一个共享缓存。该共享缓存可以与所述分布式系统中的各个业务服务器建立连接,这样所述分布式系统中的各个业务服务器中的线程均可以查询该共享缓存中存储的数据。具体地,在本实施方式中,与各个业务服务器相连的共享缓存可以是所述管理服务器中的缓存。这样,与所述管理服务器相连的各个业务服务器便同样可以与该共享缓存相连。
这样,无论所述缓存是业务服务器的本地缓存还是在分布式系统中与各个业务服务器相连接的共享缓存,当线程在获取到所述目标资源的锁信息时,可以将所述目标资源的占用信息写入所述缓存中,以使其它线程执行的任务需访问所述目标资源时能从所述缓存中确认所述目标资源是否被占用。
这样,当线程中执行的任务需要访问所述目标资源时,如果所述线程中不包含所述目标资源的锁信息,那么可以从所述缓存中查询是否已经存在所述目标资源的占用信息。如果存在,则表明当前正有其它线程占用所述目标资源。此时,所述线程可以监听所述共享缓存中的所述目标资源的占用信息。具体地,监听所述共享缓存中的占用信息的方式可以为所述线程按照预设周期向所述共享缓存中发送与所述目标资源相关的查询指令。所述查询指令中可以包含所述目标资源的标识。所述共享缓存接收到所述查询指令后,可以将所述查询指令中所述目标资源的标识与已经写入的占用信息中携带的资源标识相匹配。如果所述查询指令中所述目标资源的标识与所述共享缓存中已经写入的占用信息中携带的资源标识相匹配,那么则说明所述共享缓存中包括所述目标资源的占用信息。
在本实施方式中,所述线程可以持续监听所述共享缓存中所述目标资源的占用信息。一旦所述共享缓存中所述目标资源的占用信息消失后,所述线程便可以通过自身所处的业务服务器,向管理服务器发起针对所述目标资源的加锁请求。
在本实施方式中,所述业务服务器向所述管理服务器发起加锁请求的方式可以是根据所述管理服务器在分布式系统中的网络通信地址,将所述加锁请求通过网络传输至所述网络通信地址处。所述管理服务器在分布式系统中的网络通信地址可以是业务服务器在与管理服务器建立连接时自动获取的,也可以是建立连接后所述管理服务器发送至所述业务服务器的。
在本实施方式中,所述加锁请求可以是按照固定格式编写的字符串,所述字符串内的各个字符均可以具备固定的含义。在所述加锁请求中可以包括所述目标资源的存储路径。在所述管理服务器中,所述目标资源的存储路径可以与所述目标资源的锁信息相关联。这样,根据所述目标资源的存储路径便可以查询到相关联的锁信息。
在本申请一个实施方式中,当线程中执行的任务需要访问所述目标资源时,如果所述线程中不包含所述目标资源的锁信息,而与所述线程相连的共享缓存中也不包含所述目标资源的占用信息时,则表明与所述共享缓存相连的其它线程并没有占用所述目标资源。这样,所述线程便可以通过自身所处的业务服务器,向管理服务器发起针对所述目标资源的加锁请求。
由上可见,本申请实施方式中当线程中执行的任务需要访问目标资源时,可以查询是否先前已经配置了锁信息,如果有的话可以直接根据锁信息访问目标资源;如果没有配置锁信息,则可以请求配置锁信息。而现有技术中线程需要访问目标资源时,并不会查询当前是否已经配置了锁信息,而是每当需要访问目标资源时,均会直接请求配置锁信息。这样无疑将导致各个线程对同一个目标资源会重复尝试加锁。而本申请实施方式中提供的技术方案,则可以避免重复加锁的过程,从而节省了整个系统的开销。
在本申请一个实施方式中,业务服务器在向所述管理服务器发起针对所述目标资源的加锁请求后,所述业务服务器可以接收所述管理服务器的反馈信息,并基于所述反馈信息为所述线程配置所述目标资源的锁信息。其中,所述管理服务器,用于接收所述业务服务器针对所述目标资源发来的加锁请求,并按照预设规则将所述目标资源的锁信息反馈给所述业务服务器。
在本实施方式中,所述反馈信息是可以按照固定格式进行编写的数据报文。在所述数据报文中可以包括线程标识字段和锁信息字段。其中,所述线程标识字段中可以注明所述业务服务器中被分配到锁信息的线程的标识,所述锁信息字段中则可以注明所述目标资源对应的锁信息。所述锁信息可以是上述的存储路径,也可以是验证码。
在本实施方式中,所述业务服务器可以从所述反馈信息中提取出线程标识字段和锁信息字段中的内容,从而可以确定当前被分配到所述目标资源的锁信息的线程,并可以为所述线程配置所述目标资源的锁信息。在本实施方式中,配置所述目标资源的锁信息的方式可以是将所述目标资源的锁信息写入所述线程的线程变量中。这样,当所述线程中的其它任务需要访问所述目标资源时,就可以查询所述线程变量中的锁信息,并通过所述锁信息访问所述目标资源。
在本实施方式中,所述目标资源的锁信息可以配置于所述线程中。那么在所述线程中执行的任务需要访问所述目标资源时,可以先查询所述线程中是否配置了所述目标资源的锁信息。如果配置了所述锁信息,便可以通过所述锁信息对所述目标资源进行访问。在当前任务执行完成之后,可以暂时不释放线程中配置的所述目标资源的锁信息,从而省去权限释放的过程。当下一个任务需要访问所述目标资源时,可以直接从线程中获取所述目标资源的锁信息,而可以省去从管理服务器中通过创建顺序节点的方式来获取权限的过程,从而能够节省整个系统的消耗。
在本实施方式中,在所述业务服务器发送所述加锁请求后,所述管理服务器可以接收所述业务服务器针对所述目标资源发来的加锁请求,并按照预设规则将所述目标资源的锁信息分配给所述加锁请求对应的线程。
在本实施方式中,所述管理服务器可能会在同一时间或者某个时间段内连续接收到多个业务服务器发来的针对所述目标资源的加锁请求。由于所述目标资源在同一时间内只可以被一个线程中的任务占用,因此所述管理服务器可以按照预设规则对所述目标资源的锁信息进行分配。
在本实施方式中,所述目标资源的锁信息可以有多种表现形式。例如,所述锁信息可以是所述目标资源在分布式系统中的存储路径,获取了所述目标资源存储路径的任务才可以对所述目标资源发起访问。此外,所述锁信息还可以是所述目标资源对应的验证码。在线程中的任务需要访问所述目标线程时,需要向管理所述目标资源的程序或者所述目标资源本身提供验证码。只有当验证码正确时才可以对所述目标资源发起访问。
在本实施方式中,在所述管理服务器中针对所述目标资源可以对应一个指定目录。在所述指定目录中,需要访问所述目标资源的任务所处的线程均可以对应一个顺序节点。具体地,所述管理服务器在接收到业务服务器发来的加锁请求之后,可以从所述加锁请求中提取需要访问所述目标资源的线程的标识。这样,所述管理服务器便可以在所述指定目录下创建一个与提取的标识相对应的顺序节点。根据所述顺序节点创建的时间,可以为所述顺序节点分配唯一的节点编号。在本实施方式中,越早创建的顺序节点,其对应的节点编号可以越小。这样,根据节点编号的大小便可以对所述指定目录下的顺序节点进行排序。当同一时间或者某个时间段内有多个线程需要访问所述目标资源时,所述管理服务器便可以针对每个线程对应的加锁请求,在所述指定目录下依次创建顺序节点。在本实施方式中,所述管理服务器可以将所述目标资源的锁信息分配给节点编号最小的顺序节点对应的线程,从而能够完成按照预设规则将所述目标资源的锁信息反馈给所述业务服务器的步骤。
在本实施方式中,所述管理服务器在将所述目标资源的锁信息分配给所述加锁请求对应的线程时,可以将所述锁信息构成反馈信息发送至所述业务服务器。在所述反馈信息中除了所述锁信息之外,还可以包括需要访问所述目标资源的任务所处的线程的标识。
在本申请一个实施方式中,在所述业务服务器中的所述线程执行完所有的任务之后,则无须对所述目标资源进行占用,从而可以请求所述管理服务器释放所述目标资源。鉴于此,在本实施方式中,所述业务服务器中可以用于在所述线程执行完所有任务后,向所述管理服务器发送资源释放请求。在本实施方式中,在所述业务服务器向所述管理服务器发送加锁请求时,所述管理服务器可以在指定目录下创建与所述业务服务器中的所述线程相对应的顺序节点。那么在所述线程执行完所有的任务之后,可以向所述业务服务器发送资源释放请求。所述资源释放请求中可以包括所述线程的标识以及所述目标资源的标识。所述管理服务器接收到所述业务服务器发来的资源释放请求之后,可以在所述目标资源对应的指定目录下,将所述线程对应的顺序节点删除,从而可以释放所述目标资源。
在一个具体应用场景中,所述管理服务器可以是ZooKeeper服务器,所述业务服务器可以是应用程序服务器。所述ZooKeeper服务器可以与多个所述应用程序服务器之间建立连接,这样,所述ZooKeeper服务器可以协调各个应用程序服务器中的线程所需访问的资源。在该场景中,其中一个应用程序服务器的一个线程中可以运行一个组合嵌套的任务集。在该任务集中,可以包括多个子任务,这些子任务可以按照预先排列的顺序依次在所述线程中执行。当所述线程执行第一个子任务时,所述第一个子任务需要访问目标资源。所述线程已经获知该目标资源在分布式系统中的存储路径,但是不具备对所述目标资源进行访问的权限。此时,所述线程所处的应用程序服务器可以向所述ZooKeeper服务器发送加锁请求。在所述加锁请求中可以包括所述线程的标识以及所述目标资源的标识。这样,所述ZooKeeper在接收到所述加锁请求后,可以在所述目标资源对应的指定目录下创建与所述线程相对应的顺序节点,并为创建的顺序节点分配节点编号。此时,ZooKeeper服务器可以将所述指定目录中最小的节点编号与所述创建的顺序节点的节点编号进行比对,如果这两个节点编号一致,则表明所述创建的顺序节点为当前指定目录中最早建立的顺序节点。这样,所述ZooKeeper服务器便可以将所述目标资源的锁信息构成反馈信息返回给所述应用程序服务器。所述反馈信息中除了所述目标资源的锁信息,还可以包括所述线程的标识。这样,所述应用程序服务器便可以将所述反馈信息中的锁信息写入所述线程的线程变量中。这样,所述线程当前执行的子任务便可以从所述线程变量中获取所述目标资源的访问权项,并对所述目标资源进行访问。在所述线程执行完当前子任务之后,可以不释放所述目标资源,而是继续执行该组合嵌套任务中的下一个子任务。如果下一个子任务也需要访问所述目标资源,那么可以直接从所述线程变量中获取所述目标资源的锁信息,以对所述目标资源发起访问。就这样,所述线程可以在执行完整个组合嵌套的任务之后再向所述ZooKeeper服务器发送资源释放请求,从而可以使得ZooKeeper服务器在所述目标资源对应的指定目录下删除所述线程对应的顺序节点,从而释放所述目标资源。
在本申请一个实施方式中,所述业务服务器中的每个线程均可以设置一个线程变量。所述线程变量可以是一个空的字节,在所述空的字节中可以写入一定长度的字符串。所述线程变量可以被该线程中的各个任务访问,从而可以获取所述线程变量中写入的字符串。在本实施方式中,所述业务服务器可以包括变量写入单元,所述变量写入单元可以用于将所述目标资源的锁信息写入所述线程的线程变量中。具体地,将所述锁信息写入所述线程变量中的方式可以为依次读取所述锁信息中的各个字符,并按照读取字符的顺序将读取的字符依次记录于所述线程变量中。这样,在所述线程执行完所有任务之后,除了在所述管理服务器的指定目录下将创建的与所述线程对应的顺序节点删除,还可以将所述线程变量中记录的锁信息删除。
在本申请一个实施方式中,由于在线程中配置的锁信息通常只能被该线程中执行的任务访问,而所述业务服务器中的其它线程则无法获知当前是否有线程已经获取了所述目标资源的锁信息。基于此,在本实施方式中,所述业务服务器还可以包括本地缓存写入单元,所述本地缓存写入单元可以用于将所述目标资源的占用信息写入所述业务服务器的本地缓存中,以使所述业务服务器中的其它线程执行的任务需访问所述目标资源时从所述本地缓存中确认所述目标资源是否被占用。
在本实施方式中,所述本地缓存可以是所述业务服务器中用于数据交换的缓冲区。所述本地缓存中存储的数据可以被所述业务服务器中的各个线程查询。在本实施方式中,当所述业务服务器中的某个线程正在占用所述目标资源时,如果其它线程也需要访问所述目标资源,那么可以等待占用所述目标资源的线程执行完所有任务并释放所述目标资源后再向所述管理服务器发送加锁请求。因此,所述业务服务器可以在为所述线程配置了所述目标资源的锁信息后,将所述目标资源的占用信息写入本地缓存。
在本实施方式中,所述占用信息可以是按照预设格式进行编写的字符串。所述字符串中可以包括所述目标资源的标识。这样,所述业务服务器中的其它线程中执行的任务需要访问所述目标资源时,可以向所述本地缓存中发送包含所述目标资源的标识的查询请求。如果所述本地缓存中存储的占用信息中携带的资源标识与所述查询请求中的目标资源的标识相匹配,则表明当前所述目标资源正在被占用。
相应地,在所述线程执行完所有任务之后,可以将本地缓存中记录的所述目标资源的占用信息删除,从而告知所述业务服务器的其它线程,当前所述线程已经不再占用所述目标资源。因此,在本实施方式中,所述业务服务器还包括本地缓存权限删除单元,所述本地缓存权限删除单元可以用于在所述线程执行完所有任务后,删除所述本地缓存中所述目标资源的占用信息。
这样,当其它线程需要访问所述目标资源时,可以先从本地缓存中查询是否已经存在所述目标资源的占用信息。如果存在,则表明当前正在有线程占用所述目标资源,那么其它线程则可以进行等待。一旦本地缓存中所述目标资源的占用信息消失了,则表明所述目标资源被释放了,那么其它线程便可以向所述管理服务器发送所述目标资源的加锁请求。
在本申请一个实施方式中,本地缓存中记录的占用信息只能被业务服务器中的各个线程查询,而无法被其它业务服务器查询。在这种情况下,可以在所述分布式系统中预先设置一个共享缓存。所述共享缓存可以与所述分布式系统中的各个业务服务器建立连接,这样所述分布式系统中的各个业务服务器中的线程均可以查询所述共享缓存中存储的数据。具体地,在本实施方式中,所述共享缓存可以是所述管理服务器中的缓存。这样,与所述管理服务器相连的各个业务服务器便同样可以与所述共享缓存相连。
在本实施方式中,所述业务服务器还可以包括共享缓存写入单元,所述共享缓存写入单元用于将所述目标资源的占用信息写入所述业务服务器连接至的共享缓存中,以使与所述共享缓存相连接的其它业务服务器中的线程执行的任务需访问所述目标资源时从所述共享缓存中确认所述目标资源是否被占用。
在本实施方式中,当所述业务服务器中的某个线程正在占用所述目标资源时,如果其它业务服务器中的线程也需要访问所述目标资源,那么可以等待占用所述目标资源的线程执行完所有任务并释放所述目标资源后再向所述管理服务器发送加锁请求。因此,所述业务服务器可以在为所述线程配置了所述目标资源的锁信息后,可以将所述目标资源的占用信息写入所述共享缓存中。
相应地,在所述线程执行完所有任务之后,可以将共享缓存中记录的所述目标资源的占用信息删除,从而告知其它业务服务器的线程,当前所述线程已经不再占用所述目标资源。因此,在本实施方式中,所述业务服务器还包括共享缓存权限删除单元,所述共享缓存权限删除单元可以用于在所述线程执行完所有任务后,删除所述共享缓存中所述目标资源的占用信息。
本申请还提供一种分布式系统中的资源访问方法。请参阅图2和图3,所述方法可以包括以下步骤。
步骤S11:在线程执行的任务需访问目标资源时,查询所述线程中是否存在管理服务器提供的锁信息,所述锁信息用于访问所述目标资源。
步骤S13:当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
在本实施方式中,执行上述步骤S11和S13的主体可以是所述分布式系统中的业务服务器。所述业务服务器可以包括具有数据信息处理功能的硬件设备和驱动该硬件设备工作所需必要的软件。所述业务服务器可以提供有预定端口,通过该预定端口可以向所述管理服务器发送信息。例如,所述业务服务器可以基于HTTP、TCP/IP或FTP等网络协议以及网络通信模块与管理服务器进行网络数据交互。
在本实施方式中,业务服务器中可以具备至少一个线程。所述线程可以是在业务服务器中能够独立运行的最小单元,所述线程可以包括线程标识、当前指令指针、寄存器集合以及堆栈。在所述线程中往往不具备资源,或者可以仅仅拥有在运行时必不可少的资源。所述资源可以为虚拟数据或者硬件实体。例如,所述虚拟数据可以为网络通信地址、虚拟机等,所述硬件实体可以为磁盘、硬盘等。
在本实施方式中,每个线程中均可以执行至少一个任务。所述任务可以是由代码构成的独立的程序单元。所述任务可以是复杂任务中的一个子任务,在所述线程中可以依次执行所述复杂任务中的各个子任务。所述线程执行任务的方式可以是按照程序单元中代码的编写顺序和编写逻辑,对代码进行解析,从而得到所述程序单元对应的结果。
在本实施方式中,由于线程中往往不具备系统资源,因此为了保证任务能够正常完成,在线程中执行的任务往往需要访问所需的目标资源。在本实施方式中,所述目标资源可以为同一时间仅能被一个任务进行访问的虚拟数据或者硬件实体。例如,所述虚拟数据可以为网络通信地址、虚拟机等,所述硬件实体可以为磁盘、硬盘等。在分布式系统中由于存在多个业务服务器,而各个业务服务器中还可能存在多个线程,那么同时执行的任务数量较多,从而导致可能在同一时间会有多个任务需要对同一资源进行访问。在这种情况下,所述管理服务器可以对业务服务器中执行的任务所需访问的资源进行协调,以使得业务服务器中执行的任务能够按照预设规则对资源进行访问。在本实施方式中,所述管理服务器中可以加载名为ZooKeeper的分布式应用程序协调服务,通过ZooKeeper便可以使得业务服务器中执行的任务能够按序对所需的资源进行访问。
在本实施方式中,在线程中执行的任务访问目标资源的方式可以是获取所述目标资源在分布式系统中存储的路径,并根据获取的路径对所述目标资源发起访问。其中,所述目标资源在分布式系统中存储的路径可以记录于管理服务器中。
在本实施方式中,所述目标资源在分布式系统中存储的路径可以是被所有业务服务器已知的,但是需要所述目标资源对应的锁信息才能够成功访问所述目标资源。这样,在线程中执行的任务访问目标资源的方式还可以是获取所述目标资源对应的锁信息,并根据所述锁信息以及已知的目标资源的存储路径,对所述目标资源进行访问。其中,所述目标资源对应的锁信息可以是通过所述管理服务器进行分配的。
在本实施方式中,所述目标资源的锁信息一旦被所述线程获取之后,便可以配置于所述线程中。这样,所述线程中执行的各个任务在需要访问所述目标资源时,可以查询所述线程中是否包含所述目标资源的锁信息。
需要说明的是,由于所述线程在执行任务时,可能会同时需要访问多个资源。这样,在所述线程获取到多个资源分别对应的锁信息后,可以将这多个锁信息均配置于所述线程中。这样,这多个锁信息便可以构成锁信息集合。在所述锁信息集合中,各个锁信息可以通过对应资源的标识进行划分。这样,当需要对所述目标资源的锁信息进行查询时,可以向所述线程发送包含所述目标资源标识的查询指令。所述线程在获取到所述查询指令之后,便可以从所述锁信息集合中获取与所述查询指令中携带的资源标识相匹配的访问请求。
在本实施方式中,配置所述目标资源的锁信息的方式可以是将所述目标资源的锁信息写入所述线程的线程变量中。所述业务服务器中的每个线程均可以对应一个线程变量。所述线程变量可以是一个空的字节,在所述空的字节中可以写入一定长度的字符串。所述线程变量可以被该线程中的各个任务访问,从而可以获取所述线程变量中写入的字符串。在本实施方式中,所述业务服务器可以将所述目标资源的锁信息写入所述线程的线程变量中。具体地,将所述锁信息写入所述线程变量中的方式可以为依次读取所述锁信息中的各个字符,并按照读取字符的顺序将读取的字符依次记录于所述线程变量中。这样,在所述线程中执行的任务需要访问所述目标资源时,可以先查询所述线程中是否配置了所述目标资源的锁信息。
在本实施方式中,如果线程中配置了所述锁信息,所述线程中执行的任务便可以通过所述锁信息对所述目标资源进行访问。在当前任务执行完成之后,可以暂时不释放线程中配置的所述目标资源的锁信息,从而省去权限释放的过程。当下一个任务需要访问所述目标资源时,可以直接从线程中获取所述目标资源的锁信息,而可以省去从管理服务器中通过创建顺序节点的方式来获取权限的过程,从而能够节省整个系统的消耗。
在本实施方式中,所述锁信息可以是所述目标资源在分布式系统中的存储路径。那么在线程中执行的任务访问目标资源的方式可以是根据获取的存储路径对所述目标资源发起访问。
在本实施方式中,所述锁信息还可以是所述目标资源对应的验证码。那么在线程中执行的任务访问目标资源的方式可以是线程中执行的任务在访问所述目标资源时,向管理所述目标资源的程序或者所述目标资源本身提供验证码。只有当验证码正确时才可以对所述目标资源发起访问。
在本申请一个实施方式中,当所述线程中不包含所述目标资源的锁信息时,可以查询所述线程连接至的缓存中是否包含所述目标资源的占用信息。
在本实施方式中,由于在线程中配置的锁信息通常只能被该线程中执行的任务访问,而所述业务服务器中的其它线程则无法获知当前是否有线程已经获取了所述目标资源的锁信息。基于此,在本实施方式中,在获取到所述目标资源的锁信息时,可以将所述目标资源的占用信息写入业务服务器的本地缓存中,以使所述业务服务器中的其它线程执行的任务需访问所述目标资源时能从所述本地缓存中确认所述目标资源是否被占用。
在本实施方式中,所述本地缓存可以是所述业务服务器中用于数据交换的缓冲区。所述本地缓存中存储的数据可以被所述业务服务器中的各个线程查询。
此外,本地缓存中记录的占用信息只能被业务服务器中的各个线程查询,而无法被其它业务服务器查询。在这种情况下,可以在所述分布式系统中预先设置一个共享缓存。该共享缓存可以与所述分布式系统中的各个业务服务器建立连接,这样所述分布式系统中的各个业务服务器中的线程均可以查询该共享缓存中存储的数据。具体地,在本实施方式中,与各个业务服务器相连的共享缓存可以是所述管理服务器中的缓存。这样,与所述管理服务器相连的各个业务服务器便同样可以与该共享缓存相连。
这样,无论所述缓存是业务服务器的本地缓存还是在分布式系统中与各个业务服务器相连接的共享缓存,当线程在获取到所述目标资源的锁信息时,可以将所述目标资源的占用信息写入所述缓存中,以使其它线程执行的任务需访问所述目标资源时能从所述缓存中确认所述目标资源是否被占用。
这样,当线程中执行的任务需要访问所述目标资源时,如果所述线程中不包含所述目标资源的锁信息,那么可以从所述缓存中查询是否已经存在所述目标资源的占用信息。如果存在,则表明当前正有其它线程占用所述目标资源。此时,所述线程可以监听所述共享缓存中的所述目标资源的占用信息。具体地,监听所述共享缓存中的占用信息的方式可以为所述线程按照预设周期向所述共享缓存中发送与所述目标资源相关的查询指令。所述查询指令中可以包含所述目标资源的标识。所述共享缓存接收到所述查询指令后,可以将所述查询指令中所述目标资源的标识与已经写入的占用信息中携带的资源标识相匹配。如果所述查询指令中所述目标资源的标识与所述共享缓存中已经写入的占用信息中携带的资源标识相匹配,那么则说明所述共享缓存中包括所述目标资源的占用信息。
在本实施方式中,所述线程可以持续监听所述共享缓存中所述目标资源的占用信息。一旦所述共享缓存中所述目标资源的占用信息消失后,所述线程便可以通过自身所处的业务服务器,向管理服务器发起针对所述目标资源的加锁请求。
在本实施方式中,所述业务服务器向所述管理服务器发起加锁请求的方式可以是根据所述管理服务器在分布式系统中的网络通信地址,将所述加锁请求通过网络传输至所述网络通信地址处。所述管理服务器在分布式系统中的网络通信地址可以是业务服务器在与管理服务器建立连接时自动获取的,也可以是建立连接后所述管理服务器发送至所述业务服务器的。
在本实施方式中,所述加锁请求可以是按照固定格式编写的字符串,所述字符串内的各个字符均可以具备固定的含义。在所述加锁请求中可以包括所述目标资源的存储路径。在所述管理服务器中,所述目标资源的存储路径可以与所述目标资源的锁信息相关联。这样,根据所述目标资源的存储路径便可以查询到相关联的锁信息。
在本申请一个实施方式中,当线程中执行的任务需要访问所述目标资源时,如果所述线程中不包含所述目标资源的锁信息,而与所述线程相连的共享缓存中也不包含所述目标资源的占用信息时,则表明与所述共享缓存相连的其它线程并没有占用所述目标资源。这样,所述线程便可以通过自身所处的业务服务器,向管理服务器发起针对所述目标资源的加锁请求。
由上可见,本申请实施方式中当线程中执行的任务需要访问目标资源时,可以查询是否先前已经配置了锁信息,如果有的话可以直接根据锁信息访问目标资源;如果没有配置锁信息,则可以请求配置锁信息。而现有技术中线程需要访问目标资源时,并不会查询当前是否已经配置了锁信息,而是每当需要访问目标资源时,均会直接请求配置锁信息。这样无疑将导致各个线程对同一个目标资源会重复尝试加锁。而本申请实施方式中提供的技术方案,则可以避免重复加锁的过程,从而节省了整个系统的开销。
请参阅图4,在本申请一个实施方式中,业务服务器在向所述管理服务器发起针对所述目标资源的加锁请求后,所述业务服务器可以接收所述管理服务器的反馈信息,并基于所述反馈信息为所述线程配置所述目标资源的锁信息。其中,所述管理服务器,用于接收所述业务服务器针对所述目标资源发来的加锁请求,并按照预设规则将所述目标资源的锁信息反馈给所述业务服务器。
在本实施方式中,所述反馈信息是可以按照固定格式进行编写的数据报文。在所述数据报文中可以包括线程标识字段和锁信息字段。其中,所述线程标识字段中可以注明所述业务服务器中被分配到锁信息的线程的标识,所述锁信息字段中则可以注明所述目标资源对应的锁信息。所述锁信息可以是上述的存储路径,也可以是验证码。
在本实施方式中,所述业务服务器可以从所述反馈信息中提取出线程标识字段和锁信息字段中的内容,从而可以确定当前被分配到所述目标资源的锁信息的线程,并可以为所述线程配置所述目标资源的锁信息。在本实施方式中,配置所述目标资源的锁信息的方式可以是将所述目标资源的锁信息写入所述线程的线程变量中。这样,当所述线程中的其它任务需要访问所述目标资源时,就可以查询所述线程变量中的锁信息,并通过所述锁信息访问所述目标资源。
在本实施方式中,所述目标资源的锁信息可以配置于所述线程中。那么在所述线程中执行的任务需要访问所述目标资源时,可以先查询所述线程中是否配置了所述目标资源的锁信息。如果配置了所述锁信息,便可以通过所述锁信息对所述目标资源进行访问。在当前任务执行完成之后,可以暂时不释放线程中配置的所述目标资源的锁信息,从而省去权限释放的过程。当下一个任务需要访问所述目标资源时,可以直接从线程中获取所述目标资源的锁信息,而可以省去从管理服务器中通过创建顺序节点的方式来获取权限的过程,从而能够节省整个系统的消耗。
在本实施方式中,在所述业务服务器发送所述加锁请求后,所述管理服务器可以接收所述业务服务器针对所述目标资源发来的加锁请求,并按照预设规则将所述目标资源的锁信息分配给所述加锁请求对应的线程。
在本实施方式中,所述管理服务器可能会在同一时间或者某个时间段内连续接收到多个业务服务器发来的针对所述目标资源的加锁请求。由于所述目标资源在同一时间内只可以被一个线程中的任务占用,因此所述管理服务器可以按照预设规则对所述目标资源的锁信息进行分配。
在本实施方式中,所述目标资源的锁信息可以有多种表现形式。例如,所述锁信息可以是所述目标资源在分布式系统中的存储路径,获取了所述目标资源存储路径的任务才可以对所述目标资源发起访问。此外,所述锁信息还可以是所述目标资源对应的验证码。在线程中的任务需要访问所述目标线程时,需要向管理所述目标资源的程序或者所述目标资源本身提供验证码。只有当验证码正确时才可以对所述目标资源发起访问。
在本实施方式中,在所述管理服务器中针对所述目标资源可以对应一个指定目录。在所述指定目录中,需要访问所述目标资源的任务所处的线程均可以对应一个顺序节点。具体地,所述管理服务器在接收到业务服务器发来的加锁请求之后,可以从所述加锁请求中提取需要访问所述目标资源的线程的标识。这样,所述管理服务器便可以在所述指定目录下创建一个与提取的标识相对应的顺序节点。根据所述顺序节点创建的时间,可以为所述顺序节点分配唯一的节点编号。在本实施方式中,越早创建的顺序节点,其对应的节点编号可以越小。这样,根据节点编号的大小便可以对所述指定目录下的顺序节点进行排序。当同一时间或者某个时间段内有多个线程需要访问所述目标资源时,所述管理服务器便可以针对每个线程对应的加锁请求,在所述指定目录下依次创建顺序节点。在本实施方式中,所述管理服务器可以将所述目标资源的锁信息分配给节点编号最小的顺序节点对应的线程,从而能够完成按照预设规则将所述目标资源的锁信息反馈给所述业务服务器的步骤。
在本实施方式中,所述管理服务器在将所述目标资源的锁信息分配给所述加锁请求对应的线程时,可以将所述锁信息构成反馈信息发送至所述业务服务器。在所述反馈信息中除了所述锁信息之外,还可以包括需要访问所述目标资源的任务所处的线程的标识。
在本申请一个实施方式中,在所述业务服务器中的所述线程执行完所有的任务之后,则无须对所述目标资源进行占用,从而可以请求所述管理服务器释放所述目标资源。鉴于此,在本实施方式中,所述业务服务器中可以用于在所述线程执行完所有任务后,向所述管理服务器发送资源释放请求。在本实施方式中,在所述业务服务器向所述管理服务器发送加锁请求时,所述管理服务器可以在指定目录下创建与所述业务服务器中的所述线程相对应的顺序节点。那么在所述线程执行完所有的任务之后,可以向所述业务服务器发送资源释放请求。所述资源释放请求中可以包括所述线程的标识以及所述目标资源的标识。所述管理服务器接收到所述业务服务器发来的资源释放请求之后,可以在所述目标资源对应的指定目录下,将所述线程对应的顺序节点删除,从而可以释放所述目标资源。
在本申请一个实施方式中,所述业务服务器中的每个线程均可以设置一个线程变量。所述线程变量可以是一个空的字节,在所述空的字节中可以写入一定长度的字符串。所述线程变量可以被该线程中的各个任务访问,从而可以获取所述线程变量中写入的字符串。在本实施方式中,可以将所述目标资源的锁信息写入所述线程的线程变量中。具体地,将所述锁信息写入所述线程变量中的方式可以为依次读取所述锁信息中的各个字符,并按照读取字符的顺序将读取的字符依次记录于所述线程变量中。这样,在所述线程执行完所有任务之后,除了在所述管理服务器的指定目录下将创建的与所述线程对应的顺序节点删除,还可以将所述线程变量中记录的锁信息删除。
在本申请一个实施方式中,由于在线程中配置的锁信息通常只能被该线程中执行的任务访问,而所述业务服务器中的其它线程则无法获知当前是否有线程已经获取了所述目标资源的锁信息。基于此,在本实施方式中,所述业务服务器还可以将所述目标资源的占用信息写入所述业务服务器的本地缓存中,以使所述业务服务器中的其它线程执行的任务需访问所述目标资源时从所述本地缓存中确认所述目标资源是否被占用。
在本实施方式中,所述本地缓存可以是所述业务服务器中用于数据交换的缓冲区。所述本地缓存中存储的数据可以被所述业务服务器中的各个线程查询。在本实施方式中,当所述业务服务器中的某个线程正在占用所述目标资源时,如果其它线程也需要访问所述目标资源,那么可以等待占用所述目标资源的线程执行完所有任务并释放所述目标资源后再向所述管理服务器发送加锁请求。因此,所述业务服务器可以在为所述线程配置了所述目标资源的锁信息后,将所述目标资源的占用信息写入本地缓存。
在本实施方式中,所述占用信息可以是按照预设格式进行编写的字符串。所述字符串中可以包括所述目标资源的标识。这样,所述业务服务器中的其它线程中执行的任务需要访问所述目标资源时,可以向所述本地缓存中发送包含所述目标资源的标识的查询请求。如果所述本地缓存中存储的占用信息中携带的资源标识与所述查询请求中的目标资源的标识相匹配,则表明当前所述目标资源正在被占用。
相应地,在所述线程执行完所有任务之后,可以将本地缓存中记录的所述目标资源的占用信息删除,从而告知所述业务服务器的其它线程,当前所述线程已经不再占用所述目标资源。因此,在本实施方式中,所述业务服务器还可以在所述线程执行完所有任务后,删除所述本地缓存中所述目标资源的占用信息。
这样,当其它线程需要访问所述目标资源时,可以先从本地缓存中查询是否已经存在所述目标资源的占用信息。如果存在,则表明当前正在有线程占用所述目标资源,那么其它线程则可以进行等待。一旦本地缓存中所述目标资源的占用信息消失了,则表明所述目标资源被释放了,那么其它线程便可以向所述管理服务器发送所述目标资源的加锁请求。
在本申请一个实施方式中,本地缓存中记录的占用信息只能被业务服务器中的各个线程查询,而无法被其它业务服务器查询。在这种情况下,可以在所述分布式系统中预先设置一个共享缓存。所述共享缓存可以与所述分布式系统中的各个业务服务器建立连接,这样所述分布式系统中的各个业务服务器中的线程均可以查询所述共享缓存中存储的数据。具体地,在本实施方式中,所述共享缓存可以是所述管理服务器中的缓存。这样,与所述管理服务器相连的各个业务服务器便同样可以与所述共享缓存相连。
在本实施方式中,所述业务服务器还可以将所述目标资源的占用信息写入所述业务服务器连接至的共享缓存中,以使与所述共享缓存相连接的其它业务服务器中的线程执行的任务需访问所述目标资源时从所述共享缓存中确认所述目标资源是否被占用。
在本实施方式中,当所述业务服务器中的某个线程正在占用所述目标资源时,如果其它业务服务器中的线程也需要访问所述目标资源,那么可以等待占用所述目标资源的线程执行完所有任务并释放所述目标资源后再向所述管理服务器发送加锁请求。因此,所述业务服务器可以在为所述线程配置了所述目标资源的锁信息后,可以将所述目标资源的占用信息写入所述共享缓存中。
相应地,在所述线程执行完所有任务之后,可以将共享缓存中记录的所述目标资源的占用信息删除,从而告知其它业务服务器的线程,当前所述线程已经不再占用所述目标资源。因此,在本实施方式中,所述业务服务器还可以在所述线程执行完所有任务后,删除所述共享缓存中所述目标资源的占用信息。
请参阅图5,本申请还提供一种分布式系统中的业务服务器。如图5所示,所述业务服务器可以包括网络通信模块100和处理器200。
所述网络通信模块100可以用于进行网络数据通信。
在本实施方式中,所述网络通信模块100能进行网络通信收发数据。网络通信模块可以是依照TCP/IP协议设置,并在该协议框架下进行网络通信。具体的,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
所述处理器200可以所述处理器包括预设数量的线程,每个线程中执行至少一个任务,用于在线程执行的任务需访问目标资源时,查询所述线程中是否存在管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
在本实施方式中,所述处理器200可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本申请并不作限定。
上述实施方式公开的业务服务器,其网络通信模块100和处理器200实现的具体功能,可以与本申请中分布式系统中的资源访问方法实施方式相对照解释,可以实现本申请的分布式系统中的资源访问方法实施方式并达到方法实施方式的技术效果。
本申请实施方式还提供一种计算机存储介质,其上存储有计算机程序,请参阅图2,所述计算机程序被处理器执行时可以实现以下步骤。
S11:在线程执行的任务需访问目标资源时,查询所述线程中是否存在管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;
S13:当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
在本实施方式中,所述计算机存储介质可以是用于保存信息的记忆设备。在数字系统中,能保存二进制数据的设备可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也可以为存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也可以叫存储器,如内存条、TF卡等。
本申请实施方式提供的一种资源访问方法、业务服务器、分布式系统及存储介质,在同一个线程中执行的任务可以共享同一个资源的锁信息。这样,在业务服务器的线程中执行的任务需要访问目标资源时,管理服务器可以按照预设规则将所述目标资源的锁信息分配给所述线程。这样,所述业务服务器便可以为所述线程配置所述目标资源的锁信息。当所述线程中执行的其它任务需要访问该目标资源时,可以根据线程中配置的锁信息对所述目标资源进行访问。这样便可以避免多个任务均需要重复执行权限请求和权限释放的过程,从而节省了整个系统的消耗。
上面对本申请的各种实施方式的描述以描述的目的提供给本领域技术人员。其不旨在是穷举的、或者不旨在将本发明限制于单个公开的实施方式。如上所述,本申请的各种替代和变化对于上述技术所属领域技术人员而言将是显而易见的。因此,虽然已经具体讨论了一些另选的实施方式,但是其它实施方式将是显而易见的,或者本领域技术人员相对容易得出。本申请旨在包括在此已经讨论过的本发明的所有替代、修改、和变化,以及落在上述申请的精神和范围内的其它实施方式。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。尤其,对于方法、业务服务器以及计算机存储介质实施方式而言,由于其基本相似于分布式系统的实施方式,所以描述的比较简单,相关之处参见分布式系统的实施方式的部分说明即可。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

Claims (22)

1.一种分布式系统,其特征在于,包括管理服务器和业务服务器,其中:
所述业务服务器用于在线程执行的任务需访问目标资源时,查询所述线程中是否存在所述管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
2.根据权利要求1所述的分布式系统,其特征在于,所述业务服务器还用于:
当所述线程中不存在所述管理服务器提供的锁信息时,查询所述线程连接至的缓存中是否包含所述目标资源的占用信息;
当所述缓存中包含所述目标资源的占用信息时,监听所述缓存中的所述目标资源的占用信息并且在所述目标资源的占用信息消失后,向所述管理服务器发起针对所述目标资源的加锁请求。
3.根据权利要求2所述的分布式系统,其特征在于,所述业务服务器还用于:
当所述缓存中不包含所述目标资源的占用信息时,向所述管理服务器发起针对所述目标资源的加锁请求。
4.根据权利要求3所述的分布式系统,其特征在于,所述业务服务器还用于:
接收所述管理服务器的反馈信息,并基于所述反馈信息为所述线程配置所述目标资源的锁信息,以使所述线程中的其它任务根据所述锁信息能访问所述目标资源;其中,所述管理服务器,用于接收所述业务服务器针对所述目标资源发来的加锁请求,并按照预设规则将所述目标资源的锁信息反馈给所述业务服务器。
5.根据权利要求4所述的分布式系统,其特征在于,所述业务服务器还用于在所述线程执行完所有任务后,向所述管理服务器发送资源释放请求。
6.根据权利要求4所述的分布式系统,其特征在于,所述线程中设置有线程变量;
相应地,所述业务服务器包括:
变量写入单元,用于将所述目标资源的锁信息写入所述线程的线程变量中。
7.根据权利要求4所述的分布式系统,其特征在于,所述业务服务器还包括:
本地缓存写入单元,用于将所述目标资源的占用信息写入所述业务服务器的本地缓存中,以使所述业务服务器中的其它线程执行的任务需访问所述目标资源时从所述本地缓存中确认所述目标资源是否被占用。
8.根据权利要求7所述的分布式系统,其特征在于,所述业务服务器还包括:
本地缓存权限删除单元,用于在所述线程执行完所有任务后,删除所述本地缓存中所述目标资源的占用信息。
9.根据权利要求4所述的分布式系统,其特征在于,所述业务服务器还包括:
共享缓存写入单元,用于将所述目标资源的占用信息写入所述业务服务器连接至的共享缓存中,以使与所述共享缓存相连接的其它业务服务器中的线程执行的任务需访问所述目标资源时从所述共享缓存中确认所述目标资源是否被占用。
10.根据权利要求9所述的分布式系统,其特征在于,所述业务服务器还包括:
共享缓存权限删除单元,用于在所述线程执行完所有任务后,删除所述共享缓存中所述目标资源的占用信息。
11.一种分布式系统中的资源访问方法,其特征在于,包括:
在线程执行的任务需访问目标资源时,查询所述线程中是否存在管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;
当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
当所述线程中不存在所述管理服务器提供的锁信息时,查询所述线程连接至的缓存中是否包含所述目标资源的占用信息;
当所述缓存中包含所述目标资源的占用信息时,监听所述缓存中的所述目标资源的占用信息并且在所述目标资源的占用信息消失后,向所述管理服务器发起针对所述目标资源的加锁请求。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
当所述缓存中不包含所述目标资源的占用信息时,向所述管理服务器发起针对所述目标资源的加锁请求。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
接收所述管理服务器的反馈信息,并基于所述反馈信息为所述线程配置所述目标资源的锁信息,以使所述线程中的其它任务根据所述锁信息能访问所述目标资源。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
在所述线程执行完所有任务后,向所述管理服务器发送资源释放请求。
16.根据权利要求14所述的方法,其特征在于,所述线程中设备有线程变量;
相应地,为所述线程配置所述目标资源的锁信息具体包括:
将所述目标资源的锁信息写入所述线程的线程变量中。
17.根据权利要求14所述的方法,其特征在于,所述方法还包括:
将所述目标资源的占用信息写入本地缓存中,以使与所述本地缓存相连的其它线程执行的任务需访问所述目标资源时从所述本地缓存中确认所述目标资源是否被占用。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
在所述线程执行完所有任务后,删除所述本地缓存中所述目标资源的占用信息。
19.根据权利要求14所述的方法,其特征在于,所述方法还包括:
将所述目标资源的占用信息写入共享缓存中,以使与所述共享缓存相连接的其它业务服务器中的线程执行的任务需访问所述目标资源时从所述共享缓存中确认所述目标资源是否被占用。
20.根据权利要求19所述的方法,其特征在于,所述方法还包括:
在所述线程执行完所有任务后,删除所述共享缓存中所述目标资源的占用信息。
21.一种分布式系统中的业务服务器,其特征在于,所述业务服务器包括:
网络通信模块,用于进行网络数据通信;
处理器,所述处理器包括预设数量的线程,每个线程中执行至少一个任务,用于在线程执行的任务需访问目标资源时,查询所述线程中是否存在管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
22.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
在线程执行的任务需访问目标资源时,查询所述线程中是否存在管理服务器提供的锁信息,所述锁信息用于访问所述目标资源;
当所述线程中存在所述锁信息时,依照所述锁信息访问所述目标资源。
CN201710035584.XA 2017-01-18 2017-01-18 资源访问方法、业务服务器、分布式系统及存储介质 Active CN108319496B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710035584.XA CN108319496B (zh) 2017-01-18 2017-01-18 资源访问方法、业务服务器、分布式系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710035584.XA CN108319496B (zh) 2017-01-18 2017-01-18 资源访问方法、业务服务器、分布式系统及存储介质

Publications (2)

Publication Number Publication Date
CN108319496A true CN108319496A (zh) 2018-07-24
CN108319496B CN108319496B (zh) 2022-03-04

Family

ID=62890765

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710035584.XA Active CN108319496B (zh) 2017-01-18 2017-01-18 资源访问方法、业务服务器、分布式系统及存储介质

Country Status (1)

Country Link
CN (1) CN108319496B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110781016A (zh) * 2019-10-30 2020-02-11 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置、设备及介质
CN110888858A (zh) * 2019-10-29 2020-03-17 北京奇艺世纪科技有限公司 数据库的操作方法和装置、存储介质、电子装置
CN111158878A (zh) * 2019-12-30 2020-05-15 北京三快在线科技有限公司 资源转移请求线程控制方法、装置及存储介质
CN111163140A (zh) * 2019-12-20 2020-05-15 深圳市中农易讯信息技术有限公司 资源获取和分配的方法、装置和计算机可读存储介质
CN111241132A (zh) * 2018-11-27 2020-06-05 北京奇虎科技有限公司 基于大数据分析的数据查询项目执行方法及装置
CN112099962A (zh) * 2020-11-06 2020-12-18 成都新希望金融信息有限公司 分布式锁实现方法、装置和电子设备
CN112764941A (zh) * 2021-01-26 2021-05-07 北京字节跳动网络技术有限公司 资源访问方法、装置、电子设备及计算机可读存储介质
CN113326498A (zh) * 2020-02-28 2021-08-31 华为技术有限公司 权限复用方法、基于权限复用的资源访问方法及相关设备
CN113448976A (zh) * 2021-06-30 2021-09-28 腾讯科技(上海)有限公司 数据处理方法、装置、计算机设备和存储介质
CN115131901A (zh) * 2022-07-07 2022-09-30 广州广电运通金融电子股份有限公司 一种基于rfid和iot的动态密码锁开锁方法及系统
CN112764941B (zh) * 2021-01-26 2024-05-31 北京字节跳动网络技术有限公司 资源访问方法、装置、电子设备及计算机可读存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598068B1 (en) * 1996-01-04 2003-07-22 Sun Microsystems, Inc. Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment
CN101547212A (zh) * 2008-03-29 2009-09-30 华为技术有限公司 一种分布式对象的调度方法和系统
CN102063338A (zh) * 2010-12-28 2011-05-18 华为技术有限公司 一种请求独占资源的方法及装置
US20130247060A1 (en) * 2012-03-16 2013-09-19 Arm Limited Apparatus and method for processing threads requiring resources
US20130290967A1 (en) * 2012-04-27 2013-10-31 Irina Calciu System and Method for Implementing NUMA-Aware Reader-Writer Locks
US20130290583A1 (en) * 2012-04-27 2013-10-31 David Dice System and Method for NUMA-Aware Locking Using Lock Cohorts
CN104133661A (zh) * 2014-07-30 2014-11-05 西安电子科技大学 基于列存储的多核并行哈希分区优化方法
CN105975349A (zh) * 2016-05-04 2016-09-28 北京智能管家科技有限公司 一种线程锁的优化方法
CN106033437A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598068B1 (en) * 1996-01-04 2003-07-22 Sun Microsystems, Inc. Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment
CN101547212A (zh) * 2008-03-29 2009-09-30 华为技术有限公司 一种分布式对象的调度方法和系统
CN102063338A (zh) * 2010-12-28 2011-05-18 华为技术有限公司 一种请求独占资源的方法及装置
US20130247060A1 (en) * 2012-03-16 2013-09-19 Arm Limited Apparatus and method for processing threads requiring resources
US20130290967A1 (en) * 2012-04-27 2013-10-31 Irina Calciu System and Method for Implementing NUMA-Aware Reader-Writer Locks
US20130290583A1 (en) * 2012-04-27 2013-10-31 David Dice System and Method for NUMA-Aware Locking Using Lock Cohorts
CN104133661A (zh) * 2014-07-30 2014-11-05 西安电子科技大学 基于列存储的多核并行哈希分区优化方法
CN106033437A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及系统
CN105975349A (zh) * 2016-05-04 2016-09-28 北京智能管家科技有限公司 一种线程锁的优化方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PALLAVI JOSHI 等: "An Effective Dynamic Analysis for Detecting Generalized Deadlocks", 《ACM》 *
刘殿敏 等: "基于Linux嵌入式HTTP网络服务器的设计与实现", 《计算机工程》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111241132A (zh) * 2018-11-27 2020-06-05 北京奇虎科技有限公司 基于大数据分析的数据查询项目执行方法及装置
CN110888858A (zh) * 2019-10-29 2020-03-17 北京奇艺世纪科技有限公司 数据库的操作方法和装置、存储介质、电子装置
CN110781016A (zh) * 2019-10-30 2020-02-11 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置、设备及介质
CN110781016B (zh) * 2019-10-30 2021-04-23 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置、设备及介质
CN111163140A (zh) * 2019-12-20 2020-05-15 深圳市中农易讯信息技术有限公司 资源获取和分配的方法、装置和计算机可读存储介质
CN111158878A (zh) * 2019-12-30 2020-05-15 北京三快在线科技有限公司 资源转移请求线程控制方法、装置及存储介质
CN111158878B (zh) * 2019-12-30 2023-08-29 北京三快在线科技有限公司 资源转移请求线程控制方法、装置及存储介质
CN113326498A (zh) * 2020-02-28 2021-08-31 华为技术有限公司 权限复用方法、基于权限复用的资源访问方法及相关设备
WO2021169379A1 (zh) * 2020-02-28 2021-09-02 华为技术有限公司 权限复用方法、基于权限复用的资源访问方法及相关设备
CN113326498B (zh) * 2020-02-28 2023-11-17 华为技术有限公司 权限复用方法、基于权限复用的资源访问方法及相关设备
CN112099962A (zh) * 2020-11-06 2020-12-18 成都新希望金融信息有限公司 分布式锁实现方法、装置和电子设备
CN112764941A (zh) * 2021-01-26 2021-05-07 北京字节跳动网络技术有限公司 资源访问方法、装置、电子设备及计算机可读存储介质
CN112764941B (zh) * 2021-01-26 2024-05-31 北京字节跳动网络技术有限公司 资源访问方法、装置、电子设备及计算机可读存储介质
CN113448976A (zh) * 2021-06-30 2021-09-28 腾讯科技(上海)有限公司 数据处理方法、装置、计算机设备和存储介质
CN113448976B (zh) * 2021-06-30 2023-08-15 腾讯科技(上海)有限公司 数据处理方法、装置、计算机设备和存储介质
CN115131901A (zh) * 2022-07-07 2022-09-30 广州广电运通金融电子股份有限公司 一种基于rfid和iot的动态密码锁开锁方法及系统

Also Published As

Publication number Publication date
CN108319496B (zh) 2022-03-04

Similar Documents

Publication Publication Date Title
CN108319496A (zh) 资源访问方法、业务服务器、分布式系统及存储介质
CN113641457B (zh) 容器创建方法、装置、设备、介质及程序产品
CN106201355B (zh) 数据处理方法和装置以及存储系统
CN103605577B (zh) 跨进程的资源共享方法和设备
CN104253831A (zh) 一种用于在云计算环境中部署应用的方法和系统
CN105159841B (zh) 一种内存迁移方法及装置
US20180196603A1 (en) Memory Management Method, Apparatus, and System
CN103827842A (zh) 向控制器存储器空间写入消息
CN106776395B (zh) 一种共享集群的任务调度方法及装置
CN104461698A (zh) 虚拟磁盘动态挂载的方法、管理装置及分布式存储系统
CN108064377A (zh) 一种多系统共享内存的管理方法及装置
CN108667903B (zh) 数据发送方法、装置和存储介质
CN103369038A (zh) 平台即服务PaaS管理平台及方法
CN110706148B (zh) 人脸图像处理方法、装置、设备和存储介质
CN101599978B (zh) 资源分配方法和设备
CN110209341A (zh) 一种数据写入方法、装置和存储设备
CN104735109A (zh) 一种医学影像数据的存储系统
CN104951238A (zh) 用于在分布式虚拟环境中管理数据存储的方法和装置
CN105978744B (zh) 一种资源分配方法、装置及系统
CN105868023B (zh) 一种分布式系统中的数据处理方法及计算节点
CN111126604A (zh) 模型训练方法、装置、服务器及存储介质
CN108696559A (zh) 流处理方法及装置
CN105653566B (zh) 一种实现数据库写访问的方法及装置
CN105335441B (zh) 基于局域网的分布式文件系统
CN111475277A (zh) 一种资源分配方法、系统、设备及机器可读存储介质

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