博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一、分布式文件系统FastDFS原理及入门
阅读量:5329 次
发布时间:2019-06-14

本文共 2155 字,大约阅读时间需要 7 分钟。

1、简介:FastDFS是用C语言编写的一款开源的分布式文件系统,FastDSF充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等特点,使用FastDFS可以很容易的搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

2、原理:FastDFS系统结构如下图所示:

 

FastDFS分为Tracker、Storage,其中Storage负责存储文件,Tracker负责存储文件所在地址,主要作用是负载均衡和资源调度。

Tracker、Storage都可以实现集群部署,Tracker的每个节点地位平等,而Storage可以分为多个组,每个组之间保存的文件是不同的,组内部分为多个成员,每个成员保存的内容是一样,组成员地位一致,没有主从概念。

使用FastDFS存储文件优点:可以应对互联网的海量文件存储,一旦文件较多,可以随时横向扩展,且集群的实现也使系统不存在单点故障问题,用户不会因为服务器宕机而无法访问文件资源。

3.工作流程

文件上传:Client会先向Tracker询问存储地址,Tracker查询到存储地址后返回给Client,Client拿着地址直接和对应的Storage通讯,将文件上传至改Storage。

 

文件下载:同样,Client会向Tracker询问地址,并带上要查询的文件名和组名,Tracker查询后会将地址返回给Client,Client拿着地址和指定Storage通讯并下载文件。

 

4.安装部署

FastDFS安装过程很复杂,需要配置许多参数,我会另外写一篇专门配置FastDFS的文档。

5.测试Demo

1.创建Maven工程fastdfsdemo

安装Jar包到Maven本地仓库,使用如下命令:

mvn install:install-file -DgroupId=org.csource.fastdfs -DartifactId=fastdfs  -Dversion=1.2 -Dpackaging=jar -Dfile=d:\setup\fastdfs_client_v1.20.jar

在pom.xml中引入:

<dependency>

    <groupId>org.csource.fastdfs</groupId>

    <artifactId>fastdfs</artifactId>

    <version>1.2</version>

</dependency>

添加配置文件:fdfs_client.conf,修改服务器地址:

# tracker_server can ocur more than once, and tracker_server format is

# "host:port", host can be hostname or ip address
tracker_server=192.168.1.106:22122

创建Java测试类:

1      // 1、加载配置文件,配置文件中的内容就是 tracker 服务的地址。 2         ClientGlobal.init("D:/maven/fastdfsdemo/src/fdfs_client.conf"); 3         // 2、创建一个 TrackerClient 对象。 4         TrackerClient trackerClient = new TrackerClient(); 5         // 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。 6         TrackerServer trackerServer = trackerClient.getConnection(); 7         // 4、创建一个 StorageServer 的引用,值为 null 8         StorageServer storageServer = null; 9         // 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用10         StorageClient storageClient = new StorageClient(trackerServer, storageServer);11         // 6、使用 StorageClient 对象上传图片。12         //扩展名不带"."13         String[] strings = storageClient.upload_file("D:/pic/demo1.jpg", "jpg",null);14         // 7、返回数组。包含组名和图片的路径。15         for (String string : strings) {16             System.out.println(string);17         }

 

转载于:https://www.cnblogs.com/microsoftjava/p/10656154.html

你可能感兴趣的文章
黑马day16 jquery&amp;属性过滤选择器
查看>>
PHP再学习5——RESTFul框架 远程控制LED
查看>>
FL2440-学习记录(三)
查看>>
Amobea读写分离
查看>>
关于密码
查看>>
oracle创建表空间
查看>>
Keycloak服务器安装和配置
查看>>
C#委托之个人理解(转)
查看>>
retrofit2 上传图片
查看>>
Linux Shell流程例子
查看>>
jQuery的三种$()
查看>>
2017.6.4 入门组 NO.4——猜数
查看>>
Eclipse 下载安装
查看>>
WebSocket 时时双向数据,前后端(聊天室)
查看>>
关于cocoa 运行时runtime
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
asp.net 写入excel时,不能更新。数据库或对象为只读。
查看>>
题1简化版
查看>>
linux清空日志文件内容 (转)
查看>>
jsp中对jstl一些标签的引用方式
查看>>