在作分布式文件存储的时候,经常用到两个工具,Rsync和FastDFS;这二者本质的区别在于前者的实时性相面相对较差,须要手工编写脚本同步,而后在放到定时任务(cron)中;FastDFS自动实现同组内机器互备; 安全
Rsync分为客户端和服务器端,客户端主要负责和服务器通讯,获取最新的文件;这里的机制和FastDFS有区别,由于没有实时性,因此Rsync在同步的时候,会将服务器端全部的文件都比对一遍,发现有变化才会将变化的文件同步过来,若是添加了—delete指令,还会将服务器端删除的文件在客户端也删除;FastDFS由于是实时同步的,因此只要有变化,便会通知各个组内的服务器进行同步,因此他的更新机制不是逐个比对,同步的效率会更高; 服务器
客户端只有一个配置文件:rsyncd.secrets(文件名和路径能够自定义,由于是须要客户端执行的时候做为参数传递的),这个配置文件配置了登陆的密码(只有密码),用户名是在指定的时候经过参数指定的; 架构
服务器端有三个配置文件: tcp
有一点须要注意,就是须要服务器点打开873端口(默认Rsync监听端口) 分布式
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT 工具
FastDFS是我国的淘宝工程师开发的,是属于轻量级的分布式文件系统;实现物理存储的水平扩展,他和HDFS最大的差异在于并不会对文件进行切割(切片存储),因此比较适用于小文件的存储;FastDFS里面有两个核心组件:Tracker Server以及Storage Server,前者用于记录文件索引,后者用于存储文件;tracker server和storeage Server是松散耦合,若是是扩容物理存储,只要增长一台机器,配置称为storage Server,指向一台Tracker server,Tracker Server就会记录新增容的服务器;由于storage将会根据配置的tracker ip以及端口,向Tracker服务器发送通知,I'm in! spa
一个storage server里面能够包含N个Group,每一个Group里面能够包含N个Storage,每一个Storage都是一个存储空间,同一个组内的Storage是互相备份关系,上面也提到了,是那种增量式的备份;一个新的storage首次和tracker通讯: server
当你须要获取/上传一个文件的时候,首先和tracker进行通讯(上传不须要参数,下载须要提供文件名称,这个文件名称是当初上传的时候有FastDFS生成的),tracker中选择一个可用的storage返回,而后你在和这个storage服务器通讯获取文件。blog