发明内容
鉴于以上内容,有必要提供一种分布式文件存储***,其可通过在每个地区设置多台文件服务器,并在服务器配置表中设置其中一台服务器为主文件服务器,其他服务器为辅助服务器,根据主文件服务器的状态变化,动态调整服务器配置表中各文件服务器的主辅标记。
鉴于以上内容,还有必要提供一种分布式文件存储方法,其可通过在每个地区设置多台文件服务器,并在服务器配置表中设置其中一台服务器为主文件服务器,其他服务器为辅助服务器,根据主文件服务器的状态变化,动态调整服务器配置表中各文件服务器的主辅标记。
一种分布式文件存储***,该***包括:文件上传模块,用于当接收第一节点的客户端发送的文件上传指令后,根据第一节点的服务器配置表中记录的第一节点内所有文件服务器的主辅标记,确定第一节点内的主文件服务器S1;所述文件上传模块,还用于将需要上传的文件上传到确定的主文件服务器S1;信息记录模块,用于在第一节点的文件摘要信息表中增加该上传文件的记录信息;信息调整模块,用于当预设条件满足时,调整第一节点的服务器配置表中记录的文件服务器的主辅标记。
一种分布式文件存储方法,该方法包括:文件上传步骤一,当接收到第一节点的客户端发送的文件上传指令时,根据第一节点的服务器配置表中记录的第一节点内所有文件服务器的主辅标记,确定第一节点内的主文件服务器S1;文件上传步骤二,将需要上传的文件上传到确定的主文件服务器S1;信息记录步骤,在第一节点的文件摘要信息表中增加该上传文件的记录信息;信息调整步骤,当预设条件满足时,调整第一节点的服务器配置表中记录的文件服务器的主辅标记。
前述方法可以由电子设备(如电脑)执行,其中该电子设备具有附带了图形用户界面(GUI)的显示屏幕、一个或多个处理器、存储器以及保存在存储器中用于执行这些方法的一个或多个模块、程序或指令集。在某些实施例中,该电子设备提供了包括无线通信在内的多种功能。
用于执行前述方法的指令可以包含在被配置成由一个或多个处理器执行的计算机程序产品中。
相较于现有技术,所述的分布式文件存储***及方法,其可通过在每个地区设置多台文件服务器,并在服务器配置表中设置其中一台服务器作为主文件服务器(用于上传文件),其他服务器作为辅助服务器(只能用于下载文件),根据主文件服务器的状态变化,动态调整服务器配置表中各文件服务器的主辅标记。
通过本发明可以降低所有文件都存储在同一文件服务器的风险,实现同一时间内文件上传及下载动作可以在不同服务器进行,这样也可提升文件的访问速度。同时,当某台文件服务器损坏时,不会导致所有文件的丢失,增加了数据的安全性。当主文件服务器的存储空间不够时,无需购买更大、更昂贵的服务器,只需更改服务器配置表的主辅标记,将某台空闲的辅助文件服务器设置为当前的主文件服务器即可。
具体实施方式
如图1所示,是本发明分布式文件存储方法的网络架构图。该方法运行于分散在不同地理位置的企业信息***节点,如节点110、120、130(图中只画出三个),其中节点110代表深圳,节点120代表台湾,节点130代表美国。这些节点通过网络140相连,且都采用三层(或多层)结构:一台数据库服务器(113、123或133),一系列的应用服务器***(112、122或132),以及分散的客户端(111、121或131)。
所述网络4可以是企业内部网(Intranet),也可以是互联网(Internet)或其它类型的通讯网络,如GPRS、Wi-Fi/WLAN、3G/WCDMA、3.5G/HSDPA等。以下将以节点120为例,介绍各节点的组成。
如图2所示,是图1中节点120的结构示意图。节点120包括若干客户端121(图中仅画出一个)、应用服务器***122及数据库服务器123。数据库服务器123用于存储企业相关的所有数据,并负责管理对数据库的读写和维护,能够迅速执行大量数据的更新和检索。
客户端121包括一个客户端代理程序201,用于将***操作封装,使***操作与用户操作分离,简化了用户操作。该客户端代理程序201包括一个用户操作模块202、一个数据库操作模块203及一个文件操作模块205。
用户操作模块202为用户提供一图形用户接口(Graphical User Interface,GUI),方便用户输入。该用户操作模块202与数据库操作模块203及文件操作模块205相连,将客户端121对应用服务器***122及数据库服务器123的操作结果展示给用户。
文件操作模块205与应用服务器***122中的文件服务器***207连接,用于向文件服务器***207发送对文件的操作命令,该命令包括文件打开、关闭、编辑、上传、下载、删除、变更及增加或删除目录夹等操作。文件操作模块205还与数据库操作模块203相连,用于处理数据库操作模块203传送的数据。
数据库操作模块203与应用服务器209相连,用于生成对数据库服务器123中的数据进行查询、更新及删除等操作命令。数据库操作模块203还负责将数据库服务器123的操作结果传送至文件操作模块205。
在本实施例中,数据库服务器123中存储有一个服务器配置表300(参阅图5所示)。该服务器配置表300用于记录文件服务器***207中所有的文件服务器,包括地区编号301、服务器名称303、服务器地址305、CPU负荷307及主辅标记309。
其中,地区编号301是对应节点的统一编号,每一个节点有且仅有唯一的编号(如节点120的地区编号为001)。服务器名称303是文件服务器(包括主文件服务器和辅助文件服务器)的名称,其可简要描述该文件服务器。服务器地址305是文件服务器所在的IP地址,如10.153.24.199。CPU负荷307是每台文件服务器当前的CPU使用率。
主辅标记309用于标记每台文件服务器属于主文件服务器还是辅助文件服务器,例如,用1记录一台文件服务器为主文件服务器,用0记录一台文件服务器为辅助文件服务器。其中,每个节点的文件服务器***只有一台主文件服务器,可以有多台辅助文件服务器。主文件服务器是当前可以上传/下载文件的服务器,辅助文件服务器只能用于下载文件。也就是说,客户端121只能将文件上传到主文件服务器211。
在本实施例中,根据主文件服务器211的状态变化,可以动态调整服务器配置表300中各服务器的主辅标记309。例如,可以确定CPU负荷最小的文件服务器为主文件服务器,当主文件服务器的CPU负荷超过预设值(如95%)时,再从辅助文件服务器中选择CPU负荷较小的服务器作为新的主文件服务器,并调整服务器配置表300中主辅标记309。
例如,将新的主文件服务器的主辅标记309修改为1,再将原先的主文件服务器的主辅标记309修改为0,使其成为辅助文件服务器,不再接收客户端121上传的文件。在本实施例中,该数据库服务器123中的服务器配置表300定时(如每隔30分钟)与其他节点(110、130)的数据库服务器(113、133)中的服务器配置表300同步。
文件服务器***207用于存储文件,包括文档、图像、声音及影像等。该文件服务器***207与网络140相连,可通过网络140与其它节点的文件服务器***进行文件传输操作。
应用服务器209用于连接客户端121与数据库服务器123,将客户端121的数据库操作模块203对数据库操作的命令传递至数据库服务器123执行,并将数据库服务器123执行结果传送给数据库操作模块203。
数据库服务器123还存储了企业文件(如声音、图像、文档及影像等文件)的摘要信息。参阅图6所示,该文件摘要信息表400包括文件编号401、文件标题403、存储位置405、文件目录407及更新时间409。其中,文件编号401是对应文件在企业信息***中的统一编号,每一文件有且仅有一唯一的编号。
文件标题403是文件的标题,其可简要描述该文件的内容。存储位置405是存储文件所在的文件服务器的IP地址,如10.153.24.199。文件目录407是文件在服务器中的目录。更新时间409是上一次对文件操作的具体时间。
节点110(或130)的数据库服务器113(或133)中的文件摘要信息表400定时与节点120的数据库服务器123中的文件摘要信息表400同步。例如,可在节点120的数据库服务器123中设定每30分钟执行一次文件摘要信息表400同步步骤。
在其他实施例中,也可以将数据库服务器123与应用服务器209合并在一起,只保留应用服务器209,即将数据库服务器123的功能整合到应用服务器209中。
如图3所示,是本发明分布式文件存储***的运行环境示意图。在本实施例中,所述分布式文件存储***224运行于应用服务器209中,所述应用服务器209还包括通过数据总线相连的显示设备220、输入设备221、存储器223和处理器225。
可以理解,所述应用服务器209也还应该进一步包括其他必要的硬件***与软件***,如主板、操作***等,由于这些设备都是本领域技术人员的习知常识,本实施例中不再一一描述。
所述分布式文件存储***224用于根据服务器配置表300中的设置将文件上传到第一节点的主文件服务器,再将该文件同步到其他节点的主文件服务器,并根据每个节点中主文件服务器的状态变化,动态调整服务器配置表300中各服务器的主辅标记,具体过程以下描述。
所述存储器223用于存储所述分布式文件存储***224的程序代码等资料。所述显示设备220和输入设备221用做应用服务器209的输入输出设备。
在本实施例中,所述分布式文件存储***224可以被分割成一个或多个模块,所述一个或多个模块被存储在所述存储器223中并被配置成由一个或多个处理器(本实施例为一个处理器225)执行,以完成本发明。例如,参阅图4所示,所述分布式文件存储***224被分割成文件上传模块231、信息记录模块232、文件同步模块233、信息调整模块234、文件下载模块235和文件删除模块236。本发明所称的模块是完成一特定功能的程序段,比程序更适合于描述软件在电子设备2中的执行过程,关于各模块231-236的功能参阅图7的描述。
如图7所示,是本发明分布式文件存储方法的较佳实施例的流程图。
步骤S10,第一节点的客户端发送文件上传指令。例如,第一节点为120。
步骤S11,文件上传模块231接收该第一节点的客户端发送的文件上传指令后,根据第一节点的服务器配置表300中记录的第一节点内所有文件服务器的主辅标记,确定第一节点的文件服务器***207内的一台主文件服务器211,记为S1。
步骤S12,文件上传模块231将需要上传的文件上传到确定的主文件服务器S1。
步骤S13,信息记录模块232在第一节点的文件摘要信息表400中增加该上传文件的记录信息,该记录信息包括:文件编号、文件标题、文件在第一节点的存储位置、文件目录及更新时间(即上传时间)。
步骤S14,文件同步模块233将该上传文件同步到其他节点的文件服务器***207内的主文件服务器中,具体同步过程参阅图8的说明。
在其他实施例中,所述文件同步模块233还用于每隔预设的时间间隔(如10分钟),将第一节点的服务器配置表300及文件摘要信息表400同步到其他节点(如110、130)。
步骤S15,当预设条件满足时,信息调整模块234调整第一节点的服务器配置表300中记录的文件服务器的主辅标记。需要指明的是,步骤S14与步骤S15的顺序可以互换。
举例而言,当主文件服务器211的CPU负荷(或其他参数,如内存占用率等)超过预设值(如95%)时,从第一节点中选择一台辅助文件服务器(如CPU负荷最小的辅助文件服务器或随机选取)作为新的主文件服务器,并将新的主文件服务器213的主辅标记修改为第一数值,再将原先的主文件服务器211的主辅标记修改为第二数值,使其成为辅助文件服务器。在本实施例中,所述第一数值为1,第二数值为0。
进一步地,在其他实施例中,所述方法还包括步骤:当客户端121在第一节点下载文件时,文件下载模块235从文件摘要信息表400中获取需要下载的文件的存储位置,根据该存储位置从第一节点中对应的文件服务器中下载该文件。
进一步地,在其他实施例中,所述方法还包括步骤:当客户端121在第一节点删除一个文件时,文件删除模块236从文件摘要信息表400中获取该文件在其他节点的存储位置,根据每个存储位置从对应的各地文件服务器中删除此文件。
如图8所示,是图7中步骤S14的具体流程图。在本实施例中,文件同步模块233利用多线程技术,同时将该上传文件同步到其他节点的文件服务器***207内的主文件服务器中。下文例举节点120与节点130的同步进行说明。
步骤S141,文件同步模块233根据文件编号,从第一节点的文件摘要信息表400中获取该文件的存储位置。
步骤S142,文件同步模块233根据该存储位置从第一节点的文件服务器***207内对应的文件服务器中下载该文件。需要注意的是,此时的文件服务器211可能已经不是主文件服务器,但其IP地址是不变的,即该文件的存储位置没有变化。
步骤S143,文件同步模块233根据第二节点(如节点130)的文件摘要信息表400,确定第二节点的文件服务器***内的一台主文件服务器S2。
步骤S144,文件同步模块233将该文件上传到第二节点的文件服务器***内的主文件服务器S2。
步骤S145,文件同步模块233在第二节点的文件摘要信息表400中增加该文件的记录信息,该记录信息包括:文件编号、文件标题、文件在第二节点的存储位置、文件目录及更新时间(即上传时间)。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。