分布式存储
首先,什么是分布式存储,简而言之,就是将数据存储到多个存储设备(服务器)上。
分布式与传统网络存储系统区别
传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。
分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
FastDFS
FastDFS是一款开源的分布式文件系统,通过纯C实现,支持Linux, FreeBSD等Unix系统类Google FS, 不是通用的文件系统,只能够通过专有API访问,目前提供了C,Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性 FastDFS可以看做是基于文件的key-value存储系统,称为分布式文件存储服务更为合适。
功能包括:文件存储、文件同步、文件访问(文件上传、文件下载、文件删除)等,解决了大容量存储和负载均衡的问题。
为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标
可以很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
- 图片服务器
- 图床
fastDFS特点:
- 应用层级的文件系统
- 不能挂载和卸载,也就是不能进行mount操作
fastDFS框架中的三个角色
- 追踪器 - tracker
- 存储节点 - storage
- 客户端 - client
fastDFS三个角色之间的关系
Client和Storage主动连接Tracker。
Storage主动向Tracker报告其状态信息
- 磁盘剩余空间
- 文件同步状况
- 文件上传下载次数
Storage会启动一个单独的线程来完成对一台Tracker的连接和定时报告。
一个组包含的Storage不是通过配置文件设定的,而是通过Tracker获取到的。
FastDFS集群
Tracker集群
- Tracker server之间是相互平等关系同时提供服务
- Tracker server不存在单点故障。
- 客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。
Storage集群
- Storage集群采用了分组存储方式, 由一个或多个组构成
- 集群存储总容量为集群中所有组的存储容量之和
- 一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系
- 不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。
- 一个组的存储容量为该组内存储服务器容量最小的那个
FastDFS的扩容分纵向扩容与横向扩容
- 横向 扩容
- 增加容量
- 添加group组
纵向扩容
- 数据备份
当前组的最大容量
- 存储节点中容量最小的那个
所有存储节点组名必须一样
- 横向 扩容