CN117440002A - 一种数据处理方法及分布式存储系统 - Google Patents

一种数据处理方法及分布式存储系统 Download PDF

Info

Publication number
CN117440002A
CN117440002A CN202210818401.2A CN202210818401A CN117440002A CN 117440002 A CN117440002 A CN 117440002A CN 202210818401 A CN202210818401 A CN 202210818401A CN 117440002 A CN117440002 A CN 117440002A
Authority
CN
China
Prior art keywords
identifier
storage node
data
client
read request
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
CN202210818401.2A
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies 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 Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202210818401.2A priority Critical patent/CN117440002A/zh
Publication of CN117440002A publication Critical patent/CN117440002A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据处理方法及分布式存储系统,涉及数据存储技术领域。该数据处理方法用于降低分布式存储系统的处理工作量。该方法应用于分布式存储系统中,分布式存储系统包括第一存储节点和第二存储节点。在该方法中,第一存储节点可关联存储第一标识更新后的第二标识和第一数据的第一标识,或者关联存储第一标识以及第一数据之前所属的存储节点(即第二存储节点)的标识(即第二标识),而不必存储第一数据,其中,第一标识与第一数据关联存储在第二存储节点中。由于无需第二存储节点将第一数据迁移至第一存储节点中,因此减少了分布式存储系统的处理工作量,有利于降低分布式存储系统的资源开销。

Description

一种数据处理方法及分布式存储系统
技术领域
本申请涉及数据存储技术领域,尤其涉及一种数据处理方法及分布式存储系统。
背景技术
分布式存储系统包括多个存储节点(node),这多个存储节点均可采用一致性哈希(consistent hash)算法(又可以称为一致性哈希规则)存储数据。当客户端需将数据D1存储到分布式存储系统时,客户端可按照一致性哈希算法,根据数据D1的标识确定对应的存储节点,例如对应的存储节点为这多个存储节点中的存储节点n1,客户端可将数据D1的标识以及将数据D1发送给存储节点n1,以将标识和数据D1存储在存储节点n1中。同理,当客户端需要从分布式存储系统中获取数据D1时,可按照一致性哈希算法,根据数据D1的标识确定数据D1对应的存储节点n1,并从存储节点n1获取数据D1。
目前,在数据D1的标识发生更新(或变化)的情况下,按照一致性哈系算法,数据D1对应的存储节点可能从存储节点n1变更为这多个存储节点中的存储节点n2。这种情况下,需客户端将数据D1的更新标识发送给存储节点n2,进而存储节点n2从存储节点n1请求数据D1,使得数据D1从存储节点n1迁移到存储节点n2中,这样客户端才能按照一致性哈希算法,根据数据D1的更新标识从存储节点n2获取数据D1。数据迁移过程增加了分布式存储系统的工作量,也带来了一定的传输开销。尤其是待迁移的数据量较大的情况下,工作量和传输开销也就越大。
发明内容
本申请提供一种数据处理方法及分布式存储系统,用于减小分布式存储系统的处理工作量和传输开销。
第一方面,本申请实施例提供一种数据处理方法,该方法可由分布式存储系统执行。分布式存储系统包括多个存储节点。例如这多个存储节点包括第一存储节点和第二存储节点。所述方法包括:所述第一存储节点接收第一写请求,所述第一写请求用于请求写入第一标识和第二标识,所述第一标识为第一数据的标识,所述第一标识与所述第一数据关联存储在所述第二存储节点中,所述第二标识为所述第一标识更新后的标识,或者为所述第二存储节点的标识,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述第二标识与所述第一存储节点对应,所述第一标识与所述第二存储节点对应;所述第一存储节点关联存储所述第二标识与所述第一标识。
在本申请实施例中提供了两种数据处理方案,在第一种数据处理方案下,当第一数据的标识从第一标识更新为第二标识时,第二标识对应的第一存储节点可关联存储第二标识与第一标识,而第一数据可继续存储在与第一标识对应的第二存储节点中。在客户端获取第一数据时,分布式存储系统可基于第二标识将第一数据反馈给客户端。可见,本申请实施例分布式存储系统可以不必进行数据迁移,减小了分布式存储系统中的数据迁移量,也就降低了分布式存储系统的处理工作量,节省了分布式存储系统的功耗,也降低了分布式存储系统迁移数据所带来的传输开销。在第二种数据处理方案下,例如分布式存储系统中的存储节点的数量发生变化等原因,可能导致第一数据所属的存储节点也发生变化,这种情况下,第一数据当前所属的第一存储节点可存储第一数据之前所属的存储节点(即第二存储节点)的标识(即第二标识),后续客户端可基于该第二标识从分布式存储系统中获取第一数据,无需第一存储节点将第一数据迁移至第二存储节点,减少了分布式存储系统的处理量。
在一种可能的实施方式中,所述第一标识和所述第一数据继续关联存储在所述第二存储节点中;或者,所述方法还包括:所述第二存储节点不将所述第一数据迁移到所述第一存储节点中。
在上述实施方式中,第二存储节点继续关联存储第一标识与第一数据,第二存储节点无需将第一数据迁移至第一存储节点,降低了分布式存储系统的处理工作量。
在一种可能的实施方式中,所述方法还包括:所述第二存储节点接收第二写请求,所述第二写请求用于请求写入所述第一标识和第三标识,所述第三标识为所述第一存储节点的标识或者为所述第二标识;所述第二存储节点关联存储所述第一标识与所述第三标识。
在上述实施方式中,在第三标识为第二标识的情况下,第二存储节点也可关联存储第一标识与第三标识(即第二标识),便于后续其他设备或节点(如第一存储节点)根据第一标识和第三标识(即第二标识)向第二存储节点请求第一数据。并且,第二存储节点可确定第二存储节点存储的第三标识(即第二标识)与其他设备或节点请求的数据的第三标识(即第二标识)相同,相当于第二存储节点确定其他设备或节点所请求的第一数据,保证第二存储节点向其他设备或节点反馈的第一数据是其他设备所请求的第一数据,相当于保证了第二存储节点向其他设备或节点反馈的第一数据的准确性。或者,在第三标识为第一存储节点的标识的情况下,第二存储节点也可存储第一标识和第三标识(即第一存储节点的标识),便后续于第二存储节点根据第二存储节点的标识,以及来自第一存储节点的读请求中的第三标识,验证第一存储节点的身份。
在一种可能的实施方式中,所述第二标识为所述第一标识更新后的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第二标识;所述第一存储节点向所述客户端发送响应消息,所述响应消息包括所述第一标识;所述第二存储节点接收来自所述客户端的第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;所述第二存储节点向所述客户端发送所述第一数据。
上述实施方式提供客户端从分布式存储系统获取第一数据的一种方式,在上述实施方式中,客户端向分布式存储系统请求第一数据的过程中,无需第一存储节点和第二存储节点之间传输第一数据,有利于减少分布式存储系统的处理工作量,也就避免了第一存储节点和第二存储节点之间传输第一数据所需的时间,也有利于提高客户端从分布式存储系统获得第一数据的效率。
在一种可能的实施方式中,所述第二标识为所述第一标识更新后的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第二标识;所述第一存储节点向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;所述第二存储节点向所述第一存储节点发送所述第一数据;所述第一存储节点向所述客户端发送所述第一数据。
上述实施方式提供客户端从分布式存储系统获取第一数据的一种方式,在上述实施方式中,客户端只需向第一存储节点发送一个读请求,便可从第一存储节点获取第一数据,减少了客户端发起的读请求的次数,有利于减少客户端的处理工作量。
在一种可能的实施方式中,所述第二标识为所述第一标识更新后的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第二标识;所述第一存储节点向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识以及所述客户端的标识;所述第二存储节点向所述客户端发送所述第一数据。
上述实施方式提供客户端从分布式存储获取第一数据的一种方式,在上述实施方式中,客户端只需向第一存储节点发送一个读请求,便可从第二存储节点获取第一数据,减少了客户端发起的读请求的次数,有利于减少客户端的处理工作量。并且,第一存储节点和第二存储节点之间无需传输第一数据,有利于减少分布式存储系统之间的数据传输量,也避免了第一存储节点和第二存储节点之间传输第一数据所需的时间,有利于客户端快速获得第一数据。
在一种可能的实施方式中,所述第二标识为所述第二存储节点的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第一标识;所述第一存储节点向所述客户端发送响应消息,所述响应消息包括所述第二标识;所述第二存储节点接收来自所述客户端的第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;所述第二存储节点向所述客户端发送所述第一数据。
在上述实施方式中,如果第二标识为第二存储节点的标识,那么第一存储节点接收来自客户端的读请求之后,可向客户端反馈第二标识,客户端根据第二标识,从而第二存储节点获取第一数据,无需第一存储节点和第二存储节点之间交互数据,减少了分布式存储系统的处理量。
在一种可能的实施方式中,所述第二标识为所述第二存储节点的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第一标识;所述第一存储节点根据所述第二标识,向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;所述第二存储节点向所述第一存储节点发送所述第一数据;所述第一存储节点向所述客户端发送所述第一数据。
在上述实施方式中,如果第二标识为第二存储节点的标识,那么第一存储节点接收来自客户端的读请求之后,可向根据第二标识,从而第二存储节点获取第一数据,进而向客户端反馈第一数据,减少了客户端向分布式存储系统发起的读请求的个数。
在一种可能的实施方式中,所述第二标识为所述第二存储节点的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第一标识;所述第一存储节点根据所述第二标识,向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识以及所述客户端的标识;所述第二存储节点向所述客户端发送所述第一数据。
在上述实施方式中,如果第二标识为第二存储节点的标识,那么第一存储节点接收来自客户端的读请求之后,可向根据第二标识,通知第二存储节点向客户端反馈第一数据,无需第一存储节点和第二存储节点之间交互数据,且客户端只需向分布式存储系统发送一个读请求,有利于减少分布式存储系统和客户端的处理量。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一删除请求,所述第一删除请求用于请求删除第一数据;所述第一存储节点删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据;所述第二存储节点删除关联存储的所述第一标识和所述第一数据。
在上述实施方式中,客户端可向第一存储节点请求删除第一数据,第一存储节点可删除第一存储节点存储的第二标识和第一标识,并且第一存储节点还可通知第二存储节点删除第一数据。如此,客户端只需发送一个删除请求,便可删除分布式存储系统中的与第一数据相关的数据(包括第一标识、第二标识以及第一数据等),不仅可及时释放分布式存储系统中的与第一数据相关的数据占用的存储空间,还有利于减少客户端的处理工作量。
在一种可能的实施方式中,所述方法还包括:如果所述第二存储节点关联存储所述第一标识和所述第一数据的时长达到第一预设时长,所述第二存储节点删除关联存储的所述第一标识和所述第一数据;和/或,如果所述第一存储节点关联存储所述第二标识和所述第一标识的时长达到第二预设时长,所述第一存储节点删除关联存储的所述第二标识和所述第一标识。
在上述实施方式中,第一预设时长和第二预设时长可以相同或不同,第二存储节点可支持主动删除存储的第二标识和第一标识,和/或第一存储节点可支持主动删除关联存储的第一标识和第一数据,可及时分布式存储系统中的存储空间。并且,无需客户端触发删除,有利于减少客户端的处理工作量。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点确定所述第一标识的哈希值;所述第一存储节点根据所述第一标识的哈希值,确定所述第二存储节点的地址。
在上述实施方式中,提供一种第一存储节点确定第二存储节点的地址的方式。在上述实施方式中,第一存储节点可根据第一标识,确定第二存储节点的地址,便于第一存储节点和第二存储节点之间的通信。
第二方面,本申请实施例提供一种数据处理方法,所述方法可由分布式存储系统执行。所述分布式存储系统包括多个存储节点。例如这多个存储节点包括第一存储节点和第二存储节点。所述方法包括:所述第二存储节点关联存储第一标识与第一数据,所述第一标识为所述第一数据的标识,所述第一标识与所述第二存储节点对应;所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括第二标识,所述第二标识为所述第一标识更新后的标识,所述第二标识与所述第一存储节点对应;所述第一存储节点向所述客户端发送响应消息,所述响应消息包括所述第一标识;所述第二存储节点接收来自所述客户端的第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;所述第二存储节点向所述客户端发送所述第一数据。
在上述实施方式中,在第一数据的标识从第一标识更新为第二标识的情况下,第一标识对应的第二存储节点无需将第一数据迁移至第二标识对应的第一存储节点,第二存储节点可继续关联存储第一标识与第一数据,减少了分布式存储系统的数据迁移量,也减小了分布式存储系统的处理工作量。并且,在客户端发起读请求的情况下,无需第一存储节点和第二存储节点之间传输第一数据,有利于减少分布式存储系统中的数据传输量,也就有利于提高客户端获取第一数据的效率。
在一种可能的实施方式中,所述方法包括:所述第一存储节点接收第一写请求,所述第一写请求用于请求写入所述第一标识和所述第二标识;所述第一存储节点关联存储所述第二标识与所述第一标识。
在一种可能的实施方式中,所述方法还包括:所述第二存储节点接收第二写请求,所述第二写请求用于请求写入所述第一标识和第二标识;所述第二存储节点关联存储所述第一标识与所述第二标识。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一删除请求,所述第一删除请求用于请求删除第一数据;所述第一存储节点删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据;所述第二存储节点删除关联存储的所述第一标识和所述第一数据。
在一种可能的实施方式中,如果所述第二存储节点关联存储所述第一标识和所述第一数据的时长达到第一预设时长,所述第二存储节点删除关联存储的所述第一标识和所述第一数据;和/或,如果所述第一存储节点关联存储所述第二标识和所述第一标识的时长达到第二预设时长,所述第一存储节点删除关联存储的所述第二标识和所述第一标识。
第三方面,本申请实施例提供一种数据处理方法,所述方法可由分布式存储系统执行。分布式存储系统包括多个存储节点。例如这多个存储节点包括第一存储节点和第二存储节点。所述方法包括:所述第二存储节点关联存储第一标识与第一数据,所述第一标识为所述第一数据的标识,所述第一标识与所述第二存储节点对应;所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括第二标识,所述第二标识为所述第一标识更新后的标识,所述第二标识与所述第一存储节点对应;所述第一存储节点向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;所述第二存储节点向所述第一存储节点发送所述第一数据;所述第一存储节点向所述客户端发送所述第一数据。
在上述实施方式中,在第一数据对应的标识更新的情况下,无需迁移第一数据,从而减少了分布式存储系统的数据迁移量。并且,客户端只需向第一存储节点请求第一数据,便可从第一存储节点获取第一数据,有利于减小客户端的处理工作量。
在一种可能的实施方式中,所述方法包括:所述第一存储节点接收第一写请求,所述第一写请求用于请求写入所述第一标识和所述第二标识;所述第一存储节点关联存储所述第二标识与所述第一标识。
在一种可能的实施方式中,所述方法还包括:所述第二存储节点接收第二写请求,所述第二写请求用于请求写入所述第一标识和第二标识;所述第二存储节点关联存储所述第一标识与所述第二标识。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一删除请求,所述第一删除请求用于请求删除第一数据;所述第一存储节点删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据;所述第二存储节点删除关联存储的所述第一标识和所述第一数据。
在一种可能的实施方式中,如果所述第二存储节点关联存储所述第一标识和所述第一数据的时长达到第一预设时长,所述第二存储节点删除关联存储的所述第一标识和所述第一数据;和/或,如果所述第一存储节点关联存储所述第二标识和所述第一标识的时长达到第二预设时长,所述第一存储节点删除关联存储的所述第二标识和所述第一标识。
第四方面,本申请实施例提供一种数据处理方法,所述方法可由分布式存储系统执行。分布式存储系统包括多个存储节点。例如这多个存储节点包括第一存储节点和第二存储节点。所述方法包括:所述第二存储节点关联存储第一标识与第一数据,所述第一标识为所述第一数据的标识,所述第一标识与所述第二存储节点对应;所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括第二标识,所述第二标识为所述第一标识更新后的标识,所述第二标识与所述第一存储节点对应;所述第一存储节点向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识以及所述客户端的标识;所述第二存储节点向所述客户端发送所述第一数据。
在上述实施方式中,在第一数据对应的标识更新的情况下,无需迁移第一数据,从而减少了分布式存储系统的数据迁移量。并且,客户端只需向第一存储节点请求第一数据,便可从第二存储节点获取第一数据,有利于减小客户端的处理工作量。另外,第一存储节点和第二存储节点之间无需传输第一数据,减少了分布式存储系统传输的数据量。
在一种可能的实施方式中,所述方法包括:所述第一存储节点接收第一写请求,所述第一写请求用于请求写入所述第一标识和所述第二标识;所述第一存储节点关联存储所述第二标识与所述第一标识。
在一种可能的实施方式中,所述方法还包括:所述第二存储节点接收第二写请求,所述第二写请求用于请求写入所述第一标识和第二标识;所述第二存储节点关联存储所述第一标识与所述第二标识。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一删除请求,所述第一删除请求用于请求删除第一数据;所述第一存储节点删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据;所述第二存储节点删除关联存储的所述第一标识和所述第一数据。
在一种可能的实施方式中,所述方法还包括:如果所述第二存储节点关联存储所述第一标识和所述第一数据的时长达到第一预设时长,所述第二存储节点删除关联存储的所述第一标识和所述第一数据;和/或,如果所述第一存储节点关联存储所述第二标识和所述第一标识的时长达到第二预设时长,所述第一存储节点删除关联存储的所述第二标识和所述第一标识。
第五方面,本申请实施例提供一种数据处理方法,所述方法可由分布式存储系统执行。分布式存储系统包括多个存储节点,例如这多个存储节点包括第一存储节点和第二存储节点。所述方法包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取第一数据,且所述第一读请求包括第一标识,所述第一标识为所述第一数据的标识,所述第一标识和所述第一数据关联存储在所述第二存储节点中;所述第一存储节点向所述客户端发送响应消息,所述响应消息包括第二标识,所述第二标识为所述第二存储节点的标识;所述第二存储节点接收来自所述客户端的第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;所述第二存储节点向所述客户端发送所述第一数据。
在一种可能的实施方式中,所述第一标识和所述第一数据继续关联存储在所述第二存储节点中;或者,所述方法还包括:所述第二存储节点不将所述第一数据迁移到所述第一存储节点中。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一写请求,所述第一写请求用于请求写入所述第一标识和所述第二标识;所述第一存储节点关联存储所述第二标识与所述第一标识。
在一种可能的实施方式中,所述方法还包括:所述第二存储节点接收第二写请求,所述第二写请求用于请求写入所述第一标识和第三标识,所述第三标识为所述第一存储节点的标识;所述第二存储节点关联存储所述第一标识与所述第三标识。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一删除请求,所述第一删除请求用于请求删除第一数据;所述第一存储节点删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据;所述第二存储节点删除关联存储的所述第一标识和所述第一数据。
在一种可能的实施方式中,所述方法还包括:如果所述第二存储节点关联存储所述第一标识和所述第一数据的时长达到第一预设时长,所述第二存储节点删除关联存储的所述第一标识和所述第一数据;和/或,如果所述第一存储节点关联存储所述第二标识和所述第一标识的时长达到第二预设时长,所述第一存储节点删除关联存储的所述第二标识和所述第一标识。
第六方面,本申请实施例提供一种数据处理方法,所述方法可由分布式存储系统执行。分布式存储系统包括多个存储节点,例如这多个存储节点包括第一存储节点和第二存储节点。所述方法包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取第一数据,且所述第一读请求包括第一标识,所述第一标识为所述第一数据的标识;所述第一存储节点根据第二标识,向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识,所述第二标识为所述第二存储节点的标识;所述第二存储节点向所述第一存储节点发送所述第一数据;所述第一存储节点向所述客户端发送所述第一数据。
在一种可能的实施方式中,所述第一标识和所述第一数据继续关联存储在所述第二存储节点中;或者,所述方法还包括:所述第二存储节点不将所述第一数据迁移到所述第一存储节点中。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一写请求,所述第一写请求用于请求写入所述第一标识和所述第二标识;所述第一存储节点关联存储所述第二标识与所述第一标识。
在一种可能的实施方式中,所述方法还包括:所述第二存储节点接收第二写请求,所述第二写请求用于请求写入所述第一标识和第三标识,所述第三标识为所述第一存储节点的标识;所述第二存储节点关联存储所述第一标识与所述第三标识。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一删除请求,所述第一删除请求用于请求删除第一数据;所述第一存储节点删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据;所述第二存储节点删除关联存储的所述第一标识和所述第一数据。
第七方面,本申请实施例提供一种数据处理方法,所述方法可由分布式存储系统执行。分布式存储系统包括多个存储节点,例如这多个存储节点包括第一存储节点和第二存储节点。所述方法包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取第一数据,且所述第一读请求包括第一标识,所述第一标识为所述第一数据的标识;所述第一存储节点根据第二标识,向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识以及所述客户端的标识,所述第二标识为所述第二存储节点的标识;所述第二存储节点向所述客户端发送所述第一数据。
在一种可能的实施方式中,所述第一标识和所述第一数据继续关联存储在所述第二存储节点中;或者,所述方法还包括:所述第二存储节点不将所述第一数据迁移到所述第一存储节点中。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一写请求,所述第一写请求用于请求写入所述第一标识和所述第二标识;所述第一存储节点关联存储所述第二标识与所述第一标识。
在一种可能的实施方式中,所述方法还包括:所述第二存储节点接收第二写请求,所述第二写请求用于请求写入所述第一标识和第三标识,所述第三标识为所述第一存储节点的标识;所述第二存储节点关联存储所述第一标识与所述第三标识。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一删除请求,所述第一删除请求用于请求删除第一数据;所述第一存储节点删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据;所述第二存储节点删除关联存储的所述第一标识和所述第一数据。
第八方面,本申请实施例提供一种数据处理方法,所述方法可由分布式存储系统中的第一存储节点执行。所述方法包括:所述第一存储节点接收第一写请求,所述第一写请求用于请求写入第一标识和第二标识,所述第一标识为第一数据的标识,所述第一标识与所述第一数据关联存储在所述第二存储节点中,所述第二标识为所述第一标识更新后的标识,或者为所述第二存储节点的标识,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述第二标识与所述第一存储节点对应,所述第一标识与所述第二存储节点对应。
在一种可能的实施方式中,所述第一标识和所述第一数据继续关联存储在所述第二存储节点中;或者,所述方法还包括:所述第一存储节点未接收来自所述第一存储节点的所述第一数据。
在一种可能的实施方式中,所述第二标识为所述第一标识更新后的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第二标识;所述第一存储节点向所述客户端发送响应消息,所述响应消息包括所述第一标识。
在一种可能的实施方式中,所述第二标识为所述第一标识更新后的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第二标识;所述第一存储节点向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;所述第一存储节点接收来自所述第二存储节点的所述第一数据;所述第一存储节点向所述客户端发送所述第一数据。
在一种可能的实施方式中,所述第二标识为所述第一标识更新后的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第二标识;所述第一存储节点向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识以及所述客户端的标识。
在一种可能的实施方式中,所述第二标识为所述第二存储节点的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第一标识;所述第一存储节点向所述客户端发送响应消息,所述响应消息包括所述第二标识。
在一种可能的实施方式中,所述第二标识为所述第二存储节点的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第一标识;所述第一存储节点根据所述第二标识,向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;所述第一存储节点接收来自所述第二存储节点的所述第一数据;所述第一存储节点向所述客户端发送所述第一数据。
在一种可能的实施方式中,所述第二标识为所述第二存储节点的标识;所述方法还包括:所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,且所述第一读请求包括所述第一标识;所述第一存储节点根据所述第二标识,向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识以及所述客户端的标识。
在一种可能的实施方式中,所述方法还包括:所述第一存储节点接收第一删除请求,所述第一删除请求用于请求删除第一数据;所述第一存储节点删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据。
在一种可能的实施方式中,所述方法还包括:如果所述第二存储节点关联存储所述第一标识和所述第一数据的时长达到第一预设时长,所述第二存储节点删除关联存储的所述第一标识和所述第一数据;和/或,如果所述第一存储节点关联存储所述第二标识和所述第一标识的时长达到第二预设时长,所述第一存储节点删除关联存储的所述第二标识和所述第一标识。
第九方面,本申请实施例提供一种存储装置,所述存储装置可以为上述第一方面至第八方面中的第一存储节点,或者为配置在第一存储节点中的电子设备(例如,芯片系统),或者为包括第一存储节点的较大设备。所述存储装置包括用于执行上述第一方面至第八方面以及可选的实施方式中的相应的手段(means)或模块。例如,存储装置包括处理模块(有时也称为处理单元)和收发模块(有时也称为收发单元)。
例如,所述收发模块用于接收第一写请求,所述第一写请求用于请求写入第一标识和第二标识,所述第一标识为第一数据的标识,所述第一标识与所述第一数据关联存储在所述第二存储节点中,所述第二标识为所述第一标识更新后的标识,或者为第二存储节点的标识,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述第二标识与所述第一存储节点对应,所述第一标识与所述第二存储节点对应;所述处理模块用于关联存储所述第二标识与所述第一标识。
在一种可选的实施方式中,所述存储装置还包括存储模块,存储模块能够与处理模块耦合,并执行存储模块中的程序或指令,使能存储装置执行上述第一存储节点的功能。
第十方面,本申请实施例提供一种分布式存储系统,所述分布式存储系统包括第一存储节点和第二存储节点,第一存储节点可执行第一方面至第八方面中的第一存储节点执行的任一的数据处理方法,以及第二存储节点可执行第一方面至第八方面中的第二存储节点执行的任一的数据处理方法。
第十一方面,本申请实施例提供一种存储节点,包括处理器和存储器;所述处理器用于执行所述存储节点的存储器中存储的指令,以使得所述存储节点执行如第一方面至第八方面中任一所述的数据处理方法。
第十二方面,本申请实施例提供一种包含指令的计算机程序产品,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如第一方面至第八方面中任一所述的数据处理方法。
第十三方面,本申请实施例提供一种计算机可读存储介质,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如第一方面至第八方面中任一项所述的数据处理方法。
关于第二方面至第十三方面的有益效果,可参照第一方面论述的有益效果,此处不再列举。
附图说明
图1为一种采用一致性哈希算法的存储数据的示意图;
图2为本申请实施例适用的一种分布式存储系统的架构示意图;
图3至图5为本申请实施例适用的三种分布式存储系统的结构示意图;
图6至图9为本申请实施提供的几种数据处理方法的流程示意图;
图10为本申请实施例提供的一种删除与第一数据相关的数据的方法流程示意图;
图11为本申请实施例提供的一种存储装置的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1、存储节点,用于存储数据。存储节点可以是单个物理设备;或者,存储节点也可以是集成了多个物理设备的装置;或者,存储节点也可以是逻辑节点,例如为物理设备中能够实现数据存储功能的软件模块。可选的,物理设备例如包括服务器。
2、一致性哈希算法,是一种特殊的哈希算法。一致性哈希算法常用在分布式存储系统中。下面对分布式存储系统采用一致性哈希算法存储数据的过程进行介绍。
S1.1,分布式存储系统将哈希算法对应的值域沿第一方向组织成一个虚拟的圆环。虚拟圆环上的一个点即为该值域中的一个值。圆环可称为哈希环。第一方向例如为顺时针方向或逆时针方向。
其中,哈希算法对应的值域包括所述哈希算法对应的所有可能的取值。换言之,哈希算法对应的计算结果是位于一个固定的取值范围内,这个取值范围则可理解为哈希算法的值域。
S1.2,分布式存储系统按照所述哈希算法,根据分布式存储系统中的多个存储节点中的每个存储节点的信息计算一个哈希值,可获得多个哈希值。分布式存储将这多个哈希值映射在哈希环上。其中,一个存储节点的信息例如包括存储节点的地址或编号。
S1.3,在客户端请求分布式存储系统存储数据的情况下,客户端按照所述哈希算法,根据待存储的数据的信息计算一个哈希值,并将数据对应的哈希值映射在哈希环上。其中,数据的信息例如为数据的名称。
S1.4,客户端沿所述第一方向,确定哈希环上与数据对应的哈希值位置最接近的存储节点的哈希值,并确定将所述数据存储在所述存储节点中。
例如,请参照图1,为一种采用一致性哈希算法存储数据的示意图。图1中以哈希算法对应的值域是[0,232]、第一方向为顺时针方向、分布式存储系统包括存储节点n1、存储节点n2、存储节点n3和存储节点n4、存储节点的信息为存储节点的地址、以及以数据的信息为数据的名称为例。
如图1所示,分布式存储系统根据值域[0,232],按照顺时针方向形成如图1所示的哈希环。分布式存储系统将存储节点n1、存储节点n2、存储节点n3和存储节点n4各自的地址所对应的哈希值分别映射到哈希环上。客户端存储数据D1时,客户端可以将数据D1的名称对应的哈希值映射到哈希环上。如图1所示,数据D1的名称对应的哈希值按照顺时针方向与存储节点n1的地址对应的哈希值在哈希环上的位置最接近,因此客户端确定将数据D1的名称与存储节点n1对应,因此客户端将数据D1存储在存储节点n1中。
3、哈希算法,属于一类算法的统称。本申请实施例涉及的哈希算法可以是任意一种哈希算法,例如信息摘要算法(message digest algorithm,MD)算法或安全散列算法(secure hash algorithm,SHA)算法。MD算法具体包括MD4或MD5算法等。SHA算法具体包括SHA256算法等。
其中,MD算法或SHA算法的基本原理,是将输入的数据填充至第一固定长度,再按照第二固定长度将第一固定长度的数据划分为多个组,分别利用设定的函数对每组进行加密,得到多组加密结果,再将多组加密结果进行拼接,可以获得第三固定长度的拼接结果。其中,第一固定长度大于第二固定长度。对于MD算法,则设定的函数为MD算法所对应的函数;对于SHA算法,则设定的函数为SHA算法所对应的函数。
本申请实施例中,对于名词的数目,除非特别说明,表示“单数名词或复数名词”,即"一个或多个”。“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。例如,A/B,表示:A或B。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),表示:a,b,c,a和b,a和c,b和c,或a和b和c,其中a,b,c可以是单个,也可以是多个。
本申请实施例提供的方法可适用于任意的分布式存储系统中,下面对该方法适用的分布式存储系统的架构进行示例介绍。
请参照图2,为本申请实施例适用的一种分布式存储系统的架构示意图。如图2所示,包括客户端250和分布式存储系统200。客户端250可以理解为访问分布式存储系统200的入口,客户端250例如软件程序或软件模块等。客户端250可与用户对应,客户端250可用于为用户提供输入的界面。
分布式存储系统200用于存储数据。其中,数据例如为文件(file)形式的数据,或者对象(object,OBJ)形式的数据,本申请实施例对此不做具体限定。分布式存储系统200包括多个存储节点,在图2中是以分布式存储系统200包括第一存储节点210和第二存储节点220这两个存储节点为例,本申请实施例并不限制分布式存储系统200所包括的存储节点的数量。其中,第一存储节点210和第二存储节点220的结构可以是相同的。分布式存储系统200中的任意两个存储节点之间可相互通信。
用户可通过客户端250访问分布式存储系统200。例如,客户端250根据用户输入待存储的数据,生成写请求,客户端250向分布式存储系统200中的一个存储节点发送写请求,写请求用于请求写入数据。又例如,客户端250根据用户输入的数据的名称,生成读请求,客户端250向分布式存储系统200中的一个存储节点发送读请求,读请求用于请求分布式存储系统200中的数据。
其中,分布式存储系统200有多种可能的硬件结构,下面结合图3、图4和图5所示的几种可能的硬件结构示意图,进行介绍。
图3可以理解为是一种分离式架构的分布式存储系统的示意图。如图3所示,分布式存储系统200包括计算节点集群和存储节点集群。计算节点集群包括一个或多个计算节点310。存储节点集群包括一个或多个存储节点350。图2中的第一存储节点210或第二存储节点220的结构可以参照图3中的一个存储节点350的结构。
各个计算节点310之间可以相互通信。计算节点310泛指具有计算功能的设备,例如服务器;存储节点350泛指具有存储功能的设备,例如服务器。图3中是以两个计算节点310,两个存储节点350为例,实际并不限制计算节点310和存储节点350的数量。分布式存储系统200中的任意一个计算节点310可通过网络访问分布式存储系统200中的任意一个存储节点350。例如,计算节点310接收待存储的数据,将待存储的数据发送给存储节点350,存储节点350可以对数据执行写操作。
如图3所示,计算节点310至少包括CPU311、内存312和网卡313。CPU311可以用于处理来自计算节点310外部的写请求或读请求,或者计算节点310内部生成的数据写请求或数据读请求。网卡313用于与存储节点350通信。另外,计算节点310还可以包括总线,在图3中的总线可以用于计算节点310各组件之间的通信。图3中仅示意出了一个CPU311,实际上CPU311的数量可以是一个或多个。
一个存储节点350包括一个或多个控制器351、网卡352、硬盘353和内存354。例如,控制器351用于根据计算节点310发送的数据,向硬盘353中写入数据。网卡352用于与计算节点310通信。内存354用于临时存储将要写入硬盘353的数据,或者从硬盘353读取出来将要发送给计算节点310的数据。在实际应用时,控制器351可以有多种形态,例如,控制器351包括CPU。控制器351还可以包括内存。或者例如,控制器351是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)、图像处理单元(graphics processing unit,GPU)或嵌入式神经网络处理器(neural-network processing units,NPU)等处理芯片。控制器351的数量可以是任意的,本申请实施例对此不作限定。
作为一个示例,存储节点350内部可以不具有控制器351,例如,控制器351的功能可以卸载到网卡352上,这种情况下,可以由网卡352来完成数据读写、地址转换以及其他计算功能。这种情况下,网卡352可以为智能网卡,网卡352可以包含CPU和内存,CPU用于执行地址转换、数据读操作和数据写操作等,这时,可以由网卡352接收计算节点310发送的第一数据,并将第一数据存储到相应的硬盘353中。内存的作用可以参照前文。这种情况下,存储节点350中的网卡352和硬盘353之间可以没有归属关系,即网卡352可以访问存储节点350中的任意一个硬盘353。
图4可以理解为一种全融合式架构的分布式存储系统的示意图。如图4所示,分布式存储系统200包括一个或多个服务器400,其中任意两个服务器400之间可以相互通信。在图4所示的分布式存储系统中,每个服务器400可视为一个或多个存储节点。换言之,图2中的第一存储节点210或第二存储节点220的结构可以参照一个服务器400的结构。
服务器400是指具有计算能力和存储能力的设备,如服务器、台式计算机等。例如,服务器400可以通过进阶精简指令集机器(advanced risc machine,ARM)服务器或者X86服务器实现。在软件上,服务器400上可以包括虚拟机(virtual machine,VM)465,VM 465所需的计算资源来源于服务器本地的处理器和内存,VM465所需的存储资源既可以来源于服务器本地的硬盘,也可以来自其他服务器中的硬盘。此外,VM 465中可运行各种应用程序,用户可通过虚拟机中的应用程序触发读/写请求。
在硬件上,每个服务器400还可以包括处理器461、网卡462、硬盘463和内存464。其中网卡462和内存464的实现形式和功能可以参照前文图3论述的内容。处理器461可以接收待存储的数据,并对数据执行写操作。
图5可理解为一种存算一体式架构的分布式存储系统的示意图。如图5所示,分布式存储系统200包括服务器集群。服务器集群包括一个或多个服务器500,其中任意两个服务器500之间可相互通信。在图5所示的分布式存储系统中,每个服务器500可以视为一个或多个存储节点。换言之,图2中的第一存储节点210或第二存储节点220的结构可以参照一个服务器500的结构。
在硬件上,服务器500至少包括处理器561、内存562、网卡563和硬盘565。处理器561、内存562、网卡563和硬盘565之间通过总线连接。其中,处理器561和内存562可以用于提供计算资源。
需要说明的是,存算一体式架构的分布式存储系统与全融合式架构的分布式存储系统不同的是,存算一体式架构的分布式存储系统中的服务器可以没有虚拟机,以及没有运行相应的应用程序。存算一体式架构的分布式存储系统与存算分离式架构的分布式存储系统不同的是,存算一体式架构的分布式存储系统中的服务器相当于集成了存算分离式架构的分布式存储系统中的存储节点和计算节点的功能。
下面结合附图介绍本申请实施例所提供的方法。在本申请的各个实施例对应的附图中,凡是用虚线表示的步骤,均为可选的步骤。以及,在本申请的各个实施例的介绍过程中,以本申请各个实施例的技术方案应用于分布式存储系统为例,分布式存储系统例如为图2至图5中任一个附图所示的分布式存储系统。在本申请的各个实施例中的以分布式存储系统包括第一存储节点和第二存储节点为例。在本申请的各个实施例中的第一存储节点例如为图2中的第一存储节点210,在本申请的各个实施例中的第二存储节点例如为图2中的第二存储节点220。本申请的各个实施例中,第一存储节点和第二存储节点的结构可以相同,例如第一存储节点的结构或第二存储节点的结构可参考图3至图5中的任一个附图所示的存储节点的结构。
本申请实施例提供一种数据处理方法,以向分布式存储系统存储数据。请参照图6,为该方法的流程图。
S601,客户端向第二存储节点发送写请求1。相应的,第二存储节点接收来自客户端的写请求1。写请求1用于请求写入第一标识和第一数据。写请求1又可以称为第三写请求。其中,写请求1可包括(或,指示)第一标识和第一数据。
客户端确定将第一数据存储到分布式存储系统中,这时第一数据可视为待存储的数据。客户端可根据第一数据的信息,确定第一数据的标识,例如第一标识。其中,第一数据的信息例如包括第一数据的名称和/或第一数据的大小等。
示例性的,客户端可将第一数据的信息直接作为第一标识。例如,第一数据的信息包括第一数据的名称,第一标识可为名称。或者,客户端也可以按照第一算法,对第一数据的信息进行编码,以获得第一标识。或者,客户端可直接为第一数据分配第一标识。第一算法可以是预设的,例如,第一算法可以是用户手动设置在客户端中,或者第一算法可以是分布式存储系统配置给客户端的。第一算法可以任意的算法,例如,第一算法包括哈希算法等。
进而,客户端按照一致性哈希算法,确定第一标识对应第二存储节点,则客户端可向第二存储节点发送写请求1,以请求向第二存储节点写入第一标识和第一数据。
示例性的,客户端可按照哈希算法,确定第一标识对应的哈希值,为了便于区分,这里将第一标识对应的哈希值称为第一哈希值。客户端沿第一方向,确定在哈希环上与第一哈希值的位置最接近的存储节点的哈希值,为了便于区分,这里将与第一哈希值的位置最接近的存储节点的哈希值称为第二哈希值,例如第二哈希值为第二存储节点的哈希值,则客户端可以确定第一标识对应第二存储节点。另外,客户端还可根据第二哈希值,确定第二存储节点对应的信息,并根据第二存储节点的信息,与第二存储节点进行通信。其中,所述哈希算法可以预存在客户端中。关于哈希环的含义、哈希算法以及第一方向等内容可参照前文。
可选的,客户端可预存有哈希环,或者客户端可以从分布式存储系统中的任一存储节点接收哈希环的信息,或者客户端可以自行确定哈希环。例如,客户端预存有分布式存储系统包括的部分或全部存储节点的信息,或者客户端从分布式存储系统中的任一存储节点接收分布式存储系统包括的部分或全部存储节点的信息,进而客户端可根据这部分或全部存储节点的信息自行确定哈希环。其中,关于一个存储节点的信息以及构建哈希环的方式等内容可参照前文。
S602,第二存储节点关联存储第一标识和第一数据。或者,S602也可以替换为:第二存储节点存储第一标识与第一数据之间的关联关系;或者,S602还可以替换为:第二存储节点存储第一标识和第一数据。
本申请实施例中,关联存储也可以理解为关联存储。第二存储节点关联存储第一标识和第一数据,可理解为第二存储节点关联存储第一标识和第一数据,即,第二存储节点存储了第一标识和第一数据,且根据存储内容能够确定第一标识和第一数据具有关联关系。在第二存储节点关联存储第一标识和第一数据之后,第二存储节点可以根据第一标识查询第一数据,和/或根据第一数据可以查询第一标识。
示例性的,第二存储节点可采用键值(key-value)存储方式存储第一标识和第一数据。
例如,第二存储节点可将第一标识作为键、以及将第一数据作为值进行存储。这种情况下,第一标识又可以称为第一数据的键。
由于客户端一般会用第一标识向第二存储节点请求第一数据,因此以第一标识作为键,第一数据作为值,方便第二存储节点后续利用第一标识查询第一数据。
例如,第一数据的标识为V1.0,第一数据为abcfedsffff,第二存储节点可按照表1所示的方式关联存储第一标识和第一数据。
表1
V1.0 abcfedsffff
S603,客户端向第一存储节点发送写请求2。相应的,第一存储节点接收来自客户端的写请求2。写请求2用于请求写入第一标识和第二标识。写请求2又可以称为第一写请求。
本申请实施例中的第二标识可以为第一标识更新后的标识,或者为第二存储节点的标识,下面分情况介绍。
第一种情况,第二标识为第一标识更新后的标识。
具体的,可能是用户修改了第一数据的信息,或者也可能是其他原因,导致第一数据的标识发生了变化,例如从第一标识更新(或变化)为第二标识。客户端如果确定第一数据的标识从第一标识更新为第二标识,则客户端可按照一致性哈希算法,确定第二标识对应的存储节点。其中,客户端确定第二标识对应的存储节点的方式可参照前文客户端确定第一标识对应的存储节点的内容,此处不再赘述。
例如客户端确定第二标识对应的存储节点为第一存储节点。客户端可以向第一存储节点发送写请求2,以请求向第一存储节点写入第一标识和第二标识。其中,写请求2可包括(或,指示)第一标识和第二标识。
可选的,在第二标识为第一标识更新后的标识的情况下,写请求2还可指示第一标识和第二标识之间的关系,例如,写请求2可指示第二标识为第一标识更新后的标识。如此,便于第一存储节点确定第一标识和第二标识之间的关系。
第二种情况,第二标识为第二存储节点的标识。
具体的,第一数据的第一标识未发生变化,但由于分布式存储系统缩容或扩容,或者分布式存储系统中的存储节点的信息发生变化等原因,导致分布式存储系统中的存储节点在哈希环上的位置发生变化,进而可能导致第一数据的第一标识所属的存储节点发生变化。其中,缩容例如分布式存储系统中包括的存储节点的数量减少,扩容例如分布式存储系统包括的存储节点的数量增加。这种情况下,客户端如果确定第一数据的第一标识所属的存储节点发生变化,则客户端可按照一致性哈希算法,确定第一标识在变化后的分布式存储系统中所对应的节点。
客户端可根据变化后的分布式存储系统对应的哈希环,确定第一标识所对应的存储节点。其中,客户端可从变化后的分布式存储系统中的任一存储节点接收变化后的分布式存储系统对应的哈希环的信息,或者客户端从变化后的分布式存储系统中的任一存储节点接收变化后的分布式存储系统包括的部分或全部存储节点的信息,自行确定变化后的分布式存储系统对应的哈希环,本申请实施例对此不做限定。
在本申请实施例中,是以第一数据的第一标识对应的存储节点从第二存储节点变化为第一存储节点为例。客户端可请求第一存储节点存储第一标识和第二标识。在该请求下,第二标识为第二存储节点的标识。其中,第二标识用于指示第二存储节点,第二标识例如为第二存储节点的编号或者为第二存储节点的地址。存储节点的编号可为存储节点在该分布式存储系统中的唯一编号。第二存储节点的地址例如为网际协议(internet protocoladdress,IP)地址。
S604,第一存储节点关联存储第二标识和第一标识。
其中,关联存储的含义可参照S602。
示例性的,第一存储节点可以通过键值存储方式存储第二标识和第一标识,对此可参考S602的介绍。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下),例如,第一存储节点将第二标识作为键,将第一标识作为值进行存储。这种情况下,第一标识又可以称为第一数据的旧标识或旧键(old key)。相应的,第二标识又可以称为新标识或新键(newkey)。
由于客户端向第一存储节点请求第一数据时,一般以第一数据的最新标识(即第二标识)向第一存储节点请求,因此以第二标识作为键,可方便第一存储节点利用第二标识查询第一标识,后续第一存储节点可根据第一标识向第二存储节点请求第一数据,或者向客户端反馈第一标识。
例如,第一标识为V1.0,第二标识为V1.1,第一存储节点可按照表2所示的方式关联存储第一标识和第二标识。
表2
V1.1 V1.0
在第二种情况下(即第二标识为第二存储节点的标识的情况下),例如,第一存储节点将第一标识作为键,第二标识作为值进行存储。
例如,第一标识为V1.0,第二标识为第二存储节点的编号,具体为2,第一存储节点可按照表3所示的方式关联存储第一标识和第二标识。
表3
V1.1 2
在本申请实施例中的第一种情况下,由于第一存储节点已关联存储第二标识和第一标识,因此第一存储节点不必获取第一数据,也可支持客户端获取第一数据。例如,第一存储节点可根据第一标识向第二存储节点请求第一数据,进而将第一数据反馈给客户端,又例如,第一存储节点可向客户端反馈第一标识,客户端根据第一标识从第二存储节点获取第一数据,又例如,第一存储节点通知第二存储节点将第一数据反馈给客户端。也就是说,第一存储节点可关联存储第二标识与第一标识,而第一标识和第一数据可以继续关联存储在第二存储节点中,第一数据不必从第二存储节点迁往第一存储节点。
在本申请实施例中的第二种情况下,由于第一存储节点已关联存储第二标识和第一标识,因此第一存储节点不必获取第一数据,也可支持客户端获取第一数据。例如,第一存储节点可根据第二标识向第二存储节点请求第一数据,进而将第一数据反馈给客户端,又例如,第一存储节点可向客户端反馈第二标识,客户端根据第二标识从第二存储节点获取第一数据,又例如,第一存储节点通知第二存储节点将第一数据反馈给客户端。也就是说,第一存储节点可关联存储第二标识与第一标识,而第一标识和第一数据可以继续关联存储在第二存储节点中,第一数据不必从第二存储节点迁往第一存储节点。
由此可见,在本申请实施例中的两种情况下,分布式存储系统均不必迁移第一数据,减少了分布式存储系统中的数据迁移量,也降低了分布式存储系统的处理工作量。
在一种可能的实施方式中,第二存储节点还可关联存储第一标识和第三标识。第二存储节点关联存储第一标识和第三标识的步骤具体如S605至S606的步骤,且S605-S606为可选的步骤,在图6中以虚线示意。
S605,客户端向第二存储节点发送写请求3。相应的,第二存储节点接收来自客户端的写请求3。写请求3用于请求写入第一标识和第三标识。写请求3又可以称为第二写请求。
示例1,在第一种情况下,第三标识为所述第二标识。
在示例1下,可选的,写请求3还用于指示第一标识和第三标识的关系,例如,写请求3用于指示第二标识为第一标识更新后的标识。如此,便于第二存储节点确定第一标识和第二标识的关系。
在另一种可能的实施方式中,写请求3可以是第一存储节点向第二存储节点发送的。写请求3的内容可以参照前文。
示例性的,第一存储节点可根据第一标识,确定与第一标识对应的第二存储节点,并向第二存储节点发送写请求3。相应的,第二存储节点接收来自第一存储节点的写请求3。
示例2,在第二种情况下,第三标识为第一存储节点的标识。第一存储节点的标识例如为第一存储节点的地址或编号。
在示例2下,客户端请求第二存储节点写入第一存储节点的标识,便于后续客户端验证第一存储节点的身份。
需要说明的是,S603和S605的执行顺序可以是任意的,例如,同时执行S603和S605;或者,先执行S603,再执行S605;或者,先执行S605,再执行S603。
S606,第二存储节点关联存储第一标识和第三标识。
关联存储的含义可参照前文论述的内容。
示例性的,第二存储节点以键值存储方式存储第一标识和第三标识。
例如,第二存储节点将第一标识作为键,第三标识作为值进行存储。
又例如,第二存储节点将第一标识作为键,将第三标识和第一数据作为值进行存储。如此,第二存储节点相当于将第一标识、第三标识和第一数据三者进行关联存储,而不必单独关联存储第一标识和第三标识,以及关联存储第一标识和第一数据,相当于第二存储节点少存储了一份第一标识,这有利于节省第二存储节点的存储空间。
例如,在第一种情况下(即第二标识为第一标识更新后的标识的情况下),继续如表1所示,第二存储节点可按照表4所示的方式关联存储第一标识和第三标识(即第二标识)。
表4
V1.0 V1.1,abcfedsffff
或者,例如,在第二种情况下(即第二标识为第二存储节点的标识的情况下),继续如表1所示,第一存储节点的标识(第三标识)为1,第二存储节点可按照表5所示的方式关联存储第一标识和第三标识。
表5
V1.0 1,abcfedsffff
由于客户端一般不会存储第一数据的第一标识,因此客户端后续是利用第二标识向第一存储节点请求第一数据,而实际上第一数据被存储第二存储节点上,因此客户端或第一存储节点需根据第一标识向第二存储节点请求第一数据。但有可能第二存储节点存储的另一个数据的标识也是第一标识,这就有可能导致第二存储节点仅根据第一标识无法准确地查询客户端或第一存储节点所请求的第一数据。
因此,在本申请实施例中,第二存储节点关联存储第一标识和第三标识,且第三标识为第二标识的情况下,便于后续第二存储节点基于来自其他设备或节点(如第一存储节点)的第二标识与第二存储节点存储的第一数据的第二标识进行对比。如果第二存储节点确定来自其他设备或节点的第二标识与第二存储节点存储的第二标识不相同,这也就表示其他设备或节点实际上并不是请求第一数据,因此可向其他设备或节点发送响应消息,该响应消息相当于标识其他设备或节点请求了错误的数据。如果第二存储节点确定来自其他设备或节点的第二标识与第二存储节点存储的第二标识相同,这也就相当于再次确定了其他设备所请求的数据为第一数据,保证第二存储节点向其他设备反馈的数据是其他设备所请求的数据,从而有利于提高第二存储节点向其他设备所反馈的数据的准确性。
或者,第二存储节点关联存储第一标识和第三标识,且第三标识为第一存储节点的标识的情况下,第二存储节点在后续接收读请求的情况下,可根据第三标识对第二存储节点的身份进行校验。另外,第二存储节点可根据第三标识与第一存储节点相互通信。
对于分布式存储系统内存储的数据,客户端可以进行读取。为此本申请实施例提供另一种数据处理方法,通过该方法,客户端可以从分布式存储系统中读取数据。请参照图7,为该方法的流程图。
S701,客户端向第一存储节点发送读请求1。相应的,第一存储节点接收来自客户端的读请求1。读请求1用于请求第一数据。读请求1又可以称为第一读请求。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下),读请求1可包括(或指示)第二标识。
示例性的,由于第一数据的新标识(或者理解为第一数据的当前标识)为第二标识,因此客户端可按照一致性哈希算法,确定第二标识对应的存储节点。其中,客户端确定第二标识对应的存储节点的方式可参照前文论述的内容,此处不再列举。
在本申请实施例中以第二标识对应的存储节点为第一存储节点为例。在这种假设下,客户端可向第一存储节点发送读请求1,以向第一存储节点请求获取第一数据。
在第二种情况下(即第二标识为第二存储节点的标识的情况下),读请求1可包括(或指示)第一标识。
由于第一数据的标识为第一标识,客户端按照一致性哈希算法,确定第一数据对应第一存储节点,因此可向第一存储节点发送读请求1。该读请求1可包括第一标识。
S702,第一存储节点向客户端发送响应消息。相应的,客户端接收来自第一存储节点的响应消息。响应消息可包括(或指示)第一标识。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下),第一存储节点可根据读请求1包括的第二标识,查找与第二标识对应的第一数据。由于第一存储节点没有存储第一数据,仅关联存储第二标识和第一标识,因此第一存储节点可向客户端反馈携带第一标识的响应消息。
在第二种情况下(即第二标识为第二存储节点的标识的情况下),第一存储节点可根据读请求1包括的第二标识,查找与第二标识对应的第一数据。由于第一存储节点没有存储第一数据,仅关联存储第二标识和第一标识,因此第一存储节点可向客户端反馈携带第二标识的响应消息。
S703,客户端向第二存储节点发送读请求2。相应的,第二存储节点接收来自客户端的读请求2。读请求2可包括(或指示)第一标识。读请求2用于请求第一数据。读请求2又可以称为第二读请求。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下),客户端可根据响应消息包括的第一标识,确定第一标识对应的存储节点(即第二存储节点)。其中,客户端确定第一标识对应的存储节点的方式可参照前文。并向第二存储节点发送读请求2。
作为一个示例,读请求2还包括第二标识,即第一标识更新后的标识。
在第二种情况下(即第二标识为第二存储节点的标识的情况下),客户端可根据响应消息包括的第二标识,确定第二存储节点,并向第二存储节点发送读请求2。
作为一个示例,读请求2还包括第二标识,即第二存储节点的标识。
S704,第二存储节点向客户端发送第一数据。相应的,客户端接收来自第二存储节点的第一数据。
第二存储节点可根据第一标识,查询与第一标识对应的第一数据,并向客户端反馈第一数据。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下),作为一个示例,在读请求2可包括(或指示)第二标识,且第二存储节点还关联存储第一标识和第二标识的情况下,第二存储节点可确定第二存储节点存储的与第一标识对应的第二标识,与读请求2包括的第二标识是否相同。
如果第二存储节点确定第二存储节点存储的与第一标识对应的第二标识,与读请求2包括的第二标识不相同,则可向客户端发送提示信息。提示信息用于提示客户端请求出错。如果第二存储节点确定第二存储节点存储的与第一标识对应的第二标识,与读请求2包括的第二标识相同,则向客户端发送第一数据。如此一来,第二存储节点相当于对客户端请求的第一数据进行了验证,从而保证向客户端反馈的第一数据的正确性。
在第二种情况下(即第二标识为第二存储节点的标识的情况下),作为一个示例,在读请求2可包括(或指示)第二标识,且第二存储节点还关联存储第一标识和第二标识的情况下,第二存储节点可确定读请求2中的第二标识和第二存储节点的标识是否相同,从而相当于对客户端的身份进行了验证。
作为一个示例,图7所示的实施例中的各个步骤可以是在图6中的S604之后执行的,或者可以是在图6中的S606之后执行的。
在图7所示的实施例中,客户端可向第一存储节点请求第一数据,第一存储节点可向客户端反馈第一标识,进而客户端可向第二存储节点请求第一数据,并从第一存储节点获取第一数据,提供客户端获取第一数据的一种方式。并且,图7所示的实施例中无需第二存储节点和第一存储节点之间进行任何交互,有利于减少分布式存储系统的处理工作量,由于无需第二存储节点和第一存储节点之间传输第一数据,有利于提高客户端获取第一数据的效率。
本申请实施例提供又一种数据处理方法,通过方法,客户端可以从分布式存储系统中读取数据。请参照图8,为该方法的流程图。
S801,客户端向第一存储节点发送读请求1。相应的,第一存储节点接收来自客户端的读请求1。读请求1用于请求第一数据。读请求1也可称为第一读请求。
客户端生成读请求1的内容可参照前文图7论述的内容,此处不再列举。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下,读请求1可包括(或指示)第二标识。
在第二种情况下(即第二标识为第二存储节点的标识的情况下),读请求1可包括(或指示)第一标识。
S802,第一存储节点向第二存储节点发送读请求2。相应的,第二存储节点接收来自第一存储节点的读请求2。读请求2用于请求第一数据。读请求2又可以称为第二读请求。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下,读请求2可包括(或指示)第一标识。
示例性的,如前文论述的内容,由于第一存储节点关联存储了第二标识和第一标识,因此第一存储节点接收读请求1之后,可确定与第二标识对应的第一标识。第一存储节点可根据第一标识,确定与第一标识对应的存储节点为第二存储节点,进而向第二存储节点发送读请求2。其中,第一存储节点确定第一标识对应的存储节点的方式可参照前文客户端确定第一标识对应的存储节点的内容,此处不再列举。
可选的,读请求2还包括第二标识。
在第二种情况下(即第二标识为第二存储节点的标识的情况下),该读请求2可包括(或指示)第一标识。
示例性的,如前文论述的内容,由于第一存储节点关联存储了第二标识和第一标识,因此第一存储节点接收读请求1之后,可确定与第一标识对应的第二标识,从而确定第二存储节点。因此第一存储节点可根据第二标识,向第二存储节点发送读请求2。
S803,第二存储节点向第一存储节点发送第一数据。相应的,第一存储节点接收来自第二存储节点的第一数据。
如前文所述,第二存储节点关联存储了第一标识和第一数据,第二存储节点接收读请求2之后,可确定与第一标识对应的第一数据,进而向第一存储节点发送第一数据。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下,作为一个示例,在读请求2包括第二标识,且第二存储节点还关联存储第一标识和第二标识的情况下,第二存储节点可确定第二存储节点存储的与第一标识所对应的第二标识与读请求2包括的第二标识是否相同。
如果第二存储节点确定第二存储节点存储的与第一标识对应的第二标识,与读请求2包括的第二标识不相同,则可向第一存储节点发送提示信息。提示信息用于提示第一存储节点请求出错。如果第二存储节点确定第二存储节点存储的与第一标识对应的第二标识,与读请求2包括的第二标识相同,则向第一存储节点发送第一数据。如此一来,第二存储节点相当于对第一存储节点请求的第一数据进行了验证,从而保证向第一存储节点反馈的第一数据的正确性。
在第二种情况下(即第二标识为第二存储节点的标识的情况下),作为一个示例,在读请求2可包括(或指示)第二标识,且第二存储节点还关联存储第一标识和第二标识的情况下,第二存储节点可确定读请求2中的第二标识和第二存储节点的标识是否相同,从而相当于对客户端的身份进行了验证。
S804,第一存储节点向客户端发送第一数据。相应的,客户端接收来自第一存储节点的第一数据。
作为一个示例,图8所示的实施例中的各个步骤可以是在图6中的S604之后执行的,或者可以是在图6中的S606之后执行的。
在图8所示的实施例中,客户端可以向第一存储节点请求第一数据,第一存储节点从第二存储节点获取第一数据,并向客户端反馈第一数据,提供客户端获取第一数据的一种方式。并且,在实施例中,客户端只需发起一次请求,便可从分布式存储系统获得第一数据,有利于减少客户端发起的请求次数。
本申请实施例提供又一种数据处理方法,通过方法,客户端可以从分布式存储系统中读取数据。请参照图9,为该方法的一种流程示意图。
S901,客户端向第一存储节点发送读请求1。相应的,第一存储节点接收来自客户端的读请求1。读请求1用于请求第一数据,且读请求1可包括(或指示)第二标识。
客户端生成读请求1的内容均可参照前文图7论述的内容,此处不再列举。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下,读请求1可包括(或指示)第二标识。
在第二种情况下(即第二标识为第二存储节点的标识的情况下),读请求1可包括(或指示)第一标识。
S902,第一存储节点向第二存储节点发送读请求2。相应的,第一存储节点接收来自第二存储节点的读请求2。读请求2用于请求第一数据,且读请求2可包括(或指示)客户端的标识。客户端的标识也可以称为第四标识。可选的,读请求2还包括(或还指示)第一标识。
其中,客户端的标识用于指示客户端,客户端的标识例如为客户端的地址。
作为一个示例,读请求2还包括第二标识。
S903,第二存储节点向客户端发送第一数据。相应的,客户端接收来自第二存储节点的第一数据。
具体的,第二存储节点可根据第一标识,确定与第一标识对应的第一数据,并根据客户端的标识,向所述客户端发送第一数据。
在第一种情况下(即第二标识为第一标识更新后的标识的情况下,作为一个示例,在读请求2还包括第二标识,且第二存储节点还关联存储第一标识和第二标识的情况下,第二存储节点可确定第二存储节点存储的与第一标识所对应的第二标识与读请求2包括的第二标识是否相同。
如果第二存储节点确定第二存储节点存储的与第一标识对应的第二标识,与读请求2包括的第二标识不相同,则可向客户端发送提示信息。提示信息用于提示客户端请求出错。如果第二存储节点确定第二存储节点存储的与第一标识对应的第二标识,与读请求2包括的第二标识相同,则向客户端发送第一数据。
在第二种情况下(即第二标识为第二存储节点的标识的情况下),作为一个示例,在读请求2可包括(或指示)第二标识,且第二存储节点还关联存储第一标识和第二标识的情况下,第二存储节点可确定读请求2中的第二标识和第二存储节点的标识是否相同,从而相当于对客户端的身份进行了验证。
作为一个示例,图9所示的实施例中的各个步骤可以是在图6中的S604之后执行的,或者可以是在图6中的S606之后执行的。
在图9所示的实施例中,客户端可以向第一存储节点请求第一数据,第一存储节点向第二存储节点发送读请求,第二存储节点直接向客户端反馈第一数据,提供客户端获取第一数据的一种方式。并且,在实施例中,客户端只需发起一次请求,便可从分布式存储系统获得第一数据,有利于减少客户端发起的请求次数。另外,在图9所示的实施例中,第二存储节点和第一存储节点之间无需传输第一数据,有利于减少分布式存储系统的处理工作量。也就避免了第一存储节点和第二存储节点之间因传输第一数据所耗费的时间,有利于提高客户端获得第一数据的效率。
需要说明的是,图7至图9为客户端获取第一数据的三种方式,实际上客户端可采用图7至图9中的任一实施例,从分布式存储系统获取第一数据,本申请实施例对此不做具体限定。
对于分布式存储系统内存储的与第一数据相关的数据(如第一标识、第二标识和第一数据中的一种或多种),分布式存储系统支持删除与第一数据相关的数据。请参照图10,为本申请实施例提供的一种分布式存储系统删除与第一数据相关的数据的方法流程示意图。
S1001,客户端向第一存储节点发送删除请求1。相应的,第一存储节点接收来自客户端的删除请求1。删除请求1又可以称为第一删除请求。
客户端需要删除第一数据,可向第一存储节点发送删除请求1,以请求第一存储节点删除第一数据。其中,第一删除请求可包括(或指示)第二标识,如此,便于第一存储节点确定需要删除的数据。
S1002,第一存储节点删除关联存储的第二标识和第一标识。
如前所述,在本申请实施例中第一存储节点并未存储第一数据,因此第一存储节点可以删除关联存储的第二标识和第一标识。
S1003,第一存储节点向第二存储节点发送删除请求2。相应的,第二存储节点接收来自第一存储节点的删除请求2。删除请求2用于请求删除第一数据。删除请求2又可以称为第二删除请求。
可选的,删除请求2包括(或指示)第一标识。
S1004,第二存储节点删除关联存储的第一标识和第一数据。
示例性的,删除请求2可根据第一标识,确定与第一标识对应的第一数据,并删除关联存储的第一标识和第一数据。
可选的,第二存储节点在关联存储第一标识和第二标识的情况下,第二存储节点还可删除关联存储的第一标识和第二标识。
在图10所示的实施例中,客户端只需向第一存储节点发送删除请求,第一存储节点可请求第二存储节点删除第一数据,从而可及时释放分布式存储系统中的存储空间。
作为一个示例,图10所示的实施例可以是在图6所示的实施例之后执行的,或者可以是在图7至图9任一的实施例之后执行的,本申请实施例对此不做限定。
在一种可能的实施方式中,第二存储节点确定关联存储的第一标识和第一数据的时长已达到第一预设时长,第二存储节点也可自动删除关联存储的第一标识和第一数据。其中,第一预设时长可以预存在第二存储节点中。
可选的,如果第二存储节点关联存储了第一标识和第二标识,且确定关联存储第一标识和第二标识的时长已达到第一预设时长,则第二存储节点删除关联存储的第一标识和第二标识。
在一种可能的实施方式中,第一存储节点确定关联存储的第二标识和第一标识的时长已达到第二预设时长,第一存储节点也可删除关联存储的第二标识和第一标识。其中,第二预设时长可以预存在第一存储节点中。其中,第一预设时长和第二预设时长的取值可以是相同的,也可以是不同的,本申请实施例对此不做限定。
请参照图11,为本申请的实施例提供的一种存储装置的结构示意图。如图11所示,存储装置1100包括收发模块1101和处理模块1102。
在本申请实施例中,存储装置1100可用于实现前文的第一存储节点或第二存储节点的功能。相应的,也可以实现前文第一存储节点或第二存储节点执行的任一的数据处理方法。
在一种可能的实施例中,存储装置1100用于实现图6至图10中的第一存储节点的功能。
又例如,存储装置1100用于实现图6中的第一存储节点的功能。
具体的,收发模块1101用于执行S603的步骤,处理模块1102用于执行S604的步骤。
作为一个示例,在第一存储节点的结构如图3-图5中任一的存储节点的结构的情况下,收发模块1101可用于实现网卡的功能,处理模块1102可用于实现处理器或CPU的功能。
在一种可能的实施例中,存储装置1100用于实现图6至图10中的第二存储节点的功能。
例如,存储装置1100用于实现图6中的第二存储节点的功能。
具体的,收发模块1101用于执行S601的步骤,处理模块1102用于实现S602的步骤。
作为一个示例,在第二存储节点的结构如图3至图5中任一的存储节点的结构的情况下,收发模块1101可用于实现网卡的功能,处理模块1102可用于实现处理器或CPU的功能。
本申请实施例提供一种分布式存储,分布式存储系统可用于实现前文图6至图10中的任一的数据处理方法。分布式存储系统包括第一存储节点和第二存储节点。第一存储节点例如为图6至图10中的第一存储节点。第二存储节点例如为图6至图10中的第二存储节点。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序或指令,当所述计算机程序或所述指令被计算设备集群运行时,使得计算设备集群实现前文任一的数据处理方法,如图6至图10中任一的数据处理方法。
本申请实施例提供一种包含指令的计算机程序产品,当其在计算设备集群上运行时,实现前文任一的数据处理方法,如图6至图10中任一的数据处理方法。
本申请的各个实施例中的计算设备集群可以是包括一个或多个计算设备,计算设备例如服务器,所述计算设备集群可实现前文中的分布式存储系统的功能。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器、闪存、只读存储器、可编程只读存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从存储介质读取信息,且可向存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,ASIC可以位于基站或终端中。当然,处理器和存储介质也可以作为分立组件存在于基站或终端中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘;还可以是半导体介质,例如,固态硬盘。计算机可读存储介质可以是易失性或非易失性存储介质,或可包括易失性和非易失性两种类型的存储介质。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。

Claims (17)

1.一种数据处理方法,其特征在于,应用于分布式存储系统中,所述分布式存储系统包括第一存储节点和第二存储节点,所述方法包括:
所述第一存储节点接收第一写请求,所述第一写请求用于请求写入第一标识和第二标识,所述第一标识为第一数据的标识,所述第一标识与所述第一数据关联存储在所述第二存储节点中,所述第二标识为所述第一标识更新后的标识,或者为所述第二存储节点的标识,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述第二标识与所述第一存储节点对应,所述第一标识与所述第二存储节点对应;
所述第一存储节点关联存储所述第二标识与所述第一标识。
2.根据权利要求1所述的方法,其特征在于,
所述第一标识和所述第一数据继续关联存储在所述第二存储节点中;或者,
所述方法还包括:所述第二存储节点不将所述第一数据迁移到所述第一存储节点中。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
所述第二存储节点接收第二写请求,所述第二写请求用于请求写入所述第一标识和第三标识,所述第三标识为所述第一存储节点的标识或者为所述第二标识;
所述第二存储节点关联存储所述第一标识与所述第三标识。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述第一读请求包括所述第二标识;或者,在所述第二标识为所述第二存储节点的标识的情况下,所述第一读请求包括所述第一标识;
所述第一存储节点向所述客户端发送响应消息,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述响应消息包括所述第一标识;或者,在所述第二标识为所述第二存储节点的标识的情况下,所述响应消息包括所述第二标识;
所述第二存储节点接收来自所述客户端的第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;
所述第二存储节点向所述客户端发送所述第一数据。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述第一读请求包括所述第二标识;或者,在所述第二标识为所述第二存储节点的标识的情况下,所述第一读请求包括所述第一标识;
所述第一存储节点向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;
所述第二存储节点向所述第一存储节点发送所述第一数据;
所述第一存储节点向所述客户端发送所述第一数据。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
所述第一存储节点接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述第一读请求包括所述第二标识;或者,在所述第二标识为所述第二存储节点的标识的情况下,所述第一读请求包括所述第一标识;
所述第一存储节点向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识以及所述客户端的标识;
所述第二存储节点向所述客户端发送所述第一数据。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
所述第一存储节点接收第一删除请求,所述第一删除请求用于请求删除第一数据;
所述第一存储节点删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据;
所述第二存储节点删除关联存储的所述第一标识和所述第一数据。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
如果所述第二存储节点关联存储所述第一标识和所述第一数据的时长达到第一预设时长,所述第二存储节点删除关联存储的所述第一标识和所述第一数据;和/或,
如果所述第一存储节点关联存储所述第二标识和所述第一标识的时长达到第二预设时长,所述第一存储节点删除关联存储的所述第二标识和所述第一标识。
9.一种分布式存储系统,其特征在于,所述分布式存储系统包括第一存储节点和第二存储节点,其中:
所述第一存储节点用于接收第一写请求,所述第一写请求用于请求写入第一标识和第二标识,所述第一标识为第一数据的标识,所述第二标识为所述第一标识更新后的标识,且所述第二标识与所述第一存储节点对应,所述第一标识与所述第二存储节点对应,所述第一标识与所述第一数据关联存储在所述第二存储节点中;
所述第一存储节点还用于关联存储所述第二标识与所述第一标识。
10.根据权利要求9所述的系统,其特征在于,所述第一标识和所述第一数据继续关联存储在所述第二存储节点中;或者,
所述第二存储节点用于不将所述第一数据迁移到所述第一存储节点中。
11.根据权利要求9或10所述的系统,其特征在于,
所述第二存储节点用于接收第二写请求,所述第二写请求用于请求写入所述第一标识和第三标识,所述第三标识为所述第一存储节点的标识或者为所述第二标识;
所述第二存储节点用于关联存储所述第一标识与所述第三标识。
12.根据权利要求9-11任一项所述的系统,其特征在于,
所述第一存储节点还用于接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述第一读请求包括所述第二标识;或者,在所述第二标识为所述第二存储节点的标识的情况下,所述第一读请求包括所述第一标识;
所述第一存储节点还用于向所述客户端发送响应消息,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述响应消息包括所述第一标识;或者,在所述第二标识为所述第二存储节点的标识的情况下,所述响应消息包括所述第二标识;
所述第二存储节点用于接收来自所述客户端的第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识;
所述第二存储节点用于向所述客户端发送所述第一数据。
13.根据权利要求9-11任一项所述的系统,其特征在于,
所述第一存储节点还用于接收来自客户端的第一读请求,所述第一读请求用于请求读取所述第一数据,其中,在所述第二标识为所述第一标识更新后的标识的情况下,所述第一读请求包括所述第二标识;或者,在所述第二标识为所述第二存储节点的标识的情况下,所述第一读请求包括所述第一标识;
所述第一存储节点还用于向所述第二存储节点发送第二读请求,所述第二读请求用于请求读取所述第一数据,且所述第二读请求包括所述第一标识以及所述客户端的标识;
所述第二存储节点用于向所述客户端发送所述第一数据。
14.根据权利要求9-11任一项所述的系统,其特征在于,
所述第一存储节点还用于接收第一删除请求,所述第一删除请求用于请求删除第一数据;
所述第一存储节点还用于删除关联存储的所述第二标识与所述第一标识,并向所述第二存储节点发送第二删除请求,所述第二删除请求用于请求删除所述第一数据;
所述第二存储节点用于删除关联存储的所述第一标识和所述第一数据。
15.根据权利要求9-11任一项所述的系统,其特征在于,
如果所述第二存储节点关联存储所述第一标识和所述第一数据的时长达到第一预设时长,所述第二存储节点用于删除关联存储的所述第一标识和所述第一数据;和/或,
如果所述第一存储节点关联存储所述第二标识和所述第一标识的时长达到第二预设时长,所述第一存储节点还用于删除关联存储的所述第二标识和所述第一标识。
16.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求1-8任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1-8任一项所述的数据处理方法。
CN202210818401.2A 2022-07-12 2022-07-12 一种数据处理方法及分布式存储系统 Pending CN117440002A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210818401.2A CN117440002A (zh) 2022-07-12 2022-07-12 一种数据处理方法及分布式存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210818401.2A CN117440002A (zh) 2022-07-12 2022-07-12 一种数据处理方法及分布式存储系统

Publications (1)

Publication Number Publication Date
CN117440002A true CN117440002A (zh) 2024-01-23

Family

ID=89552170

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210818401.2A Pending CN117440002A (zh) 2022-07-12 2022-07-12 一种数据处理方法及分布式存储系统

Country Status (1)

Country Link
CN (1) CN117440002A (zh)

Similar Documents

Publication Publication Date Title
US9779153B2 (en) Data transfer between storage systems using data fingerprints
US10540119B2 (en) Distributed shared log storage system having an adapter for heterogenous big data workloads
US20110197032A1 (en) Cache coordination between data sources and data recipients
JP6492123B2 (ja) 分散キャッシングおよびキャッシュ分析
US9483493B2 (en) Method and system for accessing a distributed file system
US10909086B2 (en) File lookup in a distributed file system
CN107391033B (zh) 数据迁移方法及装置、计算设备、计算机存储介质
US10515228B2 (en) Commit and rollback of data streams provided by partially trusted entities
US20160012155A1 (en) System and method for use of immutable accessors with dynamic byte arrays
CN111694639B (zh) 进程容器地址的更新方法、装置和电子设备
CN108200211B (zh) 集群中镜像文件下载的方法、节点和查询服务器
US11157456B2 (en) Replication of data in a distributed file system using an arbiter
US11625192B2 (en) Peer storage compute sharing using memory buffer
CN107329798B (zh) 数据复制的方法、装置和虚拟化系统
WO2020253523A1 (zh) 数据访问方法及装置
CN111444148A (zh) 基于MapReduce的数据传输方法和装置
US10970285B2 (en) Grid topology change in a distributed data grid when iterating on the contents of the data grid
CN117440002A (zh) 一种数据处理方法及分布式存储系统
CN106790521B (zh) 采用基于ftp的节点设备进行分布式组网的系统及方法
CN115714706A (zh) 基于内嵌h5的访问加速系统、方法、存储介质及电子设备
CN115562871A (zh) 内存分配管理的方法和装置
CN107102898B (zh) 一种基于numa架构的内存管理、构建数据结构的方法及装置
KR102048602B1 (ko) 차이점 보관용 디스크 포맷에 기초한 반복적 디스크 업로드 기법
WO2020151337A1 (zh) 分布式文件处理方法、装置、计算机设备以及存储介质
CN112637201A (zh) 一种web服务端的请求处理方法、装置、设备及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication