文件服务器规划设计.docx

上传人:b****2 文档编号:11674599 上传时间:2023-06-02 格式:DOCX 页数:21 大小:40.94KB
下载 相关 举报
文件服务器规划设计.docx_第1页
第1页 / 共21页
文件服务器规划设计.docx_第2页
第2页 / 共21页
文件服务器规划设计.docx_第3页
第3页 / 共21页
文件服务器规划设计.docx_第4页
第4页 / 共21页
文件服务器规划设计.docx_第5页
第5页 / 共21页
文件服务器规划设计.docx_第6页
第6页 / 共21页
文件服务器规划设计.docx_第7页
第7页 / 共21页
文件服务器规划设计.docx_第8页
第8页 / 共21页
文件服务器规划设计.docx_第9页
第9页 / 共21页
文件服务器规划设计.docx_第10页
第10页 / 共21页
文件服务器规划设计.docx_第11页
第11页 / 共21页
文件服务器规划设计.docx_第12页
第12页 / 共21页
文件服务器规划设计.docx_第13页
第13页 / 共21页
文件服务器规划设计.docx_第14页
第14页 / 共21页
文件服务器规划设计.docx_第15页
第15页 / 共21页
文件服务器规划设计.docx_第16页
第16页 / 共21页
文件服务器规划设计.docx_第17页
第17页 / 共21页
文件服务器规划设计.docx_第18页
第18页 / 共21页
文件服务器规划设计.docx_第19页
第19页 / 共21页
文件服务器规划设计.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

文件服务器规划设计.docx

《文件服务器规划设计.docx》由会员分享,可在线阅读,更多相关《文件服务器规划设计.docx(21页珍藏版)》请在冰点文库上搜索。

文件服务器规划设计.docx

文件服务器规划设计

密级:

公开

文件上传服务器

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查看所有图片

文件服务器所接收到的所有文件、图片等,均保留日志,允许管理人员通过后台,以列表形式查看文件情况。

界面原型设计如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2