FastDFS+Nginx搭建分布式文件系统

简介: 一,关于FastDFS     FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。


一,关于FastDFS


     FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。



     如上图,其中tracker并不保存实际的图片,而是起到一个协调的作用,具体的图片存储在storage里面。但我们页面上通过url读取图片的时候,我们读取的还是storager的地址,但是storager本身是不带http服务器功能的,所以,我们还需要使用nginx来作为我们的http服务器,我们再client才能通过url读到图片。



  上传下载的流程:

           

             上传:


           

    

     

       客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。



  • 组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
  • 虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
  • 数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。

文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。



           下载:


          



二,FastDFS+Nginx搭建


            为了完成正常的上传下载文件的功能,我们需要搭建tracker,storage,nginx。其中nginx跟FastDFS的交互通过nginx的插件fastdfs-nginx-module_v1.16.tar.gz 来完成。


            所需压缩包如下:


             


            此处省略一万个字。。。再见


三,代码测试

            

                

	@Test
	public void testUpLoad() throws FileNotFoundException, IOException, MyException{
		//1,把FastDFS提供的jar添加到工程中
		//2,初始化全局配置,加载一个配置文件
		ClientGlobal.init("G:\\taotaoShop\\taotao-manager\\taotao-manager-web\\src\\main\\resources\\properties\\client.conf");
		//3,创建一个TrackerClient对象
		TrackerClient trackerClient=new TrackerClient();
		//4,创建一个TrackerServer对象
		TrackerServer trackerServer=trackerClient.getConnection();
		//5,声明一个StorageServer对象,null
		StorageServer storageServer=null;
		//6,获得StorageClient对象
		StorageClient storageClient=new StorageClient(trackerServer,storageServer);
		//7,直接调用StorageClient对象方法上传文件即可
		String[] strings=storageClient.upload_file("‪‪‪H:\\Sherl.jpg", "jpg", null);
		for(String s : strings){
			System.out.println(s);
		}
	}






目录
相关文章
|
4月前
|
存储 应用服务中间件 数据库
C++文件服务器项目—Nginx+FastDFS插件—5
C++文件服务器项目—Nginx+FastDFS插件—5
45 0
|
1月前
|
负载均衡 架构师 应用服务中间件
FastDFS+Nginx搭建一个本地文件服务器
FastDFS+Nginx搭建一个本地文件服务器
42 0
|
4月前
|
负载均衡 应用服务中间件 nginx
Nginx在分布式环境中的故障转移机制
Nginx在分布式环境中的故障转移机制
50 0
|
5月前
|
NoSQL Java 应用服务中间件
2024年面试复盘大全500道:Redis+ZK+Nginx+数据库+分布式+微服务
今天分享给大家的都是目前主流企业使用最高频的面试题库,也都是 Java 版本升级之后,重新整理归纳的最新答案,会让面试者少走很多不必要的弯路。同时每个专题都做到了详尽的面试解析文档,以确保每个阶段的读者都能看得懂,同时这部分面试文档也是可以免费的提供给有需要的同学们学习的
|
5月前
|
安全 Java 应用服务中间件
全网最新架构实战文档:高并发+分布式+微服务+SpringBoot+Nginx
关于一线互联网大厂网站的一些特点:用户多,分布广泛、大流量,高并发、海量数据,服务高可用、安全环境恶劣,易受网络攻击、功能多,变更快,频繁发布、从小到大,渐进发展、以用户为中心。
|
6月前
|
C++
BQ云盘项目一 -- nginx+fastcgi+fastdfs+mysql+redis+c/c++
BQ云盘项目一 -- nginx+fastcgi+fastdfs+mysql+redis+c/c++
|
7月前
|
算法 NoSQL Java
分布式接口幂等性、分布式限流(Guava 、nginx和lua限流)
接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条,这就没有保证接口的幂等性。
|
7月前
|
负载均衡 应用服务中间件 nginx
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
71分布式电商项目 - nginx高可用以及lvs+nginx负载均衡(资料)
43 0
|
7月前
|
移动开发 网络协议 应用服务中间件
70分布式电商项目 - nginx编译参数详解
70分布式电商项目 - nginx编译参数详解
29 0
|
7月前
|
负载均衡 应用服务中间件 数据处理
69分布式电商项目 - nginx实现负载均衡
69分布式电商项目 - nginx实现负载均衡
84 0