您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關SpringBoot2中怎么利用FastDFS 中間件實現文件分布式管理,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
FastDFS是一個開源的輕量級分布式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件上傳、文件下載等,解決了大容量存儲和負載均衡的問題。
安裝連接:
FastDFS安裝流程和配置詳解
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協議與跟蹤器服務器或存儲節點進行數據交互。
1、存儲服務定時向跟蹤服務上傳狀態信息; 2、客戶端發起請求; 3、跟蹤器同步存儲器狀態,返回存儲服務端口和IP; 4、客戶端執行文件操作(上傳,下載)等。
1)、配置FastDFS執行環境 2)、文件上傳配置 3)、整合Swagger2測試接口
<!-- 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>
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)文件工具類
@Component public 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()); } } }
spring: application: name: ware-fast-dfs servlet: multipart: enabled: true max-file-size: 10MB max-request-size: 20MB
主要用來生成文件上傳的測試界面。
1)配置代碼類
@Configuration public 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
@RestController public 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") ; } }
1、訪問http://localhost:7010/swagger-ui.html測試界面 2、調用文件上傳接口,拿到文件在FastDFS服務的路徑 3、瀏覽器訪問:https://cache.yisu.com/upload/information/20200703/145/42785.png 4、調用刪除接口,刪除服務器上圖片 5、清空瀏覽器緩存,再次訪問圖片Url,回返回404
以上就是SpringBoot2中怎么利用FastDFS 中間件實現文件分布式管理,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。