CN112463744A - 一种分布式文件存储方法、装置、电子设备及存储介质 - Google Patents
一种分布式文件存储方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112463744A CN112463744A CN202011325066.XA CN202011325066A CN112463744A CN 112463744 A CN112463744 A CN 112463744A CN 202011325066 A CN202011325066 A CN 202011325066A CN 112463744 A CN112463744 A CN 112463744A
- Authority
- CN
- China
- Prior art keywords
- file
- application
- agent
- producer
- database
- 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
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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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/18—File system types
- G06F16/182—Distributed file systems
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及信息技术及大数据业务领域,提供一种分布式文件存储方法、装置、电子设备及存储介质,方法包括:定时检测生产者运行状态,将应用下发的应用文件发送到代理者;定时检测代理者运行状态,将应用文件存储到数据文件中,并将存储位置保存到索引文件以及将应用文件的应用文件参数记录到数据库中,应用文件参数包括应用文件编号;定时检测消费者运行状态,接收应用发送的下载文件请求,下载文件请求包括下载文件编号;将应用文件编号与下载文件编号比较,当下载文件编号存在应用文件编号,则索引下载文件编号存储位置,并调取目标应用文件数据返回应用。本发明可实现自动检测、自动记录功能,且适用于小文件存储。
Description
技术领域
本发明涉及信息技术及大数据业务技术领域,尤其涉及一种分布式文件存储方法、装置、电子设备及存储介质。
背景技术
在海量信息***式增长的大数据时代,特别是到了人工智能时代,文件存储容量需求成指数级增长。已有的开源分布式文件***,要么使用场景有限制,要么使用困难,要么对磁盘要求高,要么磁盘利用率不高。kafka是一种高吞吐量的分布式发布订阅消息***,但单一kafka无法提供完整的分布式存储***所需要的功能。
当生产者往分区中存储数据时,内存中存不下了,就会往段文件里面存储。当这个段文件到空间不足之后,再生成第二个段文件以此类推。每个段文件对应两个文件,分别是数据文件和索引文件。在索引文件中,存储的是“键值”格式的数据,但是在索引文件中不是对每条消息都做记录,它是每隔一些消息记录一次,避免占用太多内存。因为段文件的这种特性,kafka适合于消息的发布与订阅场景,还无法满足分布式文件存储的场景,特别是小文件的分布式存储需求。
发明内容
本发明实施例提供一种分布式文件存储方法,能够满足小文件的分布式存储需求,并提供了自动检测、数据记录功能。
第一方面,本发明实施例提供一种分布式文件存储方法,运用于分布式文件存储***,所述***包括生产者、代理者以及消费者,方法包括以下步骤:
定时检测所述生产者运行状态,当判断所述生产者正常启动且生产者配置信息无变更时,将应用下发的应用文件发送到所述代理者;
定时检测所述代理者运行状态,当判断所述代理者正常启动且代理者配置信息无变更时,将所述应用文件存储到数据文件中,并将存储位置保存到索引文件以及将所述应用文件的应用文件参数记录到数据库中,所述应用文件参数包括应用文件编号;
定时检测所述消费者运行状态,当判断所述消费者正常启动且消费者配置信息无变更时,接收应用发送的下载文件请求,所述下载文件请求包括下载文件编号;
根据索引所述下载文件编号与所述数据库中的所述应用文件编号比较,当所述下载文件编号存在所述应用文件编号中,则通过所述索引文件索引所述下载文件编号存储位置,并从所述数据文件调取对应所述下载文件编号的目标应用文件数据返回应用。
更进一步地,所述定时检测所述生产者运行状态的步骤包括:
定时从所述数据库中获取所述生产者配置信息,判断所述生产者是否正常启动;
若所述生产者正常启动,则记录生产者启动信息到所述数据库,并判断所述生产者配置信息是否发生变更;
若所述生产者配置信息无变更,则接收应用下发的所述应用文件并发送到所述代理者;
若所述生产者配置信息变更,则重启所述生产者,并记录生产者重启信息到所述数据库;
若检测到所述生产者异常,则重启所述生产者,并记录生产者异常信息到所述数据库。
第二方面,本发明实施例还提供一种分布式文件存储装置,运用于分布式文件存储***,所述***包括生产者、代理者以及消费者,装置包括:
发送模块,用于定时检测所述生产者运行状态,当判断所述生产者正常启动且生产者配置信息无变更时,将应用下发的应用文件发送到所述代理者;
存储模块,用于定时检测所述代理者运行状态,当判断所述代理者正常启动且代理者配置信息无变更时,将所述应用文件存储到数据文件中,并将存储位置保存到索引文件以及将所述应用文件的应用文件参数记录到数据库中,所述应用文件参数包括应用文件编号;
接收模块,用于定时检测所述消费者运行状态,当判断所述消费者正常启动且消费者配置信息无变更时,接收应用发送的下载文件请求,所述下载文件请求包括下载文件编号;
返回模块,用于根据索引所述下载文件编号与所述数据库中的所述应用文件编号比较,当所述下载文件编号存在所述应用文件编号中,则通过所述索引文件索引所述下载文件编号存储位置,并从所述数据文件调取对应所述下载文件编号的目标应用文件数据返回应用。
第三方面,本发明实施例还提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述实施例提供的一种分布式文件存储方法中的步骤。
第四方面,一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述实施例提供的一种分布式文件存储方法中的步骤。
在本发明实施例中,通过定时检测生产者、代理者以及消费者的运行状态以及配置信息的变更情况,可以根据不同的运行状态以及变更情况进行自动调整,在生产者、代理者以及消费者运行状态均正常且配置信息不变更的情况下,通过生产者将上层应用下发的应用文件发送到代理者,代理者可以将应用文件保存到数据文件中,并且自动记录存储位置到索引文件,还会将应用文件参数存储在数据库中,当上层发送下载文件请求后,可以基于下载文件请求去数据库中查找是否存在,存在的情况下,便可以根据下载文件编号索引存储位置,从数据文件中调取对应的目标应用文件数据返回应用。对于小文件而言,可以记录每一个小文件的存储位置并存储,满足小文件的分布式存储需求,并能够实现自动检测及自动数据记录功能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的另一种分布式文件存储方法的流程图;
图2是本发明实施例提供的另一种分布式文件存储方法的流程图;
图3是本发明实施例提供的另一种分布式文件存储方法的流程图;
图4是本发明实施例提供的另一种分布式文件存储方法的流程图;
图5是本发明实施例提供的另一种分布式文件存储方法的流程图;
图6是本发明实施例提供的一种分布式文件存储装置的结构示意图;
图7是本发明实施例提供的另一种分布式文件存储装置的结构示意图;
图8是本发明实施例提供的另一种分布式文件存储装置的结构示意图;
图9是本发明实施例提供的另一种分布式文件存储装置的结构示意图;
图10是本发明实施例提供的另一种分布式文件存储装置的结构示意图;
图11是本发明实施例提供的另一种分布式文件存储装置的结构示意图;
图12是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
如图1所示,图1是本发明实施例提供的一种分布式文件存储方法的流程图,该分布式文件存储方法包括以下步骤:
101、定时检测生产者运行状态,当判断生产者正常启动且生产者配置信息无变更时,将应用下发的应用文件发送到代理者。
本发明提实施例提供的分布式文件存储方法可以运用于基于kafka的分布式文件存储***,***包括生产者、代理者以及消费者,用于针对小文件存储。上述的kafka是一种分布式发布-订阅消息***,使用scala语言编写,之后成为apache开源项目的一部分。kafka消息***主要由生产者、代理者和消费者组成,不同类型的消息根据主题来归类。生产者负责产生消息发送给代理者,代理者对消息做暂时存储,之后转发给消费者,消费者接收并处理消息。
需要清楚的是,上述的应用文件(小文件)包括但不限于以下类型:图片、文本文件、word文件、excel文件、pdf文件、日志文件、小视频文件、小音频文件等。
在本实施例中,上述分布式文件存储方法运行于其上的电子设备可以通过有线连接方式或者无线连接方式进行数据传输,例如:应用通过无线传输方式下发应用文件到生产者。上述无线连接方式可以包括但不限于3G/4G连接、WiFi(Wireless-Fidelity)连接、蓝牙连接、WiMAX(Worldwide Interoperability for Microwave Access)连接、Zigbee(低功耗局域网协议,又称紫峰协议)连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
其中,生产者配置信息可以包括但不限于失败重发最大次数、重试的间隔时间等。生产者可以包括一个生产者或者多个生产者,对于不同的生产者,可以设置不同的生产者配置信息。
上述对生产者定时检测的时长可以预设。定时检测生产者的运行状态即可以是获取生产者配置信息等数据,根据生产者配置信息判断生产者是否启动。没启动则启动生产者,正常启动的情况下,可以检测配置信息是否有变动。在正常启动以及生产者配置信息无变动的情况下便可以将上层应用下发的应用文件发送到代理者。
102、定时检测代理者运行状态,当判断代理者正常启动且代理者配置信息无变更时,将应用文件存储到数据文件中,并将存储位置保存到索引文件以及将应用文件的应用文件参数记录到数据库中,应用文件参数包括应用文件编号。
其中,定时检测代理者的时长同样可以预设。定时检测代理者的运行状态可以包括但不限于定时从数据库获取代理者配置信息,主要包括获取主题、主题分区数、副本数、文件保存时长等。代理者可以包括一个代理者或者多个代理者。主题可以只有一个主题或者多个主题,不同的主题可以设置一个或多个分区数,可以设置一个或多个副本数。每个主题可以设置不同的文件保存时长。数据库不限定于关系数据库,也可以使用非关系数据库,或使用文本类存储介质,在此不做限定。
具体的,上述判断出代理者正常启动且代理者配置信息无变更时,便可以将生产者下发的应用文件存储到数据文件中,同时将应用文件存储在数据文件中的存储位置保存到索引文件中。上述的数据文件与索引文件属于段文件。同时,还可以将应用文件的应用文件参数记录到数据库中存储。在数据库中可以设置有多个分区用于存储不同对象的数据,例如:包括单独存储生产者相关数据的A区,单独存储代理者相关数据的B区,存储消费者相关数据的C区等。上述的应用文件参数可以包括应用文件编号,应用文件编号可以通过一串字符串进行编号,可以通过单个数字进行编号,主要启动区分作用。
103、定时检测消费者运行状态,当判断消费者正常启动且消费者配置信息无变更时,接收应用发送的下载文件请求,下载文件请求包括下载文件编号。
其中,定时检测消费者的时长同样可以预设。定时检测消费者运行状态可以是通过定时从数据库获取消费者配置信息,主要包括但不限于是否自动提交、连接超时时间等。消费者可以包括一个消费者或者多个消费,对不同主题的消费者,可以设置不同的配置参数。当判断消费者正常启动,且同时满足上述的消费者配置信息没有发生变更的前提下,可以接收上层用户通过应用下发的下载文件请求,在该下载文件请求中可以包括有下载文件编号,该下载文件编号的编码方式和上述的应用文件编码方式一致,同一类型便于比较。
104、根据索引下载文件编号与数据库中的应用文件编号比较,当下载文件编号存在应用文件编号中,则通过索引文件索引下载文件编号存储位置,并从数据文件调取对应下载文件编号的目标应用文件数据返回应用。
其中,通过提取下载文件请求中的下载文件编号后,可以提取数据库中的应用文件编号与下载文件编号进行一一对比,判断是否存在下载文件编号与应用文件编号一致的情况。当存在上述情况时,可以表示用户需要调用的下载文件编号存在于数据库中。然后可以通过索引文件查找该应用文件数据所在数据文件中的存储位置。索引到之后,便可以从数据文件中将应用文件数据提取,提取出来的应用文件数据即为上述的目标应用文件数据。并将该目标应用文件数据返回到上层应用。
需要说明的是,上述的应用也可以称为终端、移动终端、客户端等。应用包括但不限于手机、平板电脑(Tablet Personal Computer)、膝上型电脑(Laptop Computer)、个人数字助理(personal digital assistant,简称PDA)、移动上网装置(Mobile InternetDevice,MID)、计算机或笔记本电脑等电子设备。用户端可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
在本发明实施例中,由于通过定时检测生产者、代理者以及消费者的运行状态以及配置信息的变更情况,可以根据不同的运行状态以及变更情况进行自动调整,在生产者、代理者以及消费者运行状态均正常且配置信息不变更的情况下,通过生产者将上层应用下发的应用文件发送到代理者,代理者可以将应用文件保存到数据文件中,并且自动记录存储位置到索引文件,还会将应用文件参数存储在数据库中,当上层发送下载文件请求后,可以基于下载文件请求中的下载文件编号去数据库中查找是否存在相同的应用文件编号,存在即可根据下载文件编号索引存储位置,从数据文件中调取对应的目标应用文件数据返回应用。对于小文件而言,可以记录每一个小文件的存储位置并存储,满足小文件的分布式存储需求,并能够实现自动检测及自动数据记录功能。
如图2所示,图2是本发明实施例提供的另一种分布式文件存储方法流程图,具体包括以下步骤:
201、定时从数据库中获取生产者配置信息,判断生产者是否正常启动。
其中,定时获取数据库中的生产者配置信息后,可以根据生产者配置信息判断生产者是否正常启动,当所有的生产者配置信息均处于正常数据状态,可以判断生产者正常启动。这样便可以提供生产者定时检修服务,定时了解生产者的工作状态。
202、若生产者正常启动,则记录生产者启动信息到数据库,并判断生产者配置信息是否发生变更。
其中,当判断出生产者已经正常启动,则可以将生产者启动信息发送到数据库进行存储。生产者启动信息可以包括启动状态、启动时间等等启动参数。当然,若检测到生产者还未启动,则启动生产者,将启动时生产者启动信息发送到数据库进行存储。上述判断生产者变更信息是否发生变更可以是判断失败重发最大次数、重试的间隔时间等信息是否发生调整。
203、若生产者配置信息无变更,则接收应用下发的应用文件并发送到代理者。
若判断出当前检测的失败重发最大次数、重试的间隔时间等信息与上一次生产者定时检测的数据一致,表示生产者配置信息没有发生变更,之后便可以接收应用下发的应用文件,通过生产者发送到代理者中。
可选的,上述接收应用下发的应用文件并发送到代理者包括:
接收应用下发的应用文件,并发送到代理者,若发送成功,则记录应用文件发送成功信息到数据库。
其中,接收应用下发的应用文件,并发送到代理者,若发送成功,可以生成发送成功信息,同时可以将该应用文件发送成功信息保存到数据库中。在数据库中,可以设置有专用于存储生产者的信息的存储区,且存储生产者信息的存储区还可以划分为更多的小存储区,用于存储不同类型的信息,例如:存储应用文件发送成功信息的区,存储生产者启动信息的区,存储应用文件发送失败信息的区等等。
若发送失败,则重发直到达到预设的最大失败次数,并记录应用文件发送失败信息到数据库。
其中,当生产者将接收到的应用下发的应用文件发送到代理者失败后,可以生成应用文件发送失败信息,并且进行重新发送,直到到达最大失败次数后还没有发送成功,后续将不再进行发送,同时会通过生成的应用文件发送失败信息进行提醒。且每次重新发送都会生成应用文件发送失败信息,每一次生成的应用文件发送失败信息可以通过编号进行区分。
204、若生产者配置信息变更,则重启生产者,并记录生产者重启信息到数据库。
当然,若检测到生产者配置信息发生变更后,可以重新启动生产者,同时将生产者重启信息记录到数据库对应的存储区进行存储。重启成功后,接着将接收应用下发的应用文件并发送到代理者。
205、若检测到生产者异常,则重启生产者,并记录生产者异常信息到数据库。
此外,当生产者无法正常启动,出现启动异常时,可以重启生产者,同时可生成生产者异常信息记录到数据库对应的存储区。重启成功之后,可以接收应用下发的应用文件以发送到代理者。
206、定时检测代理者运行状态,当判断代理者正常启动且代理者配置信息无变更时,将应用文件存储到数据文件中,并将存储位置保存到索引文件以及将应用文件的应用文件参数记录到数据库中,应用文件参数包括应用文件编号。
207、定时检测消费者运行状态,当判断消费者正常启动且消费者配置信息无变更时,接收应用发送的下载文件请求,下载文件请求包括下载文件编号。
208、根据索引下载文件编号与数据库中的应用文件编号比较,当下载文件编号存在应用文件编号中,则通过索引文件索引下载文件编号存储位置,并从数据文件调取对应下载文件编号的目标应用文件数据返回应用。
可选的,参考图3所示,图3是本发明实施例提供的另一种分布式文件存储方法流程图,上述步骤206包括:
301、定时从数据库中获取代理者配置信息,并判断代理者的运行状态。
其中,定时获取数据库中的代理者配置信息后,可以根据代理者配置信息判断代理者是否正常启动,当所有的代理者配置信息均处于正常数据状态,可以判断代理者正常启动。这样便可以提供代理者定时检修服务,定时了解代理者的工作状态。
302、若代理者正常启动,则将代理者启动信息记录到数据库,并判断代理者配置信息是否有变更。
其中,当判断出代理者已经正常启动,则可以将代理者启动信息发送到数据库进行存储。代理者启动信息可以包括启动状态、启动时间等等参数。当然,若检测到代理者还未启动,则启动代理者,将启动时代理者启动信息发送到数据库进行存储。上述判断代理者变更信息是否发生变更可以是判断代理者的主题、主题分区数、副本数、文件保存时长等信息是否发生调整。
303、若代理者配置信息无变更,则接收生产者发送的应用文件以存储到数据文件中,并将存储位置保存到索引文件以及将应用文件的应用文件数据记录到数据库中。
其中,当判断出代理者的主题、主题分区数、副本数、文件保存时长等信息与上一次代理者定时检测的数据一致,表示代理者配置信息没有发生变更。之后则可以接收生产者转发的应用文件以存储到数据文件中,并将应用文件存储到数据文件中的存储位置保存到索引文件中。此外,还可以将应用文件的应用文件数据记录到数据库中。
304、若代理者配置信息有变更,则重启代理者,并记录代理者重启信息到数据库。
其中,当检测到代理者配置信息发生变更后,可以重新启动代理者,同时将代理者重启信息记录到数据库对应的存储区进行存储,同时生成代理者重启信息,且可以将代理者重启信息到数据库中对应的存储区中。
305、若检测到代理者状态异常,则重启代理者,并记录代理者异常信息到数据库。
此外,当代理者无法正常启动,出现启动异常时,可以重启代理者,同时可生成代理者异常信息记录到数据库对应的存储区。上述的状态异常包括但不限于以下情况:监听端口挂掉、控制器宕机、指定时间间隔未接收生产者发送的数据、指定时间间隔未接收消费者拉取数据请求等。
可选的,定时检测代理者运行状态还包括步骤:
当检测到代理者发出代理者警告信息时,则将代理者警告信息记录到数据库。
其中,代理者警告信息包括但不限于生产者发送消息过大、消息过大消费者无法消费、分区重分配、代理者加入或退出集群。对于生产者发送的消息的数据量可以设置一个预定的值,尽可能避免出现消息量过大无法接收的情况。
可选的,参考图4所示,图4是本发明实施例提供的另一种分布式文件存储方法流程图,上述步骤207包括:
401、定时从数据库中获取消费者配置信息,并判断消费者的运行状态。
其中,定时获取数据库中的消费者配置信息后,可以根据消费者配置信息判断消费者是否正常启动,当所有的消费者配置信息均处于正常数据状态,可以判断消费者正常启动。这样便可以提供消费者定时检修服务,定时了解消费者的工作状态。
402、若消费者正常启动,则将消费者启动信息记录到数据库,并判断消费者配置信息是否有变更。
其中,当判断出消费者已经正常启动,则可以将消费者启动信息发送到数据库进行存储。消费者启动信息可以包括启动状态、启动时间等等启动参数。当然,若检测到消费者还未启动,则启动消费者,将启动时消费者启动信息发送到数据库进行存储。上述判断消费者配置信息是否有变更可以是判断自动提交状态、连接超时时间等信息是否发生变更。
403、若消费者配置信息无变更,则接收应用发送的下载文件请求,下载文件请求包括下载文件编号。
当自动提交状态、连接超时时间等信息与上一次代理者定时检测的数据一致,表示无变更,则可以接收用户通过上层应用发送的下载文件请求,提取下载文件请求中的下载文件编号。
404、若消费者配置信息有变更,则重启消费者,并记录消费者重启信息到数据库。
当然,若检测到消费者配置信息发生变更后,可以重新启动消费者,同时将消费者重启信息记录到数据库对应的存储区进行存储。
405、若检测到消费者状态异常,则重启消费者,并记录消费者异常信息到数据库。
此外,当消费者无法正常启动,出现启动异常时,可以重启消费者,同时可生成消费者异常信息记录到数据库对应的存储区。异常状态包括但不限于以下情况:连接代理者失败、预定时间内从代理者拉取数据失败。
可选的,参考图5所示,图5是本发明实施例提供的另一种分布式文件存储方法流程图,上述步骤208包括:
501、根据索引下载文件编号与数据库中的应用文件编号比较。
其中,通过提取下载文件请求中的下载文件编号后,可以提取数据库中的应用文件编号与下载文件编号进行一一对比,判断是否存在下载文件编号与应用文件编号一致的情况。
502、当判断下载文件编号存在应用文件编号中,则通过索引文件索引下载文件编号所在的存储位置。
其中,对比出在数据库中查找到与下载文件编号一致的应用文件编号后,可以表示用户需要调用的下载文件编号存在于数据库中。然后可以通过索引文件查找应用文件编号所在的数据文件中的存储位置。
503、基于下载文件编号所在的存储位置,调取数据文件对应下载文件编号的目标应用文件数据返回给应用。
其中,基于索引到的存储位置,可以将数据文件中该存储位置的应用文件中的应用文件数据提取出来,提取出来的数据即为上述的目标应用文件数据。并将该目标应用文件数据返回到上层应用进行响应。
504、当判断下载文件编号不存在应用文件编号中,则返回下载失败提示信息,并记录下载失败提示信息到数据库。
此外,也可能出现下载文件编号不存在应用文件编号中的情况,可以表示用户调取目标应用文件失败。然后可以生成下载失败提示信息,并返回上层应用下载失败提示信息进行提醒。同时还会记录下载失败提示信息到数据库中用于存储消费者的对应存储区中。
在本发明实施例中,通过提供定时检测生产者、代理者以及消费者的运行状态以及配置信息的变更情况,可以根对生产者、代理者以及消费者在正常启动下生成对应的提示信息并存储到数据库中,在配置信息变更等情况下,可以进行重启实现数据自动更新,在启动异常时可以重启实现故障自动恢复。对于小文件而言,本实施例中提供的基于kafka分布式文件存储***中可以记录每一个小文件的存储位置并存储,满足小文件的分布式存储需求,并能够实现自动检测及自动数据记录功能。
如图6所示,图6是本发明实施例提供的一种分布式文件存储装置的结构示意图,分布式文件存储装置600包括:
发送模块601,用于定时检测生产者运行状态,当判断生产者正常启动且生产者配置信息无变更时,将应用下发的应用文件发送到代理者;
存储模块602,用于定时检测代理者运行状态,当判断代理者正常启动且代理者配置信息无变更时,将应用文件存储到数据文件中,并将存储位置保存到索引文件以及将应用文件的应用文件参数记录到数据库中,应用文件参数包括应用文件编号;
接收模块603,用于定时检测消费者运行状态,当判断消费者正常启动且消费者配置信息无变更时,接收应用发送的下载文件请求,下载文件请求包括下载文件编号;
返回模块604,用于根据索引下载文件编号与数据库中的应用文件编号比较,当下载文件编号存在应用文件编号中,则通过索引文件索引下载文件编号存储位置,并从数据文件调取对应下载文件编号的目标应用文件数据返回应用。
可选的,如图7所示,图7是本发明实施例提供的另一种分布式文件存储装置的结构示意图,发送模块601包括:
生产者启动判断单元6011,用于定时从数据库中获取生产者配置信息,判断生产者是否正常启动;
生产者配置信息判断单元6012,用于若生产者正常启动,则记录生产者启动信息到数据库,并判断生产者配置信息是否发生变更;
发送单元6013,用于若生产者配置信息无变更,则接收应用下发的应用文件并发送到代理者;
生产者重启单元6014,用于若生产者配置信息变更,则重启生产者,并记录生产者重启信息到数据库;
异常检测单元6015,用于若检测到生产者异常,则重启生产者,并记录生产者异常信息到数据库。
可选的,如图8所示,图8是本发明实施例提供的另一种分布式文件存储装置的结构示意图,发送单元6013包括:
记录子单元60131,用于接收应用下发的应用文件,并发送到代理者,若发送成功,则记录应用文件发送成功信息到数据库;
重发子单元6012,用于若发送失败,则重发直到达到预设的最大失败次数,并记录应用文件发送失败信息到数据库。
可选的,如图9所示,图9是本发明实施例提供的另一种分布式文件存储装置的结构示意图,存储模块602包括:
代理者启动判断单元6021,用于定时从数据库中获取代理者配置信息,并判断代理者的运行状态;
代理者配置信息判断单元6022,用于若代理者正常启动,则将代理者启动信息记录到数据库,并判断代理者配置信息是否有变更;
应用文件存储单元6023,用于若代理者配置信息无变更,则接收生产者发送的应用文件以存储到数据文件中,并将存储位置保存到索引文件以及将应用文件的应用文件数据记录到数据库中;
代理者重启单元6024,用于若代理者配置信息有变更,则重启代理者,并记录代理者重启信息到数据库;
代理者异常检测单元6025,用于若检测到代理者状态异常,则重启代理者,并记录代理者异常信息到数据库。
可选的,代理者异常检测单元6025还用于当检测到代理者发出代理者警告信息时,则将代理者警告信息记录到数据库。
可选的,如图10所示,图10是本发明实施例提供的另一种分布式文件存储装置的结构示意图,接收模块603包括:
消费者启动判断单元6031,用于定时从数据库中获取消费者配置信息,并判断消费者的运行状态;
消费者配置信息判断单元6032,用于若消费者正常启动,则将消费者启动信息记录到数据库,并判断消费者配置信息是否有变更;
接收单元6033,用于若消费者配置信息无变更,则接收应用发送的下载文件请求,下载文件请求包括下载文件编号;
消费者重启单元6034,用于若消费者配置信息有变更,则重启消费者,并记录消费者重启信息到数据库;
消费者异常判断单元6035,用于若检测到消费者状态异常,则重启消费者,并记录消费者异常信息到数据库。
可选的,如图11所示,图11是本发明实施例提供的另一种分布式文件存储装置的结构示意图,返回模块604包括:
比较单元6041,用于根据索引下载文件编号与数据库中的应用文件编号比较;
索引单元6042,用于当判断下载文件编号存在应用文件编号中,则通过索引文件索引下载文件编号所在的存储位置;
数据返回单元6043,用于基于下载文件编号所在的存储位置,调取数据文件对应下载文件编号的目标应用文件数据返回给应用;
下载失败记录单元6044,用于当判断下载文件编号不存在应用文件编号中,则返回下载失败提示信息,并记录下载失败提示信息到数据库。
如图12所示,图12是本发明实施例提供的一种电子设备的结构示意图,该电子设备1200包括:处理器1201、存储器1202、网络接口1203及存储在存储器1202上并可在处理器1201上运行的计算机程序,处理器1201执行计算机程序时实现实施例提供的分布式文件存储方法中的步骤。
具体的,处理器1201用于执行以下步骤:
定时检测生产者运行状态,当判断生产者正常启动且生产者配置信息无变更时,将应用下发的应用文件发送到代理者;
定时检测代理者运行状态,当判断代理者正常启动且代理者配置信息无变更时,将应用文件存储到数据文件中,并将存储位置保存到索引文件以及将应用文件的应用文件参数记录到数据库中,应用文件参数包括应用文件编号;
定时检测消费者运行状态,当判断消费者正常启动且消费者配置信息无变更时,接收应用发送的下载文件请求,下载文件请求包括下载文件编号;
根据索引下载文件编号与数据库中的应用文件编号比较,当下载文件编号存在应用文件编号中,则通过索引文件索引下载文件编号存储位置,并从数据文件调取对应下载文件编号的目标应用文件数据返回应用。
可选的,处理器1201执行的定时检测生产者运行状态的步骤包括:
定时从数据库中获取生产者配置信息,判断生产者是否正常启动;
若生产者正常启动,则记录生产者启动信息到数据库,并判断生产者配置信息是否发生变更;
若生产者配置信息无变更,则接收应用下发的应用文件并发送到代理者;
若生产者配置信息变更,则重启生产者,并记录生产者重启信息到数据库;
若检测到生产者异常,则重启生产者,并记录生产者异常信息到数据库。
可选的,处理器1201执行的接收应用下发的应用文件并发送到代理者的步骤包括:
接收应用下发的应用文件,并发送到代理者,若发送成功,则记录应用文件发送成功信息到数据库;
若发送失败,则重发直到达到预设的最大失败次数,并记录应用文件发送失败信息到数据库。
可选的,处理器1201执行的定时检测代理者运行状态的步骤包括:
定时从数据库中获取代理者配置信息,并判断代理者的运行状态;
若代理者正常启动,则将代理者启动信息记录到数据库,并判断代理者配置信息是否有变更;
若代理者配置信息无变更,则接收生产者发送的应用文件以存储到数据文件中,并将存储位置保存到索引文件以及将应用文件的应用文件数据记录到数据库中;
若代理者配置信息有变更,则重启代理者,并记录代理者重启信息到数据库;
若检测到代理者状态异常,则重启代理者,并记录代理者异常信息到数据库。
可选的,处理器1201还用于的定时检测代理者运行状态还包括步骤:
当检测到代理者发出代理者警告信息时,则将代理者警告信息记录到数据库。
可选的,处理器1201执行的定时检测消费者运行状态的步骤包括:
定时从数据库中获取消费者配置信息,并判断消费者的运行状态;
若消费者正常启动,则将消费者启动信息记录到数据库,并判断消费者配置信息是否有变更;
若消费者配置信息无变更,则接收应用发送的下载文件请求,下载文件请求包括下载文件编号;
若消费者配置信息有变更,则重启消费者,并记录消费者重启信息到数据库;
若检测到消费者状态异常,则重启消费者,并记录消费者异常信息到数据库。
可选的,处理器1201执行的根据索引下载文件编号与数据库中的应用文件编号比较的步骤包括:
根据索引下载文件编号与数据库中的应用文件编号比较;
当判断下载文件编号存在应用文件编号中,则通过索引文件索引下载文件编号所在的存储位置;
基于下载文件编号所在的存储位置,调取数据文件对应下载文件编号的目标应用文件数据返回给应用;
当判断下载文件编号不存在应用文件编号中,则返回下载失败提示信息,并记录下载失败提示信息到数据库。
本发明实施例提供的电子设备1200能够实现分布式文件存储方法实施例中的各个实施方式,以及相应有益效果,为避免重复,这里不再赘述。
需要指出的是,图中仅示出了具有组件的1201-1203,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的电子设备1200是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable GateArray,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
存储器1202至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器1202可以是电子设备1200的内部存储单元,例如该电子设备1200的硬盘或内存。在另一些实施例中,存储器1202也可以是电子设备1200的外部存储设备,例如该电子设备1200上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器1202还可以既包括电子设备1200的内部存储单元也包括其外部存储设备。本实施例中,存储器1202通常用于存储安装于电子设备1200的操作***和各类应用软件,例如分布式文件存储方法的程序代码等。此外,存储器1202还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器1201在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器1201通常用于控制电子设备1200的总体操作。本实施例中,处理器1201用于运行存储器1202中存储的程序代码或者处理数据,例如运行分布式文件存储方法的程序代码。
网络接口1203可包括无线网络接口或有线网络接口,该网络接口1203通常用于在电子设备1200与其他电子设备之间建立通信连接。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器1201执行时实现实施例提供的分布式文件存储方法中的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本领域普通技术人员可以理解实现实施例分布式文件存储方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存取存储器(Random AccessMemory,简称RAM)等。
在本发明实施例中提到的第一、第二等并不表示大小,只是为了便于表述。以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种分布式文件存储方法,运用于分布式文件存储***,所述***包括生产者、代理者以及消费者,其特征在于,方法包括以下步骤:
定时检测所述生产者运行状态,当判断所述生产者正常启动且生产者配置信息无变更时,将应用下发的应用文件发送到所述代理者;
定时检测所述代理者运行状态,当判断所述代理者正常启动且代理者配置信息无变更时,将所述应用文件存储到数据文件中,并将存储位置保存到索引文件以及将所述应用文件的应用文件参数记录到数据库中,所述应用文件参数包括应用文件编号;
定时检测所述消费者运行状态,当判断所述消费者正常启动且消费者配置信息无变更时,接收应用发送的下载文件请求,所述下载文件请求包括下载文件编号;
根据索引所述下载文件编号与所述数据库中的所述应用文件编号比较,当所述下载文件编号存在所述应用文件编号中,则通过所述索引文件索引所述下载文件编号存储位置,并从所述数据文件调取对应所述下载文件编号的目标应用文件数据返回应用。
2.如权利要求1所述的一种分布式文件存储方法,其特征在于,所述定时检测所述生产者运行状态的步骤包括:
定时从所述数据库中获取所述生产者配置信息,判断所述生产者是否正常启动;
若所述生产者正常启动,则记录生产者启动信息到所述数据库,并判断所述生产者配置信息是否发生变更;
若所述生产者配置信息无变更,则接收应用下发的所述应用文件并发送到所述代理者;
若所述生产者配置信息变更,则重启所述生产者,并记录生产者重启信息到所述数据库;
若检测到所述生产者异常,则重启所述生产者,并记录生产者异常信息到所述数据库。
3.如权利要求2所述的一种分布式文件存储方法,其特征在于,所述接收应用下发的所述应用文件并发送到所述代理者的步骤包括:
接收应用下发的所述应用文件,并发送到所述代理者,若发送成功,则记录应用文件发送成功信息到所述数据库;
若发送失败,则重发直到达到预设的最大失败次数,并记录应用文件发送失败信息到所述数据库。
4.如权利要求1所述的一种分布式文件存储方法,其特征在于,所述定时检测所述代理者运行状态的步骤包括:
定时从所述数据库中获取所述代理者配置信息,并判断所述代理者的运行状态;
若所述代理者正常启动,则将代理者启动信息记录到所述数据库,并判断所述代理者配置信息是否有变更;
若所述代理者配置信息无变更,则接收所述生产者发送的所述应用文件以存储到所述数据文件中,并将存储位置保存到所述索引文件以及将所述应用文件的应用文件数据记录到所述数据库中;
若所述代理者配置信息有变更,则重启所述代理者,并记录代理者重启信息到所述数据库;
若检测到所述代理者状态异常,则重启所述代理者,并记录代理者异常信息到所述数据库。
5.如权利要求1所述的一种分布式文件存储方法,其特征在于,所述定时检测所述代理者运行状态还包括步骤:
当检测到所述代理者发出代理者警告信息时,则将所述代理者警告信息记录到所述数据库。
6.如权利要求1所述的一种分布式文件存储方法,其特征在于,所述定时检测所述消费者运行状态的步骤包括:
定时从所述数据库中获取所述消费者配置信息,并判断所述消费者的运行状态;
若所述消费者正常启动,则将消费者启动信息记录到所述数据库,并判断所述消费者配置信息是否有变更;
若所述消费者配置信息无变更,则接收应用发送的所述下载文件请求,所述下载文件请求包括下载文件编号;
若所述消费者配置信息有变更,则重启所述消费者,并记录消费者重启信息到所述数据库;
若检测到所述消费者状态异常,则重启所述消费者,并记录消费者异常信息到所述数据库。
7.如权利要求1所述的一种分布式文件存储方法,其特征在于,所述根据索引所述下载文件编号与所述数据库中的所述应用文件编号比较的步骤包括:
根据索引所述下载文件编号与所述数据库中的所述应用文件编号比较;
当判断所述下载文件编号存在所述应用文件编号中,则通过所述索引文件索引所述下载文件编号所在的存储位置;
基于所述下载文件编号所在的存储位置,调取所述数据文件对应所述下载文件编号的所述目标应用文件数据返回给应用;
当判断所述下载文件编号不存在所述应用文件编号中,则返回下载失败提示信息,并记录所述下载失败提示信息到所述数据库。
8.一种分布式文件存储装置,运用于分布式文件存储***,所述***包括生产者、代理者以及消费者,其特征在于,装置包括:
发送模块,用于定时检测所述生产者运行状态,当判断所述生产者正常启动且生产者配置信息无变更时,将应用下发的应用文件发送到所述代理者;
存储模块,用于定时检测所述代理者运行状态,当判断所述代理者正常启动且代理者配置信息无变更时,将所述应用文件存储到数据文件中,并将存储位置保存到索引文件以及将所述应用文件的应用文件参数记录到数据库中,所述应用文件参数包括应用文件编号;
接收模块,用于定时检测所述消费者运行状态,当判断所述消费者正常启动且消费者配置信息无变更时,接收应用发送的下载文件请求,所述下载文件请求包括下载文件编号;
返回模块,用于根据索引所述下载文件编号与所述数据库中的所述应用文件编号比较,当所述下载文件编号存在所述应用文件编号中,则通过所述索引文件索引所述下载文件编号存储位置,并从所述数据文件调取对应所述下载文件编号的目标应用文件数据返回应用。
9.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的一种分布式文件存储方法中的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的一种分布式文件存储方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011325066.XA CN112463744A (zh) | 2020-11-23 | 2020-11-23 | 一种分布式文件存储方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011325066.XA CN112463744A (zh) | 2020-11-23 | 2020-11-23 | 一种分布式文件存储方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112463744A true CN112463744A (zh) | 2021-03-09 |
Family
ID=74799702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011325066.XA Pending CN112463744A (zh) | 2020-11-23 | 2020-11-23 | 一种分布式文件存储方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463744A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110926A (zh) * | 2021-04-19 | 2021-07-13 | 上海华兴数字科技有限公司 | 数据消费线程的动态调整方法、装置、介质及电子设备 |
-
2020
- 2020-11-23 CN CN202011325066.XA patent/CN112463744A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113110926A (zh) * | 2021-04-19 | 2021-07-13 | 上海华兴数字科技有限公司 | 数据消费线程的动态调整方法、装置、介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110716895B (zh) | 目标数据归档方法、装置、计算机设备及介质 | |
CN111045901B (zh) | 容器的监控方法、装置、存储介质和电子设备 | |
US9164748B2 (en) | Information backup method and apparatus | |
CN111414334A (zh) | 基于云技术的文件分片上传方法、装置、设备及存储介质 | |
CN108712501B (zh) | 信息的发送方法、装置、计算设备以及存储介质 | |
US10551996B2 (en) | Method and apparatus for starting an application in a screen-locked state | |
CN110554930B (zh) | 一种数据存储方法及相关设备 | |
WO2020224238A1 (zh) | 区块链节点的部署方法、装置、设备及存储介质 | |
CN108965383B (zh) | 文件同步方法、装置、计算机设备和存储介质 | |
CN111930703A (zh) | 日志文件自动抓取方法、装置和计算机设备 | |
WO2019140739A1 (zh) | 客户回访的判断方法、电子装置及计算机可读存储介质 | |
CN111475369A (zh) | 日志监控的添加方法、装置、计算机设备及存储介质 | |
US9723480B2 (en) | Information processing device, server device, data communication system, data communication method, and computer-readable storage medium storing data communication program | |
CN112732434A (zh) | 一种应用管理方法及装置 | |
CN112463744A (zh) | 一种分布式文件存储方法、装置、电子设备及存储介质 | |
CN109495375B (zh) | Mqtt消息的处理方法、装置、电子设备及存储介质 | |
CN117459286A (zh) | 基于sd-wan的数据通信安全预警方法及装置 | |
CN110888790B (zh) | 日志管理方法及装置、电子设备、存储介质 | |
CN111367934A (zh) | 数据一致性的检验方法、装置、服务器和介质 | |
CN115190052A (zh) | 一种长连接的管理方法、***和控制单元 | |
CN108880994B (zh) | 一种重发邮件的方法和装置 | |
CN114143308A (zh) | 文件上传信息处理方法、装置、计算机设备及存储介质 | |
CN104850551B (zh) | 一种数据处理方法、装置及移动终端 | |
CN111935337A (zh) | 聚合链路的mac地址保活方法、设备和存储介质 | |
CN112732728A (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 |