CN112445763B - 文件操作方法、装置、电子设备及存储介质 - Google Patents
文件操作方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112445763B CN112445763B CN201910824452.4A CN201910824452A CN112445763B CN 112445763 B CN112445763 B CN 112445763B CN 201910824452 A CN201910824452 A CN 201910824452A CN 112445763 B CN112445763 B CN 112445763B
- Authority
- CN
- China
- Prior art keywords
- target
- file
- execution
- main body
- preset
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例公开了一种文件操作方法、装置、电子设备及存储介质,所述方法包括:接收用户对目标文件的操作请求;其中,所述操作请求包括所述目标文件的文件句柄;所述文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到;根据所述文件句柄确定分配给所述目标文件的目标执行主体,并将所述操作请求发送给所述目标执行主体。该技术方案能够可以在不加锁的情况下使用不同的目标执行主体处理不同目标文件的操作请求,同时还能够提高文件信息的查询效率,最终降低了软件开销和文件操作的延时,提升了文件操作的处理效率。
Description
技术领域
本公开涉及计算机技术领域,具体涉及一种文件操作方法、装置、电子设备及存储介质。
背景技术
用户打开文件后,文件系统客户端会给该文件分配文件句柄,并返回给用户,用户后续可以利用该文件句柄发起对该文件的读写等操作请求。文件系统客户端在用户发起读写等操作请求后,需要根据用户提供的文件句柄查询得到对应的文件信息,并利用文件信息执行读写操作。
为了尽量增加文件读写的服务能力,大型文件系统的客户端大多采用多线程的实现方式。因此,在大型的文件系统如分布式文件系统中,读写请求的次数以及打开的文件句柄数量巨大,利用文件句柄查询文件信息的效率很低,致使分布式文件系统的操作延时较大。
发明内容
本公开实施例提供一种文件操作方法、装置、电子设备及计算机可读存储介质。
第一方面,本公开实施例中提供了一种文件操作方法。
具体的,所述文件操作方法,包括:
接收用户对目标文件的操作请求;其中,所述操作请求包括所述目标文件的文件句柄;所述文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到;
根据所述文件句柄确定分配给所述目标文件的目标执行主体,并将所述操作请求发送给所述目标执行主体。
进一步地,所述接收用户对目标文件的操作请求之前,所述方法还包括:
接收用户对所述目标文件的打开请求;
从多个预设执行主体中选择所述目标执行主体;
将所述目标文件的打开请求发送给所述目标执行主体,以便所述目标执行主体为所述目标文件分配所述目标存储地址,并至少基于所述目标存储地址以及所述目标执行主体的标识获得所述目标文件的文件句柄。
进一步地,从多个预设执行主体中选择所述目标执行主体,包括以下至少之一:
从所述多个预设执行主体中随机选择其中一个作为所述目标执行主体;
根据负载均衡策略从所述多个预设执行主体中选择其中一个作为所述目标执行主体。
进一步地,还包括:
建立多个预设执行主体;其中,所述多个预设执行主体能够并行运行;
为每个所述预设执行主体创建对应的存储空间,以便所述预设执行主体从所述存储空间中为所述目标文件分配所述目标存储地址。
第二方面,本公开实施例中提供了一种文件操作方法。
具体的,所述文件操作方法,包括:
创建多个预设执行主体,并为每一所述预设执行主体分配对应的存储空间;
接收用户对目标文件的打开请求,为所述打开请求从所述多个预设执行主体中分配一目标执行主体;
从所述目标执行主体获取所述目标文件的文件句柄;其中,所述文件句柄为所述目标执行主体至少根据所述目标文件在所述目标执行主体对应的所述存储空间中的存储地址和所述目标执行主体的标识生成。
进一步地,所述方法还包括:
接收用户对所述目标文件的读写请求;
根据所述目标文件的所述文件句柄确定分配给所述目标文件的所述目标执行主体;
将所述读写请求发送给所述目标执行主体。
第三方面,本发明实施例中提供了一种文件操作装置。
具体的,所述文件操作装置,包括:
第一接收模块,被配置为接收用户对目标文件的操作请求;其中,所述操作请求包括所述目标文件的文件句柄;所述文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到;
第一确定模块,被配置为根据所述文件句柄确定分配给所述目标文件的目标执行主体,并将所述操作请求发送给所述目标执行主体。
进一步地,所述第一接收模块之前,所述装置还包括:
第二接收模块,被配置为接收用户对所述目标文件的打开请求;
选择模块,被配置为从多个预设执行主体中选择所述目标执行主体;
第一发送模块,被配置为将所述目标文件的打开请求发送给所述目标执行主体,以便所述目标执行主体为所述目标文件分配所述目标存储地址,并至少基于所述目标存储地址以及所述目标执行主体的标识获得所述目标文件的文件句柄。
进一步地,所述选择模块,包括以下至少之一:
第一选择子模块,被配置为从所述多个预设执行主体中随机选择其中一个作为所述目标执行主体;
第二选择子模块,被配置为根据负载均衡策略从所述多个预设执行主体中选择其中一个作为所述目标执行主体。
进一步地,还包括:
建立模块,被配置为建立多个预设执行主体;其中,所述多个预设执行主体能够并行运行;
第一创建模块,被配置成为每个所述预设执行主体创建对应的存储空间,以便从所述存储空间中为所述目标文件分配所述目标存储地址。
第四方面,本发明实施例中提供了一种文件操作装置。
具体的,所述文件操作装置,包括:
第二创建模块,被配置为创建多个预设执行主体,并为每一所述预设执行主体分配对应的存储空间;
第三接收模块,被配置为接收用户对目标文件的打开请求,为所述打开请求从所述多个预设执行主体中分配一目标执行主体;
第一获取模块,被配置为从所述目标执行主体获取所述目标文件的文件句柄;其中,所述文件句柄为所述目标执行主体至少根据所述目标文件在所述目标执行主体对应的所述存储空间中的存储地址和所述目标执行主体的标识生成。
进一步地,所述第三接收模块之前,所述装置还包括:
第四接收模块,被配置为接收用户对所述目标文件的读写请求;
第二确定模块,被配置为根据所述目标文件的所述文件句柄确定分配给所述目标文件的所述目标执行主体;
第二发送模块,被配置为将所述读写请求发送给所述目标执行主体。
所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,文件操作装置的结构中包括存储器和处理器,所述存储器用于存储一条或多条支持文件操作装置执行上述第一方面或第二方面中文件操作方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述文件操作装置还可以包括通信接口,用于文件操作装置与其他设备或通信网络通信。
第五方面,本公开实施例提供了一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现第一方面或第二方面所述的方法。
第六方面,本公开实施例提供了一种计算机可读存储介质,用于存储企业账户的安全认证装置所用的计算机指令,其包含用于执行上述第一方面或第二方面中文件操作方法所涉及的计算机指令。
本公开实施例提供的技术方案可以包括以下有益效果:
本公开实施例接收到用户对目标文件的读写请求后,根据所述读写请求中目标文件的文件句柄确定分配给目标文件的目标执行主体,并将该目标文件的目标执行主体发送给目标执行主体。本公开的上述实施方式中,由于目标文件的文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到,因此可以利用文件句柄将用户对目标文件的操作请求发送给固定的目标执行文件,并由该目标执行文件根据文件句柄中目标存储地址快速查询得到目标文件的文件信息,可以在不加锁的情况下使用不同的目标执行主体处理不同目标文件的操作请求,同时还能够提高文件信息的查询效率,最终降低了软件开销和文件操作的延时,提升了文件操作的处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本公开的其它特征、目的和优点将变得更加明显。在附图中:
图1示出根据本公开一实施方式的文件操作方法的流程图;
图2示出根据图1所示实施方式中处理目标文件的打开请求的流程图;
图3示出根据本公开一实施方式中创建预设执行主体部分的流程图;
图4示出根据本公开另一实施方式的文件操作方法的流程图;
图5示出根据本公开另一实施方式中处理目标文件读写请求部分的流程图;
图6示出根据本公开一实施方式中文件操作方法的应用场景示意图;
图7示出根据本公开一实施方式的文件操作装置的结构框图;
图8示出根据本公开一实施方式中处理目标文件的打开请求的结构框图;
图9示出根据本公开一实施方式中创建预设执行主体部分的结构框图;
图10示出根据本公开另一实施方式的文件操作装置的结构框图;
图11示出根据本公开另一实施方式中处理目标文件读写请求部分的结构框图;
图12是适于用来实现根据本公开一实施方式的文件操作方法的电子设备的结构示意图。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
在传统方案的多线程实现模式中,文件句柄在创建和查询的时候均需要使用锁来保证多线程之间数据的同步和一致。而锁的使用会导致文件操作的等待时间的增加,随着单位时间内文件操作次数的增加,获取锁的时间会增加,文件操作的延时就会上升,最终会影响整个文件系统的性能。
一些技术方案中,在利用文件句柄查询目标文件的文件信息时,通过使用hash或者树的数据结构来实现,但是这种方案在文件句柄个数较少的情况下会有比较好的性能,但是随着文件句柄个数的增加,查询效率会有所下降。业界还有一种对于磁盘读写数据的多线程或多进程无锁处理方法,该方案在实现对于磁盘数据读写的多进程或多线程方案时,为文件的操作请求分配带有线程或进程标识的文件句柄,使得携带线程或进程标识的请求会被同一线程或进程所处理,从而避免了锁的使用。但是这种方案只针对标识进行了线程或进程选择,而在文件句柄的无锁实现过程中,并没有考虑线程或进程中利用文件句柄查询文件信息的效率,因此依然无法满足高频率读写需求。
图1示出根据本公开一实施方式的文件操作方法的流程图。该文件操作方法可以由文件系统客户端执行。如图1所示,所述文件操作方法包括以下步骤S101-S102:
在步骤S101中,接收用户对目标文件的操作请求;其中,所述操作请求包括所述目标文件的文件句柄;所述文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到;
在步骤S102中,根据所述文件句柄确定分配给所述目标文件的目标执行主体,并将所述操作请求发送给所述目标执行主体。
本实施例中,用户在打开目标文件时,文件系统会返回该目标文件的文件句柄。文件句柄可以理解为目标文件的标识,用户可以通过该文件句柄对目标文件进行后续的读写等操作。
对于大型文件系统如分布式文件系统而言,目标文件通常存储在远程的磁盘服务器上,用户对目标文件的操作请求由文件系统的客户端来响应,而文件系统的客户端通过与磁盘服务器进行交互,实现对目标文件的操作。本公开实施例中,为了提高实时性,文件系统的客户端可以通过同时创建多个预设执行主体,并由多个预设执行主体分别响应用户对不同目标文件的操作请求。预设执行主体可以是线程级、进程级、机器级或集群级等的执行主体。
在实现过程中,用户可以通过安装在本地的文件系统客户端对目标文件进行操作,文件系统的客户端在开始运行时,可以创建多个预设执行主体,预设执行主体可以是运行在客户端本地的线程、进程,也可以是非客户端本地的其他机器、集群等;在创建了预设执行主体之后,文件系统的客户端可以在本地为每个预设执行主体创建各自的存储空间,例如缓存池。例如,创建多个线程,分别用于响应用户对多个不同目标文件的操作请求,同时可以在本地为每个线程创建一个缓存池,用于存储分配给各个线程的目标文件的文件信息。
其次,用户通过文件系统的客户端提供的用户界面打开目标文件时,文件系统的客户端可以根据负载均衡策略或者随机选择的方式从多个预设执行主体中选择一个目标执行主体,并将将该目标文件分配给该目标执行主体,并由该目标执行主体响应该目标文件的打开请求及后续的读写操作等请求。目标执行文件主体接收到该目标文件的打开请求后,可以在为其创建的存储空间中为该目标文件分配目标存储地址,并从文件系统服务器中获得该目标文件的文件信息后,将其保存在该目标存储地址中;该目标执行文件主体可以为该目标文件分配文件句柄,该文件句柄可以至少基于该目标执行主体的标识以及目标存储地址得到,该文件句柄可以返回给用户。用户发起后续的读写等操作请求后,可以在操作请求中携带该目标文件的文件句柄,由于该文件句柄至少基于该目标执行主体的标识以及目标存储地址得到,因此文件系统客户端可以根据该文件句柄确定分配该目标文件的目标执行主体的标识,进而将该操作请求发送给该目标执行主体进行处理。
目标执行主体在接收到用户对目标文件的操作请求之后,还可以根据该文件句柄直接确定目标执行主体的存储空间例如缓存池中为该目标文件分配的目标存储地址,进而从该目标存储地址读取目标文件的文件信息,提高了文件信息的查询效率。目标执行主体进一步还可以根据文件信息对该目标文件进行相应的操作。目标文件的文件信息可以包括但不限于目标文件的实际存储地址(也即在分布式文件系统中的存储地址)、长度等信息。
从上述描述中可知,客户端接收到用户对目标文件的打开请求时,从预先建立的多个预设执行主体中选择其中一个作为目标执行主体,并将该打开请求发送给目标执行主体,目标执行主体接收到该打开请求之后,可以为该目标文件从自身的存储空间中分配目标存储地址,并为该目标文件生成文件句柄,该文件句柄至少要包括该目标存储地址和该目标执行主体的标识。目标执行主体还会向分布式文件系统的服务器发送该目标文件的打开请求,并从服务器接收该目标文件的文件信息,将该文件信息存储在目标存储地址中。在目标文件打开成功之后,目标执行主体还会向客户端输出该文件句柄。
用户后续对该目标文件的操作请求中都会携带该文件句柄。客户端接收到用户对该目标文件的后续操作请求(可以是读操作也可以是写操作)后,通过该目标文件的文件句柄即可确定对应的目标执行文件的标识,进而可以将该操作请求发送给目标执行主体(也即目标文件的打开和后续的读写请求都将由该目标执行主体来响应);目标执行主体可以通过文件句柄确定该目标文件在自身存储空间中的目标存储地址,进而可以从该目标存储地址中读取该目标文件的文件信息,并对该目标文件进行相应操作。由于每个预设执行主体都有各自独立的存储空间,并且把分配给自身的目标文件的文件信息存储在各自的存储空间中,因此客户端上的多个预设执行主体不需要从同一个存储空间读取目标文件的文件信息,因此可以实现无锁处理。
目标执行主体从客户端接收到的是对目标文件的读请求时,目标文件会向分布式文件系统的服务器发送目标文件的读请求,读请求可以包括该目标文件在分布式文件系统中的文件名称、文件标识(可以理解的是,该文件标识为该目标文件在分布式文件系统中的唯一标识,与目标执行主体为该目标文件生成的文件句柄不同,当然,该文件句柄中可以包括该文件标识)以及待读位置等信息;并从服务器获取当前用户要读取的该目标文件中的内容,进而返回给客户端,由客户端展示给用户;目标执行主体从客户端接收到的是目标文件的写请求时,目标文件会向分布式文件系统的服务器发送目标文件的写请求,写请求中可以包括该目标文件在分布式文件系统中的文件名称、文件标识、待写内容、待写位置等信息;服务器可以将该待写内容写入目标文件的待写位置中,并返回结果,目标执行主体可以将返回的结果输出至客户端,并由客户端展示给用户。
本公开实施例接收到用户对目标文件的读写请求后,根据所述读写请求中目标文件的文件句柄确定分配给目标文件的目标执行主体,并将该目标文件的目标执行主体发送给目标执行主体。本公开上述实施方式中,由于目标文件的文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到,因此可以利用文件句柄将用户对目标文件的操作请求发送给固定的目标执行文件,并由该目标执行文件根据文件句柄中目标存储地址快速查询得到目标文件的文件信息,可以在不加锁的情况下使用不同的目标执行主体处理不同目标文件的操作请求,同时还能够提高文件信息的查询效率,最终降低了软件开销和文件操作的延时,提升了文件操作的处理效率。
在本实施例的一个可选实现方式中,如图2所示,所述步骤S101,即接收目标文件的操作请求的步骤之前,所述方法进一步包括以下步骤S201-S203:
在步骤S201中,接收用户对所述目标文件的打开请求;
在步骤S202中,从多个预设执行主体中选择所述目标执行主体;
在步骤S203中,将所述目标文件的打开请求发送给所述目标执行主体,以便所述目标执行主体为所述目标文件分配所述目标存储地址,并至少基于所述目标存储地址以及所述目标执行主体的标识获得所述目标文件的文件句柄。
该可选的实现方式中,文件系统客户端接收到用户对目标文件的打开请求以后,可以从预先创建好的多个预设执行主体中选择其中一个来处理该用户对该目标文件的操作请求;文件系统客户端可以基于负载均衡策略或者随机选择的方式从多个预设执行主体中选择一个作为目标执行主体。在选定了该目标执行主体之后,文件系统客户端可以将该目标文件的打开请求发送给该目标执行主体,该目标执行主体可以基于该打开请求在其缓存池中为该目标文件分配目标存储地址,并从文件系统服务器中获取该目标文件的文件信息后,将该文件信息存储在该目标存储地址中;同时,该目标执行主体还可以基于该目标执行主体的标识以及该目标存储地址得到目标文件的文件句柄,并返回给用户。通过这种方式得到文件句柄后,后续用户对该目标文件的操作均可以发送到该目标执行主体进行处理,并且该目标执行主体可以直接从文件句柄中解析出目标文件的文件信息的目标存储地址,进而获得文件信息,既避免了锁的使用,也减少了利用文件句柄查询文件信息的时间,提升了文件系统的响应效率。
在本实施例的一个可选实现方式中,所述步骤S202,即从多个预设执行主体中选择所述目标执行主体的步骤,进一步包括以下步骤中的至少之一:
从所述多个预设执行主体中随机选择其中一个作为所述目标执行主体;
根据负载均衡策略从所述多个预设执行主体中选择其中一个作为所述目标执行主体。
该可选的实现方式中,在预先创建了多个预设执行主体的情况下,可以采用随机选择的方式和负载均衡策略从中选择一个作为目标执行主体。随机选择的方式可以利用随机算法等实现;而负载均衡策略则可以通过将多个预设执行主体分别被均衡分配给用户所打开的目标的文件的方式进行选择,也即使得每个预设执行主体同时对应处理的目标文件的数量基本上一致。
在本实施例的一个可选实现方式中,如图3所示,所述方法还进一步包括以下步骤S301-S302:
在步骤S301中,建立多个预设执行主体;其中,所述多个预设执行主体能够并行运行;
在步骤S302中,为每个所述预设执行主体创建对应的存储空间,以便所述预设执行主体从所述存储空间中为所述目标文件分配所述目标存储地址。
该可选的实现方式中,文件系统客户端在开始运行时,可以创建多个能够并行处理文件操作请求的预设执行主体,并且为每个预设执行主体创建各自的存储空间,例如缓存池。每个预设执行主体在接收到相应目标文件的打开请求后,在其存储空间中为目标文件分配目标存储地址,以存储目标文件的文件信息,通过这种方式目标执行主体可以容易地基于目标文件的文件句柄得到目标存储地址,并从目标存储地址得到目标文件的文件信息,进而根据用户的请求对目标文件进行相应的操作。
图4示出根据本公开一实施方式的文件操作方法的流程图。该文件操作方法由上述客户端执行。如图4所示,所述文件操作方法包括以下步骤S401-S403:
在步骤S401中,创建多个预设执行主体,并为每一所述预设执行主体分配对应的存储空间;
在步骤S402中,接收用户对目标文件的打开请求,为所述打开请求从所述多个预设执行主体中分配一目标执行主体;
在步骤S403中,从所述目标执行主体获取所述目标文件的文件句柄;其中,所述文件句柄为所述目标执行主体至少根据所述目标文件在所述目标执行主体对应的所述存储空间中的存储地址和所述目标执行主体的标识生成。
本实施例中,如上文所述,文件系统的客户端开始运行时,会在客户端本地创建多个预设执行主体,并为每个预设执行主体分配各自独立的存储空间,例如缓存池。客户端接收到用户对目标文件的打开请求后,可以从所建立的多个预设执行主体中选择其中一个作为该目标文件的目标执行主体,并将该目标文件的打开请求发送给该目标执行主体进行响应。
目标执行主体在接收到该目标文件的打开请求之后,从自身的存储空间中为该目标文件分配目标存储地址,并向文件系统的服务器请求打开该目标文件,进而将从服务器获取到的该目标文件的文件信息存储在该目标存储地址中;目标执行主体还至少根据该目标执行主体和目标执行主体的标识生成该目标文件的文件句柄,可以理解的是,文件句柄除了包括该目标存储地址和目标执行主体的标识之外,还可以包括其他信息,具体可以根据实际情况而定,在此不做限制。
目标执行主体将文件句柄返回给客户端,以便客户端后续可以根据用户的请求而对该目标文件执行相应操作。
本实施例中文件操作方法的其他细节可以参见上述图1所示实施例及相关实施例中的描述,在此不做限制。
图5示出根据本公开另一实施方式中处理目标文件读写请求部分的流程图。如图5所示,所述方法还进一步包括以下步骤S501-S503:
在步骤S501中,接收用户对所述目标文件的读写请求;
在步骤S502中,根据所述目标文件的所述文件句柄确定分配给所述目标文件的所述目标执行主体;
在步骤S503中,将所述读写请求发送给所述目标执行主体。
该可选的实现方式中,用户通过客户端对已经打开的目标文件进行读写操作时,由于该目标文件的文件句柄已知,也即在打开该目标文件时,由目标执行主体生成并返回。因此客户端在接收到用户对该目标文件的读写请求后,先根据该目标文件的文件句柄确定对应的目标执行主体的标识,进而将该读写请求发送给该目标执行主体。
目标执行主体在接收到目标文件的读写请求之后,可以根据该读写请求中携带的该文件句柄确定该目标文件的文件信息所存储的目标存储地址,进而读取该文件信息,并根据文件信息向分布式文件系统中的服务器请求对该目标文件进行读写操作。
根据本公开一实施方式,还提出了一种文件操作方法。该文件操作方法由上述目标执行主体执行。所述文件操作方法包括以下步骤:
接收目标文件的操作请求;其中,所述操作请求包括所述目标文件的文件句柄;所述文件句柄至少基于为所述目标文件分配的目标存储地址得到;
根据所述目标存储地址获取所述目标文件的文件信息;
根据所述文件信息完成所述操作请求。
本实施例的上述方法可以由目标执行主体来执行。目标文件为已被用户打开的文件,并且在打开目标文件时,目标执行主体将该目标文件的文件信息存储在了目标存储地址处,并且根据目标存储地址为目标文件生成了文件句柄。在从用户接收到该目标文件的操作请求,例如读写操作请求之后,目标执行主体可以根据该文件句柄确定该目标文件的文件信息的目标存储地址,进而可以从目标存储地址获取该文件信息。文件信息可以包括但不限于目标文件的实际存储地址、长度等信息,目标执行主体可以基于该文件信息向文件系统服务器请求对该目标文件进行相应操作。
目标执行主体可以是运行在文件系统客户端本地的线程或进程,也可以是独立于文件系统客户端本地的其他机器或者集群。目标执行主体在文件系统客户端本地拥有对应的缓存池,目标文件的文件信息存储在目标执行主体的缓存池中,在目标执行主体接收到对目标文件的操作请求后,可以容易地基于文件句柄确定缓存池中的目标存储地址,并获得目标文件的文件信息。目标文件的操作请求可以包括但不限于目标文件的读写等IO操作。
与本实施例相关的其他细节可以参见图1及相关实施例中对于文件系统客户端上执行的文件操作方法的描述,在此不再赘述。
在本实施例的一个可选实现方式中,所述方法还进一步包括以下步骤:
接收对所述目标文件的打开请求;
在预设缓存池中为所述目标文件分配目标存储地址,并根据所述目标存储地址存储所述目标文件的文件信息。
该可选的实现方式中,用户准备对目标文件进行读写操作时,首先需要通过文件系统客户端打开该目标文件,而该打开请求会被文件系统客户端发送给目标执行主体。文件系统客户端在开始运行时会预先创建多个执行主体,并为每个预设执行主体创建各自的缓存池。在用户需要打开目标文件时,文件系统客户端基于预先确定好的分配原则如负载均衡策略或者随机选择的方式从中选择一个作为目标执行主体,并将用户对目标文件的打开请求发送给该目标执行主体。该目标执行主体接收到目标文件的打开请求后在其缓存池中为该目标文件分配目标存储地址,用于存储该目标文件的文件信息;该目标文件的文件信息是目标执行主体从文件系统服务器所获得的。
在本实施例的一个可选实现方式中,所述方法还进一步包括以下步骤:
根据所述目标存储地址以及预设标识生成所述目标文件的文件句柄。
该可选的实现方式中,文件系统客户端在创建多个预设执行主体后,可以为每个预设执行主体赋予标识,以区分不同的预设执行主体。预设标识为接收到目标文件打开请求的目标执行主体的标识。目标执行主体在接收到目标文件的打开请求,并为目标文件分配目标存储地址后,可以根据目标存储地址和预设标识生成目标文件的文件句柄,并将该文件句柄返回给用户。用户后续对该目标文件进行读写等操作时,所发起的操作请求中可以携带该文件句柄,文件系统客户端可以根据该文件句柄解析出目标执行主体的预设标识,并将该操作请求发送给目标执行主体,而目标执行主体也可以根据该文件句柄快速解析出目标文件的目标存储地址,进而能够快速从目标存储地址获取目标文件的文件信息,进而对目标文件进行相应操作。由于目标文件的文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到,因此可以利用文件句柄将用户对目标文件的操作请求发送给固定的目标执行文件,并由该目标执行文件根据文件句柄中目标存储地址快速查询得到目标文件的文件信息,可以在不加锁的情况下使用不同的目标执行主体处理不同的目标文件的操作请求,同时还能够提高文件信息的查询效率,最终降低软件开销和文件操作的延时,提升文件操作的处理效率。
图6示出了根据本公开实施例的文件操作方法的应用场景示意图。如图6所示,文件系统客户端601运行之后,创建多个预设执行主体602,并在文件系统客户端601本地为每个预设执行主体602创建各自的缓存池603。用户可以通过文件系统客户端601对存储在分布式文件系统604中的目标文件进行操作。分布式文件系统604包括多个服务器,用于响应多个文件系统客户端601上的多个预设执行主体602对分布式文件的操作请求。用户准备操作目标文件时,首先通过文件系统客户端601打开目标文件,而文件系统客户端601在接收到用户对目标文件的打开请求后,将该打开请求发送给多个预设执行主体602中的其中一个,将其作为目标执行主体,用于响应用户对该目标文件的任何操作。目标执行主体接收到目标文件的打开请求后,在自身的缓存池603为目标文件分配目标存储地址,并根据自身的预设标识与目标存储地址生成该目标文件的文件句柄后,通过文件系统客户端601返回给用户;此外目标执行主体还向分布式文件系统604请求获得目标文件的从操作权限,并获得文件信息,并将该文件信息存储在缓存池603中的目标存储地址处。之后,用户发起对目标文件的读写等操作请求后,文件系统客户端601根据用户提供的文件句柄确定目标执行主体的标识,并根据该标识将该操作请求发送给目标执行主体;目标执行主体根据接收到的该操作请求解析获得目标存储地址,并从目标存储地址获得该目标文件的文件信息,进而根据该文件信息向分布式文件系统604请求对该目标文件进行相应的操作。可以理解的是,可以存在多个如图6所示的文件系统客户端601,并且每个文件系统客户端601上均可以创建多个预设执行主体602,而每个预设执行主体均可以请求对分布式文件系统604中的分布式文件进行操作,分布式文件系统604中包括的多个服务器可以响应预设执行主体602对分布式文件的请求,并在存在多个预设执行主体602同时对目标文件进行写操作时,分布式文件系统604中的服务器可以通过写锁等方式解决多个预设执行主体602对目标文件的写冲突。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图7示出根据本公开一实施方式的文件操作装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。该文件操作装置可以在文件系统客户端运行。如图7所示,所述文件操作装置包括:
第一接收模块701,被配置为接收用户对目标文件的操作请求;其中,所述操作请求包括所述目标文件的文件句柄;所述文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到;
第一确定模块702,被配置为根据所述文件句柄确定分配给所述目标文件的目标执行主体,并将所述操作请求发送给所述目标执行主体。
本实施例中,用户在打开目标文件时,文件系统会返回该目标文件的文件句柄。文件句柄可以理解为目标文件的标识,用户可以通过该文件句柄对目标文件进行后续的读写等操作。
对于大型文件系统如分布式文件系统而言,目标文件通常存储在远程的磁盘服务器上,用户对目标文件的操作请求由文件系统的客户端来响应,而文件系统的客户端通过与磁盘服务器进行交互,实现对目标文件的操作。本公开实施例中,为了提高实时性,文件系统的客户端可以通过同时创建多个预设执行主体,并由多个预设执行主体分别响应用户对不同目标文件的操作请求。预设执行主体可以是线程级、进程级、机器级或集群级等的执行主体。
在实现过程中,用户可以通过安装在本地的文件系统客户端对目标文件进行操作,文件系统的客户端在开始运行时,可以创建多个预设执行主体,预设执行主体可以是运行在客户端本地的线程、进程,也可以是非客户端本地的其他机器、集群等;在创建了预设执行主体之后,文件系统的客户端可以在本地为每个预设执行主体创建各自的存储空间,例如缓存池。例如,创建多个线程,分别用于响应用户对多个不同目标文件的操作请求,同时可以在本地为每个线程创建一个缓存池,用于存储分配给各个线程的目标文件的文件信息。
其次,用户通过文件系统的客户端提供的用户界面打开目标文件时,文件系统的客户端可以根据负载均衡策略或者随机选择的方式从多个预设执行主体中选择一个目标执行主体,并将将该目标文件分配给该目标执行主体,并由该目标执行主体响应该目标文件的打开请求及后续的读写操作等请求。目标执行文件主体接收到该目标文件的打开请求后,可以在为其创建的存储空间中为该目标文件分配目标存储地址,并从文件系统服务器中获得该目标文件的文件信息后,将其保存在该目标存储地址中;该目标执行文件主体可以为该目标文件分配文件句柄,该文件句柄可以至少基于该目标执行主体的标识以及目标存储地址得到,该文件句柄可以返回给用户。用户发起后续的读写等操作请求后,可以在操作请求中携带该目标文件的文件句柄,由于该文件句柄至少基于该目标执行主体的标识以及目标存储地址得到,因此文件系统客户端可以根据该文件句柄确定分配该目标文件的目标执行主体的标识,进而将该操作请求发送给该目标执行主体进行处理。
目标执行主体在接收到用户对目标文件的操作请求之后,还可以根据该文件句柄直接确定目标执行主体的存储空间例如缓存池中为该目标文件分配的目标存储地址,进而从该目标存储地址读取目标文件的文件信息,提高了文件信息的查询效率。目标执行主体进一步还可以根据文件信息对该目标文件进行相应的操作。目标文件的文件信息可以包括但不限于目标文件的实际存储地址(也即在分布式文件系统中的存储地址)、长度等信息。
从上述描述中可知,客户端接收到用户对目标文件的打开请求时,从预先建立的多个预设执行主体中选择其中一个作为目标执行主体,并将该打开请求发送给目标执行主体,目标执行主体接收到该打开请求之后,可以为该目标文件从自身的存储空间中分配目标存储地址,并为该目标文件生成文件句柄,该文件句柄至少要包括该目标存储地址和该目标执行主体的标识。目标执行主体还会向分布式文件系统的服务器发送该目标文件的打开请求,并从服务器接收该目标文件的文件信息,将该文件信息存储在目标存储地址中。在目标文件打开成功之后,目标执行主体还会向客户端输出该文件句柄。
用户后续对该目标文件的操作请求中都会携带该文件句柄。客户端接收到用户对该目标文件的后续操作请求(可以是读操作也可以是写操作)后,通过该目标文件的文件句柄即可确定对应的目标执行文件的标识,进而可以将该操作请求发送给目标执行主体(也即目标文件的打开和后续的读写请求都将由该目标执行主体来响应);目标执行主体可以通过文件句柄确定该目标文件在自身存储空间中的目标存储地址,进而可以从该目标存储地址中读取该目标文件的文件信息,并对该目标文件进行相应操作。由于每个预设执行主体都有各自独立的存储空间,并且把分配给自身的目标文件的文件信息存储在各自的存储空间中,因此客户端上的多个预设执行主体不需要从同一个存储空间读取目标文件的文件信息,因此可以实现无锁处理。
目标执行主体从客户端接收到的是对目标文件的读请求时,目标文件会向分布式文件系统的服务器发送目标文件的读请求,读请求可以包括该目标文件在分布式文件系统中的文件名称、文件标识(可以理解的是,该文件标识为该目标文件在分布式文件系统中的唯一标识,与目标执行主体为该目标文件生成的文件句柄不同,当然,该文件句柄中可以包括该文件标识)以及待读位置等信息;并从服务器获取当前用户要读取的该目标文件中的内容,进而返回给客户端,由客户端展示给用户;目标执行主体从客户端接收到的是目标文件的写请求时,目标文件会向分布式文件系统的服务器发送目标文件的写请求,写请求中可以包括该目标文件在分布式文件系统中的文件名称、文件标识、待写内容、待写位置等信息;服务器可以将该待写内容写入目标文件的待写位置中,并返回结果,目标执行主体可以将返回的结果输出至客户端,并由客户端展示给用户。
本公开实施例接收到用户对目标文件的读写请求后,根据所述读写请求中目标文件的文件句柄确定分配给目标文件的目标执行主体,并将该目标文件的目标执行主体发送给目标执行主体。本公开上述实施方式中,由于目标文件的文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到,因此可以利用文件句柄将用户对目标文件的操作请求发送给固定的目标执行文件,并由该目标执行文件根据文件句柄中目标存储地址快速查询得到目标文件的文件信息,可以在不加锁的情况下使用不同的目标执行主体处理不同目标文件的操作请求,同时还能够提高文件信息的查询效率,最终降低了软件开销和文件操作的延时,提升了文件操作的处理效率。
在本实施例的一个可选实现方式中,如图8所示,所述第一接收模块701之前,所述装置还包括:
第二接收模块801,被配置为接收用户对所述目标文件的打开请求;
选择模块802,被配置为从多个预设执行主体中选择所述目标执行主体;
第一发送模块803,被配置为将所述目标文件的打开请求发送给所述目标执行主体,以便所述目标执行主体为所述目标文件分配所述目标存储地址,并至少基于所述目标存储地址以及所述目标执行主体的标识获得所述目标文件的文件句柄。
该可选的实现方式中,文件系统客户端接收到用户对目标文件的打开请求以后,可以从预先创建好的多个预设执行主体中选择其中一个来处理该用户对该目标文件的操作请求;文件系统客户端可以基于负载均衡策略或者随机选择的方式从多个预设执行主体中选择一个作为目标执行主体。在选定了该目标执行主体之后,文件系统客户端可以将该目标文件的打开请求发送给该目标执行主体,该目标执行主体可以基于该打开请求在其缓存池中为该目标文件分配目标存储地址,并从文件系统服务器中获取该目标文件的文件信息后,将该文件信息存储在该目标存储地址中;同时,该目标执行主体还可以基于该目标执行主体的标识以及该目标存储地址得到目标文件的文件句柄,并返回给用户。通过这种方式得到文件句柄后,后续用户对该目标文件的操作均可以发送到该目标执行主体进行处理,并且该目标执行主体可以直接从文件句柄中解析出目标文件的文件信息的目标存储地址,进而获得文件信息,既避免了锁的使用,也减少了利用文件句柄查询文件信息的时间,提升了文件系统的响应效率。
在本实施例的一个可选实现方式中,所述选择模块802,包括以下至少之一:
第一选择子模块,被配置为从所述多个预设执行主体中随机选择其中一个作为所述目标执行主体;
第二选择子模块,被配置为根据负载均衡策略从所述多个预设执行主体中选择其中一个作为所述目标执行主体。
该可选的实现方式中,在预先创建了多个预设执行主体的情况下,可以采用随机选择的方式和负载均衡策略从中选择一个作为目标执行主体。随机选择的方式可以利用随机算法等实现;而负载均衡策略则可以通过将多个预设执行主体分别被均衡分配给用户所打开的目标的文件的方式进行选择,也即使得每个预设执行主体同时对应处理的目标文件的数量基本上一致。
在本实施例的一个可选实现方式中,如图9所示,所述装置还包括:
建立模块901,被配置为建立多个预设执行主体;其中,所述多个预设执行主体能够并行运行;
第一创建模块902,被配置成为每个所述预设执行主体创建对应的存储空间,以便从所述存储空间中为所述目标文件分配所述目标存储地址。
该可选的实现方式中,文件系统客户端在开始运行时,可以创建多个能够并行处理文件操作请求的预设执行主体,并且为每个预设执行主体创建各自的存储空间,例如缓存池。每个预设执行主体在接收到相应目标文件的打开请求后,在其存储空间中为目标文件分配目标存储地址,以存储目标文件的文件信息,通过这种方式目标执行主体可以容易地基于目标文件的文件句柄得到目标存储地址,并从目标存储地址得到目标文件的文件信息,进而根据用户的请求对目标文件进行相应的操作。
图10示出根据本公开另一实施方式的文件操作装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。该文件操作装置可以位于客户端中。如图10所示,所述文件操作装置包括:
第二创建模块1001,被配置为创建多个预设执行主体,并为每一所述预设执行主体分配对应的存储空间;
第三接收模块1002,被配置为接收用户对目标文件的打开请求,为所述打开请求从所述多个预设执行主体中分配一目标执行主体;
第一获取模块1003,被配置为从所述目标执行主体获取所述目标文件的文件句柄;其中,所述文件句柄为所述目标执行主体至少根据所述目标文件在所述目标执行主体对应的所述存储空间中的存储地址和所述目标执行主体的标识生成。
本实施例中,如上文所述,文件系统的客户端开始运行时,会在客户端本地创建多个预设执行主体,并为每个预设执行主体分配各自独立的存储空间,例如缓存池。客户端接收到用户对目标文件的打开请求后,可以从所建立的多个预设执行主体中选择其中一个作为该目标文件的目标执行主体,并将该目标文件的打开请求发送给该目标执行主体进行响应。
目标执行主体在接收到该目标文件的打开请求之后,从自身的存储空间中为该目标文件分配目标存储地址,并向文件系统的服务器请求打开该目标文件,进而将从服务器获取到的该目标文件的文件信息存储在该目标存储地址中;目标执行主体还至少根据该目标执行主体和目标执行主体的标识生成该目标文件的文件句柄,可以理解的是,文件句柄除了包括该目标存储地址和目标执行主体的标识之外,还可以包括其他信息,具体可以根据实际情况而定,在此不做限制。
目标执行主体将文件句柄返回给客户端,以便客户端后续可以根据用户的请求而对该目标文件执行相应操作。
本实施例中文件操作装置的其他细节可以参见上述图7所示实施例及相关实施例中的描述,在此不做限制。
在本实施例的一个可选实现方式中,如图11所示,所述装置还包括:
第四接收模块1101,被配置为接收用户对所述目标文件的读写请求;
第二确定模块1102,被配置为根据所述目标文件的所述文件句柄确定分配给所述目标文件的所述目标执行主体;
第二发送模块1103,被配置为将所述读写请求发送给所述目标执行主体。
该可选的实现方式中,用户通过客户端对已经打开的目标文件进行读写操作时,由于该目标文件的文件句柄已知,也即在打开该目标文件时,由目标执行主体生成并返回。因此客户端在接收到用户对该目标文件的读写请求后,先根据该目标文件的文件句柄确定对应的目标执行主体的标识,进而将该读写请求发送给该目标执行主体。
目标执行主体在接收到目标文件的读写请求之后,可以根据该读写请求中携带的该文件句柄确定该目标文件的文件信息所存储的目标存储地址,进而读取该文件信息,并根据文件信息向分布式文件系统中的服务器请求对该目标文件进行读写操作。
根据本公开另一实施方式还提出了一种文件操作装置,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。该文件操作装置可以位于目标执行主体中。所述文件操作装置包括:
第五接收模块,被配置为接收目标文件的操作请求;其中,所述操作请求包括所述目标文件的文件句柄;所述文件句柄至少基于为所述目标文件分配的目标存储地址得到;
第二获取模块,被配置为根据所述目标存储地址获取所述目标文件的文件信息;
完成模块,被配置为根据所述文件信息完成所述操作请求。
本实施例中,目标文件为已被用户打开的文件,并且在打开目标文件时,目标执行主体将该目标文件的文件信息存储在了目标存储地址处,并且根据目标存储地址为目标文件生成了文件句柄。在从用户接收到该目标文件的操作请求,例如读写操作请求之后,目标执行主体可以根据该文件句柄确定该目标文件的文件信息的目标存储地址,进而可以从目标存储地址获取该文件信息。文件信息可以包括但不限于目标文件的实际存储地址、长度等信息,目标执行主体可以基于该文件信息向文件系统服务器请求对该目标文件进行相应操作。
目标执行主体可以是运行在文件系统客户端本地的线程或进程,也可以是独立于文件系统客户端本地的其他机器或者集群。目标执行主体在文件系统客户端本地拥有对应的缓存池,目标文件的文件信息存储在目标执行主体的缓存池中,在目标执行主体接收到对目标文件的操作请求后,可以容易地基于文件句柄确定缓存池中的目标存储地址,并获得目标文件的文件信息。目标文件的操作请求可以包括但不限于目标文件的读写等IO操作。
与本实施例相关的其他细节可以参见图7及相关实施例中对于文件系统客户端上的文件操作装置的描述,在此不再赘述。
在本实施例的一个可选实现方式中,所述第五接收模块之前,所述装置还包括:
第六接收模块,被配置为接收对所述目标文件的打开请求;
分配模块,被配置为在预设缓存池中为所述目标文件分配目标存储地址,并根据所述目标存储地址存储所述目标文件的文件信息。
该可选的实现方式中,用户准备对目标文件进行读写操作时,首先需要通过文件系统客户端打开该目标文件,而该打开请求会被文件系统客户端发送给目标执行主体。文件系统客户端在开始运行时会预先创建多个执行主体,并为每个预设执行主体创建各自的缓存池。在用户需要打开目标文件时,文件系统客户端基于预先确定好的分配原则如负载均衡策略或者随机选择的方式从中选择一个作为目标执行主体,并将用户对目标文件的打开请求发送给该目标执行主体。该目标执行主体接收到目标文件的打开请求后在其缓存池中为该目标文件分配目标存储地址,用于存储该目标文件的文件信息;该目标文件的文件信息是目标执行主体从文件系统服务器所获得的。
在本实施例的一个可选实现方式中,所述装置还包括:
生成模块,被配置为根据所述目标存储地址以及预设标识生成所述目标文件的文件句柄。
该可选的实现方式中,文件系统客户端在创建多个预设执行主体后,可以为每个预设执行主体赋予标识,以区分不同的预设执行主体。预设标识为接收到目标文件打开请求的目标执行主体的标识。目标执行主体在接收到目标文件的打开请求,并为目标文件分配目标存储地址后,可以根据目标存储地址和预设标识生成目标文件的文件句柄,并将该文件句柄返回给用户。用户后续对该目标文件进行读写等操作时,所发起的操作请求中可以携带该文件句柄,文件系统客户端可以根据该文件句柄解析出目标执行主体的预设标识,并将该操作请求发送给目标执行主体,而目标执行主体也可以根据该文件句柄快速解析出目标文件的目标存储地址,进而能够快速从目标存储地址获取目标文件的文件信息,进而对目标文件进行相应操作。由于目标文件的文件句柄至少基于分配给所述目标文件的目标执行主体的标识及所述目标执行主体为所述目标文件分配的目标存储地址得到,因此可以利用文件句柄将用户对目标文件的操作请求发送给固定的目标执行文件,并由该目标执行文件根据文件句柄中目标存储地址快速查询得到目标文件的文件信息,可以在不加锁的情况下使用不同的目标执行主体处理不同的目标文件的操作请求,同时还能够提高文件信息的查询效率,最终降低软件开销和文件操作的延时,提升文件操作的处理效率。
图12是适于用来实现根据本公开实施方式的文件操作方法的电子设备的结构示意图。
如图12所示,电子设备1200包括中央处理单元(CPU)1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM)1203中的程序而执行上述实施方式中方法的各种处理。在RAM1203中,还存储有电子设备1200操作所需的各种程序和数据。CPU1201、ROM1202以及RAM1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
以下部件连接至I/O接口1205:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
特别地,根据本公开的实施方式,上文参考本公开实施方式中的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行本公开实施方式中方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。
附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种文件操作方法,其特征在于,包括:
接收用户对目标文件的打开请求;
将所述目标文件的打开请求发送给目标执行主体,以便所述目标执行主体为所述目标文件分配目标存储地址,并至少基于所述目标存储地址以及所述目标执行主体的标识获得所述目标文件的文件句柄;
接收用户对目标文件的操作请求;其中,所述操作请求包括所述目标文件的文件句柄;
根据所述文件句柄确定分配给所述目标文件的目标执行主体,并将所述操作请求发送给所述目标执行主体,以使所述目标执行主体从所述目标存储地址读取所述目标文件的文件信息。
2.根据权利要求1所述的方法,其特征在于,所述接收用户对目标文件的操作请求之前,所述方法还包括:
从多个预设执行主体中选择所述目标执行主体。
3.根据权利要求2所述的方法,其特征在于,所述从多个预设执行主体中选择所述目标执行主体,包括以下至少之一:
从所述多个预设执行主体中随机选择其中一个作为所述目标执行主体;
根据负载均衡策略从所述多个预设执行主体中选择其中一个作为所述目标执行主体。
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
建立多个预设执行主体;其中,所述多个预设执行主体能够并行运行;
为每个所述预设执行主体创建对应的存储空间,以便所述预设执行主体从所述存储空间中为所述目标文件分配所述目标存储地址。
5.一种文件操作方法,其特征在于,包括:
创建多个预设执行主体,并为每一所述预设执行主体分配对应的存储空间;
接收用户对目标文件的打开请求,为所述打开请求从所述多个预设执行主体中分配一目标执行主体;
从所述目标执行主体获取所述目标文件的文件句柄;其中,所述文件句柄为所述目标执行主体至少根据所述目标文件在所述目标执行主体对应的所述存储空间中的存储地址和所述目标执行主体的标识生成;所述目标执行主体用于从对应的所述存储空间中的存储地址读取所述目标文件的文件信息;
接收用户对所述目标文件的读写请求;
将所述读写请求发送给所述目标执行主体。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述目标文件的所述文件句柄确定分配给所述目标文件的所述目标执行主体。
7.一种文件操作装置,其特征在于,包括:
第二接收模块,被配置为接收用户对目标文件的打开请求;
第一发送模块,被配置为将所述目标文件的打开请求发送给目标执行主体,以便所述目标执行主体为所述目标文件分配目标存储地址,并至少基于所述目标存储地址以及所述目标执行主体的标识获得所述目标文件的文件句柄;
第一接收模块,被配置为接收用户对目标文件的操作请求;其中,所述操作请求包括所述目标文件的文件句柄;
第一确定模块,被配置为根据所述文件句柄确定分配给所述目标文件的目标执行主体,并将所述操作请求发送给所述目标执行主体,以使所述目标执行主体从所述目标存储地址读取所述目标文件的文件信息。
8.根据权利要求7所述的装置,其特征在于,所述第一接收模块之前,所述装置还包括:
选择模块,被配置为从多个预设执行主体中选择所述目标执行主体。
9.根据权利要求8所述的装置,其特征在于,所述选择模块,包括以下至少之一:
第一选择子模块,被配置为从所述多个预设执行主体中随机选择其中一个作为所述目标执行主体;
第二选择子模块,被配置为根据负载均衡策略从所述多个预设执行主体中选择其中一个作为所述目标执行主体。
10.根据权利要求7-9任一项所述的装置,其特征在于,还包括:
建立模块,被配置为建立多个预设执行主体;其中,所述多个预设执行主体能够并行运行;
第一创建模块,被配置成为每个所述预设执行主体创建对应的存储空间,以便从所述存储空间中为所述目标文件分配所述目标存储地址。
11.一种文件操作装置,其特征在于,包括:
第二创建模块,被配置为创建多个预设执行主体,并为每一所述预设执行主体分配对应的存储空间;
第三接收模块,被配置为接收用户对目标文件的打开请求,为所述打开请求从所述多个预设执行主体中分配一目标执行主体;
第一获取模块,被配置为从所述目标执行主体获取所述目标文件的文件句柄;其中,所述文件句柄为所述目标执行主体至少根据所述目标文件在所述目标执行主体对应的所述存储空间中的存储地址和所述目标执行主体的标识生成;所述目标执行主体用于从对应的所述存储空间中的存储地址读取所述目标文件的文件信息;
第四接收模块,被配置为接收用户对所述目标文件的读写请求;
第二发送模块,被配置为将所述读写请求发送给所述目标执行主体。
12.根据权利要求11所述的装置,其特征在于,还包括:
第二确定模块,被配置为根据所述目标文件的所述文件句柄确定分配给所述目标文件的所述目标执行主体。
13.一种电子设备,其特征在于,包括存储器和处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1-6任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910824452.4A CN112445763B (zh) | 2019-09-02 | 2019-09-02 | 文件操作方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910824452.4A CN112445763B (zh) | 2019-09-02 | 2019-09-02 | 文件操作方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112445763A CN112445763A (zh) | 2021-03-05 |
CN112445763B true CN112445763B (zh) | 2022-07-19 |
Family
ID=74734415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910824452.4A Active CN112445763B (zh) | 2019-09-02 | 2019-09-02 | 文件操作方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445763B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656095B (zh) * | 2021-08-06 | 2023-08-04 | 北京数码大方科技股份有限公司 | 配置数据的处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339318A (zh) * | 2011-10-24 | 2012-02-01 | Tcl集团股份有限公司 | 一种文件系统管理方法及系统 |
CN109634876A (zh) * | 2018-12-11 | 2019-04-16 | 广东省新代通信与网络创新研究院 | 文件访问方法、装置及计算机可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6889233B2 (en) * | 2001-06-18 | 2005-05-03 | Microsoft Corporation | Selective file purging for delete or rename |
US7010528B2 (en) * | 2002-05-23 | 2006-03-07 | International Business Machines Corporation | Mechanism for running parallel application programs on metadata controller nodes |
CN104144202B (zh) * | 2013-12-11 | 2016-05-04 | 腾讯科技(深圳)有限公司 | Hadoop分布式文件系统的访问方法、系统和装置 |
US10038752B2 (en) * | 2015-12-07 | 2018-07-31 | Dell Products L.P. | Method and system for execution of client-initiated operations on file handles in a distributed server system |
CN106557390A (zh) * | 2016-11-15 | 2017-04-05 | 郑州云海信息技术有限公司 | 一种分布式存储文件连续访问方法及系统 |
-
2019
- 2019-09-02 CN CN201910824452.4A patent/CN112445763B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339318A (zh) * | 2011-10-24 | 2012-02-01 | Tcl集团股份有限公司 | 一种文件系统管理方法及系统 |
CN109634876A (zh) * | 2018-12-11 | 2019-04-16 | 广东省新代通信与网络创新研究院 | 文件访问方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112445763A (zh) | 2021-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3073374B1 (en) | Thread creation method, service request processing method and related device | |
WO2018149221A1 (zh) | 一种设备管理方法及网管系统 | |
US9489231B2 (en) | Selecting provisioning targets for new virtual machine instances | |
US11461149B1 (en) | Capacity management in provider networks using dynamic host device instance model reconfigurations | |
US10164902B2 (en) | Resource allocation method using cloud API key and apparatus therefor | |
US9875139B2 (en) | Graphics processing unit controller, host system, and methods | |
US10621651B2 (en) | Automatic recharge system and method, and server | |
JP2006524381A (ja) | 共有リソースの同時アクセス | |
US8666958B2 (en) | Approaches to reducing lock communications in a shared disk database | |
US11928493B2 (en) | Sharing of FPGA board by multiple virtual machines | |
US20220318071A1 (en) | Load balancing method and related device | |
CN110706148B (zh) | 人脸图像处理方法、装置、设备和存储介质 | |
CN112445763B (zh) | 文件操作方法、装置、电子设备及存储介质 | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
CN112054919B (zh) | 容器集群无状态下的id生成方法、装置、存储介质及系统 | |
US20150212859A1 (en) | Graphics processing unit controller, host system, and methods | |
CN113391925A (zh) | 云资源管理方法、系统、介质、计算机设备 | |
CN111400301A (zh) | 一种数据查询方法、装置及设备 | |
CN108833532B (zh) | 基于物联网的服务处理方法、装置和系统 | |
US20140068734A1 (en) | Managing Access to a Shared Resource Using Client Access Credentials | |
US8850440B2 (en) | Managing the processing of processing requests in a data processing system comprising a plurality of processing environments | |
US8549530B1 (en) | System and method for distributed login with thread transfer to a dedicated processor node based on one or more identifiers | |
CN112637201B (zh) | 一种web服务端的请求处理方法、装置、设备及系统 | |
JP2014081765A (ja) | 負荷分散装置、負荷分散方法および負荷分散プログラム | |
CN113656181A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230530 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |