您的位置:首页 > 编程语言 > Java开发

fastdfs 图片服务器 使用java端作为客户端上传图片 / 【FastDFS专题】fastdfs使用实战(概念篇)

2017-10-17 10:08 567 查看
BeJavaGod 2017-09-27 09:24

之前有说道搭建fastdfs作为图片服务器,但是没有说明如何真正在代码里调用,那么今天大致讲一下,如何使用java客户端进行上传

首先你得要有一个客户端,导入到eclipse中即可



git地址如下:

https://github.com/leechenxiang/fastdfs-client-java

JS:



html:



controller:



service:



最后配置:



tracker_server=192.168.1.188:22122

上传效果:



===========================================================

1、FastDFS是什么

    FastDFS是一个开源的轻量级分布式文件系统,纯C实现,支持Linux、FreeBSD等UNIX系统,FastDFS可以看做是基于文件的key value pair存储系统。

    FastDFS有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。

 

2、FastDFS的特点

    分组存储,灵活简洁

    对等结构,不存在单点 

    文件ID由FastDFS生成,作为文件访问凭证。

    FastDFS不需要传统的name server

    和流行的web server无缝衔接,FastDFS已提供apache和nginx扩展模块

    大、中、小文件均可以很好支持,支持海量小文件存储

    支持相同文件内容只保存一份,节省存储空间

    存储服务器上可以保存文件附加属性

    支持多块磁盘,支持单盘数据恢复

 

3、FastDFS架构图如下:





    跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。

    为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

    FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。

 

4、FastDFS实现过程

上传文件交互过程:





  1. Client询问Tracker server上传到的Storage server;

  2. Tracker server返回一台可用的Storage server,返回的数据为该Storage server的IP地址和端口;

  3. Client直接和该Storage server建立连接,进行文件上传,Storage server返回新生成的文件ID,文件上传结束。

下载文件交互过程:





  1. Client询问Tracker server可以下载指定文件的Storage server,参数为文件ID(包含组名和文件名);

  2. Tracker server返回一台可用的Storage server;

  3. Client直接和该Storage server建立连接,完成文件下载。

 

5、同步机制

    同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;

    文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器;

    源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了;

上述第二条规则有个例外,就是新增加一台storage server时,由已有的一台storage server将已有的所有数据(包括源头数据和备份数据)同步给该新增服务器。

来自http://bbs.chinaunix.net/thread-3674148-1-4.html

 

本文出自 “Richard Shen运维/架构” 博客,请务必保留此出处http://lxsym.blog.51cto.com/1364623/744826
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐