changgou-day02

目标

  • 理解系统中的问题
  • Fastdfs是什么
  • fastdfs对比七牛
  • 掌握fastdfs的架构
  • 使用docker安装(可以不用配置了)
  • 掌握changgou的图片处理的解决方案(掌握)
  • 掌握fastdfs的使用(图片上传的功能)(掌握)
  • 抽取通用的controller service dao (尽量掌握)

    1 系统中的文件存储的问题

    1. 1.海量图片存储
    2. 2.线性扩容的问题
    3. 3.高性能
    4. 4.集群部署 高可用的问题。
    5. 5.安全
    6. 使用fastdfs可以解决以上的问题。

    2 fastdfs

    1. 是一个高性能的 高可用 线性扩容的 分布式文件系统。用来存储和解决大容量存储 和高性能的图片存储的问题。
    对比:
    1. 阿里云OSS存储:收费 稳定性能有专业的人支持 稳定性好 防盗链等现有的解决方案 数据安全相对的。
    2. 七牛: 收费 稳定性能有专业的人支持 稳定性好 防盗链等现有的解决方案 数据安全相对的。
    3. fastdfs: 开源 稳定性看开发人员 需要自己实现。 数据安全性高。

    3 畅购的图片的解决方案

    changgou-day02 - 图1
    1. 1.独立成一个具体无关业务的文件微服务
    2. 2.其他的业务微服务 通过feign进行调用实现业务
    3. 好处:
    4. + 解耦合
    5. + 扩展维护方便
    6. + 提升机器的利用率 降低成本
    总结:

    4 安装

    changgou-day02 - 图2
    changgou-day02 - 图3

    5 图片上传的功能实现

    changgou-day02 - 图4
    1. 1.前端点击上传按钮,发送一个请求
    2. 2.将文件本身作为流传递给后台微服务
    3. 3.微服务接收到流之后,进行存储变成字节数组 调用fastdfs的工具类将图片上传给fastdfs服务端即可
    参考springmvc上传图片的过程:
    1. 1.在前端创建一个form 表单 设置enctype="mult-part/form-data"
    2. 2.创建一个typefile类型 指定文件对象<input type="file" name="file">
    3. 3.后台写一个controller 接收请求 获取文件的字节数组 将字节数组存储到某一个地方(通过写流输出到磁盘中)
    4. 4.需要加入common-file-upload.jar
    5. 5.配置多媒体解析器
    使用springboot结合fastdfs上传图片:
    1. 1.在前端创建一个form 表单 设置enctype="mult-part/form-data"
    2. 2.创建一个typefile类型 指定文件对象<input type="file" name="file">
    3. -------------------以上 前端进行模拟----------------------------
    4. 3.后台写一个controller 接收请求 获取文件的字节数组 将字节数组存储到某一个地方 fastdfs工具类上传到fastdfs
    5. 4.需要加入common-file-upload.jar(默认已经加入了)
    6. 5.配置多媒体解析器 需要在yaml中进行配置
    图片上传的请求:
    changgou-day02 - 图5
    1. 请求 /upload
    2. 参数: 文件 MultPartFile 来接收 参数的名称也是file
    3. 返回值:图片的路径 例如:http://192.168.211.132:8080/group1/M00/00/00/wKjThF_jJ0iAXz7wAAAl8vdCW2Y421.png