CN108376104A - 节点调度方法及装置、计算机可读存储介质 - Google Patents
节点调度方法及装置、计算机可读存储介质 Download PDFInfo
- Publication number
- CN108376104A CN108376104A CN201810147813.1A CN201810147813A CN108376104A CN 108376104 A CN108376104 A CN 108376104A CN 201810147813 A CN201810147813 A CN 201810147813A CN 108376104 A CN108376104 A CN 108376104A
- Authority
- CN
- China
- Prior art keywords
- node
- memory
- destination node
- destination
- pointer
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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 the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种节点调度方法及装置、计算机可读存储介质,所述节点调度方法,包括:当接收到节点调度指令时,从所述节点调度指令中获取目标节点标识信息;从预设的数据库中获取与所述目标节点标识信息对应的目标节点的value;根据所述目标节点的value,确定所述目标节点的节点类型;根据所述目标节点的节点类型为所述目标节点申请对应的内存,并从所述数据库中获取所述目标节点的节点信息,所述节点信息包括节点数据结构;当接收到所述目标节点的使用完成指令时,释放所述目标节点所占用的内存。上述方案,能够降低MFS系统在节点调度时所消耗的内存。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种节点调度方法及装置、计算机可读存储介质。
背景技术
MooseFS是一个高容错性的分布式文件系统,以下简称MFS,MFS能够将资源分布存储于几台不同的物理介质,对外只提供给用户一个访问接口。
MFS的体系结构主要包括:主服务器(master server)、块服务器(chunkservers)、备份服务器(metalogger servers)及客户端。主服务器用来管理整个文件系统,用来存储每个文件的元数据(包括文件大小、属性及存储位置,同时也包括的一些非规则性的文件,如目录、套接字(socket)、管道及设备)。块服务器用于存储文件的服务器,受主服务器的调度,并为客户端提供数据传输。备份服务器用于存储元数据变化日志并周期性地下载元数据文件,同时当主服务器暂不能工作时,可以进行替代管理。客户端用于访问MFS中的文件,采用mfsmount与管理服务器进行交互(接收或修改元数据文件)及与块服务器进行数据交换。
然而,现有的MFS系统,当节点较多时,主服务器对节点进行调度时所消耗的内存较大。
发明内容
本发明实施例解决的技术问题是如何降低MFS系统在节点调度时所消耗的内存。
为解决上述技术问题,本发明实施例提供一种节点调度方法,包括:当接收到节点调度指令时,从所述节点调度指令中获取目标节点标识信息;从预设的数据库中获取与所述目标节点标识信息对应的目标节点的value;根据所述目标节点的value,确定所述目标节点的节点类型;根据所述目标节点的节点类型为所述目标节点申请对应的内存,并从所述数据库中获取所述目标节点的节点信息,所述节点信息包括节点数据结构;当接收到所述目标节点的使用完成指令时,释放所述目标节点所占用的内存。
可选地,在释放所述目标节点所占用的内存之前,还包括:检测所述目标节点的节点信息是否发生变化;当所述目标节点的节点信息发生变化时,对所述数据库中的所述目标节点的节点信息进行更新。
可选地,所述节点调度方法还包括:当接收到新节点的添加指令时,生成所述新节点对应的value;为所述新节点分配一一对应的节点标识信息,并将所述新节点的节点标识信息与所述新节点对应的value存储至所述数据库。
可选地,所述节点调度方法还包括:当接收到节点删除指令时,从所述节点删除指令中获取待删除节点的节点标识信息;根据所述待删除节点的节点标识信息获取所述待删除节点的节点信息;将所述待删除节点的节点信息从所述数据库中删除。
可选地,所述根据所述目标节点的节点类型为所述目标节点申请对应的内存,包括:根据所述目标节点的节点类型,从内存池中为所述目标节点申请对应的内存。
可选地,所述从内存池中为所述目标节点申请对应的内存,包括:根据所述目标节点的节点类型调用对应的内存指针链;检测所述内存指针链中是否存在尚未使用的内存段;当所述内存指针链中存在尚未使用的内存段时,从所述尚未使用的内存段中选取一部分内存段作为为所述目标节点所申请的内存,并将所述内存指针链中的下一个节点指针置为头指针。
可选地,所述节点调度方法还包括:当所述内存指针链中不存在尚未使用的内存段时,为所述目标节点申请新的内存段,并将所申请的新的内存段添加至所述内存指针链中。
可选地,所述当接收到所述目标节点的使用完成指令时,释放所述目标节点所占用的内存,包括:检测节点指针的指向是否为空;当所述节点指针的指向为空时,跳出函数,无法再释放所述目标节点所占用的内存;当所述节点指针的指向不为空时,根据节点类型释放相应内存,并将未释放的内存存储在对应的内存指针链;将所述节点指针的指向设置为空。
可选地,所述目标节点包括以下任意一种:node节点、edge节点、全局变量名称、Quotanode节点、Freenode节点。
可选地,所述数据库为Rocksdb数据库。
本发明实施例还提供一种节点调度装置,包括:第一获取单元,适于当接收到节点调度指令时,从所述节点调度指令中获取目标节点标识信息;第二获取单元,适于从预设的数据库中获取与所述目标节点标识信息对应的目标节点的value;确定单元,适于根据所述目标节点的value,确定所述目标节点的节点类型;申请单元,适于根据所述目标节点的节点类型为所述目标节点申请对应的内存;节点信息获取单元,适于从所述数据库中获取所述目标节点的节点信息,所述节点信息包括节点数据结构;释放单元,适于当接收到所述目标节点的使用完成指令时,释放所述目标节点所占用的内存。
可选地,所述节点调度装置还包括:更新单元,适于在释放所述目标节点所占用的内存之前,检测所述目标节点的节点信息是否发生变化;当所述目标节点的节点信息发生变化时,对所述数据库中的所述目标节点的节点信息进行更新。
可选地,所述节点调度装置还包括:添加单元,适于当接收到新节点的添加指令时,生成所述新节点对应的value;为所述新节点分配一一对应的节点标识信息,并将所述新节点的节点标识信息与所述新节点对应的value存储至所述数据库。
可选地,所述节点调度装置还包括:删除单元,适于当接收到节点删除指令时,从所述节点删除指令中获取待删除节点的节点标识信息;根据所述待删除节点的节点标识信息获取所述待删除节点的节点信息;将所述待删除节点的节点信息从所述数据库中删除。
可选地,所述申请单元,适于根据所述目标节点的节点类型,从内存池中为所述目标节点申请对应的内存。
可选地,所述申请单元,适于根据所述目标节点的节点类型调用对应的内存指针链;检测所述内存指针链中是否存在尚未使用的内存段;当所述内存指针链中存在尚未使用的内存段时,从所述尚未使用的内存段中选取一部分内存段作为为所述目标节点所申请的内存,并将所述内存指针链中的下一个节点指针置为头指针。
可选地,所述申请单元,还适于当所述内存指针链中不存在尚未使用的内存段时,为所述目标节点申请新的内存段,并将所申请的新的内存段添加至所述内存指针链中。
可选地,所述释放单元,适于检测节点指针的指向是否为空;当所述节点指针的指向为空时,跳出函数,无法再释放所述目标节点所占用的内存;当所述节点指针的指向不为空时,根据节点类型释放相应内存,并将未释放的内存存储在对应的内存指针链;将所述节点指针的指向设置为空。
可选地,所述目标节点包括以下任意一种:node节点、edge节点、全局变量名称、Quotanode节点、Freenode节点。
可选地,所述数据库为Rocksdb数据库。
本发明实施例还提供一种节点调度装置包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行上述任一所述的节点调度方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述任一所述的节点调度方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
当接收到节点调度指令时,根据目标节点的节点类型为所述目标节点申请对应的内存,并从预设的数据库中获取所述目标节点的节点信息,所述节点信息中包括节点数据结构。在目标节点使用完成时,释放所述目标节点所占用的内存。由于将节点的节点信息存储在预设的数据库中,当需要调度节点时为所述目标节点分配对应的内存,当目标节点使用完毕时,释放所述目标节点所占用的内存,从而可以节约主服务器在节点调度过程中所消耗的内存。
进一步地,在释放目标节点所占用的内存之前,对所述目标节点的节点信息进行更新检查,当目标节点的节点信息发生变化时,对所述目标节点的节点信息进行更新,从而当MFS发生异常时,可以减小数据丢失的概率,提高数据库中节点信息的实时性及可靠性。
进一步地,采用内存池方式为目标节点申请对应的内存,可以减小内存碎片的生成,进一步地减少节点调度过程中内存的消耗。
此外,采用Rocksdb数据库作为存储节点信息的数据库,由于Rocksdb数据库是一种嵌入式key-value存储系统,能够充分利用闪存功能,可以大大提升服务器的速度,从而提高节点信息的存储以及获取的效率及速度。
附图说明
图1是本发明实施例中一种节点调度方法的流程图;
图2是本发明实施例中一种节点调度装置的结构示意图。
具体实施方式
目前,在分布式文件系统中,每建立一个文件或目录都会在主服务器的内存中对应一个文件节点(fsnode)数据结构,fsnode适用于多种文件类型,包括目录。
当主服务器进行初始化时,需要从元数据存储文件(metadata.mfs)中获取全部的fsnode节点信息与fsedge节点信息。当用户需要对某个节点进行访问时,可以直接在内存中进行调度管理。当主服务器正常退出时,将内存中的数据结构拷贝在metadata.mfs中。
然而,主服务器初始化时需要从metadata.mfs中获取元数据。将数据存储在内存中,之后在内存中对元数据进行调度,MFS系统的内存消耗与存储的文件数量成正比,当系统存储的文件数量较大时,对内存的消耗过于庞大。
在本发明实施例中,当接收到节点调度指令时,根据目标节点的节点类型为所述目标节点申请对应的内存,并从预设的数据库中获取所述目标节点的节点信息,所述节点信息中包括节点数据结构。在目标节点使用完成时,释放所述目标节点所占用的内存。由于将节点的节点信息存储在预设的数据库中,当需要调度节点时为所述目标节点分配对应的内存,当目标节点使用完成时,释放所述目标节点所占用的内存,从而可以节约主服务器在节点调度过程中所消耗的内存。
为使本发明实施例的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
参照图1,给出了本发明实施例中一种节点调度方法的流程图。下面结合具体步骤进行详细说明。
步骤11,当接收到节点调度指令时,从所述节点调度指令中获取目标节点标识信息。
步骤12,从预设的数据库中获取与所述目标节点标识信息对应的目标节点的value。
在具体实施中,所述数据库采用Rocksdb数据库。由于Rocksdb数据库是一种嵌入式key-value存储系统,能够充分利用闪存功能,可以大大提升服务器的速度,从而提高节点信息的存储以及获取的效率及速度。在数据库中可以预先存储有节点的节点数据结构的全部信息。
节点标识信息(ID)作为键(key),每个key一一对应一个值(value),其中,value可以采用二进制存储。为了避免key重复出现,可以采用多个数据库分别对节点信息进行存储,主要数据库如下:fsnode_db、fsedge_db、common_db、quota_db、freenode_db等。fsnode_db用以存储node节点信息,node节点ID为key。fsedge_db用以存储edge节点信息,edge节点ID为key。common_db用以存储全局变量信息,全局变量名称作为key。quota_db用以存储quotanode信息,quotanode节点ID为key。freenode_db用以存储freenode信息,freenode_db节点ID为key。
将节点信息存储至数据库后,不再使用存储指针变量进行关联,通过节点ID进行关联。
例如,fsnode存储结构的变化如下:现有MFS中的存储结构为fsedge*parents,本发明实施例中的存储结构为unit64_t parents,其中,将指针改为对应的edge节点ID:unit64_t。现有MFS中的存储结构为fsedge*children,本发明实施例中的存储结构为unit64_t children,其中,edge节点的ID为unit64_t。现有MFS中的存储结构为quotanode*quota,本发明实施例中的存储结构为unit32_t quota,其中,quotanode的ID为unit32_t。
由于fsnode*next指针只用于内存的申请与释放,不存入数据库中,故可以不用将关联方式修改为ID关联。
又如,fsedge存储结构的变化如下:现有MFS中的存储结构为struct_fsnode*child,*parent,本发明实施例中的存储结构为uint32_t child,parent,其中,将指针改为对应的node节点的ID:uint32_t。现有MFS中的存储结构为struct_fsedge*nextchild,*nextparent,本发明实施例中的存储结构为uint64_t nextchild,nextparent,其中,将指针改为对应的edge节点ID:uint64_t,当nextchild不存在时,置为NONE(0)。现有MFS中的存储结构为struct_fsedge**prevchild,**prevparent,本发明实施例中的存储结构为uint64_t prevchild,prevparent,将指针改为对应nextchild/nextparent链中上一个边节点ID,当为nextchild/nextparent链中的首个节点时,置为NONE(0)。
由于,struct_fsedge*next指针只用于内存的申请与释放,因此可以不用将关联方式修改为ID关联。
步骤13,根据所述目标节点的value,确定所述目标节点的节点类型。
在具体实施中,当节点类型不同时,节点对应的value不同。因此,可以根据所述目标节点的value,确定所述目标节点的节点类型。节点类型可以包括文件夹或文件等。
步骤14,根据所述目标节点的节点类型为所述目标节点申请对应的内存,并从所述数据库中获取所述目标节点的节点信息。
在具体实施中,所述目标节点可以为node节点、edge节点、全局变量名称、Quotanode节点、Freenode节点中的任一种。当节点类型不同时,所需要的内存大小也相应的不同。
例如,当节点类型为文件夹时,对应有子目录;当节点类型为文件时,无子目录。在实际应用中,节点类型为文件夹时所占用的内存通常大于节点为文件时所占用的内存。
在为所述目标节点申请到对应的内存后,可以从所述数据库中获取所述目标节点的节点信息,所述目标节点的节点信息可以包括节点数据结构。
例如,在接收到节点调用指令时,可以根据从节点调用指令中获取到的目标节点的ID,采用fsnode_node_find函数,将目标节点ID作为key,从数据库中获取目标节点的value,再在函数内部调用get_node_by_value函数,通过目标节点的value确定目标节点的节点类型,从而为所述目标节点申请对应内存,并获取所述目标节点的节点数据结构。
步骤15,当接收到所述目标节点的使用完成指令时,释放所述目标节点所占用的内存。
在具体实施中,当接收到所述目标节点的使用完成指令后,可以释放节点所占用的内存以减小内存空间的消耗。
由上述方案可知,当接收到节点调度指令时,根据目标节点的节点类型为所述目标节点申请对应的内存,并从预设的数据库中获取所述目标节点的节点信息,所述节点信息中包括节点数据结构。在目标节点使用完毕时,释放所述目标节点所占用的内存。由于将节点的节点信息存储在预设的数据库中,当需要调度节点时为所述目标节点分配对应的内存,当目标节点使用完毕时,释放所述目标节点所占用的内存,从而可以节约在节点调度过程中所消耗的内存。
在具体实施中,由于在调用目标节点时,需要实时的申请相应的内存空间,并在目标节点使用完毕后释放,从而可能产生大量申请内存、释放内存的操作。为解决上述问题,在本发明一实施例中,采用内存池的方式为目标节点分配对应的内存,可以减少内存碎片的生成。
在具体实施中,可以根据所述目标节点的节点类型调用对应的内存指针链。判断所述内存指针链中是否存在尚未使用的内存段。若存在尚未使用的内存段,直接从尚未调用的内存段中选取部分内存段作为为所述目标节点所申请的内存,并将所述内存指针链中的下一个节点指针置为头指针。
在具体实施中,当所述内存指针链中不存在尚未使用的内存段时,可以为所述目标节点申请新的内存段,并将所申请的新的内存段添加至所述内存指针链中,以便于下次调用节点时使用。
当接收到目标节点的使用完成指令时,检测节点指针指向是否为空,也即节点指针指向是否为NULL,当所述节点指针的指向为NULL时,跳出函数,也即跳出用于释放内存操作的函数,此时无法再释放所述目标节点所占用的内存。当节点指针指向不为NULL时,可以根据目标节点的节点类型释放相应内存,释放目标节点中的字符串或者数组内容。例如,释放symlink类型中的path。又如,释放file类型中的chunktab。所释放的内存通常为每次目标节点调度时所占用的变化的内存,如,symlink类型中根据长度申请path,虽然同为symlink类型,但是由于每次长度可能不同,故申请path时所占用的内存不同。将未释放的内存存储在对应的内存指针链。将节点指针指向设置为NULL。未释放的内存通常指目标节点所占用的公共的固定的内存,如与父节点或子节点相关的一些信息所占用的内存。
在具体实施中,内存指针链中的节点之间采用*next指针连接,通过头节点进行访问各个节点。
在具体实施中,可能存在需要添加新节点的情况,当接收到新节点的添加指令时,生成所述新节点对应的value;为所述新节点分配一一对应的节点标识信息,并将所述新节点的节点标识信息与所述新节点对应的value存储至所述数据库。
例如,所接收到新节点的添加指令指示需要添加新node节点的节点信息至数据库,调用fsnode_node_add函数,并在fsnode_node_add函数内部调用get_value_by_node函数,通过node数据结构生成value,为新node节点分配新的节点标识信息,即分配一个新ID,将所述新node节点分配的新ID作为key,将所述新node节点的key-value存储至数据库。
在具体实施中,为了确保数据库中节点信息更新的实时性以及时效性,在释放所述目标节点占用的内存之前,可以检测所述目标节点的节点信息是否发生变化,当所述目标节点的节点信息发生变化时,对所述数据库中的所述目标节点的节点信息进行更新。
例如,可以采用void fsnodes_edge_add(fsedge*e)函数更新edge节点的节点信息。调用函数void get_value_by_edge(uint8_t*value,fsedge*e),根据边节点获取value。
在具体实施中,当接收到节点删除指令时,从所述节点删除指令中获取待删除节点的节点标识信息;根据所述待删除节点的节点标识信息获取所述待删除节点的节点信息,并将所述待删除节点的节点信息从所述数据库中删除。
例如,所接收到节点删除指令指示需要删除node节点,调用fsnodes_node_delete函数,将node节点ID作为key,从数据库中获取node节点的节点信息,并删除所获取到的node节点的节点信息。
又如,所接收到的节点删除指令指示需要删除edge节点,采用void fsnodes_edge_delete(fsedge*e)函数,将edge节点ID作为key,从数据库中获取edge节点的节点信息,并删除所获取到的edge节点的节点信息。
在本发明一实施例中,将待删除节点的节点信息从数据库中删除,也即是将所述待删除节点的节点信息的存储位置移动至回收站。当移动至回收站中的节点信息的时间达到预设时长后,可以将节点的节点信息从回收站中删除,以从所述数据库中彻底删除。
为了便于本领域技术人员更好的理解和实现本发明实施例,本发明实施例还提供一种节点调度装置。
参照图2,给出了本发明实施例中一种节点调度装置的结构示意图,所述节点调度装置20可以包括:第一获取单元21、第二获取单元22、确定单元23、申请单元24、节点信息获取单元25以及释放单元26,其中:
所述第一获取单元21,可以适于适当接收到节点调度指令时,从所述节点调度指令中获取目标节点标识信息;
所述第二获取单元22,可以适于从预设的数据库中获取与所述目标节点标识信息对应的目标节点的value;
在具体实施中,所述数据库可以为Rocksdb数据库。由于Rocksdb数据库是一种嵌入式Key-Value存储系统,能够充分利用闪存功能,可以大大提升服务器的速度,从而提高节点信息的存储以及获取的效率及速度。
在具体实施中,所述目标节点可以包括以下任意一种:node节点、edge节点、全局变量名称、Quotanode节点、Freenode节点。
所述确定单元23,可以适于根据所述目标节点的value,确定所述目标节点的节点类型;
所述申请单元24,可以适于根据所述目标节点的节点类型为所述目标节点申请对应的内存;
所述节点信息获取单元25,可以适于从所述数据库中获取所述目标节点的节点信息,所述节点信息包括节点数据结构;
所述释放单元26,可以适于当接收到所述目标节点的使用完成指令时,释放所述目标节点所占用的内存。
由上述方案可知,当接收到节点调度指令时,根据目标节点的节点类型为所述目标节点申请对应的内存,并从预设的数据库中获取所述目标节点的节点信息,所述节点信息中包括节点数据结构。在目标节点使用完成时,释放所述目标节点所占用的内存。由于将节点的节点信息存储在预设的数据库中,当需要调度节点时为所述目标节点分配对应的内存,当目标节点使用完毕时,释放所述目标节点所占用的内存,从而可以节约主服务器在节点调度过程中所消耗的内存。
在具体实施中,所述节点调度装置20还可以包括:更新单元(图2未示出)。所述更新单元可以适于在释放所述目标节点所占用的内存之前,检测所述目标节点的节点信息是否发生变化;当所述目标节点的节点信息发生变化时,对所述数据库中的所述目标节点的节点信息进行更新。
在具体实施中,所述节点调度装置20还可以包括:添加单元(图2未示出)。所述添加单元可以适于当接收到新节点的添加指令时,生成所述新节点对应的value;为所述新节点分配一一对应的节点标识信息,并将所述新节点的节点标识信息与所述新节点对应的value存储至所述数据库。
在具体实施中,所述节点调度装置20还可以包括:删除单元(图2未示出)。所述删除单元可以适于当接收到节点删除指令时,从所述节点删除指令中获取待删除节点的节点标识信息;根据所述待删除节点的节点标识信息获取所述待删除节点的节点信息;将所述待删除节点的节点信息从所述数据库中删除。
在具体实施中,所述申请单元24,可以适于根据所述目标节点的节点类型,从内存池中为所述目标节点申请对应的内存。
在具体实施中,所述申请单元24,可以适于根据所述目标节点的节点类型调用对应的内存指针链;检测所述内存指针链中是否存在尚未使用的内存段;当所述内存指针链中存在尚未使用的内存段时,从所述尚未使用的内存段中选取一部分内存段作为为所述目标节点所申请的内存,并将所述内存指针链中的下一个节点指针置为头指针。
在具体实施中,所述申请单元24,还可以适于当所述内存指针链中不存在尚未使用的内存段时,为所述目标节点申请新的内存段,并将所申请的新的内存段添加至所述内存指针链中。
在具体实施中,所述释放单元26,可以适于检测节点指针的指向是否为空;当所述节点指针的指向为空时,跳出函数,无法再释放所述目标节点所占用的内存;当所述节点指针的指向不为空时,根据节点类型释放相应内存,并将未释放的内存存储在对应的内存指针链;将所述节点指针的指向设置为空。
在具体实施中,所述节点调度装置20可以集成于主服务器,用于对节点的调度;所述节点调度装置20也可以独立于主服务器且与主服务器配合工作,配合主服务器用于节点的调度。
在具体实施中,所述节点调度装置20的工作原理及工作流程可以参考本发明上述实施例中节点调度方法中的描述,此处不再赘述。
本发明实施例还提供一种节点调度装置,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行本发明上述任一实施例提供的节点调度方法的步骤。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机指令,所述计算机指令运行时执行本发明上述任一实施例提供的节点调度方法的步骤。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (22)
1.一种节点调度方法,其特征在于,包括:
当接收到节点调度指令时,从所述节点调度指令中获取目标节点标识信息;
从预设的数据库中获取与所述目标节点标识信息对应的目标节点的value;
根据所述目标节点的value,确定所述目标节点的节点类型;
根据所述目标节点的节点类型为所述目标节点申请对应的内存,并从所述数据库中获取所述目标节点的节点信息,所述节点信息包括节点数据结构;
当接收到所述目标节点的使用完成指令时,释放所述目标节点所占用的内存。
2.根据权利要求1所述的节点调度方法,其特征在于,在释放所述目标节点所占用的内存之前,还包括:
检测所述目标节点的节点信息是否发生变化;
当所述目标节点的节点信息发生变化时,对所述数据库中的所述目标节点的节点信息进行更新。
3.根据权利要求1所述的节点调度方法,其特征在于,还包括:
当接收到新节点的添加指令时,生成所述新节点对应的value;
为所述新节点分配一一对应的节点标识信息,并将所述新节点的节点标识信息与所述新节点对应的value存储至所述数据库。
4.根据权利要求1所述的节点调度方法,其特征在于,还包括:
当接收到节点删除指令时,从所述节点删除指令中获取待删除节点的节点标识信息;
根据所述待删除节点的节点标识信息获取所述待删除节点的节点信息;
将所述待删除节点的节点信息从所述数据库中删除。
5.根据权利要求1所述的节点调度方法,其特征在于,所述根据所述目标节点的节点类型为所述目标节点申请对应的内存,包括:
根据所述目标节点的节点类型,从内存池中为所述目标节点申请对应的内存。
6.根据权利要求5所述的节点调度方法,其特征在于,所述从内存池中为所述目标节点申请对应的内存,包括:
根据所述目标节点的节点类型调用对应的内存指针链;
检测所述内存指针链中是否存在尚未使用的内存段;
当所述内存指针链中存在尚未使用的内存段时,从所述尚未使用的内存段中选取一部分内存段作为为所述目标节点所申请的内存,并将所述内存指针链中的下一个节点指针置为头指针。
7.根据权利要求6所述的节点调度方法,其特征在于,还包括:
当所述内存指针链中不存在尚未使用的内存段时,为所述目标节点申请新的内存段,并将所申请的新的内存段添加至所述内存指针链中。
8.根据权利要求5所述的节点调度方法,其特征在于,所述当接收到所述目标节点的使用完成指令时,释放所述目标节点所占用的内存,包括:
检测节点指针的指向是否为空;
当所述节点指针的指向为空时,跳出函数,无法再释放所述目标节点所占用的内存;
当所述节点指针的指向不为空时,根据节点类型释放相应内存,并将未释放的内存存储在对应的内存指针链;
将所述节点指针的指向设置为空。
9.根据权利要求1所述的节点调度方法,其特征在于,所述目标节点包括以下任意一种:
node节点、edge节点、全局变量名称、Quotanode节点、Freenode节点。
10.根据权利要求1所述的节点调度方法,其特征在于,所述数据库为Rocksdb数据库。
11.一种节点调度装置,其特征在于,包括:
第一获取单元,适于当接收到节点调度指令时,从所述节点调度指令中获取目标节点标识信息;
第二获取单元,适于从预设的数据库中获取与所述目标节点标识信息对应的目标节点的value;
确定单元,适于根据所述目标节点的value,确定所述目标节点的节点类型;
申请单元,适于根据所述目标节点的节点类型为所述目标节点申请对应的内存;
节点信息获取单元,适于从所述数据库中获取所述目标节点的节点信息,所述节点信息包括节点数据结构;
释放单元,适于当接收到所述目标节点的使用完成指令时,释放所述目标节点所占用的内存。
12.根据权利要求11所述的节点调度装置,其特征在于,还包括:更新单元,适于在释放所述目标节点所占用的内存之前,检测所述目标节点的节点信息是否发生变化;当所述目标节点的节点信息发生变化时,对所述数据库中的所述目标节点的节点信息进行更新。
13.根据权利要求11所述的节点调度装置,其特征在于,还包括:添加单元,适于当接收到新节点的添加指令时,生成所述新节点对应的value;为所述新节点分配一一对应的节点标识信息,并将所述新节点的节点标识信息与所述新节点对应的value存储至所述数据库。
14.根据权利要求11所述的节点调度装置,其特征在于,还包括:删除单元,适于当接收到节点删除指令时,从所述节点删除指令中获取待删除节点的节点标识信息;根据所述待删除节点的节点标识信息获取所述待删除节点的节点信息;将所述待删除节点的节点信息从所述数据库中删除。
15.根据权利要求11所述的节点调度装置,其特征在于,所述申请单元,适于根据所述目标节点的节点类型,从内存池中为所述目标节点申请对应的内存。
16.根据权利要求15所述的节点调度装置,其特征在于,所述申请单元,适于根据所述目标节点的节点类型调用对应的内存指针链;检测所述内存指针链中是否存在尚未使用的内存段;当所述内存指针链中存在尚未使用的内存段时,从所述尚未使用的内存段中选取一部分内存段作为为所述目标节点所申请的内存,并将所述内存指针链中的下一个节点指针置为头指针。
17.根据权利要求16所述的节点调度装置,其特征在于,所述申请单元,还适于当所述内存指针链中不存在尚未使用的内存段时,为所述目标节点申请新的内存段,并将所申请的新的内存段添加至所述内存指针链中。
18.根据权利要求15所述的节点调度装置,其特征在于,所述释放单元,适于检测节点指针的指向是否为空;当所述节点指针的指向为空时,跳出函数,无法再释放所述目标节点所占用的内存;当所述节点指针的指向不为空时,根据节点类型释放相应内存,并将未释放的内存存储在对应的内存指针链;
将所述节点指针的指向设置为空。
19.根据权利要求11所述的节点调度装置,其特征在于,所述目标节点包括以下任意一种:node节点、edge节点、全局变量名称、Quotanode节点、Freenode节点。
20.根据权利要求11所述的节点调度装置,其特征在于,所述数据库为Rocksdb数据库。
21.一种节点调度装置,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令,其特征在于,所述处理器运行所述计算机指令时执行权利要求1至10任一项所述的节点调度方法的步骤。
22.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求1至10任一项所述的节点调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810147813.1A CN108376104B (zh) | 2018-02-12 | 2018-02-12 | 节点调度方法及装置、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810147813.1A CN108376104B (zh) | 2018-02-12 | 2018-02-12 | 节点调度方法及装置、计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108376104A true CN108376104A (zh) | 2018-08-07 |
CN108376104B CN108376104B (zh) | 2020-10-27 |
Family
ID=63017876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810147813.1A Expired - Fee Related CN108376104B (zh) | 2018-02-12 | 2018-02-12 | 节点调度方法及装置、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108376104B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900376A (zh) * | 2022-07-15 | 2022-08-12 | 苏州万店掌网络科技有限公司 | 一种设备入网方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857577A (zh) * | 2012-09-24 | 2013-01-02 | 北京联创信安科技有限公司 | 一种集群存储自动负载均衡的系统及方法 |
US20130205028A1 (en) * | 2012-02-07 | 2013-08-08 | Rackspace Us, Inc. | Elastic, Massively Parallel Processing Data Warehouse |
CN103617087A (zh) * | 2013-11-25 | 2014-03-05 | 华中科技大学 | 一种适合迭代计算的MapReduce优化方法 |
CN106126722A (zh) * | 2016-06-30 | 2016-11-16 | 中国科学院计算技术研究所 | 一种基于验证的前缀混合树及设计方法 |
CN107040510A (zh) * | 2016-11-30 | 2017-08-11 | 华侨大学 | 一种基于体域网和云计算的医疗大数据处理方法 |
-
2018
- 2018-02-12 CN CN201810147813.1A patent/CN108376104B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130205028A1 (en) * | 2012-02-07 | 2013-08-08 | Rackspace Us, Inc. | Elastic, Massively Parallel Processing Data Warehouse |
CN102857577A (zh) * | 2012-09-24 | 2013-01-02 | 北京联创信安科技有限公司 | 一种集群存储自动负载均衡的系统及方法 |
CN103617087A (zh) * | 2013-11-25 | 2014-03-05 | 华中科技大学 | 一种适合迭代计算的MapReduce优化方法 |
CN106126722A (zh) * | 2016-06-30 | 2016-11-16 | 中国科学院计算技术研究所 | 一种基于验证的前缀混合树及设计方法 |
CN107040510A (zh) * | 2016-11-30 | 2017-08-11 | 华侨大学 | 一种基于体域网和云计算的医疗大数据处理方法 |
Non-Patent Citations (2)
Title |
---|
JIONGYU YU: "DMooseFS: Design and Implementation of Distributed Files System with Distributed Metadata Server", 《2012 IEEE ASIA PACIFIC CLOUD COMPUTING CONGRESS》 * |
杨宇: "分布式存储系统中海量文件随机存取技术研究", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114900376A (zh) * | 2022-07-15 | 2022-08-12 | 苏州万店掌网络科技有限公司 | 一种设备入网方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108376104B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113158B2 (en) | Rolling back kubernetes applications | |
US10496627B2 (en) | Consistent ring namespaces facilitating data storage and organization in network infrastructures | |
US20190220266A1 (en) | Upgrading Bundled Applications In A Distributed Computing System | |
US20200310915A1 (en) | Orchestration of Heterogeneous Multi-Role Applications | |
US11301136B2 (en) | Capacity forecasting based on capacity policies and transactions | |
AU2014346369B2 (en) | Managed service for acquisition, storage and consumption of large-scale data streams | |
US11347684B2 (en) | Rolling back KUBERNETES applications including custom resources | |
CN107077492A (zh) | 可扩展的基于日志的事务管理 | |
US20120089625A1 (en) | Incremental conversion of database objects during upgrade of an original system | |
CN107148617A (zh) | 日志协调存储组的自动配置 | |
US8997075B2 (en) | System and method for dynamic class management | |
US20240061712A1 (en) | Method, apparatus, and system for creating training task on ai training platform, and medium | |
US11720607B2 (en) | System for lightweight objects | |
CN104166661A (zh) | 数据存储系统和数据存储方法 | |
US20190220205A1 (en) | Job Manager For Deploying A Bundled Application | |
JP7322161B2 (ja) | 分散システムにおける非同期ストレージ管理 | |
CN113095778A (zh) | 通过多个邮箱在通信应用中进行海量数据管理的架构 | |
CN108376104A (zh) | 节点调度方法及装置、计算机可读存储介质 | |
US10942912B1 (en) | Chain logging using key-value data storage | |
US9009731B2 (en) | Conversion of lightweight object to a heavyweight object | |
CN115858486A (zh) | 数据处理方法以及相关设备 | |
US11748203B2 (en) | Multi-role application orchestration in a distributed storage system | |
US20200244732A1 (en) | Scheduled retrieval of shared content | |
CN106649565B (zh) | 一种联机分析处理方法 | |
CN106649625B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201027 Termination date: 20220212 |