CN113849307A - 一种数据存储和读取方法、系统、装置、设备及介质 - Google Patents

一种数据存储和读取方法、系统、装置、设备及介质 Download PDF

Info

Publication number
CN113849307A
CN113849307A CN202111105659.XA CN202111105659A CN113849307A CN 113849307 A CN113849307 A CN 113849307A CN 202111105659 A CN202111105659 A CN 202111105659A CN 113849307 A CN113849307 A CN 113849307A
Authority
CN
China
Prior art keywords
node
target
storage nodes
target storage
storage
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
Application number
CN202111105659.XA
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202111105659.XA priority Critical patent/CN113849307A/zh
Publication of CN113849307A publication Critical patent/CN113849307A/zh
Pending legal-status Critical Current

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

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

Abstract

本公开涉及一种数据存储和读取方法、系统、装置、设备及介质。由于在确定用于存储目标数据的目标存储节点时,不仅考虑到了每个副本存储节点分别对应的预先配置的第一坐标,对每个副本存储节点分别与客户端节点之间的距离的影响,还考虑到了每个副本存储节点分别所在的机架,对每个副本存储节点分别与客户端节点之间的距离的影响,从而有利于更准确地确定每个副本存储节点分别与客户端节点之间的距离,也方便准确地确定用于存储目标数据的目标存储节点,也有利于在采用将距离客户端节点最近的副本存储节点确定为目标存储节点时,实现有效缩短数据存储和读写的耗时,提高存储节点间交互的效率。

Description

一种数据存储和读取方法、系统、装置、设备及介质
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据存储和读取方法、系统、装置、设备及介质。
背景技术
在当前的分布式存储系统所包含的一个或多个集群中,通常一个集群有数百甚至数千台存储节点协同工作。比如,分布式文件存储系统(Hadoop Distributed FileSystem,HDFS)中可以有多个集群,任一集群可以包含有数百,甚至数千台用于存储数据的存储节点,使得在确定用于存储某一数据的存储节点时,可供选择的存储节点有很多。如何准确地确定用于存储目标数据的存储节点是近几年来人们比较关注的问题。
发明内容
本公开提供了一种数据存储和读取方法、系统、装置、设备及介质,用以解决现有无法准确地确定目标存储节点来存储目标数据的问题。
本公开提供了一种数据存储方法,所述方法包括:
接收客户端节点发送的目标数据的数据存储请求;
基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点;其中,所述M为大于等于2的正整数,所述M个目标存储节点的剩余存储空间的大小满足所述目标数据所需的存储空间的大小;
将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点将所述目标数据发送至所述M个目标存储节点进行存储。
本公开提供了一种数据读取方法,所述方法应用于客户端节点,所述方法包括:
发送目标数据的数据读取请求;
接收存储所述目标数据的M个目标存储节点的信息;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标及所在的机架,所述M为大于等于2的正整数;
根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离;
根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据。
本公开提供了一种数据读取方法,所述方法应用于数据管理节点,所述方法包括:
接收客户端节点发送的目标数据的数据读取请求;
确定存储所述目标数据的M个目标存储节点的信息并发送至所述客户端节点,以使所述客户端节点接收到所述M个目标存储节点的信息后,根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点分别对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离,根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标,所述M为大于等于2的正整数。
本公开提供了一种数据存储系统,所述系统包括用于执行上述所述数据存储方法的数据管理节点、用于发送目标数据的数据存储请求的客户端节点以及用于存储数据的至少两个副本存储节点。
本公开提供了一种数据读取系统,所述系统包括用于执行上述所述数据读取方法的客户端节点、用于执行上述所述的数据读取方法的数据管理节点以及用于存储目标数据的至少两个目标存储节点。
本公开提供了一种数据存储装置,所述装置包括:
接收单元,用于接收客户端节点发送的目标数据的数据存储请求;
处理单元,用于基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点;其中,所述M为大于等于2的正整数,所述M个目标存储节点的剩余存储空间的大小满足所述目标数据所需的存储空间的大小;
发送单元,用于将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点将所述目标数据发送至所述M个目标存储节点进行存储。
本公开提供了一种数据读取装置,所述装置应用于客户端节点,所述装置包括:
第一发送模块,用于发送读取目标数据的数据读取请求;
第一接收模块,用于接收存储所述目标数据的M个目标存储节点的信息;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标及所在的机架,所述M为大于等于2的正整数;
第一处理模块,用于根据所述M个目标存储节点分别对应的第一坐标及所在的机架、以及所述客户端节点所在的机架、以及所述客户端节点对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离;根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问该相应的目标存储节点,以获取该目标存储节点其所存储的所述目标数据。
本公开提供了一种数据读取装置,所述装置应用于数据管理节点,所述装置包括:
第二接收模块,用于接收客户端节点发送的读取目标数据的数据读取请求;
第二处理模块,用于确定存储所述目标数据的M个目标存储节点的信息;
第二发送模块,用于将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点接收到所述M个目标存储节点的信息后,根据所述M个目标存储节点分别对应的第一坐标及所在的机架、以及所述客户端节点所在的机架、以及所述客户端节点分别对应的预先配置的第二坐标,以及预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离,根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据根据每个所述距离,确定所述客户端节点所要访问的目标存储节点并访问该目标存储节点,以获取该目标存储节点所存储的所述目标数据;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标,所述M为大于等于2的正整数。
本公开提供了一种电子设备,所述电子设备至少包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序时实现如上述所述数据存储方法的步骤,或,实现如上述所述数据读取方法的步骤,或,实现如上述所述数据读取方法的步骤。
本公开提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述数据存储方法的步骤,或,实现如上述所述数据读取方法的步骤,或,实现如上述所述数据读取方法的步骤。
由于在确定用于存储目标数据的目标存储节点时,不仅考虑到了每个副本存储节点分别对应的预先配置的第一坐标,对每个副本存储节点分别与客户端节点之间的距离的影响,还考虑到了每个副本存储节点分别所在的机架,对每个副本存储节点分别与客户端节点之间的距离的影响,从而有利于更准确地确定每个副本存储节点分别与客户端节点之间的距离,也方便后续根据每个副本存储节点分别与客户端节点之间的距离,从至少一个副本存储节点中,准确地确定用于存储目标数据的目标存储节点,也有利于在采用将距离客户端节点最近的副本存储节点确定为目标存储节点时,实现有效缩短数据存储和读写的耗时,提高存储节点间交互的效率,避免了无法准确地从客户端节点所在机架上的至少一个副本存储节点中准确地确定目标存储节点,也避免了无法准确地从与客户端节点所在机架不同的其它机架上的至少一个副本存储节点中准确地确定目标存储节点。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种数据存储过程示意图;
图2为本公开实施例提供的一种数据中心内各副本存储节点的场景示意图;
图3为本公开实施例提供的数据中心内每个机架及每个机架上各个副本存储节点的逻辑视图;
图4为本公开实施例提供的双向链表机架结构示意图;
图5为本公开实施例提供的数据中心内每个机架及每个机架上各个副本存储节点的坐标系图;
图6为本公开实施例提供的一种数据中心内每个机架及每个机架上各个副本存储节点的坐标系图;
图7为本公开实施例提供的一种数据读取过程示意图;
图8为本公开实施例提供的一种数据读取过程示意图;
图9为本公开实施例提供的一种数据读取流程的场景示意图;
图10为本公开实施例提供的一种数据存储系统的结构示意图;
图11为本公开实施例提供的一种数据读取系统的结构示意图;
图12为本公开实施例提供的一种数据存储装置的结构示意图;
图13为本公开实施例提供的一种数据读取装置的结构示意图;
图14为本公开实施例提供的一种数据读取装置的结构示意图;
图15为本公开实施例提供的一种电子设备结构示意图;
图16为本公开实施例提供的一种电子设备结构示意图;
图17为本公开实施例提供的一种电子设备结构示意图。
具体实施方式
下面将结合附图对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
为了方便理解,下面对本公开实施例中涉及的部分概念进行解释:
二维坐标系:在同一平面上互相垂直且有公共原点的两条数轴构成的平面直角坐标系,通常水平轴称为X轴或横轴,垂直轴称为Y轴或纵轴。
三维坐标系:在二维坐标系的基础上,根据右手定则增加第三维坐标为(即Z轴)而形成的。
主节点(Master):用于管理存储节点的主节点,主节点会管理数据分配的哪个存储节点上等。
平方根计算(Sqrt):一种数学公式,对给定的某个数值的平方根取值。
目前,当需要将某一客户端节点的目标数据存储到某一数据中心中的副本存储节点中时,如果该客户端节点为该数据中心中的一个节点,则从位于该客户端节点所在机架上的各个副本存储节点中,随机选择至少一个副本存储节点作为目标存储节点用于存储数据,并为了避免客户端节点所在机架上的目标存储节点均出现问题,导致客户端节点无法读取存储的目标数据,还可以从位于除该客户端节点所在机架之外的其它机架上的各个副本存储节点中,随机选择至少一个副本存储节点作为目标存储节点用于存储数据。如果该客户端节点不为该数据中心中的一个节点,则从该数据中心的任意一个机架上的各个副本存储节点中,随机选择至少一个副本存储节点作为目标存储节点用于存储数据,然后从该数据中心中除该机架之外的其它机架上的各个副本存储节点中,随机选择至少一个副本存储节点作为目标存储节点用于存储数据。
通过上述确定目标存储节点的方法,由于其未考虑到目标存储节点与该客户端节点之间的距离,导致无法保证后续客户端节点与目标存储节点进行交互的效率。因此,如何准确地确定目标存储节点,以保证客户端节点与目标存储节点进行交互的效率是一个亟待解决的技术问题。
为了解决现有无法准确地确定目标存储节点来存储目标数据的问题,本公开提供了一种数据存储和读取方法、系统、装置、设备及介质。由于在确定用于存储目标数据的目标存储节点时,不仅考虑到了每个副本存储节点分别对应的预先配置的第一坐标,对每个副本存储节点分别与客户端节点之间的距离的影响,还考虑到了每个副本存储节点分别所在的机架,对每个副本存储节点分别与客户端节点之间的距离的影响,从而有利于更准确地确定每个副本存储节点分别与客户端节点之间的距离,也方便后续根据每个副本存储节点分别与客户端节点之间的距离,从至少一个副本存储节点中,准确地确定用于存储目标数据的目标存储节点,也有利于在采用将距离客户端节点最近的副本存储节点确定为目标存储节点时,实现有效缩短数据存储和读写的耗时,提高存储节点间交互的效率,避免了无法准确地从客户端节点所在机架上的至少一个副本存储节点中准确地确定目标存储节点,也避免了无法准确地从与客户端节点所在机架不同的其它机架上的至少一个副本存储节点中准确地确定目标存储节点。
其次,由于客户端节点在读取存储的目标数据时,一般会访问距离该客户端节点较近的目标存储节点,以有效缩短数据读写过程中所耗费的时间,提高客户端节点与存储目标数据的目标存储节点之间交互的效率。而相关技术中为了确定目标存储节点与客户端节点之间距离,需要预先根据目标存储节点与客户端节点之间的位置关系,配置不同位置关系下所对应的距离值。例如,如果位置关系为目标存储节点与客户端节点是同一个节点,则该位置关系对应的距离值为0,例如,目标存储节点与客户端节点均为/d1/r1/n1,则目标存储节点与客户端节点之间的距离distance(/d1/r1/n1,/d1/r1/n1)=0;如果位置关系为目标存储节点与客户端节点为同一机架上的不同节点,则该位置关系对应的距离值为2,例如,目标存储节点为/d1/r1/n1,客户端存储节点为/d1/r1/n2,则目标存储节点与客户端节点之间的距离distance(/d1/r1/n1,/d1/r1/n2)=2;如果位置关系为目标存储节点与客户端节点位于同一数据中心的不同机架上,则该位置关系对应的距离值为4,例如,目标存储节点为/d1/r1/n1,客户端存储节点为/d1/r2/n5,则目标存储节点与客户端节点之间的距离distance(/d1/r1/n1,/d1/r2/n5)=4;如果位置关系为目标存储节点与客户端节点位于不同数据中心的机架上,则该位置关系对应的距离值为6,例如,目标存储节点为/d1/r1/n1,客户端存储节点为/d2/r3/n7,则目标存储节点与客户端节点之间的距离distance(/d1/r1/n1,/d2/r3/n7)=6。当客户端节点接收到目标存储节点的信息后,根据每个目标存储节点的信息,确定每个目标存储节点分别与该客户端节点的目标位置关系。根据预先配置的位置关系与距离值的对应关系,确定各个目标位置关系分别对应的目标距离值。客户端直接访问最小的目标距离值所对应的目标存储节点,以获取其所存储的目标数据。对于该种方法,由于节点之间的距离只是预先根据不同目标存储节点与客户端节点之间可能存在的位置关系配置的,不同位置关系分别对应的距离值都比较粗略,没有考虑到在相同位置关系下不同目标存储节点与客户端节点之间的距离的区别,从而无法对同一机架上的不同目标存储节点与客户端节点之间的距离进行区分。
为了解决上述的问题,在本公开中,客户端节点接收到M个目标存储节点分别对应的第一坐标及所在的机架之后,确定该客户端节点所在的机架以及客户端节点对应的预先配置的第二坐标,确定M个目标存储节点分别与客户端节点之间的距离,从而保证可以更准确地确定每个目标存储节点分别与客户端节点之间的距离,进而根据每个目标存储节点分别对应距离,更加准确地确定客户端节点所要访问的目标存储节点,实现了对同一机架上的不同目标存储节点与客户端节点之间的距离进行区分,解决了相关技术中相同机架上的目标存储节点与客户端节点之间的距离相同,所导致的无法准确地确定客户端节点所要访问的目标存储节点的问题。
图1为本公开实施例提供的一种数据存储过程示意图,该过程包括:
S101:接收客户端节点发送的目标数据的数据存储请求。
本公开提供的数据存储方法可应用于数据管理节点,该数据管理节点可以为电子设备,该电子设备可以是服务器,也可以是智能设备,比如,手机、电脑、监控设备等。具体实施过程中,可以根据实际需求进行灵活设置,在此不做具体限定。
在一种可能的应用场景中,当某一客户端节点获取到目标数据并且需要存储该目标数据到某一数据中心时,可以根据该目标数据以及该数据中心,生成数据存储请求并发送至数据管理节点。数据管理节点接收到该目标数据的数据存储请求后,可以对该数据存储请求进行响应,以确定该数据中心中用于存储目标数据的目标存储节点。
S102:基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点;其中,所述M为大于等于2的正整数,所述M个目标存储节点的剩余存储空间的大小满足所述目标数据所需的存储空间的大小。
为了方便且准确地确定用于存储目标数据的目标存储节点,在本公开中,预先配置了数据中心中所包含的多个副本存储节点分别对应的坐标为(为了方便描述,记为第一坐标)。当接收到目标数据存储请求后,可以根据数据中心中至少两个副本存储节点分别对应的预先配置的第一坐标,进行相应的处理,从该至少两个副本存储节点中,确定M个目标存储节点。其中,M为大于等于2的正整数。由于目标存储节点是用于存储目标数据的,因此,确定的M个目标存储节点的剩余存储空间的大小应满足目标数据所需的存储空间的大小。
在一种可能的实施方式中,任一副本存储节点对应的第一坐标是根据该副本存储节点所在的机架在数据中心中的第一机架序号、该副本存储节点所在的机架在预设坐标系中的第二机架序号、及该副本存储节点在其所在的机架上的位置所对应的机器序号确定的。
在一种可能的实施方式中,任一副本存储节点对应的第一坐标可以是三维坐标。通过各个副本存储节点分别对应的三维的第一坐标,不仅可以更准确地区分不同机架的各个副本存储节点在三维空间中位置的不同,还可以更准确地区分同一机架上的各个副本存储节点在三维空间中位置的不同。
由于相关技术中只根据副本存储节点所在机架与客户端节点所在的机架是否一致,以及副本存储节点与客户端是否在同一数据中心来确定副本存储节点与客户端节点之间的距离,导致同一机架上不同位置的副本存储节点与客户端节点之间的距离均是固定不变的数值,因而根据相关技术中的方法确定出的距离,无法从同一机架上不同位置的副本存储节点中,准确地确定目标存储节点,进而无法保证后续客户端节点与目标存储节点进行交互的效率。而本公开采用的方法能够确定各个副本存储节点分别对应的第一坐标,后续根据各个副本存储节点分别对应的第一坐标,确定副本存储节点与客户端节点之间的距离时,该距离会跟随该副本存储节点所在的机架、以及该副本存储节点在机架上的位置发生变化,从而实现更准确地确定不同位置的副本存储节点与该客户端节点之间的距离,进而有利于根据副本存储节点与客户端节点之间的距离,确定目标存储节点。
需要说明的是,所述第一机架序号与第二机架序号可以相同,也可以不同。具体实施过程中,若按照各个机架的第一机架序号从小到大的顺序,从预设坐标系的原点O开始,确定每个机架在预设坐标系的位置,即确定每个机架在预设坐标系中的第二机架序号,则每个机架在预设坐标系中的第二机架序号会与对应的第一机架序号相同;若不按照各个机架的第一机架序号从小到大的顺序,从预设坐标系的原点O开始,确定每个机架在预设坐标系的位置,即确定每个机架在预设坐标系中的第二机架序号,则每个机架在预设坐标系中的第二机架序号会与对应的第一机架序号不相同。
在一种可能的实施方式中,任一副本存储节点分别对应的第一坐标中的第一维坐标值是根据所述机器序号确定的,第二维坐标值是根据所述第二机架序号确定的,第三维坐标值是根据所述第一机架序号确定的。
图2为本公开实施例提供的一种数据中心内各副本存储节点的场景示意图。如图2所示,图中的d1、d2、r1~r4都是交换机,最底层的n1~n12都是代表可以存储数据的副本存储节点。根据图2可知,以部分副本存储节点为例,n1对应的在机架中的位置rackid=/d1/r1/n1,n1对应的机架位置rack=/d1/r1,n2对应的在机架中的位置rackid=/d1/r1/n2,n2对应的机架位置rack=/d1/r1,n4对应的在机架中的位置rackid=/d1/r2/n4,n4对应的机架位置rack=/d1/r2。
根据图2中每个副本存储节点的位置信息,确定数据中心内每个机架及每个机架上各个副本存储节点的逻辑视图如图3表示,/d1/r2的机架下包括n4~n6,/d1/r1的机架下包括n1~n3,/d2/r3的机架下包括n7~n9,/d2/r4的机架下包括n10~n12。
数据存储节点中存储有一份持久化的文件,用于存储数据中心中所有副本存储节点在三维坐标系的位置。参照图2中的机架结构,该数据中心中各存储节点的位置的存储格式如下:
n1:[/d1/r1/l1,(X1,Y1,Z1)]
n2:[/d1/r1/l2,(X2,Y2,Z2)]
n3:[/d1/r1/l2,(X3,Y3,Z3)]
n4:[/d1/r2/l1,(X4,Y4,Z4)]
n5:[/d1/r2/l2,(X5,Y5,Z5)]
……
n12[/d2/r4/l1,(X12,Y12,Z12)]。
其中,d代表交换机,r代表交换机,l代表r下的机架,n代表副本存储节点,(X,Y,Z)代表副本存储节点对应的第一坐标,X为第一坐标中的X轴坐标,其值是根据该副本存储节点在其所在的机架上的位置所对应的机器序号确定的,Y为第一坐标中的Y轴坐标,其值是根据该副本存储节点所在的机架在预设坐标系中的第二机架序号确定的,Z为第一坐标中的Z轴坐标,其值是根据该副本存储节点所在的机架在数据中心中的第一机架序号确定的。位于同一机架上的各个存储节点分别对应的第一坐标中的Y轴坐标是相同的,且位于同一机架上的各个存储节点分别对应的第一坐标中的Z轴坐标也是相同的。例如,副本存储节点n2对应的第一坐标为(2,4,4),副本存储节点n1对应的第一坐标为(3,4,4),副本存储节点n2与副本存储节点n1位于同一机架上,副本存储节点n2对应的第一坐标中的Y轴坐标4与副本存储节点n1对应的第一坐标中的Y轴坐标4相同,副本存储节点n2对应的第一坐标中的Z轴坐标4与副本存储节点n1对应的第一坐标中的Z轴坐标4相同。
数据管理节点在服务启动时,会解析如上文件中包含的数据。在内存中会形成如图4所示的双向链表机架结构示意图。根据该双向链表机架结构示意图,数据管理节点可以明确地确定每个机架之间的相邻关系。
基于图4所示的双向链表机架结构示意图,确定该数据中心内每个机架及每个机架上各个副本存储节点的坐标系图如5所示。如图5所示,副本存储节点的X轴坐标是根据机器序号确定的,Y轴坐标值是根据第二机架序号确定的,Z轴坐标值是根据第一机架序号确定的。其中,第二机架序号与第一机架序号相同。图5中n12的第一坐标为(1,1,1),n5的第一坐标表示为(2,3,3)。
在一种可能的实施方式中,不同机架上的副本存储节点与客户端节点之间的距离可能是不同的。因此,在本公开中,可以根据至少两个副本存储节点分别所在的机架、以及至少两个副本存储节点分别对应的预先配置的第一坐标,进行相应的处理,从该至少两个副本存储节点中,确定M个目标存储节点。
由于客户端节点可能与至少两个副本存储节点位于同一数据中心,且至少两个副本存储节点被部署于不同的机架上,客户端节点也可能与至少两个副本存储节点不位于同一数据中心,且至少两个副本存储节点被部署于不同的机架上。下面针对上述两种情况,对根据至少两个副本存储节点分别所在的机架、以及至少两个副本存储节点分别对应的预先配置的第一坐标,进行相应的处理,从该至少两个副本存储节点中,确定M个目标存储节点的方法进行说明:
情况一、若所述客户端节点与所述至少两个副本存储节点位于同一数据中心,且所述至少两个副本存储节点被部署于至少两个机架上,所述基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点,包括:
获取所述至少两个机架的顺序;
按照所述至少两个机架的顺序,针对所述至少两个机架,确定已确定的目标存储节点的数量是否达到M个;若未达到,则根据该机架上的至少一个副本存储节点分别对应的第一坐标,确定目标存储节点;若达到,则停止继续确定目标存储节点。
在一种可能的实施方式中,至少两个机架的顺序可以是预先设置的,也可以是根据客户端节点所在的机架确定的。
当至少两个机架的顺序是根据客户端节点所在的机架确定的时,可以获取至少两个机架分别与该客户端节点所在的机架之间的机架距离。然后根据至少两个机架分别对应的机架距离,确定该至少两个机架的顺序;其中,机架对应的机架距离越小,该机架的顺序越前。
由于与该客户端节点所在机架之间的机架距离越近的机架上的各个副本存储节点,与该客户端节点进行交互的距离越近,与该客户端节点所在机架之间的机架距离越远的机架上的各个副本存储节点,与该客户端节点进行交互的距离越远。因此,根据各个机架与该客户端节点所在机架之间的机架距离,确定各个机架的顺序,然后按照各个机架的顺序,通过上述的方法,确定目标存储节点,可以实现优先从与该客户端节点所在机架之间的机架距离越近的机架上的各个副本存储节点中确定目标存储节点,从而保证确定的目标存储节点与该客户端节点之间的距离尽可能的近,有效缩短数据存储和读写的耗时,提高存储节点间交互的效率。
图6为本公开实施例提供的一种数据中心内每个机架及每个机架上各个副本存储节点的坐标系图。如图6所示,n8为客户端节点,从n8所在的机架开始,在n8所在机架上的各个副本存储节点中,确定目标存储节点之后,从邻近n8所在机架的第二目标机架上各副本存储节点中,继续确定目标存储节点。如图6所示,n8所在机架为/d2/r3,邻近n8所在机架的第二目标机架分别为/d1/r2,和/d2/r4,即图6中通过箭头指向的两个机架为第二目标机架,从这两个第二目标机架上的各个副本存储节点中,继续确定目标存储节点。
当基于上述的实施例获取到至少两个机架的顺序之后,从排序第一的机架开始,确定已确定的目标存储节点的数量是否达到M个。由于当前机架是第一个,在该机架之前并没有确定目标存储节点,则确定已确定的目标存储节点的数量为0个,该0个并没有达到M个,则根据该机架上的至少一个副本存储节点分别对应的第一坐标,确定目标存储节点。
在一种可能的实施方式中,在根据该机架上的至少一个副本存储节点分别对应的第一坐标,确定目标存储节点时,可以根据该机架上的至少一个副本存储节点分别对应的剩余存储空间以及第一坐标,确定目标存储节点。
由于目标存储节点是用于存储目标数据的。因此,在本公开中,可以将至少一个副本存储节点分别对应的剩余存储空间与目标数据所需的存储空间进行比较。根据比较结果,从至少一个副本存储节点中,确定至少一个候选存储节点。可以理解的是,根据该至少一个副本存储节点分别对应的剩余存储空间以及目标数据所需的存储空间,从至少一个副本存储节点中,确定至少一个候选存储节点。然后根据至少一个候选存储节点分别对应的第一坐标,从至少一个候选存储节点中确定目标存储节点。
作为一种可能的实施方式中,在根据该至少一个副本存储节点分别对应的剩余存储空间以及目标数据所需的存储空间,从至少一个副本存储节点中,确定至少一个候选存储节点时,针对该机架上的至少一个副本存储节点,确定该副本存储节点的剩余存储空间是否大于目标数据所需的存储空间。若该副本存储节点的剩余存储空间大于目标数据所需的存储空间,说明该副本存储节点可以存储目标数据,则确定该副本存储节点为候选存储节点。若该副本存储节点的剩余存储空间不大于目标数据所需的存储空间,说明该副本存储节点的存储空间无法继续存储目标数据,则确定该副本存储节点不为候选存储节点。
在一种可能的实施方式中,排序第一的机架距离客户端节点所在机架最近,如果该客户端节点所在机架上存在至少一个副本存储节点,则该排序第一的机架为该客户端节点所在的机架,即该排序第一的机架与该客户端节点所在的机架相同。当该机架与客户端节点所在的机架相同的时候,从该机架上确定的候选存储节点的数量可能大于M个目标存储节点,也可能不大于M个目标存储节点。如果从该机架上确定的候选存储节点的数量大于M个目标存储节点,为了避免客户端节点所在机架上的目标存储节点均出现问题,导致客户端节点无法读取存储的目标数据,可以只从该机架上的至少一个候选存储节点中,确定部分数量的目标存储节点。其中,该部分数量小于M。对于另外部分数量的目标存储节点,则可以从该数据中心中除该机架之外的其它机架上的副本存储节点中确定。基于此,在本公开中,预先设置有数量阈值N。其中,N为大于等于1,且小于M的整数。当确定该机架与客户端节点所在的机架相同时,确定基于该至少一个候选存储节点的总数量(为了方便描述,记为第一数量)、至少一个候选存储节点分别对应的第一坐标以及预设的数量阈值N,从至少一个候选存储节点中,确定目标存储节点。
作为一种可能的实施方式中,若该机架上的候选存储节点的第一数量大于预设的数量阈值N,则基于至少一个候选存储节点分别对应的第一坐标、以及客户端节点在数据中心的坐标为(为了方便说明,记为第二坐标),确定该至少一个候选存储节点分别与客户端节点之间的距离(为了方便说明,记为第一距离)。然后根据该至少一个候选存储节点分别对应的第一距离,从该至少一个候选存储节点中,确定N个目标存储节点。可以理解的是,根据该至少一个候选存储节点分别与客户端节点之间的距离,从该至少一个候选存储节点中,确定部分数量的目标存储节点。
在一种可能的实施方式中,基于某一候选存储节点对应的第一坐标、以及客户端节点在数据中心的第二坐标,确定该候选存储节点与客户端节点之间的第一距离时,可以基于该候选存储节点对应的第一坐标、以及客户端节点在数据中心的第二坐标,确定该候选存储节点对应的第一坐标与该第二坐标之间的基础距离。其中,该基础距离可以为欧式距离、曼哈顿距离、切比雪夫距离等。将确定的基础距离确定为该候选存储节点与客户端节点之间的第一距离。
例如,基于该候选存储节点对应的第一坐标为(x1,y1,z1)、以及客户端节点在数据中心的第二坐标为(x2,y2,z2),确定该候选存储节点对应的第一坐标为(x1,y1,z1)与该第二坐标为(x2,y2,z2)之间的基础距离d1可以通过如下公式确定:
D1=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)。
在一种可能的实施方式中,在根据该至少一个候选存储节点分别对应的第一距离,从该至少一个候选存储节点中,确定N个目标存储节点时,可以按照每个第一距离从小到大的顺序,将排序在前的N个候选存储节点确定为目标存储节点。
作为另一种可能的实施方式中,若该机架上的候选存储节点的第一数量不大于预设的数量阈值N,则直接将该至少一个候选存储节点均确定为目标存储节点。
通过上述的方法,可以从与客户端节点所在机架不同的机架上确定用于存储目标数据的目标存储节点,从而避免客户端节点所在机架上的目标存储节点均出现问题,导致客户端节点无法读取存储的目标数据,保证后续可以尽可能地读取到目标数据。
当基于上述的实施例从排序第一的机架上的至少一个副本存储节点中,确定目标存储节点后,则按照获取到的至少一个机架的顺序,获取下一个机架上的至少一个副本存储节点,并确定已确定的目标存储节点的数量是否达到M个。如果当前已确定的目标存储节点的数量达到M个,则停止继续从排序在该机架之后的机架上的至少一个副本存储节点中,确定目标存储节点。如果当前已确定的目标存储节点的数量未达到M个,则可以根据该机架上的至少一个副本存储节点分别对应的第一坐标,确定目标存储节点。
在一种可能的实施方式中,在根据该机架上的至少一个副本存储节点分别对应的第一坐标,确定目标存储节点时,可以根据该机架上的至少一个副本存储节点分别对应的剩余存储空间以及第一坐标,确定目标存储节点。
由于目标存储节点是用于存储目标数据的。因此,在本公开中,可以将至少一个副本存储节点分别对应的剩余存储空间与目标数据所需的存储空间进行比较。根据比较结果,从至少一个副本存储节点中,确定至少一个候选存储节点。可以理解的是,根据该至少一个副本存储节点分别对应的剩余存储空间以及目标数据所需的存储空间,从至少一个副本存储节点中,确定至少一个候选存储节点。然后根据至少一个候选存储节点分别对应的第一坐标,从至少一个候选存储节点中确定目标存储节点。
作为一种可能的实施方式中,在根据该至少一个副本存储节点分别对应的剩余存储空间以及目标数据所需的存储空间,从至少一个副本存储节点中,确定至少一个候选存储节点时,针对该机架上的至少一个副本存储节点,确定该副本存储节点的剩余存储空间是否大于目标数据所需的存储空间。若该副本存储节点的剩余存储空间大于目标数据所需的存储空间,说明该副本存储节点可以存储目标数据,则确定该副本存储节点为候选存储节点。若该副本存储节点的剩余存储空间不大于目标数据所需的存储空间,说明该副本存储节点的存储空间无法继续存储目标数据,则确定该副本存储节点不为候选存储节点。
在一种可能的实施方式中,由于该机架不为排序第一的机架,即该机架不为距离客户端节点所在机架最近的机架,则该机架与该客户端节点所在机架是不为该客户端节点所在的机架,即该机架与该客户端节点所在的机架不相同。而当该机架与该客户端节点所在的机架不相同时,如果该机架上的副本存储节点与该客户端节点进行交互,则在该机架上的副本存储节点与该客户端节点之间的访问路径会经过至少一层交换机。该访问路径所经过的交换机层数则会影响该机架上的副本存储节点与该客户端节点之间的距离。基于此,在本公开中,当确定该机架与客户端节点所在的机架不同时,则可以从客户端节点或已确定的目标存储节点中,确定一个参考存储节点。然后根据该参考存储节点在该数据中心的坐标、至少一个候选存储节点分别对应的第一坐标、及参考存储节点分别与至少一个候选存储节点之间的访问路径,确定该至少一个候选存储节点分别与参考存储节点之间的距离(为了方便说明,记为第二距离)。然后根据该至少一个候选存储节点分别对应的第二距离,从该至少一个候选存储节点中,确定目标存储节点。
其中,在确定参考存储节点时,如果希望确定的目标存储节点与客户端节点之间的距离更近一些,则可以将客户端节点确定为参考存储节点;如果希望确定的目标存储节点之间的距离更近一些,则可以将任一已确定的目标存储节点确定为参考存储节点。
在一种可能的实施方式中,针对该至少一个候选存储节点,在确定该候选存储节点与该参考存储节点之间的第二距离时,均执行以下步骤:
可以基于该候选存储节点对应的第一坐标、以及参考存储节点在数据中心的坐标,确定该候选存储节点对应的第一坐标与该坐标之间的基础距离。其中,该基础距离可以为欧式距离、曼哈顿距离、切比雪夫距离等。然后根据该基础距离,以及参考存储节点与该候选存储节点之间的访问路径中所通过的交换机的层数,确定该候选存储节点与该参考存储节点之间的第二距离。
例如,假设候选存储节点对应的第一坐标为(x1,y1,z1),参考存储节点在数据中心的坐标为(x2,y2,z2),在确定该候选存储节点与该参考存储节点之间的第二距离d2时,可通过如下公式确定:
d2=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)+a*m
其中,a为每层交换机所对应的预设参考距离值,m为参考存储节点与该候选存储节点之间的访问路径中所通过的交换机的层数。
以图6所示的坐标系为例,每层交换机所对应的预设参考距离值a为1,参考存储节点为客户端节点n8,确定候选存储节点n10对应第一坐标为(3,3,3),客户端节点n8在数据中心的第二坐标为(2,2,2),候选存储节点n10与客户端节点n8之间的访问路径中所通过的交换机的层数m为1,根据上述公式,确定候选存储节点n10与客户端节点n8之间的第二距离为d2=sqrt((3-2)2+(3-2)2+(3-2)2)+1*1=2.732。
由于参考存储节点与该候选存储节点之间的访问路径中所通过的交换机的层数,会影响该参考存储节点与该候选存储节点之间进行交互的距离,一般参考存储节点与该候选存储节点之间的访问路径中所通过的交换机的层数越多,该参考存储节点与该候选存储节点之间进行交互的距离会越远,参考存储节点与该候选存储节点之间的访问路径中所通过的交换机的层数越少,该参考存储节点与该候选存储节点之间进行交互的距离会越短。基于此,通过上述的方法,确定与客户端节点所在机架不同的机架上的各个副本存储节点,与该参考存储节点之间的距离,可以考虑到参考存储节点与该候选存储节点之间的访问路径中所通过的交换机的层数,对该参考存储节点与该候选存储节点之间进行交互的距离的影响,从而有利于准确地确定该参考存储节点与该候选存储节点之间进行交互的距离,进而有利于准确地根据各个候选存储节点分别对应的距离,从各个候选存储节点中确定目标存储节点。
在一种可能的实施方式中,确定该机架上的候选存储节点的总数量是否大于未确定的目标存储节点的节点数量。其中,该节点数量是根据M与已确定的目标存储节点的数量的差值确定的。若确定该机架上的候选存储节点的总数量大于该节点数量,则按照第二距离从小到大的顺序,将排序在前的节点数量个候选存储节点确定为目标存储节点,并停止继续从排序在该机架之后的机架上的至少一个副本存储节点中,确定目标存储节点。若确定该机架上的候选存储节点的总数量不大于该节点数量,则直接将该机架上的每个候选存储节点均确定为目标存储节点,并继续从排序在该机架之后的机架上的至少一个副本存储节点中,确定目标存储节点。
需要说明的是,对于排序在该机架之后的机架,从该机架上的至少一个副本存储节点确定目标存储节点的过程,可参考上述从排序第二的机架上的至少一个副本存储节点确定目标存储节点的过程,重复之处不做赘述。
情况二、若所述客户端节点与所述至少两个副本存储节点不位于同一数据中心,且所述至少两个副本存储节点被部署于至少两个机架上,所述基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点,包括:
根据所述至少两个副本存储节点的剩余存储空间、以及所述目标数据所需的存储空间,确定至少两个候选存储节点;
针对所述至少两个候选存储节点分别所在的机架,统计被部署于各机架上的候选存储节点的第二数量;
根据一个或多个所述第二数量以及预设的数量阈值Z,从所述至少两个候选存储节点中,确定归属于第一集合的目标存储节点;其中,所述Z为小于所述M,且大于等于1的正整数;
根据任一已确定的目标存储节点对应的第一坐标、至少一个其它候选存储节点分别对应的第一坐标、及该目标存储节点分别与所述至少一个其它候选存储节点之间的访问路径,确定所述至少一个其它候选存储节点分别与该已确定的目标存储节点之间的第三距离;其中,所述其它候选存储节点为所述至少两个候选存储节点中,未被确定为所述目标存储节点的候选存储节点;
基于所述至少一个其它存储节点分别对应的第三距离,从所述至少一个其它存储节点中,确定归属于第二集合的目标存储节点;其中,所述第一集合和所述第二集合中包含的目标存储节点的总数量为所述M。
由于目标存储节点时用于存储目标数据的,目标存储节点的剩余存储空间应满足目标数据所需的存储空间。因此,在本公开中,若客户端节点与至少两个副本存储节点不位于同一数据中心,且该至少两个副本存储节点被部署于至少两个机架上,则可以获取至少两个副本存储节点的剩余存储空间。然后针对至少两个副本存储节点,将该副本存储节点的剩余存储空间与目标数据所需的存储空间进行比较。根据比较结果,确定该副本存储节点是否为候选存储节点。
在一种可能的实施方式中,确定该副本存储节点的剩余存储空间的大小是否大于目标数据所需的存储空间的大小。若确定该副本存储节点的剩余存储空间的大小大于目标数据所需的存储空间的大小,说明该副本存储节点的剩余存储空间满足目标数据所需的存储空间,则可以将该副本存储节点确定为候选存储节点;若确定该副本存储节点的剩余存储空间的大小不大于目标数据所需的存储空间的大小,说明该副本存储节点的剩余存储空间不满足目标数据所需的存储空间,则不将该副本存储节点确定为候选存储节点。
基于上述的实施例确定为候选存储节点之后,统计被部署于各机架上的候选存储节点的数量(为了方便说明,记为第二数量)。根据获取到的一个或多个第二数量以及预设的数量阈值Z,确定为归属于第一集合的目标存储节点。
其中,为了避免客户端节点所在机架上的目标存储节点均出现问题,导致客户端节点无法读取存储的目标数据,Z为小于M,且大于等于1的正整数。
在一种可能的实施方式中,根据一个或多个第二数量以及预设的数量阈值Z,从至少两个候选存储节点中,确定归属于第一集合的目标存储节点,包括如下四种情况:
情况1、若只存在一个所述第二数量,且该第二数量小于数量阈值Z,则确定该第二数量对应的机架;将该机架上的至少一个候选存储节点,确定为归属于第一集合的目标存储节点。
情况2、若只存在一个所述第二数量,且该第二数量不小于数量阈值Z,则确定该第二数量对应的机架;将该机架上的Z个候选存储节点,确定为归属于第一集合的目标存储节点。
情况3、若存在多个第二数量,且多个第二数量中的最大值小于数量阈值Z,则确定最大值所对应的一个机架;将该机架上的至少一个候选存储节点,确定为归属于第一集合的目标存储节点。
情况4、若存在多个第二数量,且多个第二数量中的最大值不小于数量阈值Z,则确定最大值所对应的一个机架;将该机架上的Z个候选存储节点,确定为归属于第一集合的目标存储节点。
基于上述的实施例确定了第一集合的目标存储节点之后,从至少两个候选存储节点中,将未被确定为目标存储节点的候选存储节点确定为其它候选存储节点。然后根据任一已确定的目标存储节点对应的第一坐标、至少一个其它候选存储节点分别对应的第一坐标、及该目标存储节点分别与该至少一个其它候选存储节点之间的访问路径,确定该至少一个其它候选存储节点分别与该已确定的目标存储节点之间的距离(为了方便说明,记为第三距离)。然后基于该至少一个其它存储节点分别对应的第三距离,从至少一个其它存储节点中,确定归属于第二集合的目标存储节点。
其中,针对至少一个其它存储节点,若该其它存储节点与该已确定的目标存储节点位于同一机架上,则确定该其它候选存储节点分别与该已确定的目标存储节点之间的第三距离的方法可参照上述实施例中确定第一距离的方法,重复之处不做赘述;若该其它存储节点与该已确定的目标存储节点不位于同一机架上,则确定该其它候选存储节点分别与该已确定的目标存储节点之间的第三距离的方法可参照上述实施例中确定第二距离的方法,重复之处不做赘述。
通过上述的方法,可以尽可能地从多个机架中确定M个目标存储节点,从而避免客户端节点所在机架上的目标存储节点均出现问题,导致客户端节点无法读取存储的目标数据,保证后续可以尽可能地读取到目标数据。并且,在基于至少一个其它存储节点分别对应的第三距离,从至少一个其它存储节点中,确定归属于第二集合的目标存储节点时,若将较小的第三距离所对应的其它存储节点确定为归属于第二集合的目标存储节点,则可以实现确定的M个目标存储节点之间进行交互的距离尽可能的短,提高了M个目标存储节点之间进行交互的效率。
S103:将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点将所述目标数据发送至所述M个目标存储节点进行存储。
当基于上述的实施例获取到M个目标存储节点之后,数据管理节点获取该M个目标存储节点的信息,然后将该M个目标存储节点的信息发送至客户端节点。
客户端节点接收到数据管理节点发送的M个目标存储节点的信息后,可以根据M个目标存储节点的信息,将目标数据发送至该M个目标存储节点进行存储。
当任一目标存储节点将目标数据存储完毕后,会根据目标数据在该目标存储节点中的存储路径,生成目标数据存储完毕的通知消息并发送至数据管理节点。数据管理节点接收到该通知消息后,对该通知消息进行解析,获取该通知消息中携带的存储路径并保存。
由于在确定用于存储目标数据的目标存储节点时,不仅考虑到了每个副本存储节点分别对应的预先配置的第一坐标,对每个副本存储节点分别与客户端节点之间的距离的影响,还考虑到了每个副本存储节点分别所在的机架,对每个副本存储节点分别与客户端节点之间的距离的影响,从而有利于更准确地确定每个副本存储节点分别与客户端节点之间的距离,也方便后续根据每个副本存储节点分别与客户端节点之间的距离,从至少一个副本存储节点中,准确地确定用于存储目标数据的目标存储节点,也有利于在采用将距离客户端节点最近的副本存储节点确定为目标存储节点时,实现有效缩短数据存储和读写的耗时,提高存储节点间交互的效率,避免了无法准确地从客户端节点所在机架上的至少一个副本存储节点中准确地确定目标存储节点,也避免了无法准确地从与客户端节点所在机架不同的其它机架上的至少一个副本存储节点中准确地确定目标存储节点。
本公开还提供了一种数据读取方法,图7为本公开实施例提供的一种数据读取过程示意图,该过程包括:
S701:发送目标数据的数据读取请求。
S702:接收存储所述目标数据的M个目标存储节点的信息;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标及所在的机架,所述M为大于等于2的正整数。
S703:根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离。
S704:根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据。
本公开提供的数据读取方法可应用于客户端节点,该客户端节点可以为电子设备,该电子设备可以是服务器,也可以是智能设备,比如,手机、电脑、监控设备等。具体实施过程中,可以根据实际需求进行灵活设置,在此不做具体限定。
在一种可能的应用场景中,当某一客户端节点需要从数据中心中读取存储的目标数据时,可以生成目标数据的数据读取请求并发送至数据管理节点。数据管理节点接收到该目标数据的数据读取请求后,可以对该数据读取请求进行响应,以确定该数据中心中用于存储目标数据的M个目标存储节点的信息并发送至客户端节点。
其中,该信息包括M个目标存储节点分别对应的第一坐标及所在的机架。该M为大于等于2的整数。
需要说明的是,确定用于存储目标数据的目标存储节点的过程已在上述实施例中进行描述,重复之处不做赘述。
相关技术中,为了确定目标存储节点与客户端节点之间距离,需要预先根据目标存储节点与客户端节点之间的位置关系,配置不同位置关系下所对应的距离值。例如,如果位置关系为目标存储节点与客户端节点是同一个节点,则该位置关系对应的距离值为0;如果位置关系为目标存储节点与客户端节点为同一机架上的不同节点,则该位置关系对应的距离值为2;如果位置关系为目标存储节点与客户端节点位于同一数据中心的不同机架上,则该位置关系对应的距离值为4;如果位置关系为目标存储节点与客户端节点位于不同数据中心的机架上,则该位置关系对应的距离值为6。当客户端节点接收到目标存储节点的信息后,根据每个目标存储节点的信息,确定每个目标存储节点分别与该客户端节点的目标位置关系。根据预先配置的位置关系与距离值的对应关系,确定各个目标位置关系分别对应的目标距离值。客户端直接访问最小的目标距离值所对应的目标存储节点,以获取其所存储的目标数据。对于该种方法,由于节点之间的距离只是预先根据不同目标存储节点与客户端节点之间可能存在的位置关系配置的,不同位置关系分别对应的距离值都比较粗略,没有考虑到在相同位置关系下不同目标存储节点与客户端节点之间的距离的区别,从而无法对同一机架上的不同目标存储节点与客户端节点之间的距离进行区分。
为了解决上述的问题,在本公开中,客户端节点接收到M个目标存储节点分别对应的第一坐标及所在的机架之后,确定该客户端节点所在的机架以及客户端节点对应的预先配置的第二坐标,确定M个目标存储节点分别与客户端节点之间的距离,从而保证可以更准确地确定每个目标存储节点分别与客户端节点之间的距离,进而根据每个目标存储节点分别对应距离,更加准确地确定客户端节点所要访问的目标存储节点,实现了对同一机架上的不同目标存储节点与客户端节点之间的距离进行区分。
针对每个目标存储节点,在确定该目标存储节点与该客户端节点之间的距离时,包括如下几种情况:
情况A、客户端节点所在的机架与该目标存储节点所在的机架相同。由于客户端节点所在的机架与该目标存储节点所在的机架相同,则该客户端节点与该目标存储节点之间进行交互的访问路径中是不需要经过交换机的。因此,若确定客户端节点所在的机架与该目标存储节点所在的机架相同,则确定该目标存储节点对应的第一坐标与该客户端节点所在的第二坐标之间的基础距离;并根据所述基础距离,确定该目标存储节点与所述客户端节点之间的距离。
在一种可能的实施方式中,基于某一目标存储节点对应的第一坐标、以及客户端节点在数据中心的第二坐标,确定该目标存储节点与客户端节点之间的距离时,可以基于该目标存储节点对应的第一坐标、以及客户端节点在数据中心的第二坐标,确定该目标存储节点对应的第一坐标与该第二坐标之间的基础距离。其中,该基础距离可以为欧式距离、曼哈顿距离、切比雪夫距离等。可以将确定的基础距离确定为该目标存储节点与客户端节点之间的距离。
例如,基于该目标存储节点对应的第一坐标为(x1,y1,z1)、以及客户端节点在数据中心的第二坐标为(x2,y2,z2),确定该目标存储节点对应的第一坐标为(x1,y1,z1)与该第二坐标为(x2,y2,z2)之间的基础距离d可以通过如下公式确定:
d=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)。
情况B、客户端节点所在的机架与该目标存储节点所在的机架位于同一数据中心,但客户端节点所在的机架与该目标存储节点所在的机架不相同,则该客户端节点与该目标存储节点之间进行交互的访问路径上经过交换机。因此,在本公开中,若确定所述客户端节点所在的机架与该目标存储节点所在的机架位于同一数据中心,且所述客户端节点所在的机架与该目标存储节点所在的机架不相同,则确定该目标存储节点对应的第一坐标与所述第二坐标之间的基础距离;根据该目标存储节点与所述客户端节点之间的访问路径中所通过的交换机的层数、以及所述基础距离,确定该目标存储节点与所述客户端节点之间的距离。
在一种可能的实施方式中,可以基于该目标存储节点对应的第一坐标、以及客户端节点对应的第二坐标,确定该目标存储节点对应的第一坐标与该第二坐标之间的基础距离。其中,该基础距离可以为欧式距离、曼哈顿距离、切比雪夫距离等。然后根据该基础距离,以及客户端节点与该目标存储节点之间的访问路径中所通过的交换机的层数,确定该目标存储节点与该客户端节点之间的第二距离。
例如,假设目标存储节点对应的第一坐标为(x1,y1,z1),客户端节点对应的第二坐标为(x2,y2,z2),在确定该目标存储节点与该客户端节点之间的距离d时,可通过如下公式确定:
d=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)+a*m
其中,a为每层交换机所对应的预设参考距离值,m为参考存储节点与该候选存储节点之间的访问路径中所通过的交换机的层数。
情况C、客户端节点所在的机架与该目标存储节点所在的机架不位于同一数据中心,则该客户端节点与该目标存储节点之间的距离,应大于该数据中心中任意两个副本存储节点之间的距离。因此,在本公开中,若确定所述客户端节点所在的机架与该目标存储节点所在的机架位于不同的数据中心,则确定该目标存储节点对应的第一坐标与所述第二坐标之间的基础距离;根据所述基础距离以及预设数值,确定该目标存储节点与所述客户端节点之间的距离;所述距离大于所述数据中心中任意两个副本存储节点之间的距离。
在一种可能的实施方式中,客户端节点所在的机架与该目标存储节点所在的机架不位于同一数据中心,则可以将该客户端节点对应的第二坐标确定为预先配置的坐标。其中,该预先配置的坐标不与该数据中心中任一副本存储节点对应的第一坐标相同。例如,该预先配置的坐标可以为(0,0,0)。
在一种可能的实施方式中,基于某一目标存储节点对应的第一坐标、以及客户端节点在数据中心的第二坐标,确定该目标存储节点与客户端节点之间的距离时,可以基于该目标存储节点对应的第一坐标、以及客户端节点在数据中心的第二坐标,确定该目标存储节点对应的第一坐标与该第二坐标之间的基础距离。其中,该基础距离可以为欧式距离、曼哈顿距离、切比雪夫距离等。然后将确定的基础距离与预设数值的和确定为该目标存储节点与客户端节点之间的距离。
例如,基于该目标存储节点对应的第一坐标为(x1,y1,z1)、以及客户端节点在数据中心的第二坐标为(x2,y2,z2),确定该目标存储节点与客户端节点之间的距离d可以通过如下公式确定:
d=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)+Q
其中,Q为预设数值。
以图6所示的坐标系为例,假设客户端节点不在该数据中心内,则该客户端节点在数据中心的第二坐标为(0,0,0),预设数值Q为3,目标存储节点n8对应的第一坐标为(2,2,2)。根据上述公式,确定该目标存储节点n8与客户端节点之间的距离d=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)+Q=sqrt((2-0)2+(2-0)2+(2-0)2)+3=3.464+3=6.464。
再例如,假设图6中的客户端节点n8(2,2,2)需要从目标存储节点n10(3,1,1)和n2(2,4,4)中选择一个目标存储节点去访问,每层交换机所对应的预设参考距离值a为1。根据上述实施例中提供的距离确定方法,并结合图2,确定n8与n10之间跨了一层交换机,即n8与n10之间的访问路径中所通过的交换机的层数m为1,故n8与n10之间的距离为d=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)+a*m=sqrt((3-2)2+(1-2)2+(1-2)2)+1*1=2.237,确定n8与n2之间跨了两层交换机,即n8与n2之间的访问路径中所通过的交换机的层数m为2,故n8与n2之间的距离为d=sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)+a*m=sqrt((2-2)2+(4-2)2+(4-2)2)+1*2=4.828。由于n8与n10之间的距离小于n8与n2之间的距离,所以n8可以优先与n10进行交互。
由于现有只根据目标存储节点所在机架与客户端节点所在的机架是否一致,以及目标存储节点与客户端是否在同一数据中心来确定目标存储节点与客户端节点之间的距离,导致同一机架上不同位置的目标存储节点与客户端节点之间的距离均是固定不变的数值,根据该方法确定出的距离,无法从同一机架上不同位置的目标存储节点中,准确地确定客户端节点所要交互的目标存储节点,进而无法保证后续客户端节点与目标存储节点进行交互的效率。而本公开采用上述的情况A~情况C的三种方法,确定目标存储节点与客户端节点之间的距离时,该距离会跟随该目标存储节点所在的机架、以及该目标存储节点在机架上的位置发生变化,从而实现更准确地确定不同位置的目标存储节点与该客户端节点之间的距离,进而有利于根据目标存储节点与客户端节点之间的距离,准确地确定客户端节点所要交互的目标存储节点。
当基于上述的实施例确定了M个目标存储节点分别对应的距离之后,可以根据M个目标存储节点分别对应的距离,确定客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的目标数据。
一般情况下,客户端节点会访问距离该客户端节点较近的目标存储节点,以有效缩短数据读写过程中所耗费的时间,提高客户端节点与存储目标数据的目标存储节点之间交互的效率。因此,在本公开中,当基于上述的实施例确定了M个目标存储节点分别对应的距离之后,可以根据M个目标存储节点分别对应的距离,确定最小距离。将最小距离所对应的目标存储节点确定为客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的目标数据。
在一种可能的实施方式中,当基于上述的实施例确定了客户端节点所要访问的目标存储节点之后,该所要访问的目标存储节点可能存在无法读取所述目标数据的故障。为了保证客户端节点可以及时获取到目标数据,若确定所要访问的目标存储节点存在无法读取所述目标数据的故障,则获取除了该目标存储节点之外的M-1个目标存储节点;根据所述M-1个目标存储节点分别对应的距离,重新确定所要访问的目标存储节点并进行访问。
本公开还提供了一种数据读取方法,图8为本公开实施例提供的一种数据读取过程示意图,该过程包括:
S801:接收客户端节点发送的目标数据的数据读取请求。
S802:确定存储所述目标数据的M个目标存储节点的信息并发送至所述客户端节点,以使所述客户端节点接收到所述M个目标存储节点的信息后,根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点分别对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离,根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标,所述M为大于等于2的正整数。
本公开提供的数据读取方法可应用于数据管理节点,该数据管理节点可以为电子设备,该电子设备可以是服务器,也可以是智能设备,比如,手机、电脑、监控设备等。具体实施过程中,可以根据实际需求进行灵活设置,在此不做具体限定。
需要说明的是,本公开实施例提供的数据读取方法解决问题的原理已在上述实施例中进行描述,重复之处不做赘述。
下面通过具体的实施例对本公开提供的数据读取方法进行说明,图9为本公开实施例提供的一种数据读取流程的场景示意图,该流程包括:
首先,当数据管理节点(如图9所示的master)基于上述实施例提供的数据存储方法,确定了用于存储客户端节点(如图9所示的client)中的目标数据的M个目标存储节点之后,可以将确定的M个目标存储节点的信息发送至客户端节点。客户端节点接收到M个目标存储节点的信息后,可以将目标数据发送至M个目标存储节点进行存储。如图9所示,M为3,3个目标存储节点分别为node1、node2、node3。
当任一目标存储节点将目标数据存储完毕后,会向数据管理节点发送通知消息,即向数据管理节点上报目标数据在该目标存储节点中的存储路径。数据管理节点接收到该通知消息后,会将该通知消息中携带的存储路径保存。
后续客户端节点可以向数据管理节点发送目标数据的数据读取请求,以向数据管理节点询问用于存储目标数据的目标存储节点的访问地址,即向数据管理节点询问目标存储节点的信息。
数据管理节点接收客户端节点发送的目标数据的数据读取请求,并确定存储目标数据的M个目标存储节点的信息并发送至客户端节点。
其中,该信息中包括M个目标存储节点分别对应的第一坐标及所在的机架,M为大于等于2的正整数。
然后,客户端节点接收存储目标数据的M个目标存储节点的信息,并根据M个目标存储节点分别对应的第一坐标及所在的机架、客户端节点所在的机架、以及客户端节点对应的预先配置的第二坐标,确定M个目标存储节点分别与客户端节点之间的距离。
其中,对于任一目标存储节点,根据该目标存储节点对应的第一坐标及所在的机架、客户端节点所在的结痂以及客户端节点对应的预先配置的第二确定,确定该目标存储节点与客户端节点之间的距离,包括:
若确定客户端节点所在的机架与该目标存储节点所在的机架相同,则确定该目标存储节点对应的第一坐标与第二坐标之间的基础距离;并根据基础距离,确定该目标存储节点与客户端节点之间的距离;
若确定客户端节点所在的机架与该目标存储节点所在的机架位于同一数据中心,且客户端节点所在的机架与该目标存储节点所在的机架不相同,则确定该目标存储节点对应的第一坐标与第二坐标之间的基础距离;根据该目标存储节点与客户端节点之间的访问路径中所通过的交换机的层数、以及基础距离,确定该目标存储节点与客户端节点之间的距离;
若确定客户端节点所在的机架与该目标存储节点所在的机架位于不同的数据中心,则确定该目标存储节点对应的第一坐标与第二坐标之间的基础距离;根据基础距离以及预设数值,确定该目标存储节点与客户端节点之间的距离;距离大于数据中心中任意两个副本存储节点之间的距离。
其次,根据M个目标存储节点分别对应的距离,确定客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的目标数据本公开提供了一种数据存储系统,图10为本公开实施例提供的一种数据存储系统的结构示意图,该系统包括用于执行上述实施例中任一所述数据存储方法的数据管理节点1001、用于发送目标数据的数据存储请求的客户端节点1002以及用于存储数据的至少两个副本存储节点1003。
需要说明的是,本公开提供的数据存储系统具体解决问题的原理已在上述实施例中进行说明,具体参见上述数据存储方法的实施例,重复之处不做赘述。
本公开提供了一种数据读取系统,图11为本公开实施例提供的一种数据读取系统的结构示意图,该系统包括用于执行上述实施例中任一所述数据读取方法的客户端节点1101、用于执行上述实施例中的数据读取方法的数据管理节点1102以及用于存储目标数据的至少两个目标存储节点1103。
需要说明的是,本公开提供的数据读取系统具体解决问题的原理已在上述实施例中进行说明,具体参见上述数据读取方法的实施例,重复之处不做赘述。
前文介绍了本公开实施例的数据存储方法,下文中将介绍本公开实施例中的数据存储装置。方法、装置是基于同一技术构思的,由于方法、装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本公开实施例提供了一种数据存储装置,图12为本公开实施例提供的一种数据存储装置的结构示意图,该装置包括:
接收单元1201,用于接收客户端节点发送的目标数据的数据存储请求;
处理单元1202,用于基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点;其中,所述M为大于等于2的正整数,所述M个目标存储节点的剩余存储空间的大小满足所述目标数据所需的存储空间的大小;
发送单元1203,用于将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点将所述目标数据发送至所述M个目标存储节点进行存储。
在某些可能的实施方式中,所述处理单元1202,具体用于若所述客户端节点与所述至少两个副本存储节点位于同一数据中心,且所述至少两个副本存储节点被部署于至少两个机架上,获取所述至少两个机架的顺序;按照所述至少两个机架的顺序,针对所述至少两个机架,确定已确定的目标存储节点的数量是否达到M个;若未达到,则根据该机架上的至少一个副本存储节点分别对应的第一坐标,确定目标存储节点;若达到,则停止继续确定目标存储节点。
在某些可能的实施方式中,所述处理单元1202,具体用于获取所述至少两个机架分别与所述客户端节点所在的机架之间的机架距离;根据所述至少两个机架分别对应的机架距离,确定所述至少两个机架的顺序;其中,机架对应的机架距离越小,该机架的顺序越前。
在某些可能的实施方式中,所述处理单元1202,具体用于根据该机架上的至少一个副本存储节点分别对应的剩余存储空间以及第一坐标,确定所述目标存储节点。
在某些可能的实施方式中,所述处理单元1202,具体用于根据所述至少一个副本存储节点分别对应的剩余存储空间以及所述目标数据所需的存储空间,从所述至少一个副本存储节点中,确定至少一个候选存储节点;根据所述至少一个候选存储节点分别对应的第一坐标,从所述至少一个候选存储节点中确定目标存储节点。
在某些可能的实施方式中,所述处理单元1202,具体用于若该机架与所述客户端节点所在的机架相同,则基于所述至少一个候选存储节点的第一数量、所述至少一个候选存储节点分别对应的第一坐标及预设的数量阈值N,从所述至少一个候选存储节点中,确定所述目标存储节点;所述N为大于等于1,且小于所述M的整数。
在某些可能的实施方式中,所述处理单元1202,具体用于若所述第一数量大于所述N,则基于所述至少一个候选存储节点分别对应的第一坐标、以及所述客户端节点在所述数据中心的第二坐标,确定所述至少一个候选存储节点分别与所述客户端节点之间的第一距离;根据所述至少一个候选存储节点分别对应的第一距离,从所述至少一个候选存储节点中确定N个目标存储节点。
在某些可能的实施方式中,所述处理单元1202,还用于若所述第一数量不大于所述N,则直接将所述至少一个候选存储节点均确定为所述目标存储节点。
在某些可能的实施方式中,所述处理单元1202,具体用于若该机架与所述客户端节点所在的机架不同,则根据参考存储节点在所述数据中心的坐标、所述至少一个候选存储节点分别对应的第一坐标、及所述参考存储节点分别与所述至少一个候选存储节点之间的访问路径,确定所述至少一个候选存储节点分别与所述参考存储节点之间的第二距离;其中,所述参考存储节点为所述客户端节点或任一已确定的目标存储节点;根据所述至少一个候选存储节点分别对应的第二距离,从所述至少一个候选存储节点中,确定所述目标存储节点。
在某些可能的实施方式中,所述处理单元1202,具体用于针对所述至少一个候选存储节点,在确定该候选存储节点与所述参考存储节点之间的第二距离时,执行以下步骤:
确定所述坐标与该候选存储节点对应的第一坐标之间的基础距离;
根据所述基础距离、以及所述参考存储节点与该候选存储节点之间的访问路径中所通过的交换机的层数,确定该候选存储节点与所述参考存储节点之间的第二距离。
在某些可能的实施方式中,若所述客户端节点与所述至少两个副本存储节点不位于同一数据中心,且所述至少两个副本存储节点被部署于至少两个机架上,所述处理单元1202,具体用于根据所述至少两个副本存储节点的剩余存储空间、以及所述目标数据所需的存储空间,确定至少两个候选存储节点;统计被部署于该各机架上的候选存储节点的第二数量;根据多个所述第二数量以及预设的数量阈值Z,从所述至少两个候选存储节点中,确定归属于第一集合的目标存储节点;其中,所述Z为小于所述M,且大于等于1的正整数;根据任一已确定的目标存储节点对应的第一坐标、至少一个其它候选存储节点分别对应的第一坐标、及该目标存储节点分别与所述至少一个其它候选存储节点之间的访问路径,确定所述至少一个其它候选存储节点分别与该已确定的目标存储节点之间的第三距离;其中,所述其它候选存储节点为所述至少两个候选存储节点中,未被确定为所述目标存储节点的候选存储节点;基于所述至少一个其它存储节点分别对应的第三距离,从所述至少一个其它存储节点中,确定归属于第二集合的目标存储节点;其中,所述第一集合和所述第二集合中包含的目标存储节点的总数量为所述M。
在某些可能的实施方式中,所述处理单元1202,具体用于若只存在一个所述第二数量,且所述第二数量小于所述Z,则确定所述第二数量对应的机架;将该机架上的至少一个候选存储节点,确定为归属于所述第一集合的目标存储节点;若只存在一个所述第二数量,且所述第二数量不小于所述Z,则确定所述第二数量对应的机架;将该机架上的Z个候选存储节点,确定为归属于所述第一集合的目标存储节点;若存在多个所述第二数量,且多个所述第二数量中的最大值小于所述Z,则确定所述最大值所对应的一个机架;将该机架上的至少一个候选存储节点,确定为归属于所述第一集合的目标存储节点;若存在多个所述第二数量,且多个所述第二数量中的最大值不小于所述Z,则确定所述最大值所对应的一个机架;将该机架上的Z个候选存储节点,确定为归属于所述第一集合的目标存储节点。
在某些可能的实施方式中,所述接收单元1201,还用于接收所述目标存储节点发送的通知信息;其中,所述通知消息为所述目标存储节点将所述目标数据存储完毕后发送的,所述通知信息携带有所述目标数据在所述目标存储节点中的存储路径;
所述处理单元1202,还用于保存所述存储路径。
前文介绍了本公开实施例的数据读取方法,下文中将介绍本公开实施例中的数据读取装置。方法、装置是基于同一技术构思的,由于方法、装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本公开实施例提供了一种数据读取装置,图13为本公开实施例提供的一种数据读取装置的结构示意图,该装置包括:
第一发送模块1301,用于发送读取目标数据的数据读取请求;
第一接收模块1302,用于接收存储所述目标数据的M个目标存储节点的信息;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标及所在的机架,所述M为大于等于2的正整数;
第一处理模块1303,用于根据所述M个目标存储节点分别对应的第一坐标及所在的机架、以及所述客户端节点所在的机架、以及所述客户端节点对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离;根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问该相应的目标存储节点,以获取该目标存储节点其所存储的所述目标数据。
在某些可能的实施方式中,所述第一处理模块1303,具体用于在确定任一目标存储节点与所述客户端节点之间的距离时,执行以下步骤:
若确定所述客户端节点所在的机架与该目标存储节点所在的机架相同,则确定该目标存储节点对应的第一坐标与所述第二坐标之间的基础距离;并根据所述基础距离,确定该目标存储节点与所述客户端节点之间的距离;
若确定所述客户端节点所在的机架与该目标存储节点所在的机架位于同一数据中心,且所述客户端节点所在的机架与该目标存储节点所在的机架不相同,则确定该目标存储节点对应的第一坐标与所述第二坐标之间的基础距离;根据该目标存储节点与所述客户端节点之间的访问路径中所通过的交换机的层数、以及所述基础距离,确定该目标存储节点与所述客户端节点之间的距离;
若确定所述客户端节点所在的机架与该目标存储节点所在的机架不位于同一位于不同的数据中心,则确定该目标存储节点对应的第一坐标与所述第二坐标之间的基础距离;根据所述基础距离以及预设的距离数值,确定该目标存储节点与所述客户端节点之间的距离;所述距离大于所述数据中心中任意两个副本存储节点之间的距离所述的最大值。
在某些可能的实施方式中,所述第一处理模块1303,还用于若确定所要访问的目标存储节点存在无法读取所述目标数据的故障,则获取除了该目标存储节点之外的M-1个目标存储节点;根据所述M-1个目标存储节点分别对应的距离,重新确定所要访问的目标存储节点并进行访问。
前文介绍了本公开实施例的数据读取方法,下文中将介绍本公开实施例中的数据读取装置。方法、装置是基于同一技术构思的,由于方法、装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本公开实施例提供了一种数据读取装置,图14为本公开实施例提供的一种数据读取装置的结构示意图,该装置包括:
第二接收模块1401,用于接收客户端节点发送的读取目标数据的数据读取请求;
第二处理模块1402,用于确定存储所述目标数据的M个目标存储节点的信息;
第二发送模块1403,用于将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点接收到所述M个目标存储节点的信息后,根据所述M个目标存储节点分别对应的第一坐标及所在的机架、以及所述客户端节点所在的机架、以及所述客户端节点分别对应的预先配置的第二坐标,以及预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离,根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据根据每个所述距离,确定所述客户端节点所要访问的目标存储节点并访问该目标存储节点,以获取该目标存储节点所存储的所述目标数据;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标,所述M为大于等于2的正整数。
如图15为本公开实施例提供的一种电子设备结构示意图,在上述各实施例的基础上,本公开实施例还提供了一种电子设备,如图15所示,包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信;
所述存储器1503中存储有计算机程序,当所述程序被所述处理器1501执行时,使得所述处理器1501执行如下步骤:
接收客户端节点发送的目标数据的数据存储请求;
基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点;其中,所述M为大于等于2的正整数,所述M个目标存储节点的剩余存储空间的大小满足所述目标数据所需的存储空间的大小;
将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点将所述目标数据发送至所述M个目标存储节点进行存储。
如图16为本公开实施例提供的一种电子设备结构示意图,在上述各实施例的基础上,本公开实施例还提供了一种电子设备,如图16所示,包括:处理器1601、通信接口1602、存储器1603和通信总线1604,其中,处理器1601,通信接口1602,存储器1603通过通信总线1604完成相互间的通信;
所述存储器1603中存储有计算机程序,当所述程序被所述处理器1601执行时,使得所述处理器1601执行如下步骤:
发送目标数据的数据读取请求;
接收存储所述目标数据的M个目标存储节点的信息;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标及所在的机架,所述M为大于等于2的正整数;
根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离;
根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据。
如图17为本公开实施例提供的一种电子设备结构示意图,在上述各实施例的基础上,本公开实施例还提供了一种电子设备,如图17所示,包括:处理器1701、通信接口1702、存储器1703和通信总线1704,其中,处理器1701,通信接口1702,存储器1703通过通信总线1704完成相互间的通信;
所述存储器1703中存储有计算机程序,当所述程序被所述处理器1701执行时,使得所述处理器1701执行如下步骤:
接收客户端节点发送的目标数据的数据读取请求;
确定存储所述目标数据的M个目标存储节点的信息并发送至所述客户端节点,以使所述客户端节点接收到所述M个目标存储节点的信息后,根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点分别对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离,根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标,所述M为大于等于2的正整数。
由于上述电子设备解决问题的原理与数据存储方法相似,因此上述电子设备的实施可以参见方法的实施,重复之处不再赘述。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口1702用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字指令处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
在上述各实施例的基础上,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有可由处理器执行的计算机程序,当所述程序在所述处理器上运行时,使得所述处理器执行时实现如下步骤:
接收客户端节点发送的目标数据的数据存储请求;
基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点;其中,所述M为大于等于2的正整数,所述M个目标存储节点的剩余存储空间的大小满足所述目标数据所需的存储空间的大小;
将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点将所述目标数据发送至所述M个目标存储节点进行存储。
由于计算机可读存储介质解决问题的原理与上述数据存储方法相似,因此具体实施可以参见数据处理方法的实施,重复之处不再赘述。
在上述各实施例的基础上,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有可由处理器执行的计算机程序,当所述程序在所述处理器上运行时,使得所述处理器执行时实现如下步骤:
发送目标数据的数据读取请求;
接收存储所述目标数据的M个目标存储节点的信息;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标及所在的机架,所述M为大于等于2的正整数;
根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离;
根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据。
由于计算机可读存储介质解决问题的原理与上述数据读取方法相似,因此具体实施可以参见数据处理方法的实施,重复之处不再赘述。
在上述各实施例的基础上,本公开实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有可由处理器执行的计算机程序,当所述程序在所述处理器上运行时,使得所述处理器执行时实现如下步骤:
发送目标数据的数据读取请求;
接收存储所述目标数据的M个目标存储节点的信息;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标及所在的机架,所述M为大于等于2的正整数;
根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离;
根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据。
由于计算机可读存储介质解决问题的原理与上述数据读取方法相似,因此具体实施可以参见数据处理方法的实施,重复之处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种数据存储方法,其特征在于,所述方法包括:
接收客户端节点发送的目标数据的数据存储请求;
基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点;其中,所述M为大于等于2的正整数,所述M个目标存储节点的剩余存储空间的大小满足所述目标数据所需的存储空间的大小;
将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点将所述目标数据发送至所述M个目标存储节点进行存储。
2.根据权利要求1所述的方法,其特征在于,若所述客户端节点与所述至少两个副本存储节点位于同一数据中心,且所述至少两个副本存储节点被部署于至少两个机架上,所述基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点,包括:
获取所述至少两个机架的顺序;
按照所述至少两个机架的顺序,针对所述至少两个机架,确定已确定的目标存储节点的数量是否达到M个;若未达到,则根据该机架上的至少一个副本存储节点分别对应的第一坐标,确定目标存储节点;若达到,则停止继续确定目标存储节点。
3.根据权利要求1所述的方法,其特征在于,若所述客户端节点与所述至少两个副本存储节点不位于同一数据中心,且所述至少两个副本存储节点被部署于至少两个机架上,所述基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点,包括:
根据所述至少两个副本存储节点的剩余存储空间、以及所述目标数据所需的存储空间,确定至少两个候选存储节点;
统计被部署于各机架上的候选存储节点的第二数量;
根据多个所述第二数量以及预设的数量阈值Z,从所述至少两个候选存储节点中,确定归属于第一集合的目标存储节点;其中,所述Z为小于所述M,且大于等于1的正整数;
根据任一已确定的目标存储节点对应的第一坐标、至少一个其它候选存储节点分别对应的第一坐标、及该目标存储节点分别与所述至少一个其它候选存储节点之间的访问路径,确定所述至少一个其它候选存储节点分别与该已确定的目标存储节点之间的第三距离;其中,所述其它候选存储节点为所述至少两个候选存储节点中,未被确定为所述目标存储节点的候选存储节点;
基于所述至少一个其它存储节点分别对应的第三距离,从所述至少一个其它存储节点中,确定归属于第二集合的目标存储节点;其中,所述第一集合和所述第二集合中包含的目标存储节点的总数量为所述M。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述目标存储节点发送的通知信息;其中,所述通知消息为所述目标存储节点将所述目标数据存储完毕后发送的,所述通知信息携带有所述目标数据在所述目标存储节点中的存储路径;
保存所述存储路径。
5.根据权利要求1所述的方法,其特征在于,任一副本存储节点对应的第一坐标是根据该副本存储节点所在的机架在数据中心中的第一机架序号、该副本存储节点所在的机架在预设坐标系中的第二机架序号、及该副本存储节点在其所在的机架上的位置所对应的机器序号确定的。
6.一种数据读取方法,其特征在于,所述方法应用于客户端节点,所述方法包括:
发送目标数据的数据读取请求;
接收存储所述目标数据的M个目标存储节点的信息;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标及所在的机架,所述M为大于等于2的正整数;
根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离;
根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据。
7.一种数据读取方法,其特征在于,所述方法应用于数据管理节点,所述方法包括:
接收客户端节点发送的目标数据的数据读取请求;
确定存储所述目标数据的M个目标存储节点的信息并发送至所述客户端节点,以使所述客户端节点接收到所述M个目标存储节点的信息后,根据所述M个目标存储节点分别对应的第一坐标及所在的机架、所述客户端节点所在的机架、以及所述客户端节点分别对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离,根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标,所述M为大于等于2的正整数。
8.一种数据存储装置,其特征在于,所述装置包括:
接收单元,用于接收客户端节点发送的目标数据的数据存储请求;
处理单元,用于基于至少两个副本存储节点分别所在的机架、以及所述至少两个副本存储节点分别对应的预先配置的第一坐标,从所述至少两个副本存储节点中,确定M个目标存储节点;其中,所述M为大于等于2的正整数,所述M个目标存储节点的剩余存储空间的大小满足所述目标数据所需的存储空间的大小;
发送单元,用于将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点将所述目标数据发送至所述M个目标存储节点进行存储。
9.一种数据读取装置,其特征在于,所述装置应用于客户端节点,所述装置包括:
第一发送模块,用于发送读取目标数据的数据读取请求;
第一接收模块,用于接收存储所述目标数据的M个目标存储节点的信息;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标及所在的机架,所述M为大于等于2的正整数;
第一处理模块,用于根据所述M个目标存储节点分别对应的第一坐标及所在的机架、以及所述客户端节点所在的机架、以及所述客户端节点对应的预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离;根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问该相应的目标存储节点,以获取该目标存储节点其所存储的所述目标数据。
10.一种数据读取装置,其特征在于,所述装置应用于数据管理节点,所述装置包括:
第二接收模块,用于接收客户端节点发送的读取目标数据的数据读取请求;
第二处理模块,用于确定存储所述目标数据的M个目标存储节点的信息;
第二发送模块,用于将所述M个目标存储节点的信息发送至所述客户端节点,以使所述客户端节点接收到所述M个目标存储节点的信息后,根据所述M个目标存储节点分别对应的第一坐标及所在的机架、以及所述客户端节点所在的机架、以及所述客户端节点分别对应的预先配置的第二坐标,以及预先配置的第二坐标,确定所述M个目标存储节点分别与所述客户端节点之间的距离,根据所述M个目标存储节点分别对应的距离,确定所述客户端节点所要访问的目标存储节点并访问相应的目标存储节点,以获取其所存储的所述目标数据根据每个所述距离,确定所述客户端节点所要访问的目标存储节点并访问该目标存储节点,以获取该目标存储节点所存储的所述目标数据;其中,所述信息包括所述M个目标存储节点分别对应的第一坐标,所述M为大于等于2的正整数。
CN202111105659.XA 2021-09-22 2021-09-22 一种数据存储和读取方法、系统、装置、设备及介质 Pending CN113849307A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111105659.XA CN113849307A (zh) 2021-09-22 2021-09-22 一种数据存储和读取方法、系统、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111105659.XA CN113849307A (zh) 2021-09-22 2021-09-22 一种数据存储和读取方法、系统、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN113849307A true CN113849307A (zh) 2021-12-28

Family

ID=78974908

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111105659.XA Pending CN113849307A (zh) 2021-09-22 2021-09-22 一种数据存储和读取方法、系统、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN113849307A (zh)

Similar Documents

Publication Publication Date Title
US9667750B2 (en) Client-initiated leader election in distributed client-server systems
CN109412875B (zh) zookeeper集群自动维护方法及装置
US10367676B1 (en) Stable leader selection for distributed services
US10084860B2 (en) Distributed file system using torus network and method for configuring and operating distributed file system using torus network
CN115176227A (zh) 分布式存储系统中的主数据放置
CN105306507A (zh) 分布式架构中的容灾处理方法及容灾处理装置
US9454316B2 (en) Cluster consistent logical storage object naming
US10749921B2 (en) Techniques for warming up a node in a distributed data store
EP4006725A1 (en) Virtual machine migration processing and strategy generation method, apparatus and device, and storage medium
CN111427689B (zh) 集群保活方法、装置及存储介质
CN113849307A (zh) 一种数据存储和读取方法、系统、装置、设备及介质
CN111046004B (zh) 一种数据文件存储方法、装置、设备及存储介质
CN114546493A (zh) 核共享方法及装置、处理核、电子设备、介质
EP2670111A1 (en) System and Methods for Communicating in a Telecommunication Network Using Common Key Routing and Data Locality Tables
EP2670113A1 (en) System and Method for Communicating in a Telecommunication Network via Independent Key Routing and Data Locality Tables
CN112214161A (zh) 存储器系统及其操作方法
CN114785662B (zh) 一种存储管理方法、装置、设备及机器可读存储介质
CN115756955A (zh) 一种数据备份、数据恢复的方法、装置及计算机设备
CN107491270B (zh) 一种多控存储系统的资源访问方法及装置
CN110308865A (zh) 存储器系统、计算系统及其操作方法
CN108268210B (zh) 一种信息处理方法、计算节点及存储节点
US8966037B1 (en) Measuring spread of compute capacity
KR102387181B1 (ko) 컴퓨팅 디바이스 및 그것의 동작방법
CN110716698A (zh) 数据分片副本部署方法及装置
CN115801787B (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