fastDFS
fastDFS:
fastDFS是一个分布式文件系统 (文件系统的全部, 不在同一台主机上,而是在很多台主机上,多个分散的文件系统组合在一起,形成了一个完整的文件系统。)
为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,注重高可用、高性能等指标
冗余备份:
纵向扩容
线性扩容: 横向扩容
可以很容易搭建一套高性能的文件服务器集群提供文件 上传、下载 等服务。
比如网盘
分布式文件系统:
1. 需要有网络
2. 多台主机
不需要在同一地点
3. 需要管理者
4. 编写应用层的管理程序
不需要编写,开源的很多
2. fastDFS框架中的三个角色
追踪器 ( Tracker ) - 管理者 - 守护进程
管理存储节点
存储节点 - storage - 守护进程
存储节点是有多个的
客户端 - 不是守护进程, 这是程序猿编写的程序
文件上传
文件下载
3. fastDFS三个角色之间的关系

这图要看明白
1. 追踪器
最先启动追踪器
2. 存储节点
第二个启动的角色
存储节点启动之后, 会单独开一个线程主动连接追踪器
汇报当前存储节点的容量, 和剩余容量
汇报数据的同步情况
汇报数据被下载的次数
3. 客户端
最后启动
上传
连接追踪器, 询问存储节点的信息
我要上传1G的文件, 询问那个存储节点有足够的容量
追踪器查询, 得到结果
追踪器将查到的存储节点的IP+端口发送给客户端
通过得到IP和端口连接存储节点
将文件内容发送给存储节点
下载
连接追踪器, 询问存储节点的信息
问一下, 要下载的文件在哪一个存储节点
追踪器查询, 得到结果
追踪器将查到的存储节点的IP+端口发送给客户端
通过得到IP和端口连接存储节点
下载文件
4. fastDFS集群 - (了解即可)

1. 追踪器集群
为什么集群?
避免单点故障
多个Tracker如何工作?
轮询工作
如何实现集群?
修改配置文件
2. 存储节点集群
fastDFS管理存储节点的方式?
通过分组的方式完成的
集群方式(扩容方式)
横向扩容 - 增加容量
添加一台新的主机 -> 容量增加了
假设当前有两个组: group1, group2
需要添加一个新的分组 -> group3
新主机属于第三组
不同组的主机之间不需要通信
纵向扩容 - 数据备份
假设当前有两个组: group1, group2
将新的主机放到现有的组中
每个组的主机数量从1 -> N
这n台主机的关系就是相互备份的关系
同一个组中的主机需要通信
每组的容量 == 容量最小的这台主机
扩容方式:
横向扩容
新建一个组,添加一个主机,增加了容量,比如原有10T的容量已经用完了,新增一个主机后总容量是20T,总的可用容量10T
纵向扩容
在原有的组中添加主机,虽是增加了主机,但是是备份,总的可用容量还是10T,数据大小不会变化,每组的容量 等于 容量最小的这台主机
(1组中有1T,2T,3T三个主机,最小容量是1T,最大容量是3T,数据存储容量是1T,备份关系)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通