JAVA分布式文件管理系统-mydfsServer

各位博友,我叫巫其威,擅长java和c/c++语言,现在在无锡。担任过项目经理,java程序员,android开发工程师,java讲师。如果有技术问题我们可以一起讨论。我QQ:1058633117  QQ邮箱:[email protected]  电话:15295432682

这是我编写的文件上传管理系统,该文件上传系统。可以方便的在javaweb或其他应用中整合。已经在github开源。该项目是使用java语言编写的一款应用,我命名为mydfsServer,使用的java类库有socket、DataOutputStream、DataInputStream,线程,线程池,该项目已经用在一些项目中,并且很稳定。

github项目地址:https://github.com/believeus/MyDfsServer.git。

第一步:下载安装git工具。

第二步:使用命令 git clone https://github.com/believeus/MyDfsServer.git 就可以把源码下载到本地。(不会使用git需要补充一下基础)。

第三步:整合到项目中。

方式一:整合spring在web环境中
第一步: 在spring配置文件中配置,该服务会随着tomcat加载web应用启动而启动,随着tomcat的关闭而关闭
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
     http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
    <bean id="mydfsStorageServer" class="mydfs.storage.server.MydfsStorageServer"
        lazy-init="false" init-method="startServer"
        destroy-method="stopServer">
        <property name="host" value="127.0.0.1"/>
        <property name="port" value="9999"/>
        <property name="workers" value="10"/>
        <property name="basepath" value="E:/data/mydfs/store"/>
    </bean>
    <bean id="mydfsTrackerServer" class="mydfs.storage.server.MydfsTrackerServer" scope="prototype">
        <property name="host" value="127.0.0.1"/>
        <property name="port" value="9999"/>
    </bean>
</beans>
 
第二步:在web.xml中配置
    <!-- Begin Author:wuqiwei:Data:2014-06-05 AddReason:内嵌式小型分布式文件系统集成 -->
     <servlet>
        <servlet-name>storageClient</servlet-name>
        <servlet-class>mydfs.storage.server.MydfsServerServlet</servlet-class>
        <!--127.0.0.1:9999 分别是指向dfsServer服务的ip和端口  -->
        <init-param>
            <param-name>mydfsServerHost:Port</param-name>
            <param-value>127.0.0.1:9999</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>storageClient</servlet-name>
        <url-pattern>/group/M00/*</url-pattern>
    </servlet-mapping>
    <!-- End Author:wuqiwei:Data:2014-06-05 AddReason:内嵌式小型分布式文件系统集成 -->

第三步:编写java代码
  // 第一个参数:inputStream 上传的文件流  第二个参数:extention:文件的后缀名
  String storepath= mydfsTrackerServer.upload(inputStream, extention);

方式二:作为单独服务启动
  第一步: ant jar 执行之后会生成一个可执行的mydfsServer.jar文件
  第二步:java -jar mydfsServer.jar
       mydfsServer.jar 文件中有mydfs.properties文件,里面有ip和端口相关配置可以进行配置
                 默认端口9999 host默认127.0.0.1 线程数worker默认是5 基路径basepath默认:E:/data/mydfs/store/
  第三步:编写客户端代码将mydfsServer.jar放入客户端的的环境变量中
    MydfsTrackerServer client=new MydfsTrackerServer("127.0.0.1", 9999);
 
 
方式三:硬编码
如果不是在spring的web的环境中,在代码中使用方式
 0.启动服务
           第一个参数:启动的端口号  第二个参数:图片存放地址  第三个参数:工作线程数  第四个参数:监听ip地址
    MydfsStorageServer storageServer=new MydfsStorageServer(9999,"D:/data/mydfs/store",4,"127.0.0.1");
    storageServer.startServer();
 1.上传图片,获取上传图片之后的路径
    MydfsTrackerServer client=new MydfsTrackerServer("localhost", 9999);
    InputStream inputStream = new FileInputStream("D:/20130412062742872.jpg");
    String storepath = client.upload(inputStream,"jpg");
    System.out.println(storepath);
 2.获取上传的图片数据
    MydfsTrackerServer client=new MydfsTrackerServer("127.0.0.1", 9999);
    String url="http://www.jobs.com/group/M00/EF/2C/3696-CCD2-43E7-9854-6B51F6AA2315.jpg?w=100&h=100";
    InputStream inputStream=client.receiveData(url);
 3.删除上传的图片数据
   MydfsTrackerServer client=new MydfsTrackerServer("127.0.0.1", 9999);
   String url="http://www.jobs.com/group/M00/78/79/53D9-34E2-4110-BDBA-8BF808E2C4BD.swf";
   boolean success = client.removeData(url);
   System.out.println("删除情况:"+success);

时间: 2024-10-28 20:55:04

JAVA分布式文件管理系统-mydfsServer的相关文章

手把手教你用 FastDFS 构建分布式文件管理系统

说起分布式文件管理系统,大家可能很容易想到 HDFS.GFS 等系统,前者是 Hadoop 的一部分,后者则是 Google 提供的分布式文件管理系统.除了这些之外,国内淘宝和腾讯也有自己的分布式文件管理系统,都叫 TFS(Taobao File System 和 Tencent File System). 相对于上面提到的这些分布式文件管理系统而言,FastDFS 可能离我们 Java 工程师更近一些,因为文件上传这个功能太常见了,而想要搭建独立的分布式文件管理系统,FastDFS+Nginx

分布式文件管理系统

数据量越来越多,在一个操作系统管辖的范围存在不了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来 管理多台机器上的文件,这就是分布式文件管理系统. 是一种允许文件通过网络在多台主机上分享的文件系统,可让多台机器上的多用户分享文件和存储空间. 通透性,它实际上是通过网络来访问文件的动作,由程序与用户看来,就像是访问本地的磁盘一般. 容错,即使系统中有某些节点脱机,整体来说系统仍然可以持续运作而不会有数据损失. 分布式文件管理系统很多,hdfs只是其中一种.见h

ICE分布式文件管理系统——初识ICE(其一)

中间件介绍 中间件(英语:Middleware)是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,在现代信息技术应用框架如Web服务.面向服务的体系结构等中应用比较广泛.同时也为当今的大型分布式应用搭起了一个标准的平台,把大型企业分散的系统和技术组合在一起,实现大型企业应用软件系统的集成. 简单说中间件就是通过屏蔽各种复杂的技术细节使技术问题简单化,具体来说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,

ICE分布式文件管理系统——ICE环境搭建(其二)

上一博文,我们讲述了ICE这个中间件的基本认识. 接下来我们讲述开发环境搭建. 其过程主要分为三步: 安装GCC-4.4.6.安装ICE-3.4.2.安装QT-4.7.3. (本文是基于LINUX下的ICE-3.4.2的安装,如果已安装了GCC(版本高于GCC-4.4.6亦可),请直接安装ICE) 一.安装GCC: (gcc各版本浏览地址:http://ftp.gnu.org/gnu/gcc/) 一般来说基于linux的操作系统都是默认安装了GCC的.假如说你的电脑没有的话 请百度一哈,可以解决

分布式文件管理系统_FastDFS集群

简单介绍 1,client storage tracker的关系 先用一幅图来解释用户如何访问一个通过DFS管理的文件 一般来说,一台服务器只有一个storage server,多个storage server可以组成一个group,同一group间storage server的数据自动同步(备份与恢复). 不同group数据互相隔离,一个tracker可以管理多个group,也可以多对多. client用于管理 tracker server 和storage server. FAST_DFS安

SSM框架基于JAVA的网络文件管理系统

今日思考,完成一个网络文件管理系统项目,需要实现哪些功能?此类项目常见描述如下:现代化的办公系统是帮助人们提高办公效率.规范各项操作的有效工具.基于学校内部局域网的办公环境,设计了B/s结构的网络文件管理系统,提供了常规的文件上传.下载.浏览.在线编辑等功能以及相应的后台管理服务.该系统为学校各部门和各项目组之间的文件往来提供了科学可靠的途径,提高了办事效率.由于使用了B/S结构,该系统在现今成熟的Web环境下可以得到很好的应用.同时,系统简单清晰的界面设计和功能导航使得系统的使用操作方便快捷:

企业大型互联网分布式架构{Java分布式架构 dubbo + springmvc + mybatis

平台简介 ??????? Jeesz是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. ????? ? Jeesz本身集成Dubbo服务管控.Zookeeper注册中心.Redis分布式缓存技术.FastDFS分布式文件系统.ActiveMQ异步消息中间件.Nginx负载均衡等分布式技术 ??????? 使用Maven做项目管理,项目模块化,提高项目的易开发性.扩展性 ??????? 以Spring Framework为核心容器,Spring

Java 分布式处理技术

1.1 RMI 的基本概念 1.1.1 什么是RMI RMI(Remote Method Invocation) 远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样. 1.1.2 RMI 的用途 1. 分布式体系结构 我们为什么要使用分布式计算呢? Ø         当我们想与多个用户或客户机共享一个中央资源(如一个数据库)时,就会使用分布式计算

Java分布式处理技术(RMI,JDNI)

http://hedaoyuan.blog.51cto.com/4639772/813702 1.1 RMI的基本概念 1.1.1 什么是RMI RMI(Remote Method Invocation)远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样. 1.1.2 RMI的用途 1. 分布式体系结构 我们为什么要使用分布式计算呢? Ø 当我们想