dfs服务器 五分钟带你了解FastDFS
温馨提示:这篇文章已超过606天没有更新,请注意相关的内容是否还可用!
FastDFS由跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)组成。
追踪器服务器 追踪器服务器
类似于TFS的NameServer,负责接收客户端的请求,选择合适的StorageServer组合。他们还使用与StorageServer 的心跳机制来检查对方是否还活着。
Tracker需要管理的信息也放在内存中,里面的所有Tracker都是平等的,便于扩展
当客户端访问集群时,会随机分配一个Tracker与客户端进行交互。
存储服务器Storage Server
主要负责提供容量和备份服务。
它们以组为单位,一个组内的存储数据相互备份,即数据相同。这种方式的好处是可以隔离不同应用的数据。例如,应用程序的数据放在一个组中。
劣势也很明显。整个集团的容量其实就是每一个Stroage的容量dfs服务器,而且容量都会有限制。
而且部署时存储容量要保持一致,以免造成资源浪费
当组内的机器坏了,数据恢复只能靠组内的其他服务器,会比较慢。. . 不太懂,怎么操作就快了。
写入时,storage会在其挂载的所有数据存储目录下创建2级子目录,每级256个,共65536个,新写入的文件会以hash的形式路由到其中一个子目录,并存储文件数据作为该目录中的本地文件。
客户客户
主要是上传下载数据的服务器,也就是我们自己项目部署的服务器。每个客户端服务器都需要安装Nginx
FastDFS集群结构
FastDFS存储策略
为了支持大容量,存储节点(服务器)被组织成卷(或组)。存储系统由一个或多个卷组成。卷之间的文件是相互独立的。所有卷的文件容量即为整个存储系统的文件容量。一个卷可以包含一个或多个存储服务器。一个卷下的存储服务器中的文件都是一样的。卷中的多台存储服务器起到冗余备份和负载均衡的作用。
向卷中添加服务器时,系统会自动完成现有文件的同步。同步完成后,系统自动切换新服务器上线提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。您只需添加一台或多台服务器并将其配置为一个新的卷,从而扩展存储系统的容量。
这样做的好处是比较灵活。当你有某个应用或模块(对应一个组)访问量比其他的多时,你可以直接在组中添加几个存储来实现负载均衡。
FastDFS 读写操作
FastDFS为用户提供基本的文件访问接口,如上传、下载、追加、删除等,以客户端库的形式提供给用户
FastDFS 写入过程
FasrDFS 读取过程
使用 FastDFS 进行文件同步
当客户端成功将一段数据写入存储时,就认为成功了,它的文件同步是在后台线程上运行的,这一点与TFS不同。
FastDFS在同步的时候,会生成一个binlog,里面包含了数据的元数据。存储会记录其同步的进度,以便关机重启后可以继续同步。此进度以时间戳的形式记录,因此所有服务器都需要保持时钟。一致。
他的文件同步机制也带来了一个安全隐患,就是在客户端写入成功并进行备份的时候,如果源存储突然爆0.0(也就是彻底毁掉,数据丢失,系统崩溃) ) 伤害的种类)
此数据将丢失。不过好像一般不太可能爆炸吧?0.0
注意:
1、group2同组的Storage2和Storage3 FastDFS服务端口必须相同:port=23000。
2、一台服务器可以安装多个组(group)但不能安装同组的多个storage,日志会报错dfs服务器,日志报错的原因是“注1”
3.在4.05版本之前,fastdfs内部绑定了libevent作为一个http服务器。Version 4.05之后的版本删除了内置的web http服务。内置的web http服务是个负担,不用担心!
4、启动存储服务器时,一直处于死机状态。启动存储服务器后,存储将连接到跟踪器服务器。如果连接失败,它将继续重试。直到连接成功才真正完成启动!如果集群中有2台tracker server,其中一台tracker没有启动,可能会导致storage server一直处于死机状态