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


一,关于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);
		}
	}






你可能感兴趣的:(集群技术,Java,EE,企业级框架,J2EE,企业级框架)