FastDFS集群部署指南

Stella981
• 阅读 751

FastDFS server端有两个角色,tracker server和storage server。

   tracker server只管理集群拓扑数据,不会存储任何文件索引,因此tracker server对服务器的硬件配置要求较低。为了实现互备,tracker server通常两台就够了。tracker server占用资源较少,如果集群规模较小(比如只有一组storage server),可以复用storage server。

  storage server提供文件存储的IO密集型服务。FastDFS存储文件是直接基于操作系统的文件系统的,storage server的性能瓶颈通常表现为磁盘IO。为了充分利用磁盘IO,推荐不做RAID,直接挂载单块硬盘,每块硬盘mount为一个路径,作为storage server的一个store path。为了充分利用文件系统的cache以加快文件访问速度,推荐storage server配置较大内存,尤其存在众多热点文件的场合下。大量的IO吞吐也会消耗一定的CPU,因此storage server对CPU核数也有一定要求。

  为了相互备份,一个group的storage server通常有两台即可。如果对数据可靠性要求很苛刻,一个group可以有三台甚至更多storage server。因一个group内的storage server对文件采用冗余备份的RAID1方式,文件写入性能不会随storage server的增加而增加,理论上文件读取性能随着storage server的增加而线性增加。

   FastDFS client API方面,目前官方提供了C、PHP extension和Java的client API(github:happyfish100/fastdfs-client-java)。对于互联网应用,文件上传和删除等操作必须使用FastDFS client API,文件下载建议采用HTTP方式。推荐使用nginx扩展模块,每台storage server均需要部署nginx(github:happyfish100/fastdfs-nginx-module)。

  下面针对V3的小文件合并存储以及V4的storage server id(以id而不是IP来标识storage server)这两大特性给出使用建议。

  海量小文件场景,比如一个group存储的文件数可能上千万甚至上亿,建议使用文件合并存储特性,在tracker.conf中设置 use_trunk_file=1。因文件合并存储存在额外开销,如果一个group存储的文件数不超过一千万,就没有必要使用这个特性了。FastDFS支持一开始没有使用合并存储,后来觉得有需要再打开这个特性;反之也是可以的。

为了避免不必要的干扰以及安全考虑,建议使用storage server id方式。tracker.conf中设置 use_storage_id=1。并将storage server id、ip和分组配置到storage_ids.conf中。storage server一开始采用默认的IP标识方式运行,后面也可以切换到server id标识方式。反之(id方式切换到IP方式)则是开历史倒车存在隐患,不可取也没有必要这么做。

由上面两点可以看出FastDFS引以为傲的两个优势:架构稳定性和数据兼容性。FastDFS程序升级只需要覆盖程序即可,而数据兼容问题,FastDFS在代码中默默地完成了。FastDFS理论上可以从V1直接平滑升级到目前的V6,至少两个相邻的大版本间升级是无缝的(比如V4升级到V5,V5升级到V6)。

FastDFS的惯例是老版本不再维护,推荐大家使用FastDFS最新版本(当前版本v6.01)。请大家迈开步子,放心大胆地升级吧。

本文分享自微信公众号 - FastDFS分享与交流(fastdfs100)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
待兔 待兔
2个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
2年前
FastDFS tracker leader机制介绍
FastDFStrackerserver不保存文件索引,只保存集群拓扑信息。按照原始设计,FastDFS多台trackerserver是完全对等的,不存在主从关系。FastDFSv3.0开始支持文件合并存储,而trunk空间管理由一个group的一台storageserver兼任,我们把这一角色称作trunkserver。trunkserv
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
FastDFS
1.FastDFS是什么?FastDFS是分布式文件系统。使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。2.工作原理FastDFS架构包括Trackerserver和Storageserver。客户端请求Trackerserver进行文件上传、下载,通过Trackerser
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
8个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这