FastDFS是一款开源的,分布式文件系统。其中分布式用到了三点。client客户端 tracker服务,storage组服务
看下三者的关系结构
1、tracker群重点 tracker相互独立,不进行通信
2、storage群的各个storage组相互独立,不进行通信。但是每个storage组内的storage是同步的。也就是说storage组内的storage保存相同的数据。
3、每个storage会启动单独的线程主动向tracker的每个tracker报告其状态信息,包括磁盘使用情况,文件同步情况以及文件上传下载次数统计信息。
文件上传
1、client通过tracker serve 将文件上传到storage server
2、tracker server 向client返回一台可用的storage server的IP地址和端口号。也就是说client并不知道storage的地址和端口号。
3、client直接通过tracker server返回的IP地址和端口与其中的一台Storage server家里连接并进行文件上传。
4、上传文成,storage server返回client一个文件ID,文件上传结束。
文件下载流程
client通过tracker server 下载指定的storage组中的某个storage server上的某个文件
tracker server向client返回一台可用的storage server的IP地址和端口号。
client直接通过tracker server返回的IP地址和端口号与其中一台storage server建立连接并进行文件下载。
java_——fastDFS上传文件
@Test
public void testUpload() throws Exception{
//定义tracker的服务地址
ClientGlobal.init("D:\\eclipse\\taotao-manager\\taotao-manager-web\\src\\main\\resources\\properties\\client.conf");
// 生成 tracker的客户端
TrackerClient trackerClient = new TrackerClient();
// 与tracker server建立连接
TrackerServer trackerServer = trackerClient.getConnection();
// 声明storage server
StorageServer storageServer = null;
// 然后通过tracker server获取storage client
StorageClient storageClient = new StorageClient(trackerServer,storageServer);
//上传文件,然后获取返回的文件ID
String[] strs = storageClient.upload_file("C:\\Users\\WGP\\Pictures\\c7c6138367d50712383944942cff75c0.jpg", "jpg", null);
for(String str:strs){
System.out.println(str);
}
}
client.conf内容
#指向自己虚拟机的ip和port
tracker_server=192.168.41.130:22122