FastDFS的应用(一)常用架构设计

FastDFS的应用

第一章FastDFS的介绍和常用的架构

最近公司想要给内网使用的系统搭建一套静态资源服务,要求能够海量存储数据,并且能够快速检索,支持f分布式集群部署,主从备份等特性;并且支持文件的断点传输,文件的合并存储,碎片管理;旭之前没有接触太多关于相关的中间件;但是公司在选型上已经定了FastDFS,于是旭开始了大量学习和搭建,过程也有了不少的体会,最后搭建出了符合公司业务场景使用的文件管理服务;最近有时间把过程中的东西整理一下。旭学任何东西都有一个习惯2w1h what why how。

什么是FastDFS

基于C语言开发的一项开源轻量级分布式文件系统,基于文件进行管理,能够实现:文件存储,文件同步,文件访问等功能性服务;解决了大容量存储和负载均衡的问题;FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
关键字:
1.tracker:跟踪器 用来解决调度工作,起到负载均衡和分流的作用
2.storage:存储节点,采用了分卷(或分组)的组织方式
3. client:fastDFS客户端(我觉得这个不太好用,我是用nginx和java服务来替代的)

为什么使用FastDFS

以上是人们对FastDFS最常用的描述了。我i的理解fastDFS为甚么会受到大量的使用和推崇,因为它很好的解决了互联网场景下的几个痛点问题:
1.分布式文件系统,支持集群部署,分布式意味着不受限于物理机和虚拟机的瓶颈的影响,能够把性能瓶颈分摊到集群节点;把 存储分散到各个集群节点解决海量存储的问题;能够很好很容易很靠谱的进行线性扩容这点非常重要,这样使用者可以根据使用量快速靠谱的进行按需扩容和收缩;
2.支持主从备份,这意味着不再担心文件的丢失和单个节点损坏带来的损失;
3.对于面向C端的互联网产品用户,流量就是上帝,能够支持海量用户的访问,并且速度和稳定性经的起考验这点非常重要;fastDFS的从设计上考虑到这点,非常注重高可用,负载均衡这一点。(tracker)能够把流量很均匀的分配到各个节点(storage),一个节点挂了能够完全无感知的切换到另外一个服务。

FastDFS 常用的架构

理论不讲太多直接讲下我的实践:在实践中我使用设计了三套架构方案:

组件说明:

名称 说明
centos 7.x(安装系统)
libfastcommon FastDFS分离出的一些公用函数包
FastDFS FastDFS
fastdfs-nginx-module nginx 1.12.2(CentOS 7 下YUM可以安装的最新版本)

单机版架构:
在这里插入图片描述

服务 ip 端口 组件 备注
tracker 172.16.6.1 22122 FastDFS,libfastcommon /usr/local/tracker
storage 172.16.6.1 23000 FastDFS,libfastcommon,nginx,fastdfs-nginx-module 数据:/home/dfs/storage 安装:/usr/local/storage
nginx 172.16.6.1 80 nginx /usr/local/nginx

单机版集群:
在这里插入图片描述

服务 ip 端口 组件 备注
tracker1 172.16.6.1 22122 FastDFS,libfastcommon /usr/local/tracker
tracker2 172.16.6.1 22123 FastDFS,libfastcommon /usr/local/tracker
storage1 172.16.6.1 23000 FastDFS,libfastcommon,nginx,fastdfs-nginx-module 数据:/home/dfs/storage1 安装:/usr/local/storage
storage2 172.16.6.1 23001 FastDFS,libfastcommon,nginx,fastdfs-nginx-module 数据:/home/dfs/storage2 安装:/usr/local/storage
nginx 172.16.6.1 80 nginx /usr/local/nginx

多服务集群版:
在这里插入图片描述

服务 ip 端口 组件 备注
tracker1 172.16.6.157 22122 FastDFS,libfastcommon 安装:/usr/local/src/fdfs/tracker,数据:/home/project/fdfs/tracker,配置:/etc/fdfs/tracker.conf
tracker2 172.16.6.158 22122 FastDFS,libfastcommon 安装:/usr/local/src/fdfs/tracker,数据:/home/project/fdfs/tracker,配置:/etc/fdfs/tracker.conf
storage1 172.16.6.159 23000 FastDFS,libfastcommon,nginx,fastdfs-nginx-module 数据:/home/project/fdfs/storage 安装:/usr/local/fdfs/storage,配置:/etc/fdfs/storage.conf
storage2 172.16.6.161 23000 FastDFS,libfastcommon,nginx,fastdfs-nginx-module 数据:/home/project/fdfs/storage 安装:/usr/local/fdfs/storage,配置:/etc/fdfs/storage.conf
nginx1 172.16.6.159 80 nginx,keepalive,fastdfs-nginx-module /usr/local/nginx,/etc/keepalive/keepalive.conf
nginx2 172.16.6.161 80 nginx,keepalive,fastdfs-nginx-module /usr/local/nginx,/etc/keepalive/keepalive.conf
VIP 172.16.6.180 80 nginx /usr/local/nginx

总结:

上面是针对不同的场景使用的搭建服务,如果只是想先尝试体验下fastDFS的话可以使用第一套单机版,来了解下fastDFS
如果要投入到生产使用,如果只是一个小型的系统单机集群也是可以满足的。如果是针对大型的互联网产品可以使用第三套多服务集群,当然这个只是一种思路还有,真正要到大型商用的话这个方案还要做很多的调整比如灾备方案,多机房问题等。
下一章将会提供详细的部署文档。

发布了4 篇原创文章 · 获赞 3 · 访问量 383

猜你喜欢

转载自blog.csdn.net/dengzisheng/article/details/104819361
今日推荐