CN115934732A - 数据拓扑的更新方法、装置、计算机设备及存储介质 - Google Patents
数据拓扑的更新方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN115934732A CN115934732A CN202110893537.5A CN202110893537A CN115934732A CN 115934732 A CN115934732 A CN 115934732A CN 202110893537 A CN202110893537 A CN 202110893537A CN 115934732 A CN115934732 A CN 115934732A
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- block information
- task queue
- data block
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提出了一种数据拓扑的更新方法、装置、计算机设备及存储介质,涉及计算机技术领域。该方法包括:获取待更新数据拓扑的数据节点列表;运行第一线程,以依次向所述数据节点列表中的每个数据节点发送数据块信息获取请求;在所述第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列;在所述任务队列中包含数据块信息集的情况下,运行第三线程,以基于所述任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。本公开通过将数据拓扑的更新任务按阶段划分为多个子任务,采用并发执行的线程分别处理各个阶段的子任务,减少了线程间的等待时间,提高了数据拓扑更新的效率。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据拓扑的更新方法、装置、计算机设备及存储介质。
背景技术
对象存储是分布式存储的一种类型。对象存储系统通常包括两种架构,一种是去中心化的架构,一种是存在中心管理节点的架构。其中,第二种架构通常是由管理节点—数据节点—数据块—对象构成的数据拓扑。管理节点需要感知数据节点的数据分布,从而决策任务的分发。当管理节点切换时需要重新构建数据拓扑,而长时间构建数据拓扑对于存储系统是不可容忍的。因此,研究如何快速重建数据拓扑至关重要。
发明内容
本公开旨在至少在一定程度上解决相关技术中的技术问题之一。
本公开第一方面实施例提出了一种数据拓扑的更新方法,包括:
获取待更新数据拓扑的数据节点列表;
运行第一线程,以依次向所述数据节点列表中的每个数据节点发送数据块信息获取请求;
在所述第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列;
在所述任务队列中包含数据块信息集的情况下,运行第三线程,以基于所述任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。
本公开第二方面实施例提出了一种数据拓扑的更新装置,包括:
获取模块,用于获取待更新数据拓扑的数据节点列表;
发送模块,用于运行第一线程,以依次向所述数据节点列表中的每个数据节点发送数据块信息获取请求;
接收模块,用于在所述第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列;
更新模块,用于在所述任务队列中包含数据块信息集的情况下,运行第三线程,以基于所述任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。
本公开第三方面实施例提出了一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如本公开第一方面实施例提出的数据拓扑的更新方法。
本公开第四方面实施例提出了一种非临时性计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如本公开第一方面实施例提出的数据拓扑的更新方法。
本公开第五方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行本公开第一方面实施例提出的数据拓扑的更新方法。
本公开提供的数据拓扑的更新方法、装置、计算机设备及存储介质,存在如下有益效果:
首先获取待更新数据拓扑的数据节点列表,然后运行第一线程,以依次向数据节点列表中的每个数据节点发送数据块信息获取请求;在第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列;在任务队列中包含数据块信息集的情况下,运行第三线程,以基于任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。本公开通过将数据拓扑的更新任务按阶段划分为多个子任务,采用并发执行的线程分别处理各个阶段的子任务,减少了线程间的等待时间,提高了数据拓扑更新的效率。
本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
本公开上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本公开实施例一所提供的数据拓扑的更新方法的流程示意图;
图2为本公开实施例二所提供的数据拓扑的更新方法的流程示意图;
图3为本公开实施例三所提供的数据拓扑的更新方法的流程示意图;
图4为本公开实施例四所提供的数据拓扑的更新装置的结构示意图;
图5为本公开实施例五所提供的数据拓扑的更新装置的结构示意图;
图6为本公开实施例六所提供的数据拓扑的更新装置的结构示意图;
图7示出了适于用来实现本公开实施方式的示例性计算机设备的框图。
具体实施方式
下面详细描述本公开的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
下面参考附图描述本公开实施例的数据拓扑的更新方法、装置、计算机设备和存储介质。
图1为本公开实施例所提供的数据拓扑的更新方法的流程示意图。
本公开实施例以该数据拓扑的更新方法被配置于数据拓扑的更新装置中来举例说明,该数据拓扑的更新装置可以应用于任一计算机设备中,以使该计算机设备可以执行数据拓扑的更新功能。
其中,计算机设备可以为个人电脑(Personal Computer,简称PC)、云端设备、移动设备等,移动设备例如可以为手机、平板电脑、个人数字助理、穿戴式设备、车载设备等具有各种操作系统、触摸屏和/或显示屏的硬件设备。
如图1所示,该数据拓扑的更新方法可以包括以下步骤:
步骤101,获取待更新数据拓扑的数据节点列表。
需要说明的是,对于对象存储系统,一个管理节点下可以有多个数据节点,一个数据节点下可以有多个数据块。因此,每个数据节点有对应的数据拓扑,不同数据节点的数据拓扑可以相互对立,也可以相互关联。
本公开实施例中,管理节点获取待更新数据拓扑的数据节点,并形成列表,存储各个数据节点的信息。比如,列表可以存储每个数据节点的序号及其对应的位置信息。或者,列表可以存储每个数据节点的身份标识,其中身份标识可以包括位置信息。本公开对此不做限定。
需要说明的是,上述示例只是举例说明,不能作为对本公开实施例中数据节点列表的限定。
步骤102,运行第一线程,以依次向数据节点列表中的每个数据节点发送数据块信息获取请求。
其中,第一线程可以是单个,也可以是多个。
比如,第一线程是单个线程,可以逐次选取一个数据节点发送数据块信息获取请求,直至数据节点列表中的所有数据节点都被选择完毕。
或者,第一线程包括多个线程,多个线程可以分别从数据节点列表中选择数据节点发送数据块信息获取请求,直至数据节点中的所有数据节点都被选择完毕。
需要说明的是,上述示例只是举例说明,不能作为对本公开实施例中第一线程的限定。
步骤103,在第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列。
需要说明的是,第一线程和第二线程可以相互独立,在第一线程运行的同时,第二线程可以同时并发运行,两者互不干扰。
其中,第二线程可以是单个,也可以是多个。
比如,第二线程是单个线程,可以逐次接收一个数据节点返回的数据块信息集,并将其放入任务队列中。
或者,第二线程包括多个线程,多个线程可以分别接收对应的多个数据节点返回的数据块信息集,并将其分别放入任务队列中。
可以理解的是,当第二线程包括多个线程时,各个线程可以分别按照上述过程重复运行。
此外,由于一个数据节点可以包括多个数据块,因此,每个数据节点需要返回其包括的所有数据块的信息,即数据块信息集。
其中,数据块信息集可以包括各个数据块的存储位置信息及其对应的数据节点信息,本公开对此不做限定。
需要说明的是,上述示例只是举例说明,不能作为对本公开实施例中第二线程、数据块信息集等的限定。
步骤104,在任务队列中包含数据块信息集的情况下,运行第三线程,以基于所述任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。
需要说明的是,第一线程、第二线程及第三线程可以相互独立,在第一线程和第二线程运行的同时,第三线程可以同时并发运行。
其中,第三线程可以是单个,也可以是多个。
比如,第三线程是单个线程,可以逐次从任务队列中选取一个数据块信息集,将对应的数据节点的数据拓扑进行更新。
或者,第三线程包括多个线程,多个线程可以分别从任务队列中选取数据块信息,将对应的数据节点的数据拓扑进行更新。
可以理解的是,当第三线程包括多个线程时,各个线程可以分别按照上述过程重复运行。
需要说明的是,上述示例只是举例说明,不能作为对本公开实施例中第三线程等的限定。
本公开实施例中,首先获取待更新数据拓扑的数据节点列表,然后运行第一线程,以依次向数据节点列表中的每个数据节点发送数据块信息获取请求;在第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列;在任务队列中包含数据块信息集的情况下,运行第三线程,以基于任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。本公开通过将数据节点的数据拓扑的更新任务按阶段划分为多个子任务,采用并发执行的线程分别处理各个阶段的子任务,减少了线程间的等待时间,提高了数据拓扑更新的效率。
上述实施例中,第一线程、第二线程及第三线程可以相互并发运行,即第一线程在发送完当前数据节点的数据块信息获取请求后,可以继续向下一个数据节点发送数据块信息获取请求,而无需等待第二线程接收当前数据节点返回的数据块信息集。
同理,第二线程在接收到当前数据节点返回的数据块信息集,并将其加入任务队列后,可以继续接收下一数据节点返回的数据块信息集,而无需等待第三线程对当前节点的数据拓扑进行更新。
同理,第三线程在完成当前数据节点的数据拓扑的更新后,可以继续对任务队列中下一数据节点的数据拓扑进行更新,无需等待第一线程和第二线程。由此,减少了线程间的等待时间,实现了数据拓扑的快速更新。
在一种可能的实现方式中,第三线程可以包括多个,任一第三线程对任务队列进行遍历,获取目标数据块信息集,并根据目标数据块信息集的标识,确定当前待更新的内存空间,进而对内存空间中的数据结构进行更新。下面结合图2对上述过程进行进一步说明。
图2是根据本公开第二实施例的数据拓扑的更新方法的流程示意图。如图2所示,在如图1所示实施例的基础上,任务队列中还包括每个数据块信息集进入任务队列的时刻,第三线程有多个。
其中,对每个数据块信息集标记进入任务队列的时刻,可以使多个第三线程按照数据块信息集进入任务队列的先后顺序,将对应的各个数据节点的数据拓扑进行更新。
可以理解的是,数据节点的数据拓扑可以采用任意类型的数据结构存储在管理节点的内存中。因此,在对数据节点的数据拓扑进行更新时,管理节点内存中的数据结构需要随之修改。为了保证数据的安全性,管理节点一次只能运行一个第三线程更改内存中的数据结构。
本公开实施例中,为了使得多个第三线程能够并发运行,可以将管理节点的内存划分为多个内存空间,并为每个数据节点的数据拓扑确定一个对应的内存空间。也就是说,将每个数据节点的数据拓扑以数据结构的形式存储在对应的内存空间中。
本公开实施例中,数据节点的数量可以大于内存空间的数量。因此,多个数据节点的数据拓扑可以对应一个内存空间。比如,数据节点1至数据节点5的数据拓扑对应内存空间1,数据节点6至数据节点10的数据拓扑对应内存空间2等。
需要说明的是,上述示例只是举例说明,不能作为对本公开实施例中数据节点与内存空间对应关系的限定。
本公开实施例中,运行第三线程,以基于任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新,可以包括以下步骤:
步骤201,响应于任一第三线程当前无待执行的数据拓扑更新任务,运行任一第三线程对任务队列进行遍历,以获取进入任务队列的时刻最早的目标数据块信息集。
比如,第三线程包括第三线程1、第三线程2和第三线程3,第三线程1正在执行数据块信息集1的数据拓扑更新任务,第三线程2和第三线程3当前无待执行的数据拓扑更新任务。
此时,任务队列中包括数据块信息集2、数据块信息集3和数据块信息集4。其中,数据块信息集4最先进入任务队列,其次为数据块信息集2,最后为数据块信息集3。
其中,第三线程2和第三线程3可以依次运行。第三线程2运行时获取任务队列中的数据块信息集4,第三线程3运行时获取任务队列中的数据块信息集2。
需要说明的是,上述示例只是举例说明,不能作为对本公开实施例中第三线程和数据块信息集等的限定。
步骤202,根据目标数据块信息集的标识,确定当前待更新的内存空间。
其中,数据块信息集的标识,可以是对应的数据节点的标识,也可以是与对应的数据节点关联的其他标识,本公开对此不做限定。
如前所述,本公开实施例中,可以将管理节点的内存划分为多个内存空间,并为每个数据节点的数据拓扑确定一个对应的内存空间。
比如,数据节点1至数据节点5的数据拓扑对应内存空间1,数据节点6至数据节点10的数据拓扑对应内存空间2等,本公开对此不做限定。
因此,根据数据块信息集的标识,可以确定其关联的数据节点,进而确定其对应的内存空间。
比如,可以通过查询内存空间映射表,确定目标数据块信息集对应的内存空间。或者,可以采用唯一性的哈希算法,确定目标数据块信息集对应的内存空间。本公开对此不做限定。
步骤203,运行任一第三线程,以基于目标数据块信息集,对待更新的内存空间中的数据结构进行更新。
本公开实施例中,可以将每个数据节点的数据拓扑以数据结构的形式存储在对应的内存空间中。因此,根据目标数据块信息集,构建对应的数据节点的数据拓扑,可以通过更新内存空间中的数据结构实现。
比如,目标数据块信息集为数据节点4的信息集,则根据目标数据块信息集,更新内存空间1的数据结构。
或者,目标数据块信息集为数据节点6的信息集,则根据目标数据块信息集,更新内存空间2的数据结构。
本公开实施例中,通过将管理节点的内存划分为多个内存空间,实现了多个第三线程的并发运行,从而使得多个数据节点的数据拓扑可以同时更新,进一步提高了数据拓扑更新的效率。
图3是根据本公开第三实施例的数据拓扑的更新方法的流程示意图。如图3所示,该数据拓扑的更新方法可以包括以下步骤:
步骤301,获取待更新数据拓扑的数据节点列表。
步骤302,运行第一线程,以依次向数据节点列表中的每个数据节点发送数据块信息获取请求。
步骤301和步骤302的具体实现方式,可以参照本公开其他实施例的详细描述,在此不再赘述。
步骤303,响应于第二线程接收的数据块信息集K与第k个数据节点关联,根据数据节点与内存空间的映射关系,确定第k个数据节点关联的目标内存空间。
本公开实施例中,可以将管理节点的内存划分为多个内存空间,并确定数据节点与内存空间的映射关系,从而为每个数据节点的数据拓扑确定一个对应的内存空间。
其中,确定数据节点与内存空间的映射关系,可以根据需要采用任意方式。
比如,可以制定内存空间映射表,确定数据节点与内存空间的映射关系。或者,可以采用唯一性的哈希算法,确定数据节点与内存空间的映射关系,本公开对此不做限定。
因此,根据数据块信息集,可以确定其关联的数据节点,进而确定数据节点对应的内存空间。
比如,数据节点1至数据节点5可以对应内存空间1,数据节点6至数据节点10可以对应内存空间2等,本公开对此不做限定。
步骤304,将数据块信息集K加入目标内存空间关联的任务队列中。
本公开实施例中,对于每个内存空间,可以分别关联一个任务队列。然后,将与内存空间关联的数据节点返回的数据块信息集放入对应的任务队列中。
比如,使内存空间1与任务队列1相关联,使内存空间2与任务队列2相关联。同时,数据节点1至数据节点5与内存空间1相关联,数据节点6至数据节点10与内存空间2相关联。则数据节点1至数据节点5返回的数据块信息集可以放入任务队列1中,数据节点6至数据节点10返回的数据块信息集可以放入任务队列2中。
需要说明的是,上述示例只是举例说明,不能作为对本公开实施例中内存空间、任务队列等的限定。
步骤305,响应于第i个第三线程中无待执行的数据拓扑更新任务,运行第i个第三线程,对任务队列进行遍历,以从任务队列中获取第i个内存空间对应的第j个数据节点关联的第j个数据块信息集。
本公开实施例中,对于每个内存空间,可以分别关联一个第三线程。然后,使对应的第三线程从任务队列中获取与内存空间关联的数据节点返回的数据块信息集。
比如,使内存空间1与第三线程1相关联,使内存空间2与第三线程2相关联。同时,数据节点1至数据节点5与内存空间1相关联,数据节点6至数据节点10与内存空间2相关联。第三线程1和第三线程2当前均无待执行的数据拓扑更新任务。
此时,任务队列中包括数据块信息集2、数据块信息集3和数据块信息集6。则第三线程1运行时获取任务队列中的数据块信息集2或数据块信息集3,第三线程2运行时获取任务队列中的数据块信息集6。
需要说明的是,上述示例只是举例说明,不能作为对本公开实施例中第三线程和数据块信息集等的限定。
在本公开一种可能的实现方式中,对于每个内存空间,可以分别关联一个任务队列和一个第三线程。然后,将与内存空间关联的数据节点返回的数据块信息集放入对应的任务队列中,并使对应的第三线程从对应的任务队列中获取与内存空间关联的数据节点返回的数据块信息集。
比如,使内存空间1与任务队列1相关联,使内存空间2与任务队列2相关联。同时,使内存空间1与第三线程1相关联,使内存空间2与第三线程2相关联。并且,数据节点1至数据节点5与内存空间1相关联,数据节点6至数据节点10与内存空间2相关联。
则数据节点1至数据节点5返回的数据块信息集可以放入任务队列1中,数据节点6至数据节点10返回的数据块信息集可以放入任务队列2中。此时,第三线程1运行时依次获取任务队列1中的数据块信息集,第三线程2运行时依次获取任务队列2中的数据块信息集。
步骤306,运行第i个第三线程,以根据第j个数据块信息集,将第i个内存空间中的数据结构进行更新,其中,i和j均为自然数。
比如,第三线程1可以依次根据数据节点1至数据节点5的数据块信息集,对内存空间1中的数据结构进行更新。
或者,第三线程2可以依次根据数据节点6至数据节点10的数据块信息集,对内存空间2中的数据结构进行更新。
本公开实施例中,通过将管理节点的内存划分为多个内存空间,并使每个内存空间分别关联一个任务队列和一个第三线程,避免了多个第三线程同时更新一个内存空间而导致的无效竞争,充分保证了多个第三线程的并发运行,使得多个数据节点的数据拓扑可以同时更新,进一步提高了数据拓扑更新的效率。
为了实现上述实施例,本公开还提出一种数据拓扑的更新装置。
图4为本公开第四实施例所提供的数据拓扑的更新装置的结构示意图。
如图4所示,该数据拓扑的更新装置100可以包括:获取模块110、发送模块120、接收模块130和更新模块140。
其中,获取模块110,用于获取待更新数据拓扑的数据节点列表。
发送模块120,用于运行第一线程,以依次向数据节点列表中的每个数据节点发送数据块信息获取请求。
接收模块130,用于在第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列。
更新模块140,用于在任务队列中包含数据块信息集的情况下,运行第三线程,以基于任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。
本公开实施例中的上述各模块的功能及具体实现原理,可参照上述各方法实施例,此处不再赘述。
本公开实施例的数据拓扑的更新装置,首先获取待更新数据拓扑的数据节点列表,然后运行第一线程,以依次向数据节点列表中的每个数据节点发送数据块信息获取请求;在第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列;在任务队列中包含数据块信息集的情况下,运行第三线程,以基于任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。本公开通过将数据节点的数据拓扑的更新任务按阶段划分为多个子任务,采用并发执行的线程分别处理各个阶段的子任务,减少了线程间的等待时间,提高了数据拓扑更新的效率。
进一步地,在本公开实施例的一种可能的实现方式中,参见图5,在图4所示实施例的基础上,任务队列中还包括每个数据块信息集进入任务队列的时刻,第三线程有多个。
其中,更新模块140,包括:
第一获取单元1410,用于响应于任一第三线程当前无待执行的数据拓扑更新任务,运行任一第三线程对任务队列进行遍历,以获取进入任务队列的时刻最早的目标数据块信息集。
第一确定单元1420,用于根据目标数据块信息集的标识,确定当前待更新的内存空间。
第一更新单元1430,用于运行任一第三线程,以基于目标数据块信息集,对待更新的内存空间中的数据结构进行更新。
本公开实施例中的上述各模块的功能及具体实现原理,可参照上述各方法实施例,此处不再赘述。
本公开实施例的数据拓扑的更新装置,通过将管理节点的内存划分为多个内存空间,实现了多个第三线程的并发运行,从而使得多个数据节点的数据拓扑可以同时更新,进一步提高了数据拓扑更新的效率。
进一步地,在本公开实施例的一种可能的实现方式中,参见图6,在图4所示实施例的基础上,接收模块130,包括:
第二确定单元1310,用于响应于第二线程接收的数据块信息集K与第k个数据节点关联,根据数据节点与内存空间的映射关系,确定第k个数据节点关联的目标内存空间;
第三确定单元1320,用于将数据块信息集K加入目标内存空间关联的任务队列中。
在本公开实施例一种可能的实现方式中,第三线程包括多个,第i个第三线程用于对第i个内存空间中的数据结构进行更新。
其中,更新模块140,包括
第二获取单元1440,用于响应于第i个第三线程中无待执行的数据拓扑更新任务,运行第i个第三线程,对任务队列进行遍历,以从任务队列中获取第i个内存空间对应的第j个数据节点关联的第j个数据块信息集。
在本公开实施例一种可能的实现方式中,第二获取单元1440运行第i个第三线程,对与第i个第三线程关联的任务队列进行遍历。
第二更新单元1450,用于运行i个第三线程,以根据第j个数据块信息集,将第i个内存空间中的数据结构进行更新,其中,i和j均为自然数。
为了实现上述实施例,本公开还提出一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现如本公开前述实施例提出的数据拓扑的更新方法。
为了实现上述实施例,本公开还提出一种非临时性计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现如本公开前述实施例提出的数据拓扑的更新方法。
为了实现上述实施例,本公开还提出一种计算机程序产品,当计算机程序产品中的指令处理器执行时,执行如本公开前述实施例提出的数据拓扑的更新方法。
图7示出了适于用来实现本公开实施方式的示例性计算机设备的框图。图7显示的计算机设备12仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本公开所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。
本公开的技术方案,首先获取待更新数据拓扑的数据节点列表,然后运行第一线程,以依次向数据节点列表中的每个数据节点发送数据块信息获取请求;运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列;运行第三线程,以基于任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。本公开通过将数据拓扑的更新任务按阶段划分为多个子任务,采用并发执行的线程分别处理各个阶段的子任务,减少了线程间的等待时间,提高了数据拓扑更新的效率。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本公开的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本公开的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本公开的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本公开各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本公开的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本公开的限制,本领域的普通技术人员在本公开的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (13)
1.一种数据拓扑的更新方法,其特征在于,包括:
获取待更新数据拓扑的数据节点列表;
运行第一线程,以依次向所述数据节点列表中的每个数据节点发送数据块信息获取请求;
在所述第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列;
在所述任务队列中包含数据块信息集的情况下,运行第三线程,以基于所述任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。
2.如权利要求1所述的方法,其特征在于,所述任务队列中还包括每个数据块信息集进入所述任务队列的时刻,所述第三线程有多个,所述运行第三线程,以基于所述任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新,包括:
响应于任一第三线程当前无待执行的数据拓扑更新任务,运行所述任一第三线程对所述任务队列进行遍历,以获取进入所述任务队列的时刻最早的目标数据块信息集;
根据所述目标数据块信息集的标识,确定当前待更新的内存空间;
运行所述任一第三线程,以基于所述目标数据块信息集,对所述待更新的内存空间中的数据结构进行更新。
3.如权利要求1所述的方法,其特征在于,第i个第三线程用于对第i个内存空间中的数据结构进行更新,所述运行第三线程,以基于所述任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新,包括:
响应于第i个第三线程中无待执行的数据拓扑更新任务,运行第i个第三线程,对所述任务队列进行遍历,以从所述任务队列中获取第i个内存空间对应的第j个数据节点关联的第j个数据块信息集;
运行所述第i个第三线程,以根据所述第j个数据块信息集,将所述第i个内存空间中的数据结构进行更新,其中,i和j均为自然数。
4.如权利要求3所述的方法,其特征在于,所述运行第i个第三线程,对所述任务队列进行遍历,包括:
运行所述第i个第三线程,对与所述第i个第三线程关联的任务队列进行遍历。
5.如权利要求4所述的方法,其特征在于,所述运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列,包括:
响应于所述第二线程接收的数据块信息集K与第k个数据节点关联,根据数据节点与内存空间的映射关系,确定所述第k个数据节点关联的目标内存空间;
将所述数据块信息集K加入所述目标内存空间关联的任务队列中。
6.一种数据拓扑的更新装置,其特征在于,包括:
获取模块,用于获取待更新数据拓扑的数据节点列表;
发送模块,用于运行第一线程,以依次向所述数据节点列表中的每个数据节点发送数据块信息获取请求;
接收模块,用于在所述第一线程运行过程中,运行第二线程,以将接收的每个数据节点返回的数据块信息集加入任务队列;
更新模块,用于在所述任务队列中包含数据块信息集的情况下,运行第三线程,以基于所述任务队列中每个数据块信息集,将对应的数据节点的数据拓扑进行更新。
7.如权利要求6所述的装置,其特征在于,所述任务队列中还包括每个数据块信息集进入所述任务队列的时刻,所述第三线程有多个,所述更新模块,包括:
第一获取单元,用于响应于任一第三线程当前无待执行的数据拓扑更新任务,运行所述任一第三线程对所述任务队列进行遍历,以获取进入所述任务队列的时刻最早的目标数据块信息集;
第一确定单元,用于根据所述目标数据块信息集的标识,确定当前待更新的内存空间;
第一更新单元,用于运行所述任一第三线程,以基于所述目标数据块信息集,对所述待更新的内存空间中的数据结构进行更新。
8.如权利要求6所述的装置,其特征在于,第i个第三线程用于对第i个内存空间中的数据结构进行更新,所述更新模块,包括:
第二获取单元,用于响应于第i个第三线程中无待执行的数据拓扑更新任务,运行第i个第三线程,对所述任务队列进行遍历,以从所述任务队列中获取第i个内存空间对应的第j个数据节点关联的第j个数据块信息集;
第二更新单元,用于运行所述i个第三线程,以根据所述第j个数据块信息集,将所述第i个内存空间中的数据结构进行更新,其中,i和j均为自然数。
9.如权利要求8所述的装置,其特征在于,所述运行第i个第三线程,对所述任务队列进行遍历,包括:
运行所述第i个第三线程,对与所述第i个第三线程关联的任务队列进行遍历。
10.如权利要求9所述的装置,其特征在于,所述接收模块,包括:
第二确定单元,用于响应于所述第二线程接收的数据块信息集K与第k个数据节点关联,根据数据节点与内存空间的映射关系,确定所述第k个数据节点关联的目标内存空间;
第三确定单元,用于将所述数据块信息集K加入所述目标内存空间关联的任务队列中。
11.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如权利要求1-5中任一所述的数据拓扑的更新方法。
12.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任一所述的数据拓扑的更新方法。
13.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现如权利要求1-5中任一项所述的数据拓扑的更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110893537.5A CN115934732A (zh) | 2021-08-04 | 2021-08-04 | 数据拓扑的更新方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110893537.5A CN115934732A (zh) | 2021-08-04 | 2021-08-04 | 数据拓扑的更新方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934732A true CN115934732A (zh) | 2023-04-07 |
Family
ID=86652916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110893537.5A Pending CN115934732A (zh) | 2021-08-04 | 2021-08-04 | 数据拓扑的更新方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934732A (zh) |
-
2021
- 2021-08-04 CN CN202110893537.5A patent/CN115934732A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090628B (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN111078147B (zh) | 一种缓存数据的处理方法、装置、设备及存储介质 | |
CN105786405B (zh) | 一种在线升级方法、装置及系统 | |
CN110554909A (zh) | 任务的调度处理方法、装置及计算机设备 | |
US8751741B2 (en) | Methods and structure for implementing logical device consistency in a clustered storage system | |
US8056080B2 (en) | Multi-core/thread work-group computation scheduler | |
CN110096227B (zh) | 数据存储方法、数据处理方法、装置、电子设备及计算机可读介质 | |
US9043806B2 (en) | Information processing device and task switching method | |
US8145930B2 (en) | Storage system and management information acquisition method for power saving | |
CN112035571A (zh) | 一种数据同步方法、装置、设备和存储介质 | |
CN113641596B (zh) | 缓存管理方法、缓存管理装置、处理器 | |
CN111753994B (zh) | Ai芯片的数据处理方法、装置和计算机设备 | |
CN109189555A (zh) | 一种端口镜像的实现方法、装置、服务器及存储介质 | |
CN109271242A (zh) | 基于队列的数据处理方法、装置、设备和介质 | |
CN110232969A (zh) | 医学影像上传至云服务器的方法、装置、终端和存储介质 | |
CN111813517B (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN113836184A (zh) | 一种业务持久化方法及装置 | |
CN113722409A (zh) | 空间关系的确定方法、装置、计算机设备及存储介质 | |
CN111552546A (zh) | 一种基于多线程的任务实现方法、装置及存储介质 | |
CN113064919B (zh) | 数据处理方法、数据存储系统、计算机设备及存储介质 | |
CN113656359A (zh) | 三维模型的轻量化方法、装置、计算机设备及存储介质 | |
CN115934732A (zh) | 数据拓扑的更新方法、装置、计算机设备及存储介质 | |
CN115576685A (zh) | 容器的调度方法、装置及计算机设备 | |
CN113986488A (zh) | 计算任务的调度方法、装置、计算机设备及存储介质 | |
CN114527907A (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 |