FastDFS的工作原理–应用
emmm,第一次写三部曲哈哈哈哈。
FastDFS的应用:
一、配置客户端
修改 /etc/fdfs/目录下的client.conf 文件;
修改要点:
base_path=/opt/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.43.60:22122 #t换成自己的虚拟机的ip和端口号
http.tracker_server_port=8080 # tracker 服务器的 http端口号,必须和tracker的设置对应起来
二、模拟上传
上传图片测试;
fdfs_upload_file /etc/fdfs/client.conf /home/antonixu/hello/mx2.jpeg
最后一个文件的路径一定要正确,否则就会找不到;
成功后会返回图片存储路径:
图片的命名大概就是根据这个来的:
测试完毕后,直接在使用java和fastdfs实现交互,简单介绍:
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
虽然FastDFS的搭建比较繁琐,但是只要搭建成功,剩下的工作就非常简单,我们只需要知道FastDFS的ip地址和文件名就可以快速的完成上传和下载操作;
Java具有完备的工具访问FastDFS,相关依赖:
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.26.6</version>
</dependency>
我一开始添加的是1.26的版本的,但是在最后运行的时候发现找不到这个ip+端口号,换了高版本的依赖就可以了。
先创建一个模块,也是client,添加上述依赖之后,编写配置文件:
server.port=9108
spring.application.name=fdfs
eureka.instance.instance-id=fdfs
eureka.client.service-url.defaultZone=http://127.0.0.1:9100/eureka/
fdfs.trackerList=192.168.191.129:22122
fdfs.connect-timeout=10000
fdfs.so-timeout=8000
fdfs.pool.max-total=200
fdfs.pool.max-total-per-key=20
fdfs.pool.max-wait-millis=25000
fdfs.thumbImage.height=150
fdfs.thumbImage.width=150
fdfs.trackerList=192.168.191.129:22122这个是虚拟机的ip+端口号;
创建启动类:
@Configuration
@Import(value = FdfsClientConfig.class)
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
public class MyConfig {
}
创建控制层:
@Controller
public class TestFDFS {
@Autowired
private FastFileStorageClient storage;
@RequestMapping("fast1")
@ResponseBody
public String fun1(@RequestParam("upfile") MultipartFile mf)throws IOException{
StorePath fn=storage.uploadFile(mf.getInputStream(),mf.getSize(),
FilenameUtils.getExtension(mf.getOriginalFilename()),
null);
return fn.getFullPath();
}
}
注册中心打开之后,会显示一个连接超时的错误,这个错误是因为需要关闭linux的防火墙:
一开始找设置找了半天,后来发现是从终端上关的,吐血。。。
成功了:
在刚才测试的过程中发现了拒绝访问,,,,于是我又重新打开了虚拟机上面的tracker和storage服务就好了,我也不知道是不是这个原因,但是我记得我设置成了开机启动了啊。。。。