深入理解 TiDB Placement Rules 功能的应用与优化
597
2023-10-20
关于分布式文件系统存储的功能要求
旨在解决业务针对海量文件存取及大规模并发访问需要,同时兼顾可靠性、水平伸缩、硬件容错等要求。
海量存储能力:需要支持PB 级存储能力;硬件错误:提供硬件故障容忍,并不影响系统正常使用;
访问协议:提供FTP、REST 和专用API 等多种访问方式;
文件访问:提供文件的创建、打开、读取、写入、删除等操作;
数据高可靠性:具备多副本或者类似的机制,保证数据不丢失;
数据压缩存储能力:提供压缩方式的数据存储能力;负载均衡:提供自动保持各节点的数据存储均衡能力;
水平伸缩:具备通过添加或减少服务器来扩容或缩容;访问负载均衡:数据访问服务化,并支持负载均衡;
基于FastDFS实现分布式存储的上传下载等操作,并将程序封装成工具类方便直接使用。整体项目实现分解成下文5个步骤。
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、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、将fastdfs-client.properties配置文件放置于引用项目的resource目录下
4、如下图,在项目中可直接通过FastDFSClient工具类调用所用的方法
5、项目中上传文件后使用的效果,由前端页面上传文件,至此项目实现分布式存储。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。