CN110825309A - 数据读取方法、装置及系统、分布式系统 - Google Patents
数据读取方法、装置及系统、分布式系统 Download PDFInfo
- Publication number
- CN110825309A CN110825309A CN201810895151.6A CN201810895151A CN110825309A CN 110825309 A CN110825309 A CN 110825309A CN 201810895151 A CN201810895151 A CN 201810895151A CN 110825309 A CN110825309 A CN 110825309A
- Authority
- CN
- China
- Prior art keywords
- target data
- latest version
- data
- node
- index
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
本申请公开了一种数据读取方法、装置及系统、分布式系统,属于存储技术领域。所述方法包括:接收终端发送的数据读取请求,所述数据读取请求包括目标数据的逻辑地址;根据所述逻辑地址,在所述第一从节点本地查找所述目标数据的最新版本;在确定所述多个从节点中的每个从节点均已保存所述目标数据的最新版本时,向所述终端发送所述目标数据的最新版本。本申请能够避免发生读取到数据的版本发生回退的现象,本申请用于数据的读取。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种数据读取方法、装置及系统、分布式系统。
背景技术
随着存储技术的发展,分布式系统得到了广泛的应用。分布式系统包括用于存储相同数据的主节点和多个从节点,终端可以通过主节点将数据写入分布式系统,以及读取任意一个节点中存储的数据。
相关技术中,终端在通过主节点将目标数据的最新版本写入分布式系统时,终端可以向主节点发送写入目标数据的最新版本的数据写入请求。之后,主节点可以将该目标数据的最新版本存储在本地,并将该目标数据的最新版本分别复制到每个从节点,以使得分布式系统中的所有节点均存储有目标数据的最新版本。终端在向某一从节点发送用于读取目标数据的数据读取请求后,该从节点可以将本地存储的目标数据的最新版本发送给终端。
但是,假设在第一从节点复制完成目标数据的最新版本,且第二从节点还未复制完成目标数据的最新版本时,若终端依次从第一从节点和第二从节点读取目标数据,则会导致第二次读取到的目标数据的版本比第一次读取到的目标数据的版本旧,从而出现了读取到数据的版本发生回退的现象。
发明内容
本申请提供了一种数据读取方法、装置及系统、分布式系统,可以避免发生读取到数据的版本发生回退的现象,所述技术方案如下:
第一方面,提供了一种数据读取方法,所述方法应用于分布式系统中的第一从节点,所述分布式系统包括:主节点和多个从节点,所述第一从节点为所述多个从节点中的任一从节点,所述方法包括:接收终端发送的数据读取请求,所述数据读取请求包括目标数据的逻辑地址;根据所述逻辑地址,在所述第一从节点本地查找所述目标数据的最新版本;在确定所述多个从节点中的每个从节点均已保存所述目标数据的最新版本时,向所述终端发送所述目标数据的最新版本。
由于本发明实施例提供的数据读取方法中,在从节点接收到数据读取请求后,可以根据该数据读取请求查找目标数据的最新版本,并在确定每个从节点均已保存该最新版本后,将该目标数据的最新版本发送给终端。假设在第一从节点复制完成目标数据的最新版本,且第二从节点还未复制完成目标数据的最新版本时,若终端依次从第一从节点和第二从节点读取目标数据,则在第一从节点和第二从节点上均能够读取到的目标数据的最新版本。就能够保证终端每次读取到的目标数据的版本均不比之前读取到的目标数据的版本旧,从而避免了读取到数据的版本发生回退的现象。
可选的,所述方法还包括:接收所述主节点发送的指示信息,所述指示信息用于指示所述多个从节点中的每个从节点均已保存所述目标数据的最新版本。也即,通过主节点发送的指示信息对多个节点是否已保存目标数据的最新版本进行通知。
可选的,根据所述逻辑地址,在所述第一从节点本地查找所述目标数据的最新版本,包括:根据所述逻辑地址获取所述目标数据的索引;根据所述目标数据的索引,在所述第一从节点本地查找所述索引对应的目标数据的最新版本。也即在第一从节点中,通过索引对目标数据进行标注,因此可以通过索引查找目标数据的最新版本。
可选的,所述方法还包括:接收所述主节点发送所述目标数据的最新版本以及所述索引;在所述第一从节点本地保存有所述索引对应的数据时,将所述第一从节点本地保存的所述索引对应的数据替换为所述目标数据的最新版本;向所述主节点反馈所述目标数据的最新版本已经保存在本地。由于在本发明实施例提供的数据读取方法中,每个节点均只需要存储目标数据的最新版本即可,因此每个节点中存储的数据较少,分布式系统的负载较小。并且,当终端在从节点上读取目标数据时,若该从节点存储有该目标数据的最新版本,且确定每个从节点均已经存储该最新版本,则可以立即将该目标数据的最新版本发送给终端,从而使得终端能够快速读取到目标数据的最新版本,减少了数据读取时延。
可选的,所述方法还包括:在接收所述主节点发送的所述目标数据的最新版本时,接收所述主节点发送的所述最新版本的版本号;向所述主节点反馈所述目标数据的最新版本已经保存在本地,包括:向所述主节点发送存储反馈信息,所述存储反馈信息包括:所述索引以及所述最新版本的版本号;所述指示信息包括:所述索引以及所述最新版本的版本号。也即本发明实施例中通过版本号对同一数据的不同版本进行标注。
第二方面,本申请提供了一种数据读取装置,所述数据读取装置包括用于执行第一方面或第一方面任一种可能实现方式中的数据读取方法的各个模块。
第三方面,提供了一种数据读取装置,所述数据读取装置包括:至少一个处理器、至少一个接口、存储器和至少一个通信总线,所述处理器用于执行所述存储器中存储的程序,以实现第一方面所述的参数确定方法。
第四方面,提供了一种分布式系统,所述分布式系统包括:主节点和多个从节点,所述多个从节点中的任一从节点包括第二方面所述的数据读取装置,或者,所述多个从节点中的任一从节点包括第三方面所述的数据读取装置。
第五方面,提供了一种数据读取系统,所述数据读取系统包括:终端,以及第五方面所述的分布式系统。
第六方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述计算机可读存储介质在计算机上运行时,使得计算机执行如第一方面所述的数据读取方法。
第七方面,提供了一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行第一方面所述的数据读取方法。
附图说明
图1为本发明实施例提供的一种数据读取系统的结构示意图;
图2为本发明实施例提供的一种数据读取装置的结构示意图;
图3为本发明实施例提供的一种数据读取方法的流程图;
图4为本发明实施例提供的一种数据读取装置的结构示意图;
图5为本发明实施例提供的另一种数据读取装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1为本发明实施例提供的一种数据读取系统的结构示意图,如图1所示,该数据读取系统1可以包括:分布式系统0和终端2。
该分布式系统0可以包括:主节点01和多个从节点02。主节点01和从节点02均可以为一个服务器,或多个服务器组成的服务器集群,或其他具有存储功能的设备,本发明实施例对此不作限定。终端2可以在该分布式系统0中进行数据的存储和读取。示例的,终端2可以为手机、电脑、相机等电子设备。
如图2所示,主节点01、从节点02和终端2中的每个装置均可以包括:至少一个处理器1301(例如中央处理器)、至少一个网络接口1302、存储器1303和至少一个总线1304,总线1304用于实现处理器、网络接口和存储器之间的连接通信;存储器1303与网络接口1302分别通过总线1304与处理器1301相连。处理器1301用于执行存储器1303中存储的可执行模块,例如计算机程序。存储器1303可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口1302(有线或者无线)实现该装置与至少一个其他装置之间的通信连接。在一些实施方式中,存储器1303存储了程序1305,程序1305能够被处理器1301执行以实现本发明实施例提供的数据读取方法。
主节点01可以与每个从节点02建立通信连接,终端02可以与每个节点建立通信连接。示例的,上述通信连接均可以通过有线网络或者无线网络连接,其中,有线网络可以包括但不限于:通用串行总线(Universal Serial Bus,USB),无线网络可以包括但不限于:无线保真(Wireless Fidelity,WIFI)、蓝牙、红外、紫蜂(Zigbee)、数据等。
图3为本发明实施例提供的一种数据读取方法的流程图,该数据读取方法可以用于图1所示的数据读取系统,且图3中以该数据读取系统仅包括第一从节点和第二从节点,终端在第一从节点进行数据读取为例。如图3所示,该数据读取方法可以包括:
步骤301、终端向主节点发送数据写入请求,该数据写入请求包括目标数据的逻辑地址,以及目标数据的最新版本。
目标数据为终端待写入分布式系统的数据。目标数据可以为数据,或者用于描述数据的元数据,本发明实施例对此不作限定。
步骤302、主节点根据目标数据的逻辑地址,在本地存储目标数据的最新版本。
主节点在接收到终端发送的数据写入请求后,可以获取该数据写入请求中目标数据的逻辑地址,以及目标数据的最新版本。
需要说明的是,分布式系统中的每个节点均具有多个物理地址,且每个物理地址对应一个逻辑地址,主节点在得到该数据写入请求中目标数据的逻辑地址后,可以在本地查找该逻辑地址对应的物理地址,并判断该物理地址上是否存储有数据,在该物理地址上未存储有数据时,将该目标数据的最新版本存储在该物理地址;在该物理地址上存储有数据时,将该物理地址上存储的数据替换为目标数据的最新版本。
步骤303、主节点向第一从节点发送目标数据的最新版本。
主节点在从数据写入请求中获取到目标数据的最新版本后,还可以向每个从节点复制该目标数据。
可选的,主节点在向每个从节点发送目标数据的最新版本时,还可以向每个从节点发送目标数据的索引以及该最新版本的版本号。需要说明的是,每个节点中均设置有同样的用于计算索引的预设算法。将每个物理地址对应的逻辑地址采用预设算法(如哈希算法)进行运算,能够得到该物理地址上存储的数据的索引。主节点可以采用预设算法对目标数据的逻辑地址进行运算,以得到目标数据的索引,并可以记录目标数据的索引。
目标数据的最新版本的版本号可以为主节点根据接收到的目标数据的版本生成的,该版本号也可以携带在数据写入请求中,并由该主节点从该数据写入请求中获取的,本发明实施例对此不作限定。可选的,目标数据的多个版本号可以依次增大,如第一次写入的目标数据(也即目标数据的第一版本)的版本号可以为01,第二次写入的目标数据(也即目标数据的第二版本)的版本号可以为02,第三次写入的目标数据(也即目标数据的第三版本)的版本号可以为03。
步骤304、主节点向第二从节点发送目标数据的最新版本。
步骤304可以参考步骤303,本发明实施例在此不做赘述。
步骤305、第一从节点保存目标数据的最新版本。
可选的,第一从节点在接收到目标数据的最新版本以及目标数据的索引后,可以通过检测本地是否记录有该索引,以确定本地是否保存有该索引对应的数据。在第一从节点本地保存有该索引时,确定本地保存有该索引对应的数据,并可以直接将本地保存的该索引对应的数据替换为目标数据的最新版本。
示例的,假设第一从节点中的索引S1对应用户名(一种目标数据)。在接收到用户名的最新版本以及用户名的索引S1时,若第一从节点本地保存有该索引对应的数据,则可以将该索引对应的数据替换为接收到的用户名的最新版本,以对本地存储的用户名进行更新。
若第一从节点本地并未记录有目标数据的索引对应的数据,则第一从节点可以采用预设算法的逆运算确定目标数据的逻辑地址,进而确定目标数据的逻辑地址对应的物理地址,并在该物理地址中存储目标数据的最新版本,以使得该物理地址中存储的数据仅为该目标数据的最新版本。
可选的,在步骤305中,第一从节点还可以不判断是否保存有目标数据的索引对应的数据,而是直接采用预设算法的逆运算确定目标数据的逻辑地址,进而确定目标数据的逻辑地址对应的物理地址,并在该物理地址中存储目标数据的最新版本,以使得该物理地址中存储的数据仅为该目标数据的最新版本。
步骤306、第二从节点保存目标数据的最新版本。
步骤306可以参考步骤305,本发明实施例在此不做赘述。
步骤307、第一从节点向主节点反馈目标数据的最新版本已经保存在本地。
示例的,第一从节点在存储目标数据的最新版本后,可以向主节点发送存储反馈信息,该存储反馈信息可以包括:目标数据的索引,以及该目标数据的最新版本的版本号,该存储反馈信息用于指示:目标数据的最新版本已经存储在本地。
步骤308、第二从节点向主节点反馈目标数据的最新版本已经保存在本地。
步骤308可以参考步骤307,本发明实施例在此不做赘述。
步骤309、在确定每个从节点均已保存目标数据的最新版本后,主节点向第一从节点发送用于指示每个从节点均已保存目标数据的最新版本的指示信息。
主节点在接收到每个从节点反馈的已保存目标数据的最新版本后,可以确定每个从节点均已保存目标数据的最新版本,此时,该主节点可以向每个从节点发送指示信息,以告知每个从节点该最新版本已经保存在每个从节点上。
示例的,该指示信息可以包括:目标数据的索引以及最新版本的版本号。其中,该索引用于指示目标数据,该最新版本的版本号用于指示最新版本,也即该指示信息用于指示目标数据的最新版本已经存储在每个从节点上。
步骤310、在确定每个从节点均已保存目标数据的最新版本后,主节点向第二从节点发送用于指示每个从节点均已保存目标数据的最新版本的指示信息。
步骤310可以参考步骤309,本发明实施例在此不做赘述。
步骤311、终端向第一从节点发送数据读取请求,数据读取请求包括目标数据的逻辑地址。
终端在需要读取目标数据时,可以向该分布式系统中的任一节点发送数据读取请求,本发明实施例中以终端向第一从节点发送数据读取请求,且该数据读取请求包括目标数据的逻辑地址为例。
步骤312、第一从节点根据目标数据的逻辑地址,在本地查找目标数据的最新版本。
示例的,第一从节点在接收到终端发送的数据读取请求后,可以获取该数据读取请求中的逻辑地址(也即目标数据的逻辑地址),之后,可以采用预设算法对该逻辑地址进行运算,以得到目标数据的索引。第一从节点在得到目标数据的索引后,可以根据本地记录的每个数据的索引,查找该索引对应的数据,并将该索引对应的数据确定为目标数据的最新版本。
步骤313、第一从节点在确定每个从节点均已保存目标数据的最新版本时,向终端发送目标数据的最新版本。
第一从节点在查找到目标数据的最新版本后,需要在主节点发送的指示信息中,查找用于指示每个从节点均已存储目标数据的指示信息。示例的,第一从节点可以检测是否接收到包括目标数据的索引的指示信息,若接收到这种指示信息,则检测这种指示信息中是否存在包括目标数据的最新版本的版本号的指示信息。可选的,若目标数据的多个版本号依次增大,则可以检测这种指示信息中的版本号中是否存在版本号不小于该最新版本的版本号;若存在,则可以确定这种指示信息中存在包括目标标数据的最新版本的版本号的指示信息。
如果第一从节点接收到该指示信息,则可以根据该指示信息确定目标数据的最新版本已经存储在每个从节点上。此时,第一从节点可以将该目标数据的最新版本发送给终端。
需要说明的是,若第一从节点检测到并未接收到该指示信息,则第一从节点反复检测是否接收到该指示信息,直至接收到该指示信息为止,这样一来,就能够保证每个节点上均存储有第一从节点中目标数据的最新版本。
示例的,假设节点1为主节点,节点2和节点3均为从节点。节点1在接收到用于写入目标数据的每个版本的数据写入请求时,节点1可以将该目标数据的该版本进行存储,并将该目标数据的该版本复制到每个从节点。终端发送数据读取请求的时间不固定,在节点2接收到用于读取目标数据的数据读取请求后,若节点2在确定本地存储的目标数据的最新版本后,检测到节点2并未接收到包括目标数据的索引以及该版本的版本号的指示信息,则节点2不会向终端发送目标数据的该版本。若节点2在确定本地存储的目标数据的最新版本后,检测到节点2已经接收到包括目标数据的索引以及该版本的版本号的指示信息,则节点2会向终端发送目标数据的该版本。也即,从节点向终端发送数据的前提包括:从节点接收到包括该目标数据的索引,以及从节点中存储的该数据的最新版本的版本号的指示信息。
另外,当主节点接收到终端发送的数据读取请求时,主节点可以获取该数据读取请求中的逻辑地址,并根据该逻辑地址确定目标数据的索引,之后,查找该索引对应的目标数据的最新版本。主节点还可以检测每个从节点是否均存储有目标数据的最新版本,如主节点可以检测每个从节点是否均已反馈了目标数据的最新版本已存储在本地。当确定每个从节点已经反馈了目标数据的最新版本已存储在本地时,主节点可以确定每个从节点均存储有目标数据的最新版本,并可以将该目标数据的最新版本发送给终端。
综上所述,由于本发明实施例提供的数据读取方法中,在从节点接收到数据读取请求后,可以根据该数据读取请求查找目标数据的最新版本,并在确定每个从节点均已保存该最新版本后,将该目标数据的最新版本发送给终端。假设在第一从节点复制完成目标数据的最新版本,且第二从节点还未复制完成目标数据的最新版本时,若终端依次从第一从节点和第二从节点读取目标数据,则在第一从节点和第二从节点上均能够读取到的目标数据的最新版本。就能够保证终端每次读取到的目标数据的版本均不比之前读取到的目标数据的版本旧,从而避免了读取到数据的版本发生回退的现象。
并且,在本发明实施例提供的数据读取方法中,每个节点均只需要存储目标数据的最新版本即可,因此每个节点中存储的数据较少,分布式系统的负载较小。并且,当终端在从节点上读取目标数据时,若该从节点存储有该目标数据的最新版本,且确定每个从节点均已经存储该最新版本,则可以立即将该目标数据的最新版本发送给终端,从而使得终端能够快速读取到目标数据的最新版本,减少了数据读取时延。
需要说明的是,本发明实施例提供的方法实施例步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
可选的,本发明实施例中以通过索引对目标数据进行标识为例,实际应用中,还可以采用逻辑地址对目标数据进行标识。
示例的,主节点在存储目标数据的最新版本后,还可以不计算和记录目标数据的索引,而是直接记录目标数据的逻辑地址。
在步骤303和步骤304中主节点也可以不向从节点发送目标数据的索引,而是直接向从节点发送目标数据的逻辑地址。
在步骤305和步骤306中,每个从节点在保存目标数据的最新版本时,可以检测本地是否记录有目标数据的逻辑地址,若从节点本地记录有目标数据的逻辑地址,则将该逻辑地址对应的数据替换为目标数据的最新版本;若从节点本地未记录有目标数据的逻辑地址,则在该逻辑地址对应的物理地址中存储目标数据的最新版本,以使得该物理地址中仅存储有目标数据的最新版本。
在步骤307和步骤308中每个从节点发送的存储反馈信息可以不包括:目标数据的索引,而是包括目标数据的逻辑地址。
在步骤309和步骤310中,主节点向从节点发送的指示信息可以不包括:目标数据的索引,而是包括目标数据的逻辑地址。
在步骤312中第一从节点可以不确定目标数据的索引,并查找目标数据的索引对应的目标数据的最新版本,而是查找目标数据的逻辑地址对应的目标数据的最新版本。
可选的,步骤305和步骤306中,每个从节点在接收到主节点发送的目标数据的最新版本以及目标数据的索引时,还可以不进行数据的替换,而是直接将目标数据的最新版本进行存储。这样一来,该从节点就存储了目标数据的每个版本。
此时,第一从节点还可以在步骤311之后不执行步骤312和步骤313。而是在步骤311之后,第一从节点可以根据目标数据的逻辑地址,在本地查找到目标数据的所有版本。之后,第一从节点需要在该目标数据的所有版本中查找到最新版本,并检测每个从节点是否均已经存储目标数据的最新版本。在确定每个从节点均已经存储目标数据的最新版本时,第一从节点可以将查找到的目标数据的最新版本发送给终端。在每个从节点并未均已经存储目标数据的最新版本时,第一从节点可以在目标数据的所有版本中查找到次新版本,并检测每个从节点是否均已经存储目标数据的次新版本。在每个从节点并未均已经存储目标数据的次新版本时,第一从节点可以将目标数据的次新版本发送给终端。
也即,第一从节点可以在目标数据的所有版本中,从最新版本开始,依次检测每个版本是否满足条件,该条件可以为每个从节点均已经存储目标数据的该版本。之后,第一从节点可以将该满足条件的目标数据的版本发送至终端。
示例的,假设节点1为主节点,节点2和节点3均为从节点。节点1在接收到用于写入目标数据的每个版本的数据写入请求时,节点1可以将该目标数据的该版本进行存储,并将该目标数据的该版本复制到每个从节点。终端发送数据读取请求的时间不固定,在节点2接收到用于读取目标数据的数据读取请求后,可以在本地查找目标数据的所有版本,之后,从最新版本开始,检测每个从节点是否均已经存储目标数据的该版本,直至节点2检测到每个从节点是否均已经存储目标数据的某一版本。最后,节点2可以将目标数据的该版本发送给终端。
另外,当主节点接收到终端发送的数据读取请求时,主节点可以获取该数据读取请求中的逻辑地址,并确定该逻辑地址对应的索引,之后,查找该索引对应的目标数据的所有版本。主节点还可以从最新版本开始,依次检测目标数据的所有版本中的每个版本是否均已经存储在每个从节点。其中,主节点在检测每个从节点是否均存储有目标数据的某一版本时,可以检测每个从节点是否均已反馈目标数据的该版本已存储在本地,当确定每个从节点已经反馈了目标数据的该版本已存储在本地时,可以确定每个从节点均存储有目标数据的该版本。当确定每个从节点均存储有目标数据的某一版本后,主节点可以停止对所有版本中的剩余版本进行判断,并将该目标数据的该某一版本发送给终端。
图4为本发明实施例提供的一种数据读取装置的结构示意图,该数据读取装置可以应用于图1中分布式系统中的第一从节点,其中,该第一从节点为分布式系统的多个从节点中的任一从节点,如图4所示,该数据读取装置40可以包括:
第一接收模块401,用于接收终端发送的数据读取请求,数据读取请求包括目标数据的逻辑地址;
查找模块402,用于根据逻辑地址,在第一从节点本地查找目标数据的最新版本;
发送模块403,用于在确定多个从节点中的每个从节点均已保存目标数据的最新版本时,向终端发送目标数据的最新版本。
综上所述,由于本发明实施例提供的数据读取装置中,在接收模块接收到数据读取请求后,查找模块可以根据该数据读取请求查找目标数据的最新版本,发送模块在确定每个从节点均已保存该最新版本后,将该目标数据的最新版本发送给终端。假设在第一从节点复制完成目标数据的最新版本,且第二从节点还未复制完成目标数据的最新版本时,若终端依次从第一从节点和第二从节点读取目标数据,则在第一从节点和第二从节点上均能够读取到的目标数据的最新版本。就能够保证终端每次读取到的目标数据的版本均不比之前读取到的目标数据的版本旧,从而避免了读取到数据的版本发生回退的现象。
可选的,图5为本发明实施例提供的另一种数据读取装置的结构示意图,如图5所示,在图4的基础上,该数据读取装置40还可以包括:
第二接收模块404,用于接收主节点发送的指示信息,指示信息用于指示多个从节点中的每个从节点均已保存目标数据的最新版本。
可选的,查找模块402可以用于:根据逻辑地址获取目标数据的索引;根据目标数据的索引,在第一从节点本地查找索引对应的目标数据的最新版本。
可选的,如图5所示,该数据读取装置40还可以包括:
第三接收模块405,用于接收主节点发送目标数据的最新版本以及索引;
替换模块406,用于在第一从节点本地保存有索引对应的数据时,将第一从节点本地保存的索引对应的数据替换为目标数据的最新版本;
反馈模块407,用于向主节点反馈目标数据的最新版本已经保存在本地。
可选的,如图5所示,该数据读取装置40还可以包括:
第四接收模块408,用于在接收主节点发送的目标数据的最新版本时,接收主节点发送的最新版本的版本号;
反馈模块407可以用于:向主节点发送存储反馈信息,存储反馈信息包括:索引以及最新版本的版本号;指示信息包括:索引以及最新版本的版本号。
综上所述,由于本发明实施例提供的数据读取装置中,在接收模块接收到数据读取请求后,查找模块可以根据该数据读取请求查找目标数据的最新版本,发送模块在确定每个从节点均已保存该最新版本后,将该目标数据的最新版本发送给终端。假设在第一从节点复制完成目标数据的最新版本,且第二从节点还未复制完成目标数据的最新版本时,若终端依次从第一从节点和第二从节点读取目标数据,则在第一从节点和第二从节点上均能够读取到的目标数据的最新版本。就能够保证终端每次读取到的目标数据的版本均不比之前读取到的目标数据的版本旧,从而避免了读取到数据的版本发生回退的现象。
并且,每个节点均只需要存储目标数据的最新版本即可,因此每个节点中存储的数据较少,分布式系统的负载较小。另外,当终端在从节点上读取目标数据时,若该从节点存储有该目标数据的最新版本,且确定每个从节点均已经存储该最新版本,则可以立即将该目标数据的最新版本发送给终端,从而使得终端能够快速读取到目标数据的最新版本,减少了数据读取时延。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。
需要说明的是,本发明实施例提供的方法实施例能够与相应的装置实施例相互参考,本发明实施例对此不做限定。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种数据读取方法,其特征在于,所述方法应用于分布式系统中的第一从节点,所述分布式系统包括:主节点和多个从节点,所述第一从节点为所述多个从节点中的任一从节点,所述方法包括:
接收终端发送的数据读取请求,所述数据读取请求包括目标数据的逻辑地址;
根据所述逻辑地址,在所述第一从节点本地查找所述目标数据的最新版本;
在确定所述多个从节点中的每个从节点均已保存所述目标数据的最新版本时,向所述终端发送所述目标数据的最新版本。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述主节点发送的指示信息,所述指示信息用于指示所述多个从节点中的每个从节点均已保存所述目标数据的最新版本。
3.根据权利要求1或2所述的方法,其特征在于,根据所述逻辑地址,在所述第一从节点本地查找所述目标数据的最新版本,包括:
根据所述逻辑地址获取所述目标数据的索引;
根据所述目标数据的索引,在所述第一从节点本地查找所述索引对应的目标数据的最新版本。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
接收所述主节点发送所述目标数据的最新版本以及所述索引;
在所述第一从节点本地保存有所述索引对应的数据时,将所述第一从节点本地保存的所述索引对应的数据替换为所述目标数据的最新版本;
向所述主节点反馈所述目标数据的最新版本已经保存在本地。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在接收所述主节点发送的所述目标数据的最新版本时,接收所述主节点发送的所述最新版本的版本号;
向所述主节点反馈所述目标数据的最新版本已经保存在本地,包括:向所述主节点发送存储反馈信息,所述存储反馈信息包括:所述索引以及所述最新版本的版本号;
所述指示信息包括:所述索引以及所述最新版本的版本号。
6.一种数据读取装置,其特征在于,所述数据读取装置应用于分布式系统中的第一从节点,所述分布式系统包括:主节点和多个从节点,所述第一从节点为所述多个从节点中的任一从节点,所述数据读取装置包括:
第一接收模块,用于接收终端发送的数据读取请求,所述数据读取请求包括目标数据的逻辑地址;
查找模块,用于根据所述逻辑地址,在所述第一从节点本地查找所述目标数据的最新版本;
发送模块,用于在确定所述多个从节点中的每个从节点均已保存所述目标数据的最新版本时,向所述终端发送所述目标数据的最新版本。
7.根据权利要求6所述的数据读取装置,其特征在于,所述数据读取装置还包括:
第二接收模块,用于接收所述主节点发送的指示信息,所述指示信息用于指示所述多个从节点中的每个从节点均已保存所述目标数据的最新版本。
8.根据权利要求6或7所述的数据读取装置,其特征在于,所述查找模块用于:
根据所述逻辑地址获取所述目标数据的索引;
根据所述目标数据的索引,在所述第一从节点本地查找所述索引对应的目标数据的最新版本。
9.根据权利要求8所述的数据读取装置,其特征在于,所述数据读取装置还包括:
第三接收模块,用于接收所述主节点发送所述目标数据的最新版本以及所述索引;
替换模块,用于在所述第一从节点本地保存有所述索引对应的数据时,将所述第一从节点本地保存的所述索引对应的数据替换为所述目标数据的最新版本;
反馈模块,用于向所述主节点反馈所述目标数据的最新版本已经保存在本地。
10.根据权利要求9所述的数据读取装置,其特征在于,所述数据读取装置还包括:
第四接收模块,用于在接收所述主节点发送的所述目标数据的最新版本时,接收所述主节点发送的所述最新版本的版本号;
所述反馈模块用于:向所述主节点发送存储反馈信息,所述存储反馈信息包括:所述索引以及所述最新版本的版本号;
所述指示信息包括:所述索引以及所述最新版本的版本号。
11.一种分布式系统,其特征在于,所述分布式系统包括:主节点和多个从节点,所述多个从节点中的任一从节点包括权利要求6至10任一所述的数据读取装置。
12.一种数据读取系统,其特征在于,所述数据读取系统包括:终端,以及权利要求11所述的分布式系统。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述计算机可读存储介质在计算机上运行时,使得计算机执行如权利要求1至5任一所述的数据读取方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810895151.6A CN110825309B (zh) | 2018-08-08 | 2018-08-08 | 数据读取方法、装置及系统、分布式系统 |
EP19847477.7A EP3822763A4 (en) | 2018-08-08 | 2019-03-23 | DATA READING METHOD, DEVICE, SYSTEM AND DISTRIBUTED SYSTEM |
PCT/CN2019/079389 WO2020029588A1 (zh) | 2018-08-08 | 2019-03-23 | 数据读取方法、装置及系统、分布式系统 |
US17/166,233 US11455117B2 (en) | 2018-08-08 | 2021-02-03 | Data reading method, apparatus, and system, avoiding version rollback issues in distributed system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810895151.6A CN110825309B (zh) | 2018-08-08 | 2018-08-08 | 数据读取方法、装置及系统、分布式系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825309A true CN110825309A (zh) | 2020-02-21 |
CN110825309B CN110825309B (zh) | 2021-06-29 |
Family
ID=69413255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810895151.6A Active CN110825309B (zh) | 2018-08-08 | 2018-08-08 | 数据读取方法、装置及系统、分布式系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11455117B2 (zh) |
EP (1) | EP3822763A4 (zh) |
CN (1) | CN110825309B (zh) |
WO (1) | WO2020029588A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778331A (zh) * | 2021-08-12 | 2021-12-10 | 联想凌拓科技有限公司 | 一种数据处理方法、主节点及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656501B (zh) * | 2021-08-18 | 2024-01-12 | 北京百度网讯科技有限公司 | 一种数据读取方法、装置、设备以及存储介质 |
CN114594914B (zh) * | 2022-03-17 | 2024-04-02 | 阿里巴巴(中国)有限公司 | 用于分布式存储系统的控制方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8010485B1 (en) * | 2005-10-20 | 2011-08-30 | American Megatrends, Inc. | Background movement of data between nodes in a storage cluster |
CN103530362A (zh) * | 2013-10-12 | 2014-01-22 | 清华大学 | 一种用于多副本分布式系统的计算机数据读写方法 |
CN103729352A (zh) * | 2012-10-10 | 2014-04-16 | 腾讯科技(深圳)有限公司 | 分布式文件系统对多个副本数据进行处理的方法及该系统 |
CN104348913A (zh) * | 2014-10-28 | 2015-02-11 | 浪潮电子信息产业股份有限公司 | 一种紧耦合可扩展的大数据交互方法 |
CN105468302A (zh) * | 2015-11-23 | 2016-04-06 | 华为技术有限公司 | 一种处理数据的方法、装置及系统 |
WO2016065610A1 (zh) * | 2014-10-31 | 2016-05-06 | 华为技术有限公司 | 访问文件的方法、分布式存储系统和存储节点 |
US20160246676A1 (en) * | 2015-02-20 | 2016-08-25 | Netapp, Inc. | Methods for policy-based hierarchical data protection and devices thereof |
CN106980476A (zh) * | 2017-04-01 | 2017-07-25 | 广东浪潮大数据研究有限公司 | 一种分布式系统的数据一致性方法及装置 |
US20170228291A1 (en) * | 2014-08-27 | 2017-08-10 | Mokhtarzada Holdings, Llc | Method and system for expanding storage capacity of a drive using cloud storage systems |
CN108228750A (zh) * | 2017-12-21 | 2018-06-29 | 浪潮软件股份有限公司 | 一种分布式数据库及其对数据进行管理的方法 |
CN108234641A (zh) * | 2017-12-29 | 2018-06-29 | 北京奇虎科技有限公司 | 基于分布式一致性协议实现的数据读写方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7363444B2 (en) * | 2005-01-10 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Method for taking snapshots of data |
EP2555129B1 (en) * | 2011-08-03 | 2019-02-06 | Amadeus S.A.S. | Method and system to maintain strong consistency of distributed replicated contents in a client/server system |
WO2013107029A1 (zh) * | 2012-01-19 | 2013-07-25 | 华为技术有限公司 | 一种基于块存储的数据处理方法、装置及系统 |
US8793527B1 (en) * | 2013-02-28 | 2014-07-29 | Peaxy, Inc. | Apparatus and method for handling partially inconsistent states among members of a cluster in an erratic storage network |
KR20170027820A (ko) * | 2014-07-03 | 2017-03-10 | 아틀라스 콥코 인더스트리얼 테크니크 에이비 | 툴 통신 네트워크의 방법, 노드 및 컴퓨터 프로그램 |
US9471448B2 (en) * | 2014-12-10 | 2016-10-18 | Intel Corporation | Performing an atomic write operation across multiple storage devices |
CN106406758B (zh) * | 2016-09-05 | 2019-06-18 | 华为技术有限公司 | 一种基于分布式存储系统的数据处理方法及存储设备 |
US10366106B2 (en) * | 2016-12-09 | 2019-07-30 | Sap Se | Quorum-based replication of data records |
CN108183965A (zh) * | 2018-01-15 | 2018-06-19 | 郑州云海信息技术有限公司 | 一种数据同步方法、装置、设备、系统及可读存储介质 |
US11010087B2 (en) * | 2019-03-29 | 2021-05-18 | Atlassian Pty Ltd. | System and method for consistent mirroring in a cluster |
-
2018
- 2018-08-08 CN CN201810895151.6A patent/CN110825309B/zh active Active
-
2019
- 2019-03-23 EP EP19847477.7A patent/EP3822763A4/en active Pending
- 2019-03-23 WO PCT/CN2019/079389 patent/WO2020029588A1/zh unknown
-
2021
- 2021-02-03 US US17/166,233 patent/US11455117B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8010485B1 (en) * | 2005-10-20 | 2011-08-30 | American Megatrends, Inc. | Background movement of data between nodes in a storage cluster |
CN103729352A (zh) * | 2012-10-10 | 2014-04-16 | 腾讯科技(深圳)有限公司 | 分布式文件系统对多个副本数据进行处理的方法及该系统 |
CN103530362A (zh) * | 2013-10-12 | 2014-01-22 | 清华大学 | 一种用于多副本分布式系统的计算机数据读写方法 |
US20170228291A1 (en) * | 2014-08-27 | 2017-08-10 | Mokhtarzada Holdings, Llc | Method and system for expanding storage capacity of a drive using cloud storage systems |
CN104348913A (zh) * | 2014-10-28 | 2015-02-11 | 浪潮电子信息产业股份有限公司 | 一种紧耦合可扩展的大数据交互方法 |
WO2016065610A1 (zh) * | 2014-10-31 | 2016-05-06 | 华为技术有限公司 | 访问文件的方法、分布式存储系统和存储节点 |
US20160246676A1 (en) * | 2015-02-20 | 2016-08-25 | Netapp, Inc. | Methods for policy-based hierarchical data protection and devices thereof |
CN105468302A (zh) * | 2015-11-23 | 2016-04-06 | 华为技术有限公司 | 一种处理数据的方法、装置及系统 |
CN106980476A (zh) * | 2017-04-01 | 2017-07-25 | 广东浪潮大数据研究有限公司 | 一种分布式系统的数据一致性方法及装置 |
CN108228750A (zh) * | 2017-12-21 | 2018-06-29 | 浪潮软件股份有限公司 | 一种分布式数据库及其对数据进行管理的方法 |
CN108234641A (zh) * | 2017-12-29 | 2018-06-29 | 北京奇虎科技有限公司 | 基于分布式一致性协议实现的数据读写方法及装置 |
Non-Patent Citations (2)
Title |
---|
徐高潮: "《分布计算系统》", 31 January 2004 * |
韦鹏程: "《基于虚拟化技术的云计算架构的技术与实践探究》", 30 June 2018 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778331A (zh) * | 2021-08-12 | 2021-12-10 | 联想凌拓科技有限公司 | 一种数据处理方法、主节点及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3822763A1 (en) | 2021-05-19 |
EP3822763A4 (en) | 2021-10-20 |
US11455117B2 (en) | 2022-09-27 |
CN110825309B (zh) | 2021-06-29 |
WO2020029588A1 (zh) | 2020-02-13 |
US20210157513A1 (en) | 2021-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11455117B2 (en) | Data reading method, apparatus, and system, avoiding version rollback issues in distributed system | |
US9015695B2 (en) | Information processing apparatus and information processing method | |
CN107786638B (zh) | 一种数据处理方法、装置及系统 | |
CN107315825B (zh) | 一种索引更新系统、方法及装置 | |
US10831612B2 (en) | Primary node-standby node data transmission method, control node, and database system | |
CN104935654A (zh) | 一种服务器集群系统中的缓存方法、写入点客户端和读客户端 | |
US11868631B2 (en) | System startup method and related device | |
CN109302448B (zh) | 一种数据处理方法及装置 | |
CN113806301A (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN109600254B (zh) | 全链路日志的生成方法及相关系统 | |
US20220107752A1 (en) | Data access method and apparatus | |
CN107493309B (zh) | 一种分布式系统中的文件写入方法及装置 | |
CN112000850B (zh) | 进行数据处理的方法、装置、系统及设备 | |
CN107547605B (zh) | 一种基于节点队列的消息读写方法及节点设备 | |
CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN116540938A (zh) | 数据读取方法、装置、分布式存储系统、设备和存储介质 | |
CN103902230A (zh) | 一种数据处理方法、设备和系统 | |
CN113448971A (zh) | 基于分布式系统的数据更新方法、计算节点和存储介质 | |
CN107305582B (zh) | 一种元数据处理方法及装置 | |
CN112131478B (zh) | 交易检测方法及装置 | |
CN111666484B (zh) | 内容推送方法、推送装置及计算机可读存储介质 | |
CN114003842A (zh) | 表单处理方法、装置、电子设备及计算机可读存储介质 | |
US20150100573A1 (en) | Method for processing data | |
CN114328521A (zh) | 索引库的更新方法及装置 | |
CN115563030A (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 |