文件服务器规划设计.docx
- 文档编号:11674599
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:21
- 大小:40.94KB
文件服务器规划设计.docx
《文件服务器规划设计.docx》由会员分享,可在线阅读,更多相关《文件服务器规划设计.docx(21页珍藏版)》请在冰点文库上搜索。
文件服务器规划设计
密级:
公开
文件上传服务器
FUS(fileuploadservice)
概要设计
项目编号
文档版本号
2011-12-19
归属部门
归属项目
编写人
编写日期
中航国际金网公司
技术部
版本历史
日期
版本
简要描述信息
作者
2011-12-19
创建该文档
高正
2012-1-09
修改部分内容
高正
2012-01-11
结构进行了调整
高正
2012-1-16
评审后初步定稿
高正
分发清单
文档接收者
组织部门
1
前言
1.1编写目的
编写该文件的目的是描述文件服务器的框架概要设计,有如下好处:
确定系统开发功能的范围。
供设计人员分析时使用。
运维人员在进行部署时的参考。
作为软件开发人员进行设计和编码的基础。
确定系统测试及验收内容。
软件维护的参考资料。
作为项目验收标准之一。
1.2适用范围
业务或需求分析人员、架构设计师、软件开发工程师、测试人员、项目管理人员。
2项目概述
2.1背景
对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。
这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule,保证更高的系统消耗和执行效率。
同时,对于某些应用需要针对某图片进行截取不同尺寸的图片,以节省网络带宽。
例如产品图片,往往要提供多个缩略图,例如在列表页为小图,在产品详情页为中图,当鼠标放到中图上再显示大图等。
为此上传服务器需要提供图片的适当裁剪成大中小各种尺寸的图片,以适应多种情况。
其实,不只是图片耗网络带宽,一切需要下载的文件同样存在着网络带宽的耗用文件。
基于以上原因,金网公司开发了文件上传服务器,作为所有新建项目上传图片、文件的统一存放地。
为以后的集群、负载均衡等分布式架构提供一定的基础。
2.2目标
开发文件上传服务器应用程序,对外提供文件上传服务。
通过各种参数的设定来完成图片裁剪、图片转换、是否多文件存储等功能,并将文件路径反馈给任务发起方。
目前暂不提供图片生成水印功能。
同时开辟后台,可以创建应用、查看图片日志,如所有已上传文件的来源地、日期等信息。
3概要设计
3.1工作模式
FUS文件服务器可对N台Web应用服务器提供文件上传服务,Web应用服务器中部署了“文件上传组件”。
FUS文件服务器分为两个部分:
FUSService服务器(简称FUSServer)和文件存储服务器(简称StorageServer)。
FUSServer负责为其他Web应用提供上传文件和记录功能,所上传的文件被真实地存储在了StorageServer上。
StorageServer既作为物理存储服务器,同时为各个Web应用提供所存储文件的外链功能。
即:
在Web应用上可通过链接的方式访问所存储的文件。
Web应用服务器与文件服务器的交互过程基本上由4步来完成:
第一步:
设定FUSConfig各种参数,确定上传模式
Web应用服务器中,文件上传组件[即fus文件夹]需要被放入到根目录下。
同时,需要上传文件的页面中,进行配置,构造各种参数。
具体参见应用端配置部分。
第二步:
用户点击上传按钮
由于第一步所设置的参数的不同,本步骤的展现形式也不同,主要分为以下两种情况:
情况一:
弹出文件选择窗口
情况二:
弹出多选文件选择窗口
第三步:
上传文件
该步骤为根据文件上传组件自动构造参数,将文件上传到FUSServer中。
FUSServer接收到传来的文件信息和各种参数后,将文件转存到指定的StorageServer中,并将日志记录到数据库。
第四步:
将文件上传后的路径返回到客户端
文件上传组件会把文件真实路径反馈到客户端。
【第五步:
当需要人工裁剪时候才会遇到】
进入人工裁剪方式,人工裁剪完毕后继续走第三步和第四步。
典型应用场景如下图所示:
3.2文件上传组件的设计
文件上传组件为一组js脚本和css样式以及图片、html等的组合。
该组件可被放入任何web应用系统中,作为文件上传的支持控件,它不受限于任何其他开发语言(如、java、php等),但必须基于以上。
其目录结构示例如下图所示
该组件的核心部分;其已整合了开源的基于jQuery的uploadify插件。
所完成的功能:
FUSConfig类的定义,具体属性见下表3-1.
根据fusConfig来确定点击文件上传按钮后的处理情况。
构造与服务端需要的参数,并将文件提交到服务器。
动态显示文件上传进度。
如果需要人工裁剪,提供人工裁剪功能。
调用文件上传后的回调函数将文件真实路径反馈给客户端。
真对FCK有单独的处理过程。
表3-1FUSConfig配置类的属性设定:
参数名
必须
取值范围
说明
1
serviceUrl
是
字符串
表示fus服务器文件上传请求url。
例如:
是
数值
表示是哪个应用在调用文件服务器的上传。
该值是通过本文档创建应用后所得的值。
3
divId
是
字符串
页面中的div元素id,该元素用来显示已上传的文件信息。
4
callback
是
字符串
表示回调函数名,即当文件上传完毕后,自动回调的函数名字。
5
auto
否
ture/false
true表示选择完文件后是否立即上传。
false表示最后统一点击上传后才上传文件。
6
buttonImg
否
字符串
文件上传按钮的图片路径,若无,则为默认图片。
7
buttonText
否
字符串
文件上传按钮的文字,若无,则为默认文字——上传文件。
8
cancelImg
否
字符串
取消按钮上的背景图片路径。
若无,则为默认图片。
9
displayData
否
字符串
文件上传过程中的文字提示。
10
sizeLimit
否
数值
所上传的每个文件的最大byte数。
11
removeCompleted
否
ture/false
上传完毕后,显示已上传文件的div是否自动隐藏。
12
multi
否
ture/false
表示是否是一次上传多个文件;若无该参数默认为false。
否
数值
表示多文件上传时,允许本次上传的最多的文件数。
14
fileExt
否
字符串
允许上传的文件扩展名,多个扩展名之间用英文分号分割。
例如:
'*.jpg;*.gif;*.png'
若无该参数,表示文件类型无限制。
fileDesc
否
字符串
允许上传的文件扩展名在弹出窗口中的显示提示。
例如:
'图片文件(.JPG,.GIF,.PNG)'
15
manuCrop
否
ture/false
该参数只有在mult=false情况下才使用。
表示单个图片是否需要人工裁剪,若无该参数默认为false。
16
picZoom
否
ture/false
表示图片是否需要缩放处理(按照指定的width和height来设置缩放后的图片大小),若无该参数默认为false。
若有该参数,则同时必须有width和height参数(可只有1个,若只有一个,则另一个为等比例缩放)。
17
maxWidth
否
数值
默认1280
该参数只有在manucrop=true情况下才使用。
表示图片所裁剪的宽度像素数。
18
maxHeight
否
数值
默认960
该参数只有在manucrop=true情况下才使用。
表示图片所裁剪的高度像素数。
19
thumSize
否
字符串
值:
小图宽*小图高;中图宽*中图高
该参数只有在img=true情况下才使用。
表示为该图片提供缩略图,系统会生成小图、中图,他们的名字分别为原图最终文件名添加尾缀字母方式。
若无该参数,表示无需生成小图和中图缩略图。
例如:
原图的上传后最终文件名为
小图文件名为
中图文件名为
20
imgConvert
否
ture/false
该参数只有在img=true情况下才使用。
表示图片是否需要转换为jpg格式,若无该参数默认为false。
userId
否
null
上传文件的用户id
3.3FUSServer设计
3.3.1物理部署方式
FUSServer和StorageServer有多种组合方式:
1)单一Server
FUSServer和StorageServer同时部署在一台机器上。
这也是本次开发首先要支持的方式。
2)单一FUSServer,多StorageServer
FUSServer连接多个StorageServer。
FUS和Storage的连接,现在采用NFS或GFS方案。
即:
FUS如同访问本地文件一样,访问各个Storage的目录。
对于来自各个WebAPP的调用,FUS根据事先定义的规则,选择其中一台StorageServer,进行存储。
规则如下:
每个WebAPP有唯一的id。
在FUSServer内数据库中已义了该应用使用的唯一()storageServer的domain、IP、NFS下的目录路径。
3)多FUSServer,多(或单一)StorageServer
负载增加后,可能会增加多台FUSServer。
通过第三方的负载平衡机制/设备,将来自WebAPP的请求分担到多个FUSserver,但对外的domain只有一个。
3.3.2核心类的设计
类的功能:
要根据uploadify控件决定是用servlet还是action,故此部分目前尚不定,等对uploadify控件研究明白后再定。
(1)、负责接收客户端传来的文件上传参数,这些参数是在客户端由文件上传组件进行构造并封装的。
其工作模式如下:
Form表单属性约定如下:
参数名
必须
取值范围
说明
1
appId
是
数值
表示是哪个应用在调用文件服务器的上传。
该值是通过本文档创建应用后所得的值。
2
files
是
File
页面提交的文件流。
3
sizeLimit
否
数值
所上传的每个文件的最大byte数。
4
picZoom
否
ture/false
表示图片是否需要缩放处理(按照指定的width和height来设置缩放后的图片大小),若无该参数默认为false。
若有该参数,则同时必须有width和height参数(可只有1个,若只有一个,则另一个为等比例缩放)。
5
maxWidth
否
数值
表示图片所裁剪的宽度像素数。
6
maxHeight
否
数值
表示图片所裁剪的高度像素数。
7
thumSize
否
字符串
值:
小图宽*小图高;中图宽*中图高
该参数只有在img=true情况下才使用。
表示为该图片提供缩略图,系统会生成小图、中图,他们的名字分别为原图最终文件名添加尾缀字母方式。
若无该参数,表示无需生成小图和中图缩略图。
例如:
原图的上传后最终文件名为
小图文件名为
中图文件名为
8
imgConvert
否
ture/false
该参数只有在img=true情况下才使用。
表示图片是否需要转换为jpg格式,若无该参数默认为false。
9
userId
否
数值型
可以为空
(2)验证参数的有效性。
例如:
文件大小超过sizeLimit限制。
若发现错误,要把错误信息传递到前段页面。
appId的验证。
Rerferer中SERVER_NAME是否跟该appId的域名一致。
(3)调用相关的工具类完成相应指定的功能,例如:
图片缩放、转成jpg、生成缩略图等等。
(4)根据预先设定的规则(具体规则详见处)将图片保存到指定的StorageServer。
根据该appId得到该文件需要存放到哪个StorageServer上,然后根据该Storage的pathPattern属性获得该文件的文件名格式。
具体文件路径命名参见部分。
接收到的所有文件要记录日志。
若发现文件非法或者出现异常,需要返回客户端提示错误信息。
(5)将最终文件路径反馈到应用层页面。
由文件上传组件得到路径信息,并并调用callback参数(即是所指定的函数名)。
类的功能:
完成对应用的注册、配置等工作。
Web应用的基本属性如下:
id——应用的主键
appName——应用的名称
appInfo——应用描述
valid——该应用是否还有效,true/false
createDate——创建日期
storages——该应用可以存储在某一个或多个StoragesServer服务器上。
StorageAction.java类的功能:
完成对StorageServer的注册、配置等工作。
每个StorageSever的基本属性如下:
id——StorageServer的主键
domain——域名,例如:
ip——IP地址,例如
valid——是否有效,true/false
local——存储文件的逻辑路径,例如:
/pic1/
pathPattern——存储文件的路径的生成格式,例如%l%a%e%d%t%c5%f
info——该服务器的说明
createDate——创建日期
3.3.3文件路径命名约定
每个Storage在初始配置的时候,都有pathPattern属性,来定义存储文件的路径的生成格式,例如:
%l%a%e%d%t%m%c5%f。
各部分的说明如下:
文件名必须全部小写
默认:
%l%a%e%m%f
1
配置文件中的local,如:
/pic1
%l
/pic1/
2
应用的appID,如app1
%a
/pic1/app1/
3
文件的扩展名,全小写,如jpg
%e
/pic1/app1/jpg
4
日期,按照/年/月/日的格式
%d
/pic1/app1/jpg/2012/01/04
时间戳取模最后两位/最后三四位,
%m
/pic1/app1/jpg/43/48/
5
时间,精确到毫秒
%t
/pic1/app1/jpg/2012/01/04/
6
随机数,可指定位数
%c+位数
/pic1/app1/jpg/2012/01/04
pg
4数据库设计
APP(Web应用表APP)
字段名
描述
类型
备注
ID
主键
int(4)
DOMAIN
varchar(100)
APP_NAME
应用名称
varchar(100)
APP_INFO
应用描述
varchar(1024)
VALID
是否有效
tinyint
0-无效1-有效,默认1
CREATE_DATE
创建日期
timestamp
STORAGE(StorageServer服务器表Stroage)
字段名
描述
类型
备注
ID
主键
int(4)
DOMAIN
域名
varchar(100)
IP
IP地址
varchar(15)
VALID
是否有效
tinyint
0-无效1-有效,默认1
LOCAL_path
存储文件的逻辑路径
varchar(100)
如/pic1/
PATH_PATTERN
存储文件的路径的生成格式,如
%l%a%e%d%t%c5%f
varchar(100)
%l%a%e%m%f
INFO
该服务器的说明
varchar(400)
CREATE_DATE
创建日期
timestamp
APP_STORAGE(Web应用表与StorageServer服务器关系表Stroage)
字段名
描述
类型
备注
APP_ID
STORAGE_ID
FILE_LOG(文件上传日志表)
字段名
描述
类型
备注
id
主键
bigint
uuid
int(4)
文件名,时间戳+3位随机数
app_id
来自哪个应用
int(4)
user_id
bigint
可以为空
storage_id
来自哪个StorageServer
int(4)
relative_path
文件真实路径
varchar(200)
除StorageLocal外的全路径,不含文件名,例如:
/app1/673//
real_name
原文件名
varchar(100)
客户端在文件上传时,原文件名
file_ext
文件扩展名
varchar(100)
file_size
文件大小
int
create_date
上传日期
timestamp
width
图片高度px
int(7)
只有图片文件才有该属性
height
图片宽度px
int(7)
只有图片文件才有该属性
5项目目录结构
fus
├─src/main/java
│└─├─common——提供工具的通用根包
│├─front——对外提供上传服务的根包
││├─action——存放action类
││├─dao——存放dao类
││└─service——存放Service接口
││└─impl——存放Service实现
│├─system——后台管理的根包
││├─action——存放action类
││├─dao——存放dao类
││├─entity——存放实体类
││├─vo——存放值对象类
││└─service——存放Service接口
││└─impl——存放Service实现
│……
├─src/main/resource——存放该web应用所需的资源文件和配置文件
├─doc——存放该项目的一些相关文件
└─WebRoot
├─common——存放该应用的通用jsp(、、、、)
├─css——存放该应用的css样式文件
├─js——存放该应用的js脚本文件
│└─
├─images——存放该应用的图片文件
└─WEB-INF
├content——存放各个功能模块的jsp页面
├lib——存放各个jar
└——应用的
5.1包
该包内提供了通用工具类,例如,图片裁剪、转jpg格式等。
5.2包
该包为对外提供上传服务的根包。
包
该类为实现上传的核心类[要根据uploadify控件决定是用servlet还是action,故此部分目前尚不定,等对uploadify控件研究明白后再定。
],接收所有参数,具备函数:
publicStringexecute();//进行文件的验证、处理、保存等操作。
包
该类为对所上传文件记录日志的核心类。
包
该类是实现对文件上传后的保存日志功能。
5.3包
包
该类为对系统的应用进行注册、查看、设置无效等操作的类。
该类为对Storage服务器进行注册、查看、设置无效等操作的类。
该类为登录,进行登录验证操作。
包
该类为对所有应用的管理的核心类。
该类为对所有Storage服务器的管理的核心类。
该类为对所有登录账户的管理类。
包
该类为所有应用的实体类。
该类为所有Storage服务器的实体类。
该类为本系统的登录用户类。
包
该类是实现对App应用的管理功能。
该类是实现对Storage服务器的管理功能。
该类是实现对登录账户的管理功能。
5.4src/main/resource包
文件中存放系统的主要配置文件,其中的关键配置项。
fileRoot=/u01/item/data/fus/
说明:
所有上传文件的根目录,即挂载其他NFS服务器时,目录均挂载在此目录下。
6文件服务器的后台管理
6.1用户管理
对登录本FUSServer系统的账户进行添加、修改、删除。
6.2应用管理
对参与文件上传的Web应用进行注册、配置等管理。
6.3StorageServer管理
对StorageServer的注册、配置等管理
6.4查看所有图片
文件服务器所接收到的所有文件、图片等,均保留日志,允许管理人员通过后台,以列表形式查看文件情况。
界面原型设计如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件服务器 规划 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)