网站文件系统发展分布式文件系统fastDFS

news/2024/5/12 15:25:25/文章来源:https://blog.csdn.net/weixin_34395205/article/details/93584552

 

网站文件系统发展

 

1、单机时代的图片服务器架构

   初创时期由于时间紧迫,开发人员水平也很有限等原因。所以通常就直接在website文件所在的目录下,建立1upload子目录,用于保存用户上传的图片文件。如果按业务再细分,可以在upload目录下再建立不同的子目录来区分。例如:upload\QA,upload\Face

优点:实现起来最简单,无需任何复杂技术,就能成功将用户上传的文件写入指定目录。保存数据库记录和访问起来倒是也很方便。

缺点:上传方式混乱,严重不利于网站的扩展。

 

2、单独立文件服务器

   随着公司的业务不断的发展,将服务和文件放在同一服务器下面的弊端越来越明显;这个时候就该上线独立的图片服务器系统;通过ftp或者ssh工具将文件上传到图片服务器的某个目录下面,在通过ngnix或者apache服务器来做图片的访问,给图片服务器配置独立的子域名,例如 img.xx.com。在业务处理文件时通过ftp或者ssh将文件上传到文件服务器,返回给程序一个独立域名的图片url地址,网站正常访问的时候就通过这个URL地址来访问文件。

优点:图片访问是很消耗服务器资源的(因为会涉及到操作系统的上下文切换和磁盘I/O操作)。分离出来后,Web/App服务器可以更专注发挥动态处理的能力;独立存储,更方便做扩容、容灾和数据迁移;方便做图片访问请求的负载均衡,方便应用各种缓存策略(HTTP HeaderProxy Cache等),也更加方便迁移到CDN

缺点单机存在性能瓶颈,容灾、垂直扩展性稍差

 

3、分布式文件系统

   业务继续发展,单独单台的服务器存储和响应也很快到达了瓶颈,新的业务要求,文件访问高响应性,高可用性来响应业务对系统的要求。分布式文件系统,一般分为三块内容来配合,服务的存储、访问的仲裁系统,文件存储系统,文件的容灾系统来构成,总裁系统相当于文件服务器的大脑,根据一定的算法来决定文件存储的位置,文件存储系统负责报错文件,容灾系统负责文件系统和自己的相互备份。

优点:扩展能力: 毫无疑问,扩展能力是一个分布式文件系统最重要的特点;高可用性: 在分布式文件系统中,高可用性包含两层,一是整个文件系统的可用性,二是数据的完整和一致性;弹性存储: 可以根据业务需要灵活地增加或缩减数据存储以及增删存储池中的资源,而不需要中断系统运行

缺点系统复杂度稍高,需要更多服务器

 

 

分布式文件系统fastDFS

1、什么是FastDFS

FastDFS是一个开源的轻量级分布式文件系统。它解决了大数据量存储和负载均衡等问题。特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务,如相册网站、视频网站等等。在UC基于FastDFS开发向用户提供了:网盘,社区,广告和应用下载等业务的存储服务。

 

2、FastDFS架构和原理

FastDFS服务端有三个角色:跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)。

tracker server:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,是客户端和数据服务器交互的枢纽。相比GFS中的master更为精简,不记录文件索引信息,占用的内存量很少。

storage server:存储服务器(又称:存储节点或数据服务器),文件和文件属性(meta data)都保存到存储服务器上。Storage server直接利用OS的文件系统调用管理文件。

client:客户端,作为业务请求的发起方,通过专有接口,使用TCP/IP协议与跟踪器服务器或存储节点进行数据交互。

FastDFS架构图1_thumb[9]

 

Tracker相当于FastDFS的大脑,不论是上传还是下载都是通过tracker来分配资源;客户端一般可以使用ngnix等静态服务器来调用或者做一部分的缓存;存储服务器内部分为卷(或者叫做组),卷于卷之间是平行的关系,可以根据资源的时候情况随时增加,卷内服务器文件相互同步备份,以达到容灾的目的

 

上传机制

首先客户端请求Tracker服务获取到存储服务器的ip地址和端口,然后客户端根据返回的IP地址和端口号请求上传文件,存储服务器接收到请求后,生产文件file_id并且将文件内容写入磁盘返回给客户端file_id和路径信息、文件名,客户端保存相关信息上传完毕

下载机制

客户端带上文件名信息请求Tracker服务获取到存储服务器的ip地址和端口,然后客户端根据返回的IP地址和端口号请求下载文件,存储服务器接收到请求后返回文件给客户端。

 

 

3、如何搭建fastDFS

请参考以下文章

FastDFS + Nginx 反向代理缓存 安装与配置

地址:http://www.linux178.com/storage/fastdfs-nginx-cache.html

 

4、使用java调用fastDFS

以下代码是一个spring mvc中一个完整的上传请求

    @RequestMapping(value = "/upload", method = RequestMethod.POST)@ResponseBodypublic Object upload(@RequestParam MultipartFile file) {UploadResponse res = new UploadResponse();try {if(file.isEmpty()){res.setRet_code(UserCodeEnum.ERR_FILE_NULL.getCode());res.setRet_msg(UserCodeEnum.ERR_FILE_NULL.getDesc());}else{logger.info("UserController-upload-request-file=" + file.getOriginalFilename());String tempFileName = file.getOriginalFilename();//fastDFS方式ClassPathResource cpr = new ClassPathResource("fdfs_client.conf");ClientGlobal.init(cpr.getClassLoader().getResource("fdfs_client.conf").getPath());byte[] fileBuff = file.getBytes();String fileId = "";String fileExtName = tempFileName.substring(tempFileName.lastIndexOf("."));//建立连接TrackerClient tracker = new TrackerClient();TrackerServer trackerServer = tracker.getConnection();StorageServer storageServer = null;StorageClient1 client = new StorageClient1(trackerServer, storageServer);//设置元信息NameValuePair[] metaList = new NameValuePair[3];metaList[0] = new NameValuePair("fileName", tempFileName);metaList[1] = new NameValuePair("fileExtName", fileExtName);metaList[2] = new NameValuePair("fileLength", String.valueOf(file.getSize()));//上传文件fileId = client.upload_file1(fileBuff, fileExtName, metaList);res.setHead_img(UserConstants.FILE_IMG_URL+fileId);res.setRet_code(UserCodeEnum.SUCCESS.getCode());res.setRet_msg(UserCodeEnum.SUCCESS.getDesc());}logger.info("UserController-upload-response-" + JsonUtils.o2j(res));} catch (Exception e) {res.setRet_code(UserCodeEnum.ERR_UNKNOWN.getCode());res.setRet_msg(UserCodeEnum.ERR_UNKNOWN.getDesc());logger.error("UserController-upload-error", e);}return res;}

fastDFS java客户端配置文件fdfs_client.conf配置如下:

connect_timeout = 30
network_timeout = 60
charset = ISO8859-1
http.tracker_http_port = 8090
http.anti_steal_token = no
http.secret_key = 123456tracker_server = 192.168.11.***:22122

 

参考:

http://blog.chinaunix.net/uid-20196318-id-4058561.html

http://tech.uc.cn/?p=221

 

转载于:https://www.cnblogs.com/ityouknow/p/5344857.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_741481.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

奇奇seo优化软件_seo快速优化软件怎么推

怎么推sexaa0c1o快速优化软件&#xff0c;这个互联网时代&#xff0c;谁也不愿意在网络上缺席&#xff0c;企业商家更不愿意放弃网络这个巨大的宣传渠道&#xff0c;他们纷纷在网络上建立自己的企业网站&#xff0c;并且对网站进行多种优化&#xff0c;获取更多的流量&#xff…

python脚本根据cookies自动登录网站_Python爬虫连载6-cookie深入使用实例化实现自动登录...

一、使用cookie登录 1.直接把cookie复制下去&#xff0c;然后手动放到请求头 2.http模块包含一些关于cookie的模块&#xff0c;通过他们我们可以自动使用cookie &#xff08;1&#xff09;cookieJar 管理存储cookie&#xff0c;向传出的http请求添加cookie&#xff1b;cookie存…

每个人都可以学会WordPress建站

Step by Step 快速 简单明了 低成本 不管你建站的目的是做一个企业的官网还是个人生活记录或展示&#xff0c;或者利用网站来赚钱&#xff0c;采用Wordpress建站是最佳选择&#xff08;据统计&#xff0c;全球网站差不多25%的网站都是采用wordpress&#xff0c;实在了不起&am…

网站图片优化的十五个原则

现在的网站大量的使用图片&#xff0c;那么这些图片如何优化才好呢?1)在网站设计之初&#xff0c;就先要做好规划&#xff0c;比如背景图片如何使用等等&#xff0c;做到心中有数。2)编辑图片的时候&#xff0c;要做好裁剪&#xff0c;之展示必要的&#xff0c;重要的&#xf…

python 利用Beautifulsoup爬取笑话网站

2019独角兽企业重金招聘Python工程师标准>>> 利用Beautifulsoup爬取知名笑话网站 首先我们来看看需要爬取的网站&#xff1a;http://xiaohua.zol.com.cn/ 1.开始前准备 1.1 python3&#xff0c;本篇博客内容采用python3来写&#xff0c;如果电脑上没有安装python3请…

服务器跑网站用nigx还是apache,Apache和IIS及nginx三大web服务器,新手站长该如何选择?...

网站上线时第一件事就是搭建运行环境&#xff0c;首先要选择的就在服务器上使用哪一个web服务器&#xff0c;现在win系统默认自带IIS而Linux则自带Apache&#xff0c;如果需要使用nginx则需要单独安装。困扰新手站长的就是web服务到底该使用哪一个&#xff0c;目前流行的3大web…

网站注册的域名服务器,网站域名注册和服务器

网站域名注册和服务器 内容精选换一换购买服务及配置特性时&#xff0c;操作步骤中未框选的配置项请保持默认值。申请服务时&#xff0c;未开通企业管理的用户页面无“企业项目”参数项&#xff0c;无需进行配置。如需开通企业项目&#xff0c;请参考如何开通企业项目/企业多账…

MOSS2007的网站和工作区

11.7 网站和工作区 在Microsoft Office Server 2007站点中&#xff0c;可使用顶级网站和子网站将网站内容划分为明确的、单独的可管理网站。顶级网站可以拥有多个子网站&#xff0c;而这些子网站自己也可以拥有多个子网站&#xff0c;可根据用户需要向下建设无限层次的子网站。…

如何使用Orchard搭建敏捷个人的网站(2)

在如何使用Orchard搭建敏捷个人的网站&#xff08;1&#xff09;中讲解了如何使用Orchard搭建一个简易的敏捷个人内容网站&#xff0c;第一篇主要讲解了如何下载安装主题、增加blog、制作菜单等&#xff0c;今天我们继续讲解一下如何增加搜索功能、增加自定义的内容类型以及显示…

12306订票候补是个坑_买票请认准12306!铁路部门:从未授权其他网站售票

春运首日的火车票已经可以在中国铁路官方APP铁路12306上购买。来源 网络截图华龙网-新重庆客户端12月16日14时30分讯(记者 姜念月)据成都铁路12306消息&#xff0c;2020年铁路春运为期为40天&#xff0c;其中节前为15天&#xff0c;节后25天&#xff0c;按照铁路春运火车票互联…

如何优化企业网站

大部分的中小企业网站却又都存在着这样的问题&#xff1a;网站新&#xff0c;内容少&#xff0c;缺少专业维护人员&#xff0c;这样的网站怎么样才能在互联网中生存下去呢?觉得对于中小企业网站的天生的劣势&#xff0c;我们就应该从各个细节上分析每个要点&#xff0c;这样才…

Arcgis更换布局模板_响应式网站作用+模板用法科普

随着移动端网站访问需求增加&#xff0c;“响应式网站”越来越受到用户欢迎。到底什么叫响应式网站呢&#xff1f;其实就是网站效果可以随着屏幕尺寸大小而自适应&#xff0c;不会发生变形、扭曲、缺失的现象。不管你是在使用手机、iPad&#xff0c;还是电脑&#xff0c;页面都…

全文搜索引擎有哪些?_五色时光教大家SEO搜索引擎优化方案

菜鸟请留言讨论&#xff0c;老鸟们请点评不足。谢谢最近开始了我的学习生涯—SEO搜索引擎优化的学习&#xff0c;之前看过很多的资料&#xff0c;也一直在学习&#xff0c;现在我的导师带着我一步一步的去学习&#xff0c;还给了我一个网站去实操&#xff0c;现在我总结了一下我…

刷网站关键字_毛刷厂的互联网营销之路——网站推广SEO篇

毛刷厂的互联网营销之路——网站推广SEO篇来源&#xff1a;安徽享搜互联科技有限公司官网谈起营销&#xff0c;若简单理解多数人想到的会是商品和渠道&#xff0c;营销的概念很广泛但不仅仅只限于上述两方面。目前国内大多数毛刷厂多是靠老客户介绍、业务员联系而来的订单&…

如何让网站打开更快第三弹--开启压缩篇

老鸟请直接看开启压缩进阶篇。菜鸟还是慢慢随着老夫的思路看吧&#xff0c;哇哈哈。什么是压缩&#xff1f;大家还记得我们第一次接触winzip软件吗&#xff1f;非常神奇&#xff0c;一个文件&#xff0c;经过winzip压缩后&#xff0c;大小可以压缩成原来的30%左右。记得当年&am…

Web设计师应该收藏的11个网站

今天&#xff0c;本文与大家分享11个Web设计师应该收藏的网站&#xff0c;这些都是我最喜爱的寻找设计灵感的网站。我很喜欢Dribbble&#xff0c;可以花很长的时间只是为了浏览网页&#xff0c;欣赏那些耀眼的设计&#xff0c;也很喜欢One Page Love&#xff0c;这是我见过的最…

腾讯云iis8.5新建网站无法访问_云服务器可以用来做什么?

随着云计算产业链的不断延伸&#xff0c;虚拟化、分布式、运维管理等技术渐趋发展成熟&#xff0c;高大上的云计算首次走向平民化&#xff0c;常态化&#xff0c;互联网企业上云已经不再是什么高门槛的技术&#xff0c;引发全民上云热潮&#xff01;云服务器作为云计算的重要衍…

百度收录支持ajax吗,百度收录网站的要求是什么?

提到百度收录的网站的要求&#xff0c;最开始我不得不说的就是搜索引擎爬虫的抓取。如果搜索引擎爬虫不能抓取你的网站&#xff0c;或者爬虫无法识别网页内容的话&#xff0c;那百度几乎不会收录你的网站了。爬虫抓取的可识别性在爬虫抓取网页时&#xff0c;如果根本不知道你的…

时尚的不仅仅是它们的服装,还有它们的网站设计

2019独角兽企业重金招聘Python工程师标准>>> 随着互联网的发展&#xff0c;越来越多的人选择甚至依赖于网上购物&#xff0c;“网店”已经成为时尚服装界的大生意。截止2017年&#xff0c;全球服装市场价值达3万亿美元&#xff0c;但不是那么容易就能做成在线的服装…