文章内容输出来源:拉勾教育Java高薪训练营
学习心得
课程介绍
第四阶段 大型分布式存储系统架构进阶
模块四 轻量级分布式文件系统FastDFS、阿里云OSS云存储平台
本模块对分布式文件系统FastDFS集群架构与原理剖析,使用FastDFS+Nginx搭建高吞吐文件服务器,并对阿里云OSS云存储平台系统讲解。
作业内容
作业一:
搭建FastDFS图片服务器,通过http请求可以访问服务器中图片的动态压缩图。具体要求如下:
在Linux系统中安装FastDFS服务器
可以使用FastDFS自带的工具将文件上传到FastDFS,并可以通过http 访问到对应的图片
可以使用GraphicsMagick工具生成缩略图,通过http访问某个图片时,显示其对应的动态压缩图
作业要求:
提供Linux下的安装步骤文档
作业二:
使用SpringBoot和OSS实现图片的上传、下载和删除功能, 具体要求如下:
可以使用postman 发送上传请求 /oss/upload ,实现图片上传到OSS对应的Bucket中
类型检查:必须为 jpg、png 或者 jpeg类型,其它图片类型返回错误提示信息
大小检查:必须小于5M,大于5M时返回错误提示信息
图片名称:生成的文件名,必须保持唯一
可以使用postman 发送下载请求 /oss/download,实现图片下载
可以根据图片名进行文件的下载
可以使用postman 发送删除请求/oss/delete,实现图片删除
可以根据图片名进行文件的删除
1、提供资料:说明文档,验证及讲解视频。
2、讲解内容包含:题目分析、实现思路、环境介绍。
课程目录及观看建议
2倍速模式
- 课程:2小时
- 作业:5小时
***
必看
**
建议看
*
可不看
任务一:轻量级分布式文件系统FastDFS
1.FastDFS课程介绍(05:55)
2.FastDFS基础回顾(16:06)*
3.FastDFS环境搭建和测试(26:21)***
4.FastDFS和Nginx结合(21:54)***
5.Java访问FastDFS(32:53)
6.FastDFS架构详解(12:19)
7.FastDFS设计理念(09:35)
8.文件上传和下载功能原理(19:22)
9.文件同步、删除等功能原理(14:15)
10.FastDFS集群搭建和测试(33:52)
11.FastDFS配置和优化(25:55)
12.SpringBoot访问FastDFS集群(40:08)
13.FastDFS互联网应用实战方案(12:36)***
任务二:阿里云OSS云存储平台
1.OSS课程介绍(09:12)
2.OSS和自建服务器对比(10:06)
3.OSS应用场景和计量计费(09:00)
4.OSS云存储的概念(15:32)*
5.OSS基本功能(20:24)*
6.URL规则防盗链和自定义域名(19:53)
7.日志记录(15:26)
8.权限控制(13:22)
9.OSS开放接口(12:17)
10.错误响应码(09:46)
11.Java访问OSS(21:39)***
12.SpringBoot访问OSS(37:06)***
13.数据处理和CDN(18:14)
注意事项
- 作业一:
软件版本
FastDFS 5.11
Nginx 1.15.6
fastdfs-nginx-module 1.20
ngx_devel_kit 0.3.0
lua-nginx-module 0.10.9rc7
LuaJIT 2.0.4
GraphicsMagick 1.3.35
- FastDFS和GraphicsMagick安装流程见参考资料1、2
- 相关软件版本问题,尤其是
lua-nginx-module 0.10.9rc7
,否则会出现各种问题。详情见参考资料3。 - 动态压缩需要配置nginx路由。详情见参考资料4。
参考资料
如何安装nginx_lua_module模块,升级nginx,nginx-lua-fastdfs-GraphicsMagick动态生成缩略图,实现图片自动裁剪缩放
nginx-lua-fastdfs-GraphicsMagick安装
nginx 中添加 lua 模块,支持lua脚本以及遇到的坑
Nginx+Lua+GraphicsMagick实现图片自动裁剪/缩放、以及定时清理生成的缩略图
- 作业二:
软件版本
JDK 11
Spring Boot 2.3.1.RELEASE
Spring Boot Web
Aliyun Oss Sdk 3.10.2
- 缺少相关类库包
java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
JAXB API是java EE 的API,因此在java SE 9.0 中不再包含这个 Jar 包。
java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包,而在 java6、7、8时关于这个API 都是捆绑在一起的。
两种解决方案:
a. 将jdk降为8
b. 引入JAXB API依赖(推荐)
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>3.0.0-M4</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>3.0.0-M4</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
- 文件上传大小限制
默认1M,需要设置成10M,便于超过5M时提示错误信息。注意Spring Boot版本不同,配置也不同。以下为2.0以上:
spring:
servlet:
multipart:
enabled: true
max-file-size: 10MB
max-request-size: 10MB