fastdfs结合nginx做一个网盘

原创 2015年11月19日 17:12:02

网盘

系统整体架构


该架构和直接调用fastdfs java api的优点:

由于直接请求tracker获取可用的ip后,即断开了与tracker的连接,然后直接由nginx代理服务器将上传请求直接转发给storage节点,由storage节点上的nginx服务器接收上传的文件,然后调用上传指定storage节点的上传文件命令完成上传到fastdfs文件系统里。这种方式降低了系统的连接压力,可接收更多的上传请求。上传的源数据无需跨节点传输,整体提高了系统效率和降低了网络压力。

nginx代理服务器

nginx代理服务器需要动态获取转发请求的目的storage的地址,nginx自带的负载均衡策略此时就无法满足需求,因为目的storage的地址是调用tracker的命令查询到空闲的storage的ip,该处做了一个轮询,即因为每次请求获取的是ip集合,但是每次只需要一个,所以可以轮询ip集合。
为了解决动态转发到特定的目的storage,该处用了lua,详见上一篇文章。

storage节点上的nginx

每个storage都有nginx,作用是作为http服务器,主要是为了接收请求上传的文件。

主要的动作是:利用nginx-upload-module模块作为上传或者用lua-resty-upload提供的上传功能来接收文件,然后用lua脚本将上传上来的文件调用fastdfs的文件上传功能,上传到本地的storage上,即完成上传,也可以用lua脚本记录文件的一些信息,如文件的大小,文件名称,等信息,还有就是上传到fastdfs返回的文件地址,可以将这些信息返回给reponse或者保存到数据库中,方便查看。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

FastDFS介绍

FastDFS 介绍     FastDFS 是一个 C 语言实现的开源轻量级分布式文件系统,作者余庆(happyfish100),支持 Linux、FreeBSD、AID 等 Unix 系统,解决了...

org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

1.path环境变量 2.Hadoop bin目录下hadoop.dll和winutils.exe 3.c:\windows\system32 下的hadoop.dll 4.64为jdk 条件...
  • lhy66
  • lhy66
  • 2015年04月28日 16:26
  • 1028

Hadoop分析日志实例的详细步骤及出现的问题分析和解决

1). 日志格式分析 首先分析 Hadoop 的日志格式, 日志是一行一条, 日志格式可以依次描述为:日期、时间、级别、相关类和提示信息。如下所示: 2014-01-07 00:31:25,393 I...

Xna结合kinect做一个粒子效果

  • 2014年11月26日 18:00
  • 971KB
  • 下载

15套java架构师 Dubbo Redis ActiveMQ Nginx Mycat Netty Jvm Spring boot mysql oracle 网盘 视频

15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程 ...

Centos7安装Nginx以及与FastDFS的结合

Centos7安装Nginx以及与FastDFS的结合

CentOS fastDFS结合nginx的配置以及php端的调用方法

fastDFS的介绍就不说了  想了解的人直接百度。源码:http://code.google.com/p/fastdfs/论坛:http://bbs.chinaunix.net/forum-240-...

国内网盘的关停让用户操碎了心 下一个风口在哪

从去年开始,国家有关部门就开展了网盘的整治行动,新浪微盘、UC网盘、快盘、华为网盘集中在今年4月底宣布关闭并不再保留数据。今年10月20号,360云盘发布公告决定停止个人云盘服务,之后转型企业云服务。...

项目二在写的一个网盘管理程序, 目前是半成品, 贴几张图给大家看看.

这个程序暂时命名PTDISK 前端UI用的基于bootstrap的一套东西, 叫做matrix-admin.  当然, 被我和组员修改了很多. 后端用的THINKPHP  因为上手简单嘛~   组员用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fastdfs结合nginx做一个网盘
举报原因:
原因补充:

(最多只允许输入30个字)