iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot2中怎么利用FastDFS 中间件实现文件分布式管理
  • 219
分享到

SpringBoot2中怎么利用FastDFS 中间件实现文件分布式管理

2023-06-02 12:06:23 219人浏览 泡泡鱼
摘要

本篇文章给大家分享的是有关SpringBoot2中怎么利用FastDFS 中间件实现文件分布式管理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、FastDFS作用FastD

本篇文章给大家分享的是有关SpringBoot2中怎么利用FastDFS 中间件实现文件分布式管理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1、FastDFS作用

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件上传、文件下载等,解决了大容量存储和负载均衡的问题。

安装连接:

FastDFS安装流程和配置详解

2、核心角色

FastDFS是由跟踪服务器(trackerserver)、存储服务器(storageserver)和客户端(client)三个部分组成。

1)跟踪服务器

FastDFS的协调者,负责管理所有的storage server和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group到[storage server list]的映射表。

2)存储服务器

以组(group)为单位,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。

3)客户端

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

3、运转流程

1、存储服务定时向跟踪服务上传状态信息;2、客户端发起请求;3、跟踪器同步存储器状态,返回存储服务端口和IP;4、客户端执行文件操作(上传,下载)等。

二、与springBoot2整合

1、核心步骤

1)、配置FastDFS执行环境2)、文件上传配置3)、整合swagger2测试接口

2、核心依赖

<!-- FastDFS依赖 --><dependency>    <groupId>com.GitHub.tobato</groupId>    <artifactId>fastdfs-client</artifactId>    <version>1.26.5</version></dependency><!-- Swagger2 核心依赖 --><dependency>    <groupId>io.springfox</groupId>    <artifactId>springfox-swagger2</artifactId>    <version>2.6.1</version></dependency><dependency>    <groupId>io.springfox</groupId>    <artifactId>springfox-swagger-ui</artifactId>    <version>2.6.1</version></dependency>

3、配置FastDFS

0) 核心配置文件

fdfs:  # 链接超时  connect-timeout: 60  # 读取时间  so-timeout: 60  # 生成缩略图参数  thumb-image:    width: 150    height: 150  tracker-list: 192.168.72.130:22122

1) 核心配置类

@Configuration@Import(FdfsClientConfig.class)// Jmx重复注册bean的问题@EnableMBeanExport(reGIStration = RegistrationPolicy.IGNORE_EXISTING)public class DfsConfig {}

2)文件工具

@Componentpublic class FileDfsUtil {    private static final Logger LOGGER = LoggerFactory.getLogger(FileDfsUtil.class);    @Resource    private FastFileStorageClient storageClient ;        public String upload(MultipartFile multipartFile) throws Exception{        String originalFilename = multipartFile.getOriginalFilename().                                  substring(multipartFile.getOriginalFilename().                                  lastIndexOf(".") + 1);        StorePath storePath = this.storageClient.uploadImageAndCrtThumbImage(                              multipartFile.getInputStream(),                              multipartFile.getSize(),originalFilename , null);        return storePath.getFullPath() ;    }        public void deleteFile(String fileUrl) {        if (StringUtils.isEmpty(fileUrl)) {            LOGGER.info("fileUrl == >>文件路径为空...");            return;        }        try {            StorePath storePath = StorePath.parseFromUrl(fileUrl);            storageClient.deleteFile(storePath.getGroup(), storePath.getPath());        } catch (Exception e) {            LOGGER.info(e.getMessage());        }    }}

4、文件上传配置

spring:  application:    name: ware-fast-dfs  servlet:    multipart:      enabled: true      max-file-size: 10MB      max-request-size: 20MB

5、配置Swagger2

主要用来生成文件上传的测试界面。

1)配置代码类

@Configurationpublic class SwaggerConfig {    @Bean    public Docket createRestapi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.basePackage("com.fast.dfs"))                .paths(PathSelectors.any())                .build();    }    private ApiInfo apiInfo() {        return new ApiInfoBuilder()                .title("SpringBoot利用Swagger构建API文档")                .description("使用RestFul风格, 创建人:知了一笑")                .termsOfServiceUrl("https://github.com/cicadasmile")                .version("version 1.0")                .build();    }}

2)启动类注解

@EnableSwagger2

三、演示案例

1、接口代码

@RestControllerpublic class FileController {    @Resource    private FileDfsUtil fileDfsUtil ;        @ApiOperation(value="上传文件", notes="测试FastDFS文件上传")    @RequestMapping(value = "/uploadFile",headers="content-type=multipart/fORM-data", method = RequestMethod.POST)    public ResponseEntity<String> uploadFile (@RequestParam("file") MultipartFile file){        String result ;        try{            String path = fileDfsUtil.upload(file) ;            if (!StringUtils.isEmpty(path)){                result = path ;            } else {                result = "上传失败" ;            }        } catch (Exception e){            e.printStackTrace() ;            result = "服务异常" ;        }        return ResponseEntity.ok(result);    }        @RequestMapping(value = "/deleteByPath", method = RequestMethod.GET)    public ResponseEntity<String> deleteByPath (){        String filePathName = "group1/M00/00/00/wKhIgl0n4AKABxQEABhlMYw_3Lo825.png" ;        fileDfsUtil.deleteFile(filePathName);        return ResponseEntity.ok("SUCCESS") ;    }}

2、执行流程

1、访问Http://localhost:7010/swagger-ui.html测试界面2、调用文件上传接口,拿到文件在FastDFS服务的路径3、浏览器访问:https://file.lsjlt.com/upload/202306/01/t0en5xdvd0o.jpg4、调用删除接口,删除服务器上图片5、清空浏览器缓存,再次访问图片Url,回返回404

以上就是SpringBoot2中怎么利用FastDFS 中间件实现文件分布式管理,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: SpringBoot2中怎么利用FastDFS 中间件实现文件分布式管理

本文链接: https://www.lsjlt.com/news/230007.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot2中怎么利用FastDFS 中间件实现文件分布式管理
    本篇文章给大家分享的是有关SpringBoot2中怎么利用FastDFS 中间件实现文件分布式管理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、FastDFS作用FastD...
    99+
    2023-06-02
  • Python中如何实现分布式文件管理?
    在现代互联网时代,数据已经成为企业和个人的重要资产。为了有效地管理这些数据,分布式文件管理已经成为了一种越来越受欢迎的解决方案。在这篇文章中,我们将介绍如何使用Python来实现分布式文件管理。 什么是分布式文件管理? 分布式文件管理...
    99+
    2023-09-29
    分布式 文件 django
  • 分布式文件系统FastDFS的原理是什么
    今天就跟大家聊聊有关分布式文件系统FastDFS的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是FastDFS?FastDFS是一个开源的轻量级分布式文件系统。它解决...
    99+
    2023-06-16
  • SpringBoot2中怎么利用Zookeeper组件管理架构中服务协调
    SpringBoot2中怎么利用Zookeeper组件管理架构中服务协调,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、Zookeeper基础简介1、概念简介Zookeepe...
    99+
    2023-06-02
  • SpringBoot2 中怎么利用Redis数据库实现缓存管理
    SpringBoot2 中怎么利用Redis数据库实现缓存管理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、Redis简介Spring Boot中除了对常用...
    99+
    2023-06-02
  • 如何利用Redis实现分布式文件存储
    如何利用Redis实现分布式文件存储在分布式系统中,大规模的文件存储是一个常见的需求。Redis作为一个高性能的缓存和存储系统,具有快速、可靠和可扩展的特点,非常适合用来实现分布式文件存储。本文将介绍如何利用Redis实现分布式文件存储,并...
    99+
    2023-11-07
    分布式 redis 文件存储
  • 利用Redis实现分布式会话管理
    利用Redis实现分布式会话管理随着互联网的发展,分布式系统已经成为了现代化系统架构中的重要组成部分之一。而在分布式系统中,会话管理一直是一个重要的课题。传统的会话管理往往借助于本地内存或数据库来存储会话数据,但这些方式在分布式环境下无法满...
    99+
    2023-11-07
    管理 redis 分布式会话
  • 利用Redis实现分布式配置管理
    利用Redis实现分布式配置管理背景介绍随着互联网应用和系统规模的不断扩大,分布式配置管理变得愈发重要。分布式配置管理有利于统一管理系统中的配置信息,相较于传统的配置文件管理,其能够提供更好的扩展性、灵活性和实时性。本文将介绍如何利用Red...
    99+
    2023-11-08
    分布式 redis 配置管理
  • PHP中怎么实现文件管理
    PHP中怎么实现文件管理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。PHP文件管理1.上传和解压代码< php  exec(&quo...
    99+
    2023-06-17
  • 如何利用 Python 分布式框架实现高效文件处理?
    Python 是一种广泛使用的编程语言,它具有简单易学、可扩展性强、跨平台等优点。在大数据处理领域,Python 也有着广泛的应用。随着数据量的不断增大,传统的单机处理方式已经无法满足需求,分布式处理成为了必然选择。本文将介绍如何利用 Py...
    99+
    2023-10-14
    分布式 框架 文件
  • java中怎么利用mongodb实现分布式锁
    今天就跟大家聊聊有关java中怎么利用mongodb实现分布式锁,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。原理 通过线程安全findAndModify 实现锁实现 定义...
    99+
    2023-06-20
  • 分布式系统消息中间件RabbitMQ怎么用
    这篇文章主要为大家展示了“分布式系统消息中间件RabbitMQ怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“分布式系统消息中间件RabbitMQ怎么用”这篇文章吧。前言:这篇文章主要总结一...
    99+
    2023-06-02
  • Redis中怎么利用Redlock实现分布式锁
    Redis中怎么利用Redlock实现分布式锁,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。普通实现说道Redis分布式锁大部分人都会想到:setnx+lua,或者知道se...
    99+
    2023-06-20
  • 分布式文件管理系统:Python和Apache的开源实现?
    随着云计算和大数据的快速发展,分布式文件管理系统成为了一个备受关注的话题。在这个领域,Python和Apache都提供了众多的开源实现,让我们一起来探究一下。 Python实现 Python是一门非常流行的编程语言,它的语法简洁而优雅...
    99+
    2023-07-31
    apache 文件 分布式
  • Python如何在Apache环境下实现分布式文件管理?
    随着互联网的发展,越来越多的企业和个人开始使用云存储来存储和管理文件。然而,对于一些中小型的企业或个人来说,云存储的成本可能比较高,因此他们更希望通过自己的服务器来进行文件管理。而在这种情况下,分布式文件管理就显得尤为重要。本文将介绍如何...
    99+
    2023-07-31
    apache 文件 分布式
  • 如何利用Redis实现分布式事务管理
    如何利用Redis实现分布式事务管理引言:随着互联网的快速发展,分布式系统的使用越来越广泛。在分布式系统中,事务管理是一项重要的挑战。传统的事务管理方式在分布式系统中难以实现,并且效率低下。而利用Redis的特性,我们可以轻松地实现分布式事...
    99+
    2023-11-07
    管理 redis 分布式事务
  • 怎么在MySQL中利用DB实现分布式锁
    怎么在MySQL中利用DB实现分布式锁?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。表设计首先要明确DB在系统中仍然需要认为是最脆弱的一环,因...
    99+
    2024-04-02
  • Spring Boot中怎么利用Redis实现分布式锁
    Spring Boot中怎么利用Redis实现分布式锁,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。分布式锁介绍Spring Boot 实现 Redis 分布式锁在 sprin...
    99+
    2023-06-16
  • SpringBoot2如何整合Sharding-Jdbc中间件实现数据分库分表
    小编给大家分享一下SpringBoot2如何整合Sharding-Jdbc中间件实现数据分库分表,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、水平分割1、水平分库1)、概念:以字段为依据,按照一定策略,将一个库中的数据...
    99+
    2023-06-02
  • PHP中利用Redis实现分布式锁
    随着互联网的快速发展,网站访问量的急剧增加,分布式系统的重要性也逐渐凸显出来。在分布式系统中,不可避免地涉及到并发同步以及数据一致性的问题。而分布式锁,作为一种解决并发同步问题的手段,也逐渐被广泛应用于分布式系统中。在PHP中,可以利用Re...
    99+
    2023-05-15
    PHP redis 分布式锁
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作