好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

【C#.NET】利用FastDFS打造分布式文件系统

【C#.NET】利用FastDFS打造分布式文件系统

关于分布式文件系统 之前已经写过一些随笔 不过没怎么用心 本篇详细的整理一下

背景

   海量存储、系统负载的迁移、服务器吞吐的瓶颈等等 让文件系统独立于业务系统 提高整个项目的扩展性以及可维护性

  目前主流的方案 MFS FASTDFS GFS LUSTRE HADOOP等等

  我选择的是FASTDFS 用一句广告语来说 “免费、快速、找得到”。FASTDFS的作者是淘宝的资深架构师余庆,很诙谐、很有爱!!!其他方案还没玩过 暂不评论。

简介  

  FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前官方提供了C、Java和PHP API为互联网应用量身定做,追求高性能和高扩展性,FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。

  特点:

  分组存储,灵活简洁
  对等结构,不存在单点
  文件ID由FastDFS生成,作为文件访问凭证。FastDFS不需要传统的name server
  和流行的web server无缝衔接,FastDFS已提供apache和nginx扩展模块
  大中小文件均可以很好支持,支持海量小文件存储
  存储服务器上可以保存文件附加属性

  名词解释:

  Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。在内存中记录集群中group和storage server的状态信息,是连接Client和Storage server的枢纽。 因为相关信息全部在内存中,Tracker server的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。
   Storage Server:存储服务器,文件和文件属性(meta data)都保存到存储服务器上。

实践-服务端

   系统:ubuntu

  开发工具:vim

  web服务:nginx

  基于socket自定义通信协议

  服务端的安装参考官方文档 有不懂的可以联系虫子 这里说下问题比较多的2个地方 一个是libevent的版本问题 另一个是ubuntu最新版本中对于libpthread等库文件的存放位置问题

  安装完fastdfs以后 假设你的服务端程序安装在/usr/local目录 

  我们会在bin目录下找到以下文件

  

  storage服务器启动命令 /usr/local/bin/fdfs_storaged /FastDFS/conf/storage.conf

  tracker服务器启动命令 /usr/local/bin/fdfs_trackerd /FastDFS/conf/tracker.conf

  我们运行monitor查看下配置信息

?

group count: 1

 

Group 1:

group name = test

free space = 5 GB

storage server count = 2

active server count = 2

storage_port = 23000

storage_http_port = 0

store path count = 1

subdir count per path= 3

current write server index = 0

 

     Host 1:

         ip_addr = 192.168.234.139 (ubuntu)  ACTIVE

         total storage = 9GB

         free storage = 5GB

         total_upload_count = 2

         success_upload_count = 2

         total_set_meta_count = 0

         success_set_meta_count = 0

         total_delete_count = 0

         success_delete_count = 0

         total_download_count = 0

         success_download_count = 0

         total_get_meta_count = 0

         success_get_meta_count = 0

         total_create_link_count = 0

         success_create_link_count = 0

         total_delete_link_count = 0

         success_delete_link_count = 0

         last_heart_beat_time = 2012-01-05 18:45:50

         last_source_update = 2012-01-05 01:20:28

         last_sync_update = 1969-12-31 16:00:00

         last_synced_timestamp= 1969-12-31 16:00:00

     Host 2:

         ip_addr = 192.168.234.140  ACTIVE

         total storage = 18GB

         free storage = 12GB

         total_upload_count = 16

         success_upload_count = 16

         total_set_meta_count = 0

         success_set_meta_count = 0

         total_delete_count = 0

         success_delete_count = 0

         total_download_count = 0

         success_download_count = 0

         total_get_meta_count = 0

         success_get_meta_count = 0

         total_create_link_count = 0

         success_create_link_count = 0

         total_delete_link_count = 0

         success_delete_link_count = 0

         last_heart_beat_time = 2012-01-05 18:45:50

         last_source_update = 2012-01-05 01:54:02

         last_sync_update = 1969-12-31 16:00:00

         last_synced_timestamp= 1969-12-31 16:00:00

 storage.conf整理汉化版

View Code

 tracker.conf整理汉化版

View Code

 Web服务

  FastDfs本身提供了组的概念,不同的组可以用不同的域名,如果是图片等类型资源,利用多个子域名在网站优化中是很有帮助的。不过如果你想在一个域名下实现多个服务器的分布式方案,可以利用nignx的反向代理来做urlrewrite。

  举个简单的例子

?

server {

          listen       80;

          server_name 192.168.234.140;

     index index.html index.htm index.php;  

     root  /app/test;

 

     location /g1{

          proxy_pass http://192.168.234.139;

        }

}

 分布式算法

  和memcached这些分布式系统不同。Fastdfs的分布式算法是在服务端实现,Fish也在不断改良着算法。最新的是avl树。不过貌似有整rbtree的趋势。

 负载均衡,同步

  fastdfs还内置了组内的同步功能,不过我觉得对于我的项目可用性不大,因为我要实现的是狭义的分布式文件系统只要能保证海量的可扩展存储方案就可以了,同步、负载均衡之类的就交给专业的运维们吧。

  同步功能没有开关配置,在同步时间设置上作手脚就可以了。

  sync_start_time,sync_end_time

  实践-客户端   

  系统:windowsXP

 首先我们来看下基本功能

找张mm图片  -_____-

 上传成功 对比一下

  然后再看看分布式结果

192.168.234.139上

192.168.234.140上

web上浏览

性能方面 和服务器本身的带宽 吞吐都有关系 不过作为文件系统 对稳定性的要求更大 而fastdfs的很多实例都证明了这一点

看完上面 是不是觉得很容易入手 当然 fastdfs的深度应用还有很多 

对于.net下 fastdfs的应用 大家有什么疑问可以联系我

本篇先到此 希望对大家有帮助

原创作品允许转载,转载时请务必以超链接形式标明文章原始出处以及作者信息。
作者:熬夜的虫子
点击查看: 全文目录 博文索引
点击查看: 读书笔记(更新至1219 CLR相关)

 


收起全部  |  展开全部

收起|展开

博文列表

收起|展开

分享改进 晒一下我的监控系统 晒一下我的统一网站管理平台 晒一下我的web过滤器 分享改进 新出炉的微软派工具 分享改进 通用分表归档存储过程 分享改进 高效数据同步工具(一)( 草稿版 )

收起|展开

C#.NET [C#.NET]利用FastDFS打造分布式文件系统 [C#.NET]长话短说 分布式通信方案综合测评 [C#.NET]打造趋于完美的分布式缓存算法 对一致性Hash说不 [C#.NET] 从控制反转(依赖注入)想到事件注入 抓虫(一) 从简单程序开始 线程安全 抓虫(二) 不要轻视web程序中常用的三个"池" 之应用程序池 抓虫(三) 不要轻视web程序中常用的三个"池" 之数据库连接池 抓虫(四) 不要轻视web程序中常用的三个"池" 之线程池 抓虫(五) 浅谈依赖注入与控制反转 抓虫(六) XSS跨站脚本实例

收起|展开

走向DBA [MSSQL篇] 积跬步行千里 [MSSQL篇] 详解游标 [MSSQL篇] 面试官最喜欢的问题 ----索引 附c#面试题客串 [MSSQL篇] 针对大表 设计高效的存储过程 附最差性能sql语句进化过程客串 [MSSQL篇] 从SQL语句的角度 提高数据库的访问性能 [Mongo篇] Mongodb相关 [Raven篇] 小试RavenDB

收起|展开

架构类随笔 CUDA并行计算框架(一)概念相关、内容比较抽象。 CUDA并行计算框架(二)实例相关。 CUDA并行计算框架(三)应用前景。相比价微软的并行计算框架 分布式文件系统应用(上篇 理论) 分布式文件系统应用(下篇 实践) 视频网站相关(视频解码、特大文件上传等) 针对web高并发量的处理 针对sql高并发量的处理 关于领域驱动设计与面向数据库设计

收起|展开

设计模式 结合项目实例 打造属于自己的设计模式 结合项目实例 回顾传统设计模式(一)策略模式 结合项目实例 回顾传统设计模式(二)观察者模式 结合项目实例 回顾传统设计模式(三)装饰者模式 结合项目实例 回顾传统设计模式(四)工厂模式(简单工厂、普通工厂、抽象工厂) 结合项目实例 回顾传统设计模式(五)单例模式 结合项目实例 回顾传统设计模式(六)命令模式 结合项目实例 回顾传统设计模式(七)适配器模式(附外观模式) 结合项目实例 回顾传统设计模式(八)模板方法模式 结合项目实例 回顾传统设计模式(九)迭代器模式 结合项目实例 回顾传统设计模式(十)状态模式 结合项目实例 回顾传统设计模式(十一)代理模式

收起|展开

Linux+C 新征程 linux下C编程 神器 vim + 指针相关客串 通过几个实例温习指针

收起|展开

读书笔记 公共语言运行时

收起|展开

学习笔记(非全部原创内容,包含msdn、专题讲座等资源) 数据库安全  (改自2008腾讯网络安全技术峰会资料) 互联网企业应对恶意网址的思考  (改自2008腾讯网络安全技术峰会资料) .NET互联网网站架构  (网络优秀资源汇总) 重构与设计解析  (改自老员工讲座) 动态方法与动态代理(上篇)  (改自老员工讲座) 动态方法与动态代理(下篇)  (改自老员工讲座) wcf、webservivce、remoting、wse、Enterprise Service、msmq.... 乱谈  (msdn资源汇总) Webservice 安全与应用  (msdn资源汇总) Windows、(*)nux回忆录 作为架构师的你 值得拥有 O(∩_∩)O~ 回头再学Asp.net系列--基础篇(序) 回头再学Asp.net系列--基础篇(一) 回头再学Asp.net系列--基础篇(二) 回头再学Asp.net系列--基础篇(三) 回头再学Asp.net系列--基础篇(四) 回头再学Asp.net系列--基础篇(五) 回头再学Asp.net系列--基础篇(六)

收起|展开

...

作者: Leo_wl

    

出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于【C#.NET】利用FastDFS打造分布式文件系统的详细内容...

  阅读:91次