JAVA通过FDFS上传以及加载文件原理简析

本文是初学者对JAVA通过FDFS在Linux环境下上传和加载文件的总结。介绍了安装tracker, storage, client, nginx服务的流程,阐述了FDFS的工作原理:客户端通过nginx与tracker交互,tracker调度storage存储文件并返回访问路径。为确保资源可动态访问,需要将文件路径与服务器IP拼接。FDFS有助于在高访问量下优化资源访问,减轻服务器压力。" 109821764,10124265,Centos7中部署Tomcat及负载均衡配置教程,"['Linux系统', '服务器管理', 'Java', 'Web服务器', '网络配置']
摘要由CSDN通过智能技术生成

初学者的总结:

仅是简单案例

如果我们想在java后台中将图片上传到linux下的FDFS分布式系统中,首先通过VMware虚拟机安装linux系统。进入系统后,需要安装以下服务:tracker,storage,client,nginx这几个服务

首先说说他们的基本工作原理,客户端发送请求,将文件通过fdfs插件上传,因为tracker不支持http协议,客户端不能通过HTTP直接访问,需要通过nginx解析处理。当上传后nginx会处理 请求,并将携带的文件数据信息转接到tracker,tracker会进行轮询,找到合理的存储位置,也就是storage仓库,它会被存储在storage的文件组中,存储后storage返回一个完整的访问路径,由IP地址和文件系统路径地址组成,通过nginx处理后客户端就可以接受到访问文件的fdfs路径,但是这个路径不包含IP地址,因为服务器的ip有可能发生改变,这样就会导致资源无法访问。所以我们这样下次加载时直接通过这个路径和服务器ip进行动态拼接,才能确保随时访问资源。

在fdfs中,storage服务必须要在tracker服务启动的前提下才有意义,因为storage启动后会通知tracker自己已经开始工作,tracker在轮询时就会找到这个仓库,也就是在tracker中注册。客户端client服务可以将服务器中的文件生成一个访问地址,也是必不可少的。最后就是要启动ngin服务,有了它就可以通过http请求访问到资源库中的文件了。他们缺一不可。

在后台中需要下载fdfs插件,有了这个插件,它就能将文件地址返回给我们,就能轻松访问上传资源了。

要使用Java操作FastDFS,你需要引入FastDFSJava客户端库。可以使用Maven或者直接下载jar包的方式导入库文件。在pom.xml文件中添加以下依赖项: ``` <dependency> <groupId>net.oschina.zcx7878</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27.0.0</version> </dependency> ``` 然后,你需要编写一个Java工具类来操作FastDFS。可以参考以下代码: ``` import java.io.IOException; import org.csource.common.MyException; import org.csource.fastdfs.ClientGlobal; import org.csource.fastdfs.FileInfo; import org.csource.fastdfs.StorageClient; import org.csource.fastdfs.StorageServer; import org.csource.fastdfs.TrackerClient; import org.csource.fastdfs.TrackerServer; public class FastDfsUtil { private static TrackerClient trackerClient = null; private static TrackerServer trackerServer = null; private static StorageServer storageServer = null; private static StorageClient storageClient = null; static { try { ClientGlobal.init("fdfs_client.conf"); trackerClient = new TrackerClient(); trackerServer = trackerClient.getConnection(); storageClient = new StorageClient(trackerServer, storageServer); } catch (Exception e) { e.printStackTrace(); System.out.println("FDFS工具初始化失败!"); } } public static FileInfo getFileInfo(String savepath) throws IOException, MyException { String group = ""; // 存储组 String path = ""; // 存储路径 try { int secondIndex = savepath.indexOf("/", 2); // 第二个"/"索引位置 group = savepath.substring(1, secondIndex); // 类似:group1 path = savepath.substring(secondIndex + 1); // 类似:M00/00/00/wKgBaFv9Ad-Abep_AAUtbU7xcws013.png } catch (Exception e) { throw new RuntimeException("传入文件存储路径不正确!格式例如:/group1/M00/00/00/wKgBaFv9Ad-Abep_AAUtbU7xcws013.png"); } FileInfo fileInfo = storageClient.get_file_info(group, path); return fileInfo; } } ``` 在上述代码中,我们使用FastDFSJava客户端库,初始化一个TrackerClient、TrackerServer和StorageClient实例。然后,可以调用getFileInfo方法来获取文件信息,传入文件的存储路径作为参数。该方法会返回一个FileInfo对象,包含了文件的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值