1、先介绍下什么是FastDFS
FastDFS 是用 c 语言编写的一款开源的分布式文件系统。包括 Tracker server 和 Storage server,FastDFS 为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。服务器
Tracker server 做用是负载均衡和调度,经过 Tracker server 在文件上传时能够根据一些策略找到 Storage server 提供文件上传服务。能够将 tracker 称为追踪服务器或调度服务器。并发
Storage server 做用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,Storageserver 没有实现本身的文件系统而是利用操做系统的文件系统来管理文件负载均衡
优势:分布式
创建各类集群,防止高并发,适应分布式的存储要求高并发
存储端理论上能够无限扩容post
存储端不会丢失数据,容灾性强。性能
缺点:this
spa
客户端上传文件后存储服务器将文件ID
组名:文件上传后所在的 storage 组名称,在文件上传成功后由 storage 服务器返回,须要客户端自行保存。
虚拟磁盘路径:storage 配置的虚拟路径,与磁盘选项 store_path*对应。若是配置了store_path0 则是 M00,若是配置了 store_path1 则是 M01,以此类推。
数据两级目录:storage 服务器在每一个虚拟磁盘路径下建立的两级目录,用于存储数据文件。
文件名:与文件上传时不一样。是由存储服务器根据特定信息生成,文件名包含:源存储
2.1 FastDFS的一个小demo
public class demo1 { public static void main(String[] args) throws IOException, MyException { // 一、加载配置文件,配置文件中的内容就是 tracker 服务的地址。 ClientGlobal.init("fdfs_client.conf"); // 二、建立一个 TrackerClient 对象。直接 new 一个。 TrackerClient trackerClient = new TrackerClient(); // 三、使用 TrackerClient 对象建立链接,得到一个 TrackerServer 对象 TrackerServer trackerServer = trackerClient.getConnection(); // 四、建立一个 StorageServer 的引用,值为 null StorageServer storageServer = null; // 五、建立一个 StorageClient 对象,须要两个参数 TrackerServer 对象、StorageServer 的引用 StorageClient storageClient = new StorageClient(trackerServer, storageServer); // 六、使用 StorageClient 对象上传图片,参数1为文件,参数2为文件后缀名。 //扩展名不带“.” String[] strings = storageClient.upload_file("C:\\Users\\Administrator\\Desktop\\2.jpg", "jpg",null); // 七、返回数组。包含组名和图片的路径。 for (String string : strings) { System.out.println(string); } } }
打印的String:group1/M00/00/01/wKjIgF3SRXWAHitEAAB1q5bIEwY138.jpg
所须要的fdfs_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
# 分布式文件服务器的ip,须要使用更改此处便可
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、页面展现效果
此时说明咱们上传的照片已经上传到分布式文件服务器上,且可以访问到咱们上传的照片
注:
分布式文件服务器自行配置,步骤过于麻烦。