分布式存储是什么?分布式存储架构有哪些

Yanyan 343 2023-10-20

关于分布式文件系统存储的功能要求

分布式存储是什么?分布式存储架构有哪些

方法/步骤

  1. 旨在解决业务针对海量文件存取及大规模并发访问需要,同时兼顾可靠性、水平伸缩、硬件容错等要求。


  2. 海量存储能力:需要支持PB 级存储能力;硬件错误:提供硬件故障容忍,并不影响系统正常使用;


  3. 访问协议:提供FTP、REST 和专用API 等多种访问方式;


  4. 文件访问:提供文件的创建、打开、读取、写入、删除等操作;


  5. 数据高可靠性:具备多副本或者类似的机制,保证数据不丢失;


  6. 数据压缩存储能力:提供压缩方式的数据存储能力;负载均衡:提供自动保持各节点的数据存储均衡能力;


  7. 水平伸缩:具备通过添加或减少服务器来扩容或缩容;访问负载均衡:数据访问服务化,并支持负载均衡;


基于FastDFS实现分布式存储的上传下载等操作

基于FastDFS实现分布式存储的上传下载等操作,并将程序封装成工具类方便直接使用。整体项目实现分解成下文5个步骤。

工具/原料

  • IDEA
  • FastDFS

方法/步骤

  1. 1、在项目中添加依赖到Maven的pom文件

    <!-- fastdfs-client -->

    <dependency>

    <groupId>org.csource</groupId>

    <artifactId>fastdfs-client-java</artifactId>

    <version>1.27-SNAPSHOT</version>

    </dependency>

    <dependency>

    <groupId>commons-io</groupId>

    <artifactId>commons-io</artifactId>

    <version>2.4</version>

    </dependency>

  2. 2、FastDFS客户端工具类,已封装如下(方便直接使用),

    主要工具类方法:

    /**

    * @Description 文件存储上传客户端

    * @author javaer

    * @time 2020年5月30日 上午9:27:26

    */

    public class FastDFSClient {

      /**

       * MultipartFile 上传文件

       *

       * @param file  MultipartFile

       * @return 返回上传成功后的文件路径

       */

      public static String uploadFileWithMultipart(MultipartFile file) throws BusinessException {

         return upload(file, null);

      }

      /**

       * 以附件形式下载文件

       *

       * @param filepath  文件路径

       * @param response

       */

      public static void downloadFile(String filepath, HttpServletResponse response) throws BusinessException {

         download(filepath, null, null, response);

      }

    /**

    * 删除文件

    * @param filepath 文件路径

    * @return 删除成功返回 0, 失败返回其它

    */

    public static int deleteFile(String filepath) throws BusinessException {

    if (StringUtils.isBlank(filepath)) {

    throw new BusinessException(FileErrorCode.FILE_PATH_ISNULL.CODE);

    }

    TrackerServer trackerServer = TrackerServerPool.borrowObject();

    StorageClient1 storageClient = new StorageClient1(trackerServer, null);

    int success = 0;

    try {

    success = storageClient.delete_file1(filepath);

    if (success != 0) {

    throw new BusinessException(FileErrorCode.FILE_DELETE_FAILED.CODE);

    }

    } catch (IOException e) {

    e.printStackTrace();

    } catch (MyException e) {

    e.printStackTrace();

    throw new BusinessException(FileErrorCode.FILE_DELETE_FAILED.CODE);

    }

    // 返还对象

    TrackerServerPool.returnObject(trackerServer);

    return success;

    }

    }



  3. 3、将fastdfs-client.properties配置文件放置于引用项目的resource目录下


  4. 4、如下图,在项目中可直接通过FastDFSClient工具类调用所用的方法


  5. 5、项目中上传文件后使用的效果,由前端页面上传文件,至此项目实现分布式存储。




版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HTAP技术平台 - 下一代数据处理的终极解决方案
下一篇:什么是分布式数据存储,分布式数据架构
相关文章