当前位置:网站首页>day9 FastDFS
day9 FastDFS
2022-08-08 21:02:00 【牛板筋不筋】
FastDFS是由淘宝的余庆先生所开发的一个轻量级、高性能的开源分布式文件系统。用纯C语言开发,功能丰富:
文件存储
文件同步
文件访问(上传、下载)
存取负载均衡
在线扩容
架构图
上传和下载流程
安装流程:
1.实现图片上传
1.1.搭建项目(重新搭建ly-upload微服务)
1.1.1.创建module
1.1.2.依赖
我们需要EurekaClient和web依赖:
1.1.3.编写配置
1.1.4.启动类
1.2.编写上传功能
1.2.1.controller
编写controller需要知道4个内容:
请求方式:上传肯定是POST
请求路径:/upload/image
请求参数:文件,参数名是file,SpringMVC会封装为一个接口:MultipleFile
返回结果:上传成功后得到的文件的url路径
1.2.2.service
在上传文件过程中,我们需要对上传的内容进行校验:
校验文件大小
校验文件的媒体类型
校验文件的内容
文件大小在Spring的配置文件中设置,因此已经会被校验,我们不用管。
这里有一个问题:为什么图片地址需要使用另外的url?、
图片不能保存在服务器内部,这样会对服务器产生额外的加载负担
一般静态资源都应该使用独立域名,这样访问静态资源时不会携带一些不必要的cookie,减小请求的数据量
1.2.3.测试上传
1.2.4.绕过网关
图片上传是文件的传输,如果也经过Zuul网关的代理,文件就会经过多次网路传输,造成不必要的网络负担。在高并发时,可能导致网络阻塞,Zuul网关不可用。这样我们的整个系统就瘫痪了。
所以,我们上传文件的请求就不经过网关来处理了。
1.2.4.1.Zuul的路由过滤
Zuul中提供了一个ignored-patterns属性,用来忽略不希望路由的URL路径,示例:
1.2.4.2.Nginx的rewrite指令
1.2.5.跨域问题
不过庆幸的是,这个错误已经不是第一次见了,跨域问题。
我们在upload-service中添加一个CorsFilter即可:
1.2.6.之前上传的缺陷
先思考一下,之前上传的功能,有没有什么问题?
上传本身没有任何问题,问题出在保存文件的方式,我们是保存在服务器机器,就会有下面的问题:
单机器存储,存储能力有限
无法进行水平扩展,因为多台机器的文件无法共享,会出现访问不到的情况
数据没有备份,有单点故障风险
并发能力差
这个时候,最好使用分布式文件存储来代替本地文件存储。
边栏推荐
猜你喜欢
The new library online | CnOpenDataA shares of the listed company basic information data
The new database is online | CnOpenData information transmission, software and information technology service industry basic information data of industrial and commercial registered enterprises
Flask 教程 第四章:数据库
GeoServer introductory learning: 05-Multi-level MBTiles specification data release
Bagging、Boosting、Stacking集成学习代码
SQL-堆叠注入(含例题)
2020-8-18js练习
GeoServer入门学习:02-安装部署
pytorch实现数据集读取/下载
【线性代数04】投影矩阵P和标准正交矩阵Q
随机推荐
[highcharts application - double pie chart]
编译原理——LL1分析程序实验(C#)
【带信息的Excel模板下载】
Kotlin-学习的第五天之Handler
[MEF]第04篇 MEF的多部件导入(ImportMany)和目录服务
【线性代数05】行列式的性质和应用
[MEF]第05篇 MEF的目录(Catalog)筛选
第06篇 MEF部件的生命周期(PartCreationPolicy)
【线性代数04】投影矩阵P和标准正交矩阵Q
第十三届蓝桥杯(Web 应用开发)线上模拟赛【第十题】(RESTful API 开发)
手机投影到deepin
目标检测论文 Bridng the Gap Between Anchor-based and Anchor-free Detection via ATSS
文档图像二值化DIB_paper_2(更新中...)
图像噪声水平估计INLE_paper
deepin系统入门记录
使用LBP特征进行图像分类
【浏览器打开导出的excel】
文档图像二值化DIB_database
[MEF] Chapter 04 MEF's Multi-Component Import (ImportMany) and Directory Services
Flask 教程 第八章:粉丝