FastDfs深入理解
FastDFS是一个开源的分布式文件系统,他适合管理中小型的文件。
在FastDFS分布式文件系统中,主要有三个角色:Tracker、Storage、Client。
首先,对这三个角色进行一个角色的分析:
Tracker:属于FastDFS的大脑,他会对storage进行实时的管理,也会处理来自Client的请求。
Storage:属于FastDFSD的存储系统,他会对来自Client上传的文件进行存储。
Client:属于FastDFS的客户请求端,可以通过TCP/IP协议与FastDFS建立通信,实现对文件的添加、删除、修改。
在FastDFS分布式文件系统中,主要有三个角色:Tracker、Storage、Client。
首先,对这三个角色进行一个角色的分析:
Tracker:属于FastDFS的大脑,他会对storage进行实时的管理,也会处理来自Client的请求。
Storage:属于FastDFSD的存储系统,他会对来自Client上传的文件进行存储。
Client:属于FastDFS的客户请求端,可以通过TCP/IP协议与FastDFS建立通信,实现对文件的添加、删除、修改。
FastDFS系统架构图:
从图中,可以看出,这是一个FastDFS的集群配置,Tracker和Storage和Client都是具有多个的。
Client客户端会向Tracker进行发送请求,那如果在集群模式下,Tracker应该如何处理来自Client的请求?
多个Tracker的地位是一样的,也就是说,请求任意一个都是可以的,都能实现对Storage存储服务系统的调用;同时,在项目启动之后,Storage会实时向Tracker进行提交自己的信息(节点信息或者是元数据信息MetaData)或者就是Storage的心跳和磁盘空间,tracker调用的时候,会优先使用那些存储空间大的。
在Storage中,也会存在group的概念,group组也叫卷,他是会对文件进行分配存储位置的管理,默认都是在group1中。
Client客户端会向Tracker进行发送请求,那如果在集群模式下,Tracker应该如何处理来自Client的请求?
多个Tracker的地位是一样的,也就是说,请求任意一个都是可以的,都能实现对Storage存储服务系统的调用;同时,在项目启动之后,Storage会实时向Tracker进行提交自己的信息(节点信息或者是元数据信息MetaData)或者就是Storage的心跳和磁盘空间,tracker调用的时候,会优先使用那些存储空间大的。
在Storage中,也会存在group的概念,group组也叫卷,他是会对文件进行分配存储位置的管理,默认都是在group1中。
FastDFS的上传机制:
依旧是这幅图,整个上传请求的流程如下:
客户端Client会发送文件上传请求给Tracker,Tracker接收到来自Client的请求之后,发现是上传请求之后,就会把自己实时管理的Storage的信息进行管理,找到一个合适的Stroage节点的IP地址和端口信息进行返回,交给Client,Client端接收到了来自Tracker端返回的Storage端的IP:端口之后就会拿这个ip进行请求Storage存储服务器,Storage接收到这个请求之后,就会把文件信息保存在自己的磁盘空间中,并且会向Client端返回自己刚存储完成文件的全路径(包括组和文件路径)
客户端Client会发送文件上传请求给Tracker,Tracker接收到来自Client的请求之后,发现是上传请求之后,就会把自己实时管理的Storage的信息进行管理,找到一个合适的Stroage节点的IP地址和端口信息进行返回,交给Client,Client端接收到了来自Tracker端返回的Storage端的IP:端口之后就会拿这个ip进行请求Storage存储服务器,Storage接收到这个请求之后,就会把文件信息保存在自己的磁盘空间中,并且会向Client端返回自己刚存储完成文件的全路径(包括组和文件路径)
FastDFS的下载机制:
依旧是这幅图,整个下载请求的流程如下:
Client端首先会发送下载请求(携带文件的组和路径信息)到Tracker端,Tracker端拿到了这个下载的请求之后,会进行查找应该是哪一个storage存储服务器,找到之后就会把这个storage的IP与端口进行返回,返回给客户端,客户端拿到这个IP和端口之后,就会是使用这个Ip和端口(携带文件的组和路径信息)到Storage端,Storage端接收到请求之后,就会进行与Client建立通讯,进行下载。
Client端首先会发送下载请求(携带文件的组和路径信息)到Tracker端,Tracker端拿到了这个下载的请求之后,会进行查找应该是哪一个storage存储服务器,找到之后就会把这个storage的IP与端口进行返回,返回给客户端,客户端拿到这个IP和端口之后,就会是使用这个Ip和端口(携带文件的组和路径信息)到Storage端,Storage端接收到请求之后,就会进行与Client建立通讯,进行下载。