目前在做一个应用,有不同的客户端,包括web应用的客户端,其他的客户端,都要访问我的文件服务器,通过文件服务程序提供的服务来访问文件,但是对文件管理服务器这个应用,没有什么思路,请大家给点思路,谢谢: 
大概的架构图(为了不让大家误解我的需求,重新画了个图)如下: 

系统涉及到三个部分: 
    1、客户端:包括标准的java web应用,主要完成终端用户的上传下载文件,及其一些功能,用户上传或下载的文件,都保存在【文件服务器】上,而且不能直接访问【文件服务器】,必须通过【文件管理服务】应用提供的api来间接访问。(有点拗口)

2、【文件管理服务】程序,也是一个独立的应用,可以是web服务器,也可以是后台运行的程序,该应用主要功能就是管理【文件服务器】上的文件,如上传,下载,分类管理等,对外提供相关API供客户端访问【文件服务器】里的文件,同时对客户端进行权限校验,比如注册用户才能访问【文件服务器】,非注册用户不能访问等;还其他相关功能;,有可能以后会有集群 
    
    3、【文件服务器】具体存放文件的地方了,有可能以后会有集群。

说说我的要求:

客户端得所有操作文件必须通过【文件管理服务】程序提供的API来操作【文件服务器】上的文件,而且必须有相应的权限,而且客户端可以看到自己上传的所有文件的相关信息,包括其他非自己上传的信息(根据权限显示),就像本地一样。

现在是各个系统间的通信协议怎么处理,主要是【文件管理服务】程序与客户端的通信,http协议或则socket?或者其他方式?【文件管理服务】程序应该怎么设计比较合理,谢谢。

2011-05-08 补充说明**************************************************************** 
补充说明一些客户端及服务器端得一些功能划分,担心大家理解错误:

【客户端】,只是对应于【文件管理服务】系统<也可理解为一个服务,一个独立的应用程序>且仅仅涉及到文件操作的时候而言的,【客户端】实际上是一个完整的应用程序,比如一个运行在手机上的程序;也可以是一个网站(或其他的web应用系统,假定称为网站吧),该网站中,有供终端用户使用的portal及用户信息管理模块等,比如像javaeye的论坛,也有供网站管理员或系统业务员等使用的后端管理模块,他们只有在涉及到文件相关的上传,下载、删除等操作的时候,才需要和【文件管理服务】程序通讯,需要传入一些必要的数据,比如权限、用户信息等,只有校验通过后才能对后,才能通过【文件管理服务】程序提供的API间接操作最终保存在【文件服务器】上的文件。

各个【客户端(或网站)】之间都是独立在不同的服务器上跑的,有自己的管理系统,比如数据库等; 
【文件管理服务】程序也是一个独立的应用,在独立的一台或多台机器上跑; 
【文件服务器】也是独立一台或多台机器,保存所有的文件; 
考虑到客户端的用户以后可能会很多,所以将三部分都作为独立的应用来部署,一是彼此间不影响,而是当某些地方有压力时,可以方便扩展,如集群,比如如果【文件管理服务】的压力大,可以对【文件管理服务】部分进行集群;如果【文件服务器】压力大,同样也可以单独对【文件服务器】进行集群管理。

当然三部分之间要确保用户的文件的关系理清楚,而且要方便查找及方便操作。

--------------补充,还有就是文件服务器上文件的备份和恢复问题,这些都没有思路

原文地址:http://blog.itpub.net/29196873/viewspace-1132507/

文件服务器和web应用分离的思路(转)的更多相关文章

  1. 上传文件服务与web服务分离

    业务场景:1. 后端服务为java web应用,使用tomcat容器,多实例集群化部署.2. 前端使用nginx作为后端应用的反向代理. 业务需求:现在需要在java web应用端上传文件,同时还要能 ...

  2. 高级应用与部署 —— 主程序与web目录分离

    在网站部署中,考虑网站的安全行问题,可以将您的网站主程序与web目录分离,使主程序在web目录之外,从而提高网站的安全性. 分离方法 1.将phpcms v9中程序主框架目录phpcms移动至web目 ...

  3. AngularJS使用OData请求ASP.NET Web API资源的思路

    本篇整理AngularJS使用OData请求ASP.NET Web API资源的思路. 首先给ASP.NET Web API插上OData的翅膀,通过NuGet安装OData. 然后,给control ...

  4. web动静分离

    1 动态资源和静态资源 动态资源:多次访问页面,原代码会发生改变,比如jsp 静态资源:多次访问页面,原代码不发生改变,比如html,css 2 动静分离 将动态资源(jsp)放在tomcat服务器中 ...

  5. 上传文件服务器与web内容服务分离

    现在难点在:     1\单击表单提交按钮后,图片上传到图片服务器,文字内容上传web服务器数据库,这两个服务器分别在两个城市.     2\图片不能通过web服务器中转.     3\web服务器内 ...

  6. 转:Spine.JS+Rails重客户端Web应用技术选型思路:『风车』架构设计

    原文来自于:http://www.infoq.com/cn/articles/fengche-co-architecture 风车这个项目开始于 2011 年 11 月份,之前叫做 Pragmatic ...

  7. 谈一次java web系统的重构思路

    ——略谈Java web软件如何提供二次开发接口 接手公司的一个Java web软件产品,该软件采用传统的dwr框架.dwr框架相当于一个中间层,使得javascript能够识别Java类对象,进而能 ...

  8. 一个简单 Go Web MVC 框架实现思路

    需要的知识点 为了防止你的心里不适,需要以下知识点: Go 基本知识 Go 反射的深入理解 使用过框架 Go Web 服务器搭建 package main import ( "fmt&quo ...

  9. 浅谈响应式Web设计与实现思路

    是否还在为你的应用程序适配PC端,移动端,平板而苦苦思索呢,是否在寻找如何一套代码适配多终端方式呢,是否希望快速上手实现你的跨终端应用程序呢,是的话,那就看过来吧,本文阐述响应式UI设计相关理论基础, ...

随机推荐

  1. you need to know those webs !

    J2me开发网 http://www.j2medev.com/bbs/index.asp J2me社区 http://www.j2meforums.com/forum/ csdn http://www ...

  2. python核心编程--笔记(不定时跟新)(转)

    的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   ...

  3. JQuery 导入导出 Excel

    正在做一个小项目, 从数据库中查询数据放在 HTML Table 中. 现在想要从这个 table 中导出数据来. 另外用户需要选择导出的列. 使用 jQuery 的导出插件可以完成这个需求. jQu ...

  4. python学习笔记——创建事件对象Event

    1 Event对象的基本概述 用 multiprocessing.Event 实现线程间通信,使用multiprocessing.Event可以使一个线程等待其他线程的通知,我们把这个Event传递到 ...

  5. RHEL7 -- 使用team替换bonding实现链路聚合网卡绑定

    将网卡enp0s8.enp0s9进行链路绑定 安装teamd包 # yum install teamd 创建一个team链接 # nmcli con add con-name team0 type t ...

  6. Unix环境高级编程(九)信号

    信号时软中断,很多比较重要的应用程序都需要处理信号,信号提供了一种处理异步事件的方法.每个信号都一个名字,以SIG开头,在<signal.h>头文件中定义信号类型,都是正整数(信号编号). ...

  7. Android:不让 EditText 在 Activity 中自动弹出键盘

    通过属性 android:windowSoftInputMode 可以做到隐藏键盘的. android:windowSoftInputMode 属性有: stateUnspecified,stateU ...

  8. 基于FPGA的5寸LCD显示屏的显示控制

    基于FPGA的5寸LCD显示屏的显示控制 作者:lee神 1,图像处理基础知识 数字图像处理是指将图像信号转换成数字信号并利用计算机对其进行处理的过程.图像处理最早出现于 20 世纪 50 年代,当时 ...

  9. 【Android】12.2 利用Intent启动和关闭Activity

    分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法 ...

  10. mysql插入中文时候编码问题

    mysql插入中的时候要设置 set character_client_set = utf-8