CN116467275A - 共享远程存储方法、装置、系统、电子设备及存储介质 - Google Patents

共享远程存储方法、装置、系统、电子设备及存储介质 Download PDF

Info

Publication number
CN116467275A
CN116467275A CN202310446219.3A CN202310446219A CN116467275A CN 116467275 A CN116467275 A CN 116467275A CN 202310446219 A CN202310446219 A CN 202310446219A CN 116467275 A CN116467275 A CN 116467275A
Authority
CN
China
Prior art keywords
file
data
shared
query
event
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
CN202310446219.3A
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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology 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 Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN202310446219.3A priority Critical patent/CN116467275A/zh
Publication of CN116467275A publication Critical patent/CN116467275A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files

Landscapes

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

Abstract

本公开提供了一种共享远程存储方法、装置、系统、电子设备及计算机可读存储介质,涉及远程存储技术领域。该方法包括:根据写入请求在本地缓存中创建对应的待存储缓存文件,将待写入数据写入至对应的待存储缓存文件中的存储块,根据写入请求生成文件路径,根据文件路径在远程文件中创建对应的共享文件,将完成写入的存储块写入至共享文件,根据查询请求确定文件名标识及存储块标识,当本地缓存中不存在对应的数据时,从远程文件中获取对应的数并缓存至本地缓存,并在执行相应操作后更新文件信息列表;本公开实施例通过存储节点共享远程存储文件,能够同时进行读、写等操作,弹性扩大缩小存储空间,保证读写等性能的稳定及文件信息的一致性。

Description

共享远程存储方法、装置、系统、电子设备及存储介质
技术领域
本公开涉及远程存储技术领域,尤其涉及一种共享远程存储方法、装置、系统、电子设备及计算机可读存储介质。
背景技术
在线分析处理系统(Online Analytical Processing,OLAP)是对海量数据进行实时、多维度、快速分析的技术,对性能有很高的要求,如需要达到毫秒级的查询响应时间,同时随着业务的快速变化又要求有较好资源弹性扩缩的能力,现有的存储方案存在无法弹性扩缩容、读写性能差的问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开提供一种共享远程存储方法、装置、系统、电子设备及计算机可读存储介质,至少在一定程度上克服相关技术中不能弹性扩缩容的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种共享远程存储方法,应用于存储节点,包括:根据用户的写入请求在本地缓存创建对应的待存储缓存文件,其中,所述写入请求包括待写入数据,所述待存储缓存文件包括多个存储块;将所述待写入数据写入至对应的存储块;根据所述写入请求生成文件路径,根据所述文件路径在远程文件中创建对应的共享文件;将完成写入的所述存储块写入至所述共享文件。
在本公开的一个实施例中,还包括:当写入成功时,添加所述写入请求对应的文件信息列表,其中,所述文件信息列表还包括:存储路径、表名或所述文件路径。
在本公开的一个实施例中,还包括:在元数据管理的文件事件队列中创建一个新增事件,其中,所述新增事件的事件信息包括以下至少之一:事件发生时间戳、事件所在的服务器地址、表名、文件路径、事件类型。
在本公开的一个实施例中,还包括:当其他服务器监听到所述文件事件队列有所述新增事件时,获取最后执行事件时间戳;当所述事件发生时间戳大于所述最后执行事件时间戳时,获取文件对应的文件锁;当所述文件锁不包括写锁时,根据所述新增事件对应的事件类型处理所述文件信息列表;当解除所述文件锁时,记录所述最后执行事件时间戳。
在本公开的一个实施例中,还包括:根据所述客户端发送的删除请求,确定所述删除请求对应的文件锁;当所述文件锁不包括写锁时,添加所述文件锁对应的所述写锁;根据所述删除请求确定删除文件对应的文件路径;根据所述文件路径从远程文件中删除对应的共享文件。
在本公开的一个实施例中,还包括以下至少之一:
删除所述共享文件对应的文件信息列表;
删除所述文件锁对应的所述写锁;
在文件事件队列中创建新增事件,其中,所述新增事件为文件删除事件。
根据本公开的另一个方面,还提供了一种共享远程存储方法,应用于存储节点,包括:接收客户端发送的查询请求,根据所述查询请求及文件信息列表确定查询文件区间,其中,所述文件信息列表包括多个文件对应的文件区间信息;当本地缓存未命中所述查询文件区间时,读取远程文件中与所述查询文件区间对应的区间数据,并将所述区间数据缓存至所述本地缓存;当所述本地缓存命中所述查询文件区间时,返回与所述查询文件区间对应的所述区间数据。
在本公开的一个实施例中,所述查询请求包括目标文件标识及查询区间数据;其中,所述根据所述查询请求及文件信息列表确定查询文件区间包括:根据所述目标文件标识,确定所述目标文件标识对应的所述文件信息列表;根据所述查询区间数据及所述文件信息列表,确定所述查询文件区间。
在本公开的一个实施例中,所述查询文件区间包括文件名标识及存储块标识;其中,所述当本地缓存未命中所述查询文件区间时,读取远程文件中与所述查询文件区间对应的区间数据,并将所述区间数据缓存至所述本地缓存包括:当本地缓存中不存在与所述文件名标识对应的文件数据,或不存在与所述存储块标识对应的区间数据时,表征所述本地缓存未命中所述查询文件区间,根据所述文件名标识及所述存储块标识,从所述远程文件中获取对应的所述区间数据;将所述区间数据缓存至所述本地缓存。
在本公开的一个实施例中,所述查询文件区间包括文件名标识及存储块标识;
其中,所述当本地缓存未命中所述查询文件区间时,读取远程文件中与所述查询文件区间对应的区间数据,并将所述区间数据缓存至所述本地缓存包括:
当存在以下情况之一时,表征所述本地缓存未命中所述查询文件区间:
本地缓存中不存在与所述文件名标识对应的文件数据;
本地缓存存在与所述文件名标识对应的文件数据但不完全存在与所述存储块标识对应的区间数据;
根据所述文件名标识及所述存储块标识,从所述远程文件中获取对应的所述区间数据,将所述区间数据缓存至所述本地缓存。
在本公开的一个实施例中,还包括:当所述本地缓存大于或等于缓存阈值时,获取所述本地缓存中文件的查询时间数据;根据所述查询时间数据,清理所述本地缓存中的文件数据或区间数据;根据清理的所述文件数据或所述区间数据,更新所述文件信息列表。
在本公开的一个实施例中,还包括:根据用户的写入请求在本地缓存创建对应的待存储缓存文件,其中,所述写入请求包括待写入数据,所述待存储缓存文件包括多个存储块;将所述待写入数据写入至对应的存储块;根据所述写入请求生成文件路径,根据所述文件路径在远程文件中创建对应的共享文件;将完成写入的所述存储块写入至所述共享文件。
在本公开的一个实施例中,还包括:当其他服务器监听到文件事件队列有新增事件时,获取最后执行事件时间戳;当事件发生时间戳大于所述最后执行事件时间戳时,获取文件对应的文件锁;当所述文件锁不包括写锁时,根据所述新增事件对应的事件类型处理文件信息列表;当解除所述文件锁时,记录所述最后执行事件时间戳。
在本公开的一个实施例中,还包括:根据客户端发送的删除请求,确定所述删除请求对应的文件锁;当所述文件锁不包括写锁时,添加所述文件锁对应的所述写锁;根据所述删除请求确定删除文件对应的文件路径;根据所述文件路径从远程文件中删除对应的共享文件。
根据本公开的另一个方面,还提供了一种共享远程存储装置,包括:
第一创建模块,根据用户的写入请求在本地缓存创建对应的待存储缓存文件,其中,所述写入请求包括待写入数据,所述待存储缓存文件包括多个存储块;
第一写入模块,将所述待写入数据写入至对应的存储块;
第二创建模块,根据所述写入请求生成文件路径,根据所述文件路径在远程文件中创建对应的共享文件;
第二写入模块,将完成写入的所述存储块写入至所述共享文件。
根据本公开的另一个方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述共享远程存储方法。
根据本公开的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的共享远程存储方法。
本公开的实施例所提供的共享远程存储方法、装置、系统、电子设备及计算机可读存储介质,存储节点根据写入请求在本地缓存中创建对应的待存储缓存文件,将待写入数据写入至对应的待存储缓存文件中的存储块,根据写入请求生成文件路径,根据文件路径在远程文件中创建对应的共享文件,将完成写入的存储块写入至共享文件,根据查询请求确定文件名标识及存储块标识,当本地缓存中不存在对应的数据时,从远程文件中获取对应的数并缓存至本地缓存,并在执行相应操作后更新文件信息列表,能够同时进行读、写等操作,弹性扩大缩小存储空间,保证读写等性能的稳定及文件信息的一致性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开实施例中一种共享远程存储方法流程图;
图2示出本公开实施例中一种写入文件缓存结构示意图;
图3示出本公开实施例中一种数据查询方法流程图;
图4示出本公开实施例中一种查询数据缓存结构示意图;
图5示出本公开实施例中一种本地缓存清理方法流程图;
图6示出本公开实施例中一种数据删除方法流程图;
图7示出本公开实施例中一种文件信息列表更新方法流程图;
图8示出本公开实施例中一种共享远程存储装置示意图;
图9示出本公开实施例中一种共享远程存储系统示意图;
图10示出了可以应用于本公开实施例的共享远程存储方法或共享远程存储装置的示例性系统架构的示意图;
图11示出本公开实施例中一种电子设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
为了便于理解,下面首先对本公开涉及到的几个名词进行解释如下:
OLAP(Online Analytical Processing,在线分析处理系统)是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。
SQL(Structured Query Language,结构化查询语言)是一种操作数据库的计算机语言,用来存储、检索和修改数据库中存储的数据,在OLAP中一般用SQL来作为操作语言。
NFS(Network File System,网络文件系统)可以让使用者访问网络上远程的文件就像使用自己的计算机一样,同时也指网络文件系统所使用的访问协议。
EBS(Elastic Block System,弹性块存储系统)提供持续的“块”存储,通过EBS可以随机访问一个文件系统中的所有内容。
下面结合附图及实施例对本示例实施方式进行详细说明。
首先,本公开实施例中提供了一种共享远程存储方法,该方法可以由任意具备计算处理能力的电子设备执行。
图1示出本公开实施例中一种共享远程存储方法流程图,如图1所示,本公开实施例中提供的共享远程存储方法,应用于存储节点,包括如下步骤:
S102,根据用户的写入请求在本地缓存创建对应的待存储缓存文件。
在一个实施例中,获取客户端发送的写入请求,其中,写入请求包括待写入数据,根据写入请求在本地缓存中创建对应的待存储缓存文件。
S104,将待写入数据写入至对应的存储块。
在一个实施例中,把写入请求中的待写入数据一次或多次循环写入到存储块中,待存储缓存文件流式接收待写入数据,写入线程按一定数据大小分批循环写入当前存储节点对应的本地缓存中。
流式接收待写入数据是指待存储缓存文件实时或接近实时的时效性接收大数据流。
在一个实施例中,还可将待写入数据写入至待存储缓存文件中,完成写入后,再根据预设分区策略,将完成写入的待存储缓存文件分成多个存储块,将存储块同步至共享文件。
在一个实施例中,本地缓存包括写缓存,把待写入数据分批写入到写缓存中,每个批次写一定的数据量。
S106,根据写入请求生成文件路径,根据所述文件路径在远程文件中创建对应的共享文件。
在一个实施例中,接收客户端发送的写入请求,解析生成表名和待写入数据,在本地缓存中创建对应的待存储缓存文件,从文件管理中生成全局唯一的文件名,并按照“/远程存储路径/表名/文件名”的格式生成文件路径,远程存储路径为共享文件的存储路径,基于生成的文件路径在远程存储中创建一个共享文件。
S108,将完成写入的存储块写入至共享文件。
图2示出本公开实施例中一种写入文件缓存结构示意图,本公开实施例中提供的写入文件缓存结构包括本地缓存201及远程分布式系统202,同步线程根据预设分区策略,将本地缓存201中的待存储缓存文件1分成多个存储块,即存储块1、存储块2、存储块3及存储块4,将待写入数据分批写入到存储块1、存储块2、存储块3及存储块4中,把完成写入的存储块逐一写入到远程分布式系统202中。
在一个实施例中,预设分区策略为将待存储缓存文件分成多个存储块的策略,可预设存储块的大小,将待存储缓存文件分成多个固定大小的存储块,存储块的大小可远大于每批次的待写入数据的大小,例如,每批次写入的待写入数据为100k,存储块的大小为1M,将待写入数据分10批次写入存储块中。
在一个实施例中,如果写入过程涉及多个待存储缓存文件,则可以打开多个线程同时同步写入待写入数据及将完成写入的存储块异步至远程分布式系统202中,通过这种方式,可以减少远程存储的写入次数,大幅度提升写入性能。
在一个实施例中,将完成写入的存储块异步至远程分布式系统202中的共享文件时,可不按照待存储缓存文件及存储块的顺序异步至共享文件中,例如,待存储缓存文件1包括存储块1、存储块2及存储块3、缓存文件4,待存储缓存文件2包括存储块2,将存储块1、存储块2、存储块3、存储块4、存储块2存储至远程分布式系统202,可按照待存储缓存文件及存储块的顺序异步至共享文件中,即存储块的顺序可为存储块1、存储块2、存储块3、存储块4、存储块2,也可不按照待存储缓存文件及存储块的顺序异步至共享文件中,即存储块的顺序为存储块2、存储块4、存储块3、存储块2、存储块1,可根据待存储缓存文件的文件名标识及存储块标识查找到对应的数据。
S110,当写入成功时,添加写入请求对应的文件信息列表。
在一个实施例中,文件信息列表包括但不限于:存储路径、表名、文件路径、存储块标识、文件名标识等,根据文件信息列表可查询到表、文件等数据,将写入请求对应的文件信息列表添加至本地磁盘的文件管理中。
S112,在文件事件队列中创建新增事件,文件事件队列为先进先出队列,后发生的事件放在队列尾部,其中,该新增事件的事件类型为文件写入事件。
在一个实施例中,新增事件的事件信息包括以下至少之一:事件发生时间戳、事件所在的服务器地址、表名、文件路径、事件类型等。
S114,写入成功,向客户端返回写入成功信息;写入失败,返回给客户端写入失败信息,写入失败信息包括但不限于:空间不足、网络故障等。
上述实施例中,多台服务器共享一份远程存储数据的技术方案,服务器的本地磁盘的计算资源和存储资源松耦合,写入时,先写入本地缓存中,然后异步按较大的存储块写入到远程文件中,提高写入性能及减少读写模型调用次数,通过本地缓存及远程文件,可使用的总的存储空间较大,可以可以灵活的弹性扩缩容,解决了本地缓存存储空间不足或太大的问题,当计算资源不够进行服务器扩容时,新增加服务器和现有服务器共享使用了远程存储的远程文件数据,因此新增加服务器不需要复制数据,而复制数据耗时很长,这样极大的缩短了扩容的时间,且操作完毕后只需要在元数据管理中注册一个事件,其他各服务器存储节点异步监听文件事件队列并更新文件信息列表来保证文件信息的最终一致性。
图3示出本公开实施例中一种数据查询方法流程图,如图3所示,本公开实施例中提供的数据查询方法,应用于存储节点,包括如下步骤:
S302,接收客户端发送的查询请求;
S304,根据查询请求及文件信息列表确定查询文件区间。
在一个实施例中,查询请求包括但不限于:目标文件标识及查询区间数据等,根据目标文件标识,确定目标文件标识对应的文件信息列表,文件信息列表为文件与文件的存储信息间映射关系表,文件信息列表包括但不限于:多个文件对应的文件区间信息、表名、文件路径、存储块标识、文件名标识等;文件路径为文件的存储路径;查询区间数据为客户端发送的查询文件部分范围的数据,例如查找文件第0-10k的数据;多个文件对应的文件区间信息,例如,每个文件对应的存储块标识、存储块数量、每个存储块存储的区间数据;根据查询区间数据及文件信息列表,确定查询文件区间,查询文件区间包括但不限于:文件名标识及存储块标识等;例如,根据缓存文件1的标识,查找对应的文件信息列表,确定该存储文件1包含3个存储块,即存储块1、存储块2及存储块3,每个存储块存储30M数据,查询缓存文件1的第0-30M,即文件区间为第0-30M,根据文件信息列表确定最终的查询文件区间为缓存文件1对应的存储块1的数据。
在一个实施例中,接收及解析客户端发送SQL查询请求,生成SQL查询请求对应的执行计划,执行计划是SQL语句经过查询优化器后,查询优化器会根据客户端的SQL语句所包含的字段和内容数量等统计信息,选择出一个执行效率最优的执行计划,根据执行计划,从SQL查询请求中获取查询的目标文件标识及查询区间数据、表名等,并根据目标文件标识及查询区间数据、表名等得到对应的文件信息列表,根据查询区间数据及文件信息列表,确定查询文件区间。
S306,当本地缓存未命中查询文件区间时,读取远程文件中与查询文件区间对应的区间数据,并将区间数据缓存至本地缓存。
在一个实施例中,查询文件区间包括但不限于:文件名标识及存储块标识等;
当存在以下情况之一时,表征本地缓存未命中查询文件区间,根据文件名标识及存储块标识,远程文件中获取对应的区间数据,将区间数据缓存至本地缓存:
1)本地缓存不存在与文件名标识对应的文件数据;例如,查找缓存文件1的存储块1的数据,在本地缓存中查找不到缓存文件1,从远程文件中获取存储块1对应的区间数据,将区间数据缓存至本地缓存;
2)本地缓存存在与文件名标识对应的文件数据但只存在部分与存储块标识对应的区间数据,可从远程文件中获取存储块标识对应的全部区间数据,将区间数据缓存至本地缓存,也可从远程文件中获取未在本地缓存中查找到的存储块标识对应区间数据,将区间数据缓存至本地缓存;例如,查找缓存文件1的存储块1及存储块2的数据,在本地缓存中只查找到缓存文件1的存储块2的区间数据,则本地缓存未命中查询文件区间,可从远程文件中获取存储块1及存储块2的区间数据;也可从本地缓存中获取存储块2的区间数据,从远程文件中获取存储块1对应的区间数据并缓存至本地缓存。
3)本地缓存存在与文件名标识对应的文件数据但不存在与存储块标识对应的区间数据,例如,查找缓存文件1的存储块1及存储块2的数据,在本地缓存中均未查找到缓存文件1的存储块1及存储块2的区间数据,从远程文件中获取存储块1及存储块2的区间数据并缓存至本地缓存。
在一个实施例中,本地缓存包括读缓存,从远程文件中获取对应的区间数据,同步线程返回区间数据,同时,异步线程将区间数据缓存至本地缓存的读缓存中,根据执行计划计算返回的区间数据,并向客户端返回查询的区间数据等查询结果。
S308,当本地缓存命中查询文件区间时,返回与查询文件区间对应的区间数据。
在一个实施例中,当本地缓存中存在与文件名标识及存储块标识对应的区间数据时,表征本地缓存命中查询文件区间,返回区间数据;例如,查找缓存文件1的存储块1的数据,在本地缓存中查找到缓存文件1的存储块1的区间数据,则本地缓存命中查询文件区间。
在一个实施例中,热数据存储方式可包括:
1)只存储在本地缓存中;
2)存储在本地缓存及远程文件中,把热数据存储在本地缓存中,利用本地磁盘性能好的优势,让查询的部分数据从本地获取,其他数据从共享的远程文件获取,提高读写性能。
3)只存储在远程文件中,后台启动异步线程,把查询次数多的热数据加载到本地缓存中,等缓存就绪之后再从本地缓存中查询数据。
在一个实施例中,文件信息列表还可包括存储位置数据,存储位置数据为文件数据存储的位置,存储位置数据可包括热数据存储方式,根据客户端发送的查询请求及存储位置数据等确定热数据存储方式,根据热数据存储方式获取对应数据;例如,查询缓存文件1对应的存储块1及存储块2的数据,根据存储位置数据确定该存储块1只存储在本地缓存中,直接从本地缓存中获取;根据存储位置数据确定该存储块2只存储在远程文件中,缓存至本地缓存,再从本地缓存中获取。
在一个实施例中,可通过EBS弹性块存储系统存储文件数据,弹性块存储系统采用和本地磁盘一样的读写模型,不需要缓存加速。
在一个实施例中,查询时,从元数据管理中获取最后执行事件时间戳对应的服务器,即数据最新时间戳所在的服务器,并将查询发送到该服务器,从而保证查询的数据是最新的。
上述实施例中,多台服务器共享一份远程存储数据的技术方案,服务器的本地磁盘的计算资源和存储资源松耦合,新增服务器不需要冗余存储数据,只增加了计算资源没有增加存储资源,可以灵活的弹性扩缩容,避免了存储的浪费,将查询发送至数据最新时间戳所在的服务器,从而保证查询的数据是最新的,通过将远程文件对应的存储块数据写入到本地缓存中,再从本地缓存获取数据,提高整体读写性能,虽然是多台服务器共享了一份远程文件数据,但是远程文件数据保存了多份相同的拷贝,可以保障数据的安全性,且共享的远程文件数据不需要复制或清理,可以实现快速满足业务需求的目标。
图4示出本公开实施例中一种查询数据缓存结构示意图,如图4所示,本公开实施例中提供的查询数据缓存结构包括:本地缓存401及远程分布式系统402。
本地缓存401存储缓存文件1、缓存文件2及缓存文件3,将缓存文件1、缓存文件2及缓存文件3同步至远程分布式系统402,即远程分布式系统402存储与缓存文件1对应的存储块1、存储块4、存储块7,与缓存文件2对应的存储块2、存储块5、存储块8,与缓存文件3对应的存储块3、存储块6;缓存文件1为90M,缓存文件2为90M,缓存文件3为60M,一个存储块为30M,则存储块1存储缓存文件1中0-30M区间数据、存储块4存储缓存文件1中31-60M区间数据、存储块7存储缓存文件1中61-90M区间数据。
查询数据时,可查询文件某个范围的区间数据,申请查询缓存文件1的第0-30M,根据文件信息列表确定查询文件区间为缓存文件1对应的存储块1的数据,若本地缓存401中已清除缓存文件1的数据,或只清除缓存文件1的存储块1的数据,则本地缓存401未命中查询文件区间,继续按照文件名标识及存储块标识作为关键字查找缓存数据,在远程分布式系统402中获取缓存文件1对应的存储块1的数据,并缓存至本地缓存401中。
上述实施例中,服务器的本地磁盘的计算资源和存储资源松耦合,新增服务器不需要冗余存储数据,只增加了计算资源没有增加存储资源,可以灵活的弹性扩缩容,避免了存储的浪费,能快速通过本地缓存401及远程分布式系统402查找到数据,提高整体读写性能。
图5示出本公开实施例中一种本地缓存清理方法流程图,如图5所示,本公开实施例中提供的本地缓存清理方法,应用于存储节点,包括如下步骤:
S502,当本地缓存大于或等于缓存阈值时,获取本地缓存中文件的查询时间数据。
在一个实施例中,缓存阈值可人工进行设置,也可以根据历史缓存数据、或本地磁盘的性能等自动进行设置。
S504,根据查询时间数据,清理本地缓存中的文件数据或区间数据。
在一个实施例中,查询时间数据包括但不限于:文件查询时间戳、查询文件大小等,可按照文件查询时间戳排序,清理距离现在时间最远的文件并更新文件信息列表,也可根据文件查询时间戳、查询文件大小等进行加权计算,清理相应的文件并更新文件信息列表,加权计算涉及的加权值可人工进行设置,也可以根据历史数据等自动进行设置。
在一个实施例中,可对本地缓存中热数据对应的文件进行标注,并设置标注规则,标注规则为处理已标注的文件的规则,例如,不清理已标注文件、清理文件大小超过标注阈值的已标注文件等,标注阈值可根据需要进行设置。
S506,根据清理的文件数据或区间数据,更新文件信息列表。
例如,清理本地缓存中缓存文件1,删除文件更新列表中缓存文件1的相关数据。
上述实施例中,读取时,先把远程文件对应的存储块数据写入到本地缓存中,后续从本地缓存中读取存储块数据,通过存储块批量读写的方案,可以减少读写模型调用次数,降低了延迟提升了吞吐量,根据查询时间数据,清理本地缓存中的文件数据或区间数据,可节约资源。
图6示出本公开实施例中一种数据删除方法流程图,如图6所示,本公开实施例中提供的数据删除方法,应用于存储节点,包括如下步骤:
S602,根据客户端发送的删除请求,确定删除请求对应的文件锁。
在一个实施例中,接收到客户端的删除请求,解析出表名,并根据表名从文件信息列表获取对应的文件路径,并从元数据管理中获取对应的文件锁。
在一个实施例中,文件锁可以与文件路径对应。
S604,当文件锁不包括写锁时,添加文件锁对应的写锁。
在一个实施例中,文件锁不包括写锁时或只存在读锁时直接加写锁,如果有写锁需要循环等待,每次等待预设时间阈值,直到没有写锁再加写锁,预设时间阈值可根据用户需要进行设置,一般设置为几秒。
S606,根据文件路径从远程文件中删除对应的共享文件。
在一个实施例中,若本地缓存中有与共享文件对应的缓存文件时,按照上述本地缓存清理方法清理该缓存文件,对比不作赘述。
S608,删除共享文件对应的文件信息列表,例如表及文件路径等;
S610,从元数据管理中删除文件锁对应的写锁;
S612,在文件事件队列中创建新增事件,其中,该新增事件的事件类型为文件删除事件;
S614,删除失败,比如网络故障或文件不存在,则返回客户端失败信息;删除成功,返回客户端删除成功信息。
上述实施例中,操作完毕后只需要在元数据管理中注册一个事件,其他各服务器存储节点异步监听文件事件队列并更新文件信息列表来保证文件信息的最终一致性,保证各服务器文件信息的一致性以及达到最佳的文件操作性能,通过全局读写锁来解决共享文件同时操作的冲突。
图7示出本公开实施例中一种文件信息列表更新方法流程图,如图7所示,本公开实施例中提供的文件信息列表更新方法,应用于存储节点,包括如下步骤:
S702,在元数据管理的文件事件队列中创建一个新增事件,其中,新增事件的事件信息包括以下至少之一:事件发生时间戳、事件所在的服务器地址、表名、文件路径、事件类型等,事件类型包括但不限于:文件删除事件、文件写入事件、文件改名事件、存储空间更新事件、远程文件偏移事件等;文件改名事件为更改文件名标识,存储空间更新事件为远程存储的存储空间有变更,远程文件偏移事件为远程文件的存储位置有更新。
S704,当其他服务器监听到文件事件队列有新增事件时,获取最后执行事件时间戳。
在一个实施例中,一个服务器创建新增事件,其他服务器通过文件管理的后台线程监听原数据管理的文件事件队列,保存最后执行事件时间戳,监听到文件事件队列有新增事件时,元数据管理会回调监听服务器的文件管理接口进行处理。
S706,当事件发生时间戳大于最后执行事件时间戳时,获取文件对应的文件锁。
在一个实施例中,服务器的文件管理被调用时,获取大于最后执行事件时间戳的事件列表,按照事件先后顺序进行逐一重复S708到S710步骤,从文件事件信息中解析服务器地址、表名、文件路径和事件类型等,按照事件类型执行S708的步骤。
S708,当文件锁不包括写锁时,根据新增事件对应的事件类型处理文件信息列表。
在一个实施例中,事件类型为文件删除事件,在文件管理、元数据管理中删除表和文件的信息,后台线程异步删除对应的远程文件;事件类型为文件写入事件,在文件管理中增加表和文件的信息。
在一个实施例中,文件改名事件对应的操作可包括更改元数据管理中的文件名,无需改动对应的远程文件中的文件名。
在一个实施例中,存储空间更新事件对应的操作可为获取远程文件对应的目录剩余空间大小,将数据更新至元数据管理中,无需真正统计远程文件目录空间。
S710,当元数据管理解除文件锁时,记录最后执行事件时间戳。
在一个实施例中,查询时,从元数据管理中获取最后执行事件时间戳对应的服务器,即数据最新时间戳所在的服务器,并将查询发送到该服务器,从而保证查询的数据是最新的。
上述实施例中,各服务器存储节点异步监听文件事件队列并更新文件信息列表来保证文件信息的最终一致性,保证各服务器文件信息的一致性以及达到最佳的文件操作性能,通过全局读写锁来解决共享文件同时操作的冲突,且将查询发送至数据最新时间戳所在的服务器,从而保证查询的数据是最新的。
基于同一发明构思,本公开实施例中还提供了一种共享远程存储装置,如下面的实施例。由于该装置实施例解决问题的原理与上述方法实施例相似,因此该装置实施例的实施可以参见上述方法实施例的实施,重复之处不再赘述。
图8示出本公开实施例中一种共享远程存储装置示意图,如图8所示,该共享远程存储装置8包括:第一创建模块801、第一写入模块802、第二创建模块803及第二写入模块804;
第一创建模块801,根据用户的写入请求在本地缓存创建对应的待存储缓存文件,其中,所述写入请求包括待写入数据,所述待存储缓存文件包括多个存储块;
第一写入模块802,将所述待写入数据写入至对应的存储块;
第二创建模块803,根据所述写入请求生成文件路径,根据所述文件路径在远程文件中创建对应的共享文件;
第二写入模块804,将完成写入的所述存储块写入至所述共享文件
共享远程存储装置8还包括:区间确定模块805、远程获取模块806及本地获取模块807;
区间确定模块805,根据客户端发送的查询请求及文件信息列表确定查询文件区间,其中,文件信息列表包括多个文件对应的文件区间信息;
远程获取模块806,当本地缓存未命中查询文件区间时,读取远程文件中与查询文件区间对应的区间数据,并将区间数据缓存至本地缓存;
本地获取模块807,当本地缓存命中查询文件区间时,返回与查询文件区间对应的区间数据。
在一个实施例中,区间确定模块805包括查询请求解析模块,用于接收及解析客户端发送SQL查询请求,生成SQL查询请求对应的执行计划。
在一个实施例中,区间确定模块805还包括文件信息列表确定模块,用于根据目标文件标识,确定目标文件标识对应的文件信息列表。
在一个实施例中,区间确定模块805还包括文件区间确定模块,根据查询区间数据及文件信息列表,确定查询文件区间。
在一个实施例中,远程获取模块806包括区间数据获取模块及区间数据缓存模块,区间数据获取模块用于从远程文件中获取对应的区间数据,区间数据缓存模块用于将区间数据缓存至本地缓存。
在一个实施例中,本地获取模块807包括热数据存储模块,用于存储热数据。
上述实施例中,通过解耦计算和存储,让服务器共享远程文件,让计算和存储独立扩缩容从而达到极致弹性,通过IO读写协议优化和缓存机制保证读写性能。
基于同一发明构思,本公开实施例中还提供了一种共享远程存储系统,如下面的实施例。由于该系统实施例解决问题的原理与上述方法实施例相似,因此该系统实施例的实施可以参见上述方法实施例的实施,重复之处不再赘述。
图9示出本公开实施例中一种共享远程存储系统示意图,如图9所示,该共享远程存储系统9包括:元数据管理901、本地磁盘902、远程分布式系统903;
远程分布式系统903是分布式块存储系统或分布式文件存储系统,服务器通过NFS协议访问远程存储的远程文件。
在一个实施例中,根据不同场景选择合适的远程分布式系统903以及合适的访问协议,对性能要求高的场景,可以选择分布式块存储和分布式文件存储系统,并优化IO(数据读写)模型,降低远程存储的交互次数。
在一个实施例中,本地磁盘902包括但不限于:硬盘驱动器HDD、固态硬盘SSD,可根据容量及性能等进行选择,本地磁盘902可在远程分布式系统903中都有缓存文件的独立拷贝,能解决存储容量的弹性问题。
NFS(Network File System,网络文件系统)可以让使用者访问网络上远程文件就像使用自己的计算机一样,NFS同时也指网络文件系统所使用的访问协议。
元数据管理901用于管理文件事件队列及文件锁,记录最后执行事件时间戳等。
本地磁盘902对应的计算部件分为多个分片,每个分片对应至少两个副本,本公开实施例以两个分片对应两个副本为例一共四个存储节点,即分片1副本1、分片1副本2、分片2副本1、分片2副本2。
集群:集群指由元数据管理901和一组分片及副本的组合,对外提供统一的写入和查询服务接口的服务组合。
分片:指在一个集群中数据分割存储在不同的分片中,每个分片的数据都是独一无二的,所有分片的数据的合集就是全部数据。
副本:副本指同一份数据文件的不同拷贝,用于保证数据的安全性和提供更好的吞吐能力。
当其中一台服务器故障导致本地磁盘902的数据损坏或丢失时,相同分片的其他副本服务器还有故障副本相同的数据复制,可以保证数据不丢失,其他副本也能对外提供查询服务;在同一时刻的多个并发查询,可以分发到拥有相同副本数据的服务器中同时执行,从而提升了系统的整体吞吐量,即采用数据多副本的技术保证数据存储的安全性和提升集群的吞吐量。
在一个实施例中,分片1副本1、分片1副本2、分片2副本1、分片2副本2均可执行写入、删除、更新等操作;也可只有一个副本能够执行上述操作,其他副本同步更新,例如只有分片1副本2执行写入、删除、更新等操作,其他副本即分片1副本1、分片2副本1及分片2副本2根据分片1副本2的操作进行更新。
每个存储节点服务器的程序由SQL执行、文件管理和本地缓存三部分组成,数据存储在本地缓存及远程分布式系统903中的远程文件中。
1)SQL执行负责接收客户端的SQL请求解析并执行,SQL请求包括但不限于:写入请求、查询请求和删除请求等多种对文件操作的SQL。
写入请求对应的写入操作:把当前表的待写入数据写入远程存储中,并把表名和文件路径等添加到文件管理中;
查询请求对应的查询操作:根据表名从文件管理获取文件路径,读取远程存储对应共享文件的数据并进行相关计算,然后把计算结果返回给客户端;
删除请求对应的删除操作:根据当前表名从文件管理中获取文件路径,并删除远程存储对应的共享文件,并把删除的表名和文件名等添加到文件管理中。
在一个实施例中,写入和删除文件操作在同一时刻只能一台服务器执行,当加读锁时,如果存在写锁需要等待写锁释放,如果存在读锁,可以继续加锁,新增文件信息可以多台服务器同时进行,通过元数据管理901的并发控制,让多副本存储节点可以同时写和读,充分利用每台服务器的计算能力,提升了系统整体吞吐量。
2)文件管理负责管理包含表和有效的文件路径列表等文件信息列表,在当前服务器和其他服务器新增和删除的文件都会被记录;监听其他副本的文件事件并更新文件管理中的表和文件信息,当其他副本增加或删除文件时,会及时更新当前服务器文件信息,以便查询时能够获取到最新的文件。
3)本地缓存分为读缓存和写缓存,查询时从读缓存中获取数据,写入数据时先写入写缓存中再同步到远程存储中。
上述实施例中,把数据存储在远程分布式系统903上,存储和检索时读写的是远程文件,共享远程存储系统由大量服务器对应的磁盘组成,可根据存储实际使用情况和增长趋势不定期的扩大或缩小,通过多副本节点共享存储的技术,多台服务器共享一份数据,新增服务器不需要冗余存储数据,只增加了计算资源没有增加存储资源,避免了存储的浪费,且虽然是多台服务器共享了一份数据,但是这一份数据在分布式存储系统中也保存了多份相同的拷贝,可以保障数据的安全性。
图10示出了可以应用于本公开实施例的共享远程存储方法或共享远程存储装置的示例性系统架构的示意图。
如图10所示,系统架构1000可以包括终端设备1001、1002、1003,网络1004和服务器1005。
网络1004用以在终端设备1001、1002、1003和服务器1005之间提供通信链路的介质,可以是有线网络,也可以是无线网络。
可选地,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(ExtensibleMarkupLanguage,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(InternetProtocolSecurity,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
终端设备1001、1002、1003可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、台式计算机等。
可选地,不同的终端设备1001、1002、1003中安装的应用程序的客户端是相同的,或基于不同操作系统的同一类型应用程序的客户端。基于终端平台的不同,该应用程序的客户端的具体形态也可以不同,比如,该应用程序客户端可以是手机客户端、PC客户端等。
服务器1005可以是提供各种服务的服务器,例如对用户利用终端设备1001、1002、1003所进行操作的装置提供支持的后台管理服务器。后台管理服务器可以对接收到的请求等数据进行分析等处理,并将处理结果反馈给终端设备,例如,处理删除请求、写入请求及更新请求等,计算资源等。
可选地,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本领域技术人员可以知晓,图10中的终端设备、网络和服务器的数量仅仅是示意性的,根据实际需要,可以具有任意数目的终端设备、网络和服务器。本公开实施例对此不作限定。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图11来描述根据本公开的这种实施方式的电子设备1100。图11显示的电子设备1100仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图11所示,电子设备1100以通用计算设备的形式表现。电子设备1100的组件可以包括但不限于:上述至少一个处理单元1110、上述至少一个存储单元1120、连接不同系统组件(包括存储单元1120和处理单元1110)的总线1130。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1110执行,使得所述处理单元1110执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
例如,所述处理单元1110可以执行上述方法实施例的如下步骤:根据用户的写入请求在本地缓存创建对应的待存储缓存文件,其中,所述写入请求包括待写入数据,所述待存储缓存文件包括多个存储块;将所述待写入数据写入至对应的存储块;根据所述写入请求生成文件路径,根据所述文件路径在远程文件中创建对应的共享文件;将完成写入的所述存储块写入至所述共享文件。
存储单元1120可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)11201和/或高速缓存存储单元11202,还可以进一步包括只读存储单元(ROM)11203。
存储单元1120还可以包括具有一组(至少一个)程序模块11205的程序/实用工具11204,这样的程序模块11205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1130可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1100也可以与一个或多个外部设备1140(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1100交互的设备通信,和/或与使得该电子设备1100能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1150进行。并且,电子设备1100还可以通过网络适配器1160与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1160通过总线1130与电子设备1100的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质可以是可读信号介质或者可读存储介质。其上存储有能够实现本公开上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
例如,本公开实施例中的程序产品被处理器执行时实现如下步骤的方法:根据目标文件标识,确定目标文件标识对应的文件信息列表,根据查询区间数据及文件信息列表,确定查询文件区间,当本地缓存中不存在与文件名标识对应的文件数据,或不存在与存储块标识对应的区间数据时,表征本地缓存未命中查询文件区间,根据文件名标识及存储块标识,从远程文件中获取对应的区间数据,将区间数据缓存至本地缓存,当本地缓存命中查询文件区间时,返回与查询文件区间对应的区间数据。
本公开中的计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本公开中,计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可选地,计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
在具体实施时,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

Claims (17)

1.一种共享远程存储方法,其特征在于,应用于存储节点,包括:
根据用户的写入请求在本地缓存创建对应的待存储缓存文件,其中,所述写入请求包括待写入数据,所述待存储缓存文件包括多个存储块;
将所述待写入数据写入至对应的存储块;
根据所述写入请求生成文件路径,根据所述文件路径在远程文件中创建对应的共享文件;
将完成写入的所述存储块写入至所述共享文件。
2.根据权利要求1所述的共享远程存储方法,其特征在于,还包括:
当写入成功时,添加所述写入请求对应的文件信息列表,其中,所述文件信息列表包括:存储路径、表名或所述文件路径。
3.根据权利要求1所述的共享远程存储方法,其特征在于,还包括:
在元数据管理的文件事件队列中创建一个新增事件,其中,所述新增事件的事件信息包括以下至少之一:事件发生时间戳、事件所在的服务器地址、表名、文件路径、事件类型。
4.根据权利要求3所述的共享远程存储方法,其特征在于,还包括:
当其他服务器监听到所述文件事件队列有所述新增事件时,获取最后执行事件时间戳;
当所述事件发生时间戳大于所述最后执行事件时间戳时,获取文件对应的文件锁;
当所述文件锁不包括写锁时,根据所述新增事件对应的事件类型处理文件信息列表;
当解除所述文件锁时,记录所述最后执行事件时间戳。
5.根据权利要求1所述的共享远程存储方法,其特征在于,还包括:
根据客户端发送的删除请求,确定所述删除请求对应的文件锁;
当所述文件锁不包括写锁时,添加所述文件锁对应的所述写锁;
根据所述删除请求确定删除文件对应的文件路径;
根据所述文件路径从远程文件中删除对应的共享文件。
6.根据权利要求5所述的共享远程存储方法,其特征在于,还包括以下至少之一:
删除所述共享文件对应的文件信息列表;
删除所述文件锁对应的所述写锁;
在文件事件队列中创建新增事件,其中,所述新增事件为文件删除事件。
7.一种共享远程存储方法,其特征在于,包括:
接收客户端发送的查询请求;
根据所述查询请求及文件信息列表确定查询文件区间,其中,所述文件信息列表包括多个文件对应的文件区间信息;
当本地缓存未命中所述查询文件区间时,读取远程文件中与所述查询文件区间对应的区间数据,并将所述区间数据缓存至所述本地缓存;
当所述本地缓存命中所述查询文件区间时,返回与所述查询文件区间对应的所述区间数据。
8.根据权利要求7所述的共享远程存储方法,其特征在于,所述查询请求包括目标文件标识及查询区间数据;
其中,所述根据所述查询请求及文件信息列表确定查询文件区间包括:
根据所述目标文件标识,确定所述目标文件标识对应的所述文件信息列表;
根据所述查询区间数据及所述文件信息列表,确定所述查询文件区间。
9.根据权利要求7所述的共享远程存储方法,其特征在于,所述查询文件区间包括文件名标识及存储块标识;
其中,所述当本地缓存未命中所述查询文件区间时,读取远程文件中与所述查询文件区间对应的区间数据,并将所述区间数据缓存至所述本地缓存包括:
当存在以下情况之一时,表征所述本地缓存未命中所述查询文件区间:
本地缓存不存在与所述文件名标识对应的文件数据;
本地缓存存在与所述文件名标识对应的文件数据但不完全存在与所述存储块标识对应的区间数据;
根据所述文件名标识及所述存储块标识,从所述远程文件中获取对应的所述区间数据,将所述区间数据缓存至所述本地缓存。
10.根据权利要求7所述的共享远程存储方法,其特征在于,所述查询文件区间包括文件名标识及存储块标识;
其中,所述当所述本地缓存命中所述查询文件区间时,返回与所述查询文件区间对应的所述区间数据包括:
当本地缓存中存在与所述文件名标识及所述存储块标识对应的区间数据时,表征所述本地缓存命中所述查询文件区间,返回所述区间数据。
11.根据权利要求7所述的共享远程存储方法,其特征在于,还包括:
当所述本地缓存大于或等于缓存阈值时,获取所述本地缓存中文件的查询时间数据;
根据所述查询时间数据,清理所述本地缓存中的文件数据或区间数据;
根据清理的所述文件数据或所述区间数据,更新所述文件信息列表。
12.根据权利要求7所述的共享远程存储方法,其特征在于,还包括:
根据用户的写入请求在本地缓存创建对应的待存储缓存文件,其中,所述写入请求包括待写入数据,所述待存储缓存文件包括多个存储块;
将所述待写入数据写入至对应的存储块;
根据所述写入请求生成文件路径,根据所述文件路径在远程文件中创建对应的共享文件;
将完成写入的所述存储块写入至所述共享文件。
13.根据权利要求7所述的共享远程存储方法,其特征在于,还包括:
当其他服务器监听到文件事件队列有新增事件时,获取最后执行事件时间戳;
当事件发生时间戳大于所述最后执行事件时间戳时,获取文件对应的文件锁;
当所述文件锁不包括写锁时,根据所述新增事件对应的事件类型处理文件信息列表;
当解除所述文件锁时,记录所述最后执行事件时间戳。
14.根据权利要求7所述的共享远程存储方法,其特征在于,还包括:
根据客户端发送的删除请求,确定所述删除请求对应的文件锁;
当所述文件锁不包括写锁时,添加所述文件锁对应的所述写锁;
根据所述删除请求确定删除文件对应的文件路径;
根据所述文件路径从远程文件中删除对应的共享文件。
15.一种共享远程存储装置,其特征在于,包括:
第一创建模块,根据用户的写入请求在本地缓存创建对应的待存储缓存文件,其中,所述写入请求包括待写入数据,所述待存储缓存文件包括多个存储块;
第一写入模块,将所述待写入数据写入至对应的存储块;
第二创建模块,根据所述写入请求生成文件路径,根据所述文件路径在远程文件中创建对应的共享文件;
第二写入模块,将完成写入的所述存储块写入至所述共享文件。
16.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~14中任意一项所述共享远程存储方法。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~14中任意一项所述的共享远程存储方法。
CN202310446219.3A 2023-04-23 2023-04-23 共享远程存储方法、装置、系统、电子设备及存储介质 Pending CN116467275A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310446219.3A CN116467275A (zh) 2023-04-23 2023-04-23 共享远程存储方法、装置、系统、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310446219.3A CN116467275A (zh) 2023-04-23 2023-04-23 共享远程存储方法、装置、系统、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116467275A true CN116467275A (zh) 2023-07-21

Family

ID=87182103

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310446219.3A Pending CN116467275A (zh) 2023-04-23 2023-04-23 共享远程存储方法、装置、系统、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116467275A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117591040A (zh) * 2024-01-18 2024-02-23 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及可读存储介质
CN117615013A (zh) * 2024-01-19 2024-02-27 杭州优云科技股份有限公司 文件查找方法、装置、设备及可读存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117591040A (zh) * 2024-01-18 2024-02-23 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及可读存储介质
CN117615013A (zh) * 2024-01-19 2024-02-27 杭州优云科技股份有限公司 文件查找方法、装置、设备及可读存储介质
CN117615013B (zh) * 2024-01-19 2024-04-19 杭州优云科技股份有限公司 文件查找方法、装置、设备及可读存储介质

Similar Documents

Publication Publication Date Title
US7860907B2 (en) Data processing
US7653668B1 (en) Fault tolerant multi-stage data replication with relaxed coherency guarantees
US8341118B2 (en) Method and system for dynamically replicating data within a distributed storage system
US10853242B2 (en) Deduplication and garbage collection across logical databases
CN110046133B (zh) 一种存储文件系统的元数据管理方法、装置及系统
CN112236758A (zh) 云存储分布式文件系统
US8095678B2 (en) Data processing
KR20180021679A (ko) 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원
CN116467275A (zh) 共享远程存储方法、装置、系统、电子设备及存储介质
US10503693B1 (en) Method and system for parallel file operation in distributed data storage system with mixed types of storage media
US8090925B2 (en) Storing data streams in memory based on upper and lower stream size thresholds
US10831719B2 (en) File consistency in shared storage using partial-edit files
Liu et al. Cfs: A distributed file system for large scale container platforms
US9075722B2 (en) Clustered and highly-available wide-area write-through file system cache
CN108540510B (zh) 一种云主机创建方法、装置及云服务系统
CN103501319A (zh) 一种低延迟的面向小文件的分布式存储系统
US20180107404A1 (en) Garbage collection system and process
US20190057027A1 (en) Key Data Store Garbage Collection and Multipart Object Management
US20180276267A1 (en) Methods and system for efficiently performing eventual and transactional edits on distributed metadata in an object storage system
CN114528255A (zh) 元数据管理方法、电子设备及计算机程序产品
US8176087B2 (en) Data processing
US11210212B2 (en) Conflict resolution and garbage collection in distributed databases
CN113051221A (zh) 数据存储方法、装置、介质、设备及分布式文件系统
JP2005063374A (ja) データ管理方法、データ管理装置、およびそのためのプログラムならびに記録媒体。
CN114756509B (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