FastDFS

1.分布式与集群的区别

区别:集群是个物理形态,分布式是个工作方式。只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;一个程序或系统,只要运行在不同的机器上,就可以叫分布式,一般系统现在都是前后端分离,C/S架构、B/S架构,一般服务端部署在内部服务器,而客户端分布在各个用户的机器好比手机、PC机等,这样的系统也是分布式系统。集群一般是物理集中、统一管理的,而分布式系统则不强调这一点。

联系:将一个应用程序拆分成多个功能模块或节点(分布式)后,可以对每一个功能模块或节点用集群的方式来部署,从而达到提升应用程序的整体性能以及高可用的优点。

1.1. 分布式概述

可以将分布式理解为,将某一个应用程序,拆分成多个模块来部署,各个模块负责不同的功能;分布式的优点是细化了应用程序的功能模块,同时也减轻了一个完整的应用程序部署在一台服务器上的负担,用了分布式拆分后,就相当于把一个应用程序的多个功能分配到多台服务器上去处理了。

1.2.集群概述

集群的意思就是将一个应用程序,部署到多台服务器上面,然后在这些服务器的前面通过负载均衡服务器来择优选择哪一台服务器去执行;集群的优点就是当其中的一个服务器宕机了,其他服务器可以接上继续工作;将应用程序部署在多台服务器时,也提供了数据的吞吐量。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。

Tracker Server:跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。

Storage Server:存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。

Client:客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

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

在这里插入图片描述

2.3. FastDFS文件上传流程

FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。
  Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件。

2.4. FastDFS的文件同步

写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考。

2.5. FastDFS的文件下载

客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。

跟upload file一样,在downloadfile时客户端可以选择任意tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。

简单总结一下:

1、client询问tracker下载文件的storage,参数为文件标识(组名和文件名);

2、tracker返回一台可用的storage;

3、client直接和storage通讯完成文件下载。

http://www.west999.com/info/html/caozuoxitong/Linux/20190420/4635306.html

https://www.jianshu.com/p/b7c330a87855

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Windows下使用FastDFS需要进行以下步骤: 1. 安装FastDFS依赖的软件: - 安装C语言编译器,如MinGW、Cygwin或者Visual Studio等。 - 安装libevent库,可以从官网下载源码编译安装,也可以从第三方网站下载预编译的版本。 - 安装libfastcommon库,可以从GitHub上下载源码编译安装。 2. 下载FastDFS源码: - 从FastDFS官方网站下载最新版本的源码压缩包,解压到本地。 3. 编译FastDFS: - 打开命令行界面(如cmd),进入FastDFS源码目录。 - 执行命令`make`编译FastDFS。 - 执行命令`make install`安装FastDFS。 4. 配置FastDFS: - 进入FastDFS安装目录,编辑`tracker.conf`和`storage.conf`配置文件。 - 根据实际需求修改配置参数,如Tracker服务器IP、端口等。 - 配置存储节点的IP、端口、存储路径等信息。 - 保存配置文件并退出。 5. 启动FastDFS: - 执行命令`trackerd start`启动Tracker服务器。 - 执行命令`storaged start`启动存储服务器。 6. 测试FastDFS: - 使用FastDFS提供的命令行工具或者API进行文件上传、下载等操作,验证FastDFS是否正常运行。 请注意,FastDFS是一个基于Linux的分布式文件系统,官方并没有提供Windows下的官方支持。上述步骤是通过在Windows环境下安装依赖库以及编译源码来实现的。在Windows环境下使用FastDFS可能会遇到一些兼容性或者功能限制的问题,建议在Linux环境下部署和使用FastDFS以获得更好的稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值