fastdfs 的冰山一角
基本点
- 访问方式: http (必要时,配置nginx)
- 核心服务组件:
- tracker–跟踪服务器,均衡调度所有的storage服务和group,(客户端与数据服务器交互的桥梁)
- storage–存储服务器,提供存储和备份服务,以group为单位,每个group中有多个storage,互为备份,每个storage在启动后会连接 Tracker,同步自己所属group等信息,并保持周期性心跳
- Client:客户端,上传下载数据请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互
- 优势
- 对文件内容做hash处理,避免出现重复文件
- 下载文件支持HTTP协议,可基于内置Web Server或外部Web Server
- 支持在线扩容,动态添加卷
- 支持文件冗余备份和负载均衡
- 支持大并发访问,整体性能更好
- 劣势
- 单线程数据同步,仅适合存储小文件(4KB到500MB之间)
- 单个挂载点异常会导致整个存储节点下线
- 缺乏多机房容灾支持
- 静态的负载均衡机制
- 直接按文件存储,可直接查看文件内容,缺乏文件安全性
- 数据同步无校验,存在静默IO问题,降低系统可用性
数据流向与组织结构
文件上传:client发出upload指令至tracker,tracker进行调度上传进具体的group下的storage
-
具体流程:
当客户端请求Tracker进行上传操作时,会获取存储服务器相关信息,主要包括IP和端口。根据返回信息上传文件,通过存储服务器写入磁盘,并返回给客户端file_id、路径信息、文件名等信息。
文件下载:
-
在storage服务器上安装nginx来访问
-
下载时客户端可以选择任意Tracker server
客户端带文件名信息请求Tracker,Tracker从文件名中解析出文件的group、大小、创建时间等信息,然后选择一个storage用来服务处理请求,返回对应文件
[外链图片转存中…(img-wDrBVgpA-1643348521924)]