一、什么是FastDFS

是一个开源的轻量级分布式文件系统,对文件进行管理。

功能:
文件存储,文件访问,文件上传下载。

单次存储大小:
4k–500M

好处:
解决了大量存储和负载均衡问题。

用处:
适合文件类的在线服务,比如视频网站腾讯视频,相册看图网站图虫。

二、服务端两个角色:

跟踪器(tracker):
做调度工作,起到负载均衡的作用。管理集群,也可以实现集群。每个tracker阶段地位平等,负责收集storage的状态。

存储节点(storage):
实际保存文件storage分为多个组,每个组保存的文件时不同的。
每个组有多个组成员,组成员保存的内容是一样的,组成员地位平等,没有主从概念。

三、执行流程



1.初始化连接配置
2.创建一个Tracker客户端,目的是为了连接Tracker,获取TrackerServer对象
3.通过TrackerServer创建一个Storage客户端对象,该对象用来操作Storage
4.通过Storage实现上传下载
5.获取文件上传下载信息

测试代码:

1、pom配置(引入fastdfs配置即可):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>Fast111</artifactId><groupId>cn.cfg</groupId><version>1.0-SNAPSHOT</version><relativePath>fastDFSDemo/Fast111/pom.xml</relativePath></parent><modelVersion>4.0.0</modelVersion><artifactId>Fast2</artifactId><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>org.csource.fastdfs</groupId><artifactId>fastdfs</artifactId><version>1.2</version></dependency></dependencies></project>

2、Resources包下的配置(client.conf):
引入虚拟机端口号,可直接复制,更改端口号即可

# connect timeout in seconds
# default value is 30s
connect_timeout=30# network timeout in seconds
# default value is 30s
network_timeout=60# the base path to store log files
base_path=/home/fastdfs# 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.200.128:22122#standard log level as syslog, case insensitive, value list:
### emerg for emergency
### alert
### crit for critical
### error
### warn for warning
### notice
### info
### debug
log_level=info# if use connection pool
# default value is false
# since V4.05
use_connection_pool = false# connections whose the idle time exceeds this time will be closed
# unit: second
# default value is 3600
# since V4.05
connection_pool_max_idle_time = 3600# if load FastDFS parameters from tracker server
# since V4.05
# default value is false
load_fdfs_parameters_from_tracker=false# if use storage ID instead of IP address
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# default value is false
# since V4.05
use_storage_id = false# specify storage ids filename, can use relative or absolute path
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# since V4.05
storage_ids_filename = storage_ids.conf#HTTP settings
http.tracker_server_port=80#use "#include" directive to include HTTP other settiongs
##include http.conf

3、测试代码块(FastDFSTest.java):

import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer;public class TestFastDFS{public static String[] upload(String conFilename, String fileName) throws Exception{// 1.初始化连接配置ClientGlobal.init(conFilename);// 2.创建跟踪器客户端 tracker客户端TrackerClient trackerClient = new TrackerClient();//3. 通过tracker客户端连接  获得trackerServerTrackerServer trackerServer = trackerClient.getConnection();//4. 通过跟踪器客户端获取存储节点对象StorageClient storageClient = new StorageClient(trackerServer, null);//5.执行上传String[] strings = storageClient.upload_appender_file(fileName, null, null);//获取返回值return strings;}public static void main(String[] args) throws Exception {String tracker ="E:\\9.19fastDFSDemo\\Fast111\\Fast2\\src\\main\\resources\\fdfs_client.conf";//设置上传图片的本地路径String filerName="D:\\test\\ad53a60.jpg";String[] uploads = upload(tracker, filerName);for (String upload : uploads) {//打印返回值System.out.println(upload);}}
}

控制台打印结果:

浏览器测试(输入端口号+组名+文件名):

FastDFS实现原理及流程相关推荐

  1. fastdfs工作原理

    讲完了云盘项目的设置,现在来讲一讲云盘中核心fastdfs的框架. 在介绍工作原理之前,先介绍fastdfs的传输协议. 服务之间的通信协议,遵循 header + body的设计原则. header ...

  2. ARKit从入门到精通-ARKit工作原理及流程介绍

    2017-06-15 坤小 Cocoa开发者社区 转载请注明出处:http://www.jianshu.com/p/0492c7122d2f 1.1-写在前面的话 1.2-ARKit与SceneKit ...

  3. 【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★

    文章目录 一.单纯形法原理 二.单纯形法流程 三.单纯形法案例一 1.线性规划示例 2.转化标准形式 3.查找初始基可行解 4.初始基可行解的最优解判定 5.第一次迭代 : 入基与出基变量选择 6.第 ...

  4. div置于页面底部_浏览器渲染页面的原理及流程

    浏览器渲染页面的原理及流程 浏览器将域名通过网络通信从服务器拿到html文件后,如何渲染页面呢? 1.根据html文件构建DOM树和CSSOM树.构建DOM树期间,如果遇到JS,阻塞DOM树及CSSO ...

  5. ARKit从入门到精通(2)-ARKit工作原理及流程介绍

    转载请注明出处:ARKit从入门到精通(2)-ARKit工作原理及流程介绍 1.1-写在前面的话 1.2-ARKit与SceneKit的关系 1.3-ARKit工作原理 1.3.1-ARSCNView ...

  6. HTTPS原理与流程

    Table of Contents HTTP HTTPS 实现原理 工作流程 对称加密与非对称加密 CA 颁发机构 总结 HTTP HTTP(Hypertext Transfer Protocol)超 ...

  7. springmvc工作流程_springMVC工作原理及流程详细讲解

    简述 本文主要介绍springMVC工作原理. 工作原理 客户端发送HTTP请求,DispatcherServlet控制器拦截到请求,调用HandlerMapping 解析请求对应的Handler,H ...

  8. 浏览器渲染页面的原理及流程---------重绘与重排(回流)--优化

    浏览器渲染页面的原理及流程 浏览器将域名通过网络通信从服务器拿到html文件后,如何渲染页面呢? 1.根据html文件构建DOM树和CSSOM树.构建DOM树期间,如果遇到JS,阻塞DOM树及CSSO ...

  9. Spark SQL架构工作原理及流程解析

    Spark SQL架构工作原理及流程解析,spark sql从shark发展而来,Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析.逻辑执行计划翻译.执行计划优化等逻辑. Sp ...

  10. 统一用户认证和单点登录和授权的原理与流程

    统一用户认证和单点登录和授权的原理与流程 1 前言 2 介绍 2.1 统一用户认证 2.2 单点登录 2.3 授权 3 原理 3.1 统一用户认证原理 3.2 单点登录原理 3.3 OAuth授权原理 ...

最新文章

  1. 希尔排序算法原理与实现
  2. 在Eclipse中集成Ant编程之配置篇
  3. 编写程序计算交错序列_外文翻译 | FlyMC:高度可扩展地测试分布式系统中的复杂交错...
  4. 【NLP】人大团队研究:面向文本生成,预训练模型进展梳理
  5. Java Object类中的finalize()方法
  6. Linux系统自启动脚本
  7. docker保存日志文件到本地
  8. MongoDB数据建模介绍
  9. 自上而下渐显图片的CSS3实现
  10. 弱鸡儿长乐爆零旅Day5
  11. 前端使用工具sublime text 3下载
  12. MVVM模式下 触发器多条件判断
  13. 尚学堂•百战程序员之技术人生
  14. 苹果手机能下载java吗_苹果山寨手机java软件怎么下载?
  15. 【对讲机的那点事】玩对讲机你知道中继台的工作原理吗?
  16. 显卡告别3D游戏迈向通用计算时代
  17. OpenCV 陷波滤波器消除周期性噪音 C++
  18. 区块链+慈善究竟帮助过谁?
  19. 如何实现Odoo兼容Citus实现更多数据储存
  20. 【厚积薄发系列】读书笔记3—《麦肯锡-问题分析与解决技巧》小记

热门文章

  1. 网易数帆、云音乐、Intel、有赞最新大数据实践(PPT下载+视频回放)
  2. Manjaro下Opencv4+CMake安装和编译指南(完整版)
  3. 阿里矢量图标(字体图标) 、 阴影
  4. 计算机电路节点,电路分析基础之节点分压原理
  5. Java ftp 上传文件名乱码
  6. 抽奖随机滚动_年会抽奖该怎么玩?
  7. LinuxQt打包发布
  8. EMOS嵌入式仿真平台-编程环境v101
  9. 小米手机助手 云服务器错误,小米手机助手连接手机失败的处理操作过程
  10. 【web前端特效源码】使用HTML5+CSS3+JavaScript制作3D 立体图片动画效果~~适合初学者~超简单~ |前端开发|IT软件