FastDFS 使用及遇到的问题

标签: FastDFS
12人阅读 评论(0) 收藏 举报
分类:

FastDFS 使用及遇到的问题

前言

最近在跟着视频做项目,其中学习到使用 FastDFS 作为图片服务器的文件系统。以下是百度上关于 FastDFS 的介绍:

FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS 是国内大神写的,通过 ta 的注释得知 ta 是 Happy Fish / YuQing。

在学习的过程之中,我也遇到了一些问题,再此记录以下。


前期准备

一台配置好 FastDFS 的 Linux 虚拟机,这里我并没有自己配置,而是使用别人配置好的虚拟机,据说配置起来还比较麻烦,而且这些一般是运维做的事情。待以后有空在跟着教程自己配置一遍。

FastDFS 客户端的 jar 包,这里推荐从作者的 Github 上下载 maven 项目安装到本地,目前最新版是 1.27-SNAPSHOT 。https://github.com/happyfish100/fastdfs-client-java

顺带一提,在 README.md 已介绍了使用方法,所以使用起来还是相当方便。


FastDFS 使用测试

在 maven 项目 pom.xml 中添加依赖

<dependency>
    <groupId>org.csource</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.27-SNAPSHOT</version>
</dependency>

创建配置文件

在 resources 目录线下创建 conf 文件夹,在 conf 文件夹下创建 fastdfs_client.conf 文件,例如的内容为(这里仅仅是以我的学习为例,具体请参照 FastDFS 作者的说明文档):

tracker_server=192.168.229.133:22122

因为除了 tracker_server,其它配置项都是可选的。这里我们仅配置 tracker_server

创建一个测试类,代码如下

import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;
import org.junit.Test;

public class FastDFSTest {

    @Test
    public void testUpload() throws Exception {
        // 使用全局对象加载配置文件
        ClientGlobal.init("conf/fastdfs_client.conf");
        // 创建 TrackerClient 对象,直接 new 就可以了
        TrackerClient trackerClient = new TrackerClient();
        // 通过 TrackerClient 获得一个 TrackerServer 对象
        TrackerServer trackerServer = trackerClient.getConnection();
        // 创建一个 StorageServer 的引用,可以是 null
        StorageServer storageServer = null;
        // 创建一个 StorageClient,参数需要 TrackerServer,StorageServer。相当于拿到服务器的 IP 和端口号
        StorageClient storageClient = new StorageClient(trackerServer, storageServer);
        // 使用 StorageClient 上传文件,返回保存信息。upload_file 方法中的三个参数,分别是文件路径,文件后缀名以及元数据
        String[] strings = storageClient.upload_file("D:\\test\\123.jpg", "jpg", null);
        // 打印结果
        for (String string : strings) {
            System.out.println(string);
        }
    }
}

输出结果

如果一切顺利的话,输入的结果应该是类似于以下内容:

group1
M00/00/00/wKjlhVrUqe6AfSHDAAHq2__LLfA498.jpg

此时该上传好的访问路径为:192.168.229.133/group1/M00/00/00/wKjlhVrUqe6AfSHDAAHq2__LLfA498.jpg


学习过程之中遇到的问题

问题一:

java.io.FileNotFoundException: ‪D:\test\123.jpg (文件名、目录名或卷标语法不正确。)

原因可能是:在 win10 下直接复制文件路径(据说 win8 下也是,win7 不会),会有隐藏字符,所以会报这个错误。

解决方法:手动敲路径

问题二:

org.csource.common.MyException: getStoreStorage fail, errno code: 2
    at org.csource.fastdfs.StorageClient.newWritableStorageConnection(StorageClient.java:1629)
    at org.csource.fastdfs.StorageClient.do_upload_file(StorageClient.java:639)
    at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:120)
    at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:91)
    at org.csource.fastdfs.StorageClient.upload_file(StorageClient.java:73)

原因:图片服务器中的相关服务未启动或者是配置有问题(参考链接:fastdfs的一些常见错误 getStoreStorage fail, errno code: 2

解决方法:因为我使用的是别人已经配置好的虚拟机,在开机时已经自动启动相关的服务,所以考虑的是配置有问题。通过命令:vi /etc/fdfs/storage.conf,然后修改里面的 tracker_server 地址为上面 fastdfs_client.conf 文件中的地址:tracker_server=192.168.229.133:22122,重启服务,问题解决。


后记

看视频学习时,总觉得自己会了,而自己动手时,就会知道,其实不了解的东西还有很多。不过也在出现问题后,一边解决一边进步。

在实践中成长!

HochenChong

时间:2018-4-16

查看评论

Fastdfs实战讲解

FastDFS是阿里公司推出的一款免费的文件管理系统,利用FastDFS可以有效的实现二进制资源文件的保存。同时利用此组件也可以轻松实现数据存储的扩充以及冗余备份机制。官方QQ群:612148723。
  • 2017年01月01日 20:30

ios客户端访问fastdfs linux服务器遇到的问题

一、基本需求:主要是实现ios客户端可以访问linux服务器上面配置的fastdfs服务器,能够实现上传和下载文件二、基本信息:        最新版本代码地址:https://github.com/...
  • xiaojunfucking
  • xiaojunfucking
  • 2018-04-03 09:26:11
  • 28

使用FastDFS遇到问题记录(转)

源地址:http://coffeelover.iteye.com/blog/726238 Q1.通过命令行上传文件时出现错误:tracker_query_storage_fail,error no:...
  • vba_2001
  • vba_2001
  • 2011-12-20 17:59:46
  • 1945

FastDFS的一些总结

在之前的工作当中,使用到了FastDFS.最早我也不知道这是什么玩意,只是说老大说使用到它.后来它被搭建起来了,并且在项目中是作为图片服务器使用的.光顾着怎么去用,也没有时间好好做个总结,毕竟小公司就...
  • unscdf117
  • unscdf117
  • 2018-01-13 17:24:54
  • 1363

FastDFS特性及问题思考

FastDFS是国人开发的一款分布式文件系统,目前社区比较活跃。系统中存在三种节点:Client、Tracker、Storage,在底层存储上通过逻辑的分组概念,使得通过在同组内配置多个Storage...
  • sinat_27186785
  • sinat_27186785
  • 2016-07-24 01:30:39
  • 3931

实际工作中:----FastDFS在项目中的应用

分析上传步骤:  1) 指定图片绝对地址  2) 指定图片服务器地址;使用 Client.conf 配置文件  3) 加载图片服务器,连接图片服务器  4) 创建图片服务器 tracker 客...
  • lihang_1994
  • lihang_1994
  • 2017-05-21 16:03:50
  • 1161

fastdfs使用实战(Java实例篇)

fastdfs使用实战(Java实例篇) 标签:fastdfsjava| 发表时间:2014-09-29 10:11 | 作者:love398146779 分享到: 出处:http...
  • fmm_sunshine
  • fmm_sunshine
  • 2017-08-22 16:43:36
  • 730

fastDFS笔记

  • 2017年09月18日 10:34
  • 426KB
  • 下载

FastDFS使用文档

  • 2017年11月23日 17:37
  • 626KB
  • 下载

fastdfs部署

  • 2012年10月15日 13:21
  • 725KB
  • 下载
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 317
    排名: 25万+