第6章 分布式文件系统的实现
本章讲述如何使用FTTP去实现一个分布式文件系统,包括FTTP的架构原理和远程文件各种方式的访问和操作,以及整型数据处理等,包含了每一步的具体操作,可帮助入门的读者快速上手。
在FTTP中通过FttpAdapter和FileAdapter实现文件IO的支持。其中,FttpAdapter提供对远程文件的操作,FileAdapter提供对本地文件的操作,两者的API和使用相似,这里主要说明FttpAdapter。
FttpAdapter提供了对分布式文件的便利操作,将集群中所有机器的硬盘资源利用起来,通过统一的FTTP文件路径访问,并且在Windows和Linux中都受到支持。操作系统上的任何目录文件都可以通过添加FTTP协议头和IP去访问fttp://IP或域名/Windows或Linux原有目录文件名:
❏ 访问Windows系统的d:/data/a.log文件:
Windows:fttp://192.168.0.1/d:/data/a.log
❏ 访问Linux系统的/home/user/a.log文件:
Linux:fttp://192.168.0.1/home/user/a.log
获取远程文件内容变得更简单,比如以这样的方式读取远程文件:
- FttpAdapter fa = FttpAdapter("fttp://192.168.0.1/home/log/a.log");
- fa.getFttpReader().readAll();
这里读取了192.168.0.1这台Linux服务器上的/home/log/a.log文件中的所有内容。
提供对集群文件的操作支持,包括:
1)元数据访问,包括添加删除,按块拆分,高性能并行读写,排他读写(按文件部分内容锁定),随机读写,集群复制等。
2)对集群文件的解析支持(包括按行、按分割符、按最后标识读取)。
3)对整型数据的高性能读写(ArrayInt比ArrayList存得更多更快)。
4)两阶段提交和事务补偿处理。
5)自带一个集群文件浏览器,可以查看集群所有硬盘上的文件(不同于Hadoop的NameNode,没有单点问题和容量限制)。
总的来说,将集群看做一个操作系统,像操作本地文件一样操作远程文件。
但是Fourinone并不提供一个完整的分布式存储系统,比如文件数据的导入导出、拆分存储、负载均衡、备份容灾等存储功能,不过Fourinone会使完成这些工作变得简单,使开发人员可以利用API方便地设计和实现这些功能,用来满足自己的特定需求。