#千锋JAVA开发学院#分布式文件系统FastDFS如何做到高可用
什么是高可用?
通俗讲就是在任何异常情况下 , 系统依然能正常提供服务 。 尽量缩短系统不可用时间 , 以提高系统的可用时间 。 大多按照年可用时间99.99%为标准 。 平摊到每个月不可用时间在几十分钟内 。 如何做到高可用?1 , 系统设计上避免使用单点 。 2 , 自动故障转移 。
我们下面来看看FastDFS是如何做到这两点的 。 通过下图来了解下FastDFS的架构 。
本文插图
fastdfs架构示意图
Tracker server主要作用是负载均衡和调度 , 通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务 。 Tracker server可以由一台或者N台服务器组成 。 可以随时增加或者下线不会影响线上服务 , 同时可以根据线上服务器的压力情况随时增加或者减少 。
Tracker负责管理Storage和group 。 每个storage会去连结Tracker , 并切报告自己所属的group等信息 , 并保持和Tracker周期性的心跳 。 tracker根据storage的心跳信息建立 group-storage server list的映射表 。 所有的元信息很少 , 都存储在内存中 。 这样就使Tracker非常容易扩展 。
Storage server:可以称为存储服务器 。 客户端上传的文件最终存储在Storage服务器上 , Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件 。 存储系统由一个或多个组组成 , 组与组之间的文件是相互独立的 , 所有组的文件容量累加就是整个存储系统中的文件容量 。
文件上传流程
本文插图
1,Client想上传图片 , 它先向Tracker进行询问 , Tracker查看一下登记信息之后 , 告诉Client哪个storage当前空闲 , Tracker会把IP和端口号都返回给Client , Client在拿到IP和端口号之后 , 便不再需要通过Tracker , 直接便向Storage进行上传图片 , Storage在保存图片的同时 , 会向Tracker进行汇报 , 告诉Tracker它当前是否还留有剩余空间 , 以及剩余空间大小 。 汇报完之后 , Storage将服务器上存储图片的地址返回给Client , Client可以拿着这个地址进行访问图片 。
我们来了解下文件索引信息 。 主要包括:组名 , 虚拟磁盘路径 , 数据两级目录 , 文件名 。 如下所示:
本文插图
我们来看看文件索引的具体解释和组成部分:
组名:文件上传后所在的storage组名称 , 在文件上传成功后由storage服务器返回 , 需要客户端自行保存 。
虚拟磁盘路径:storage配置的虚拟路径 , 与磁盘选项store_path*对应 。 如果配置了store_path0则是M00 , 如果配置了store_path1则是M01 , 以此类推 。
数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录 , 用于存储数据文件 。 文件名:与文件上传时不同 。 是由存储服务器根据特定信息生成 ,
文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息
文件下载流程
如图所示FastDFS下载的时序图
本文插图
图解如下
Storage Server启动后会主动去连结Tracker Server , 周期性向Tracker Server发送心跳 。
然后client询问tracker下载文件的storage , 参数为文件标识(组名和文件名) , tracker返回一台可用的storage 。
最后client直接和storage通讯完成文件下载 。
我们在来看看FastDFS下载的运行的示意图
推荐阅读
- 『强国兵器』中方协同美方开发AI工具,英国人:只有中国能做到,抗疫强力辅助
- 戮默科技■助力企业数字化升级,戮默科技深挖软件开发核心
- 蛋蛋懂车■西青开发区部分路段通行有变,4月4日起
- 『小谦』原创 安卓11迎来开发者预览2.1版本,修复诸多崩溃问题
- 小谦:安卓11迎来开发者预览2.1版本,修复诸多崩溃问题,原创
- 【小谦笔记】修复诸多崩溃问题,安卓11迎来开发者预览2.1版本
- 「小蜜疯汽车」UVeye开发紧急车辆检测系统,无接触检测新冠患者
- 新经济:正在开发“Shorts”项目,YouTube进军短视频
- 老王科技@14 时代,Java工程师如何高效成长?,Java
- 开发者■效率提升70%、一次开发搞定多端,云开发全面升级
