Tuesday, October 20, 2015

Taobao分布式文件系统TFS简析 - 刘爱贵的专栏 - 博客频道 - CSDN.NET



Taobao分布式文件系统TFS简析 - 刘爱贵的专栏 - 博客频道 - CSDN.NET

TFS官方称"TFS(Taobao FileSystem)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,其设计目标是支持海量的非结构化数据"。我个人花了点时间研究一下TFS的源码和相关技术文档,TFS与目前一些主流的开源分布式文件系统设计思想是相似的,如HDFS, MFS, KFS, Sector。TFS的高可扩展、高可用性是很好的,然而也存在一定不足,如通用性、用户接口、性能等方面。我这里粗略罗列一些自己认为TFS的不足之处,不当之处还请大家指正。

1、通用性方面。TFS目前只支持小文件的应用,大文件应用是不支持的。对小图片、网页等几十KB内的数据存储非常适用,但对视频点播VOD、文件下载等应用暂时无法适用。

2、性能方面。Client写文件是同步处理的,需要等所有dataserver写成功后才能返回,这很是影响性能。

3、用户接口。TFS没有提供POSIX接口,提供的API也与标准接口不一致。另外,TFS有自己的文件命名规则,如果用户使用自定义的文件名,则需要自已维护文件名与TFS文件名之间的映射关系。

4、代码方面。使用了C++实现,感觉相对臃肿一点,如果用纯C实现应该会简洁不少(可能我C中毒太深了)。代码注释基本没有,代码质量也不是很好。

5、技术文档。官方有一些文档,但显然非常不够深入和全面。

6、小文件优化。官方称针对海量小文件的随机读写访问性能做了特殊优化,现在只看到把众多小文件存放与一个Block中,这与Squid中的COSS原理相似。其他特殊优化措施未知,LOFS(Lost of small files)是个难点问题。


Read full article from Taobao分布式文件系统TFS简析 - 刘爱贵的专栏 - 博客频道 - CSDN.NET

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts