소스 검색

优化代码, 成为一个单机文件存储系统

reghao 3 년 전
부모
커밋
e1123590f6

+ 1 - 17
README.md

@@ -1,21 +1,5 @@
 # dfs-store
-一个分布式存储系统, 提供文件的存储, 访问和删除等服务, 不支持文件修改.
-
-文件存储:
-- 大文件(大于等于 8MiB)单独存储到文件系统中
-- 小文件(小于 8MiB)合并存储到一个文件块中
-
-文件删除:
-- 大文件标记为删除, 过一段时间后, 由定时任务自动删除
-- 小文件标记为删除并设置一个过期时间, 等到小文件所在文件块中的其他小文件都被标记为删除且最后一个小文件的过期时间超时后, 由定时任务自动删除整个文件块
-
-文件访问:
-- 可为单个文件设置访问权限
-
-## 多节点
-### 同步
-新文件存储到集群中的某个节点后, 还需要同步到集群内的其他节点, 保证整个集群的数据一致, 这里只能是最终一致性, 暂时无法做到强一致性
+一个文件存储系统, 提供文件的存储, 访问和删除等服务, 不支持文件修改.
 
 ## 依赖的第三方服务
 - mysql
-- zookeeper

+ 0 - 32
pom.xml

@@ -41,11 +41,6 @@
             <artifactId>web</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>cn.reghao.dfs</groupId>
-            <artifactId>dfs-api</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>
 
         <dependency>
             <groupId>org.projectlombok</groupId>
@@ -132,11 +127,6 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
-        <dependency>
-            <groupId>io.micrometer</groupId>
-            <artifactId>micrometer-registry-prometheus</artifactId>
-            <scope>runtime</scope>
-        </dependency>
 
         <dependency>
             <groupId>io.jsonwebtoken</groupId>
@@ -163,28 +153,6 @@
             <artifactId>activation</artifactId>
             <version>1.1.1</version>
         </dependency>
-
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-spring-boot-starter</artifactId>
-            <version>2.7.8</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.curator</groupId>
-            <artifactId>curator-recipes</artifactId>
-            <version>4.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.zookeeper</groupId>
-            <artifactId>zookeeper</artifactId>
-            <version>3.4.6</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
     </dependencies>
 
     <profiles>

+ 0 - 14
src/main/java/cn/reghao/dfs/store/controller/FileController.java

@@ -1,8 +1,5 @@
 package cn.reghao.dfs.store.controller;
 
-import cn.reghao.dfs.api.dto.EncryptParam;
-import cn.reghao.dfs.api.dto.VideoUrlDto;
-import cn.reghao.dfs.store.rpc.MediaUrlServiceImpl;
 import cn.reghao.dfs.store.util.store.LocalStore;
 import cn.reghao.dfs.store.util.store.LocalStores;
 import cn.reghao.dfs.store.util.store.StoreDir;
@@ -11,7 +8,6 @@ import cn.reghao.dfs.store.db.repository.FileRepository;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.ibatis.annotations.Param;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
@@ -53,14 +49,4 @@ public class FileController {
         List<StoreDir> list1 = LocalStores.getStoreDirs();
         return WebBody.success(list);
     }
-
-    @Autowired
-    MediaUrlServiceImpl mediaUrlService;
-    @GetMapping(value = "/geturl", produces = MediaType.APPLICATION_JSON_VALUE)
-    @Deprecated
-    public String getUrl() {
-        EncryptParam encryptParam = new EncryptParam("yPb1l5V6JN", "wKLx1Zpod6", -1L);
-        List<VideoUrlDto> list = mediaUrlService.getEncryptMp4Urls(encryptParam);
-        return WebBody.success(list);
-    }
 }

+ 0 - 1
src/main/java/cn/reghao/dfs/store/db/mapper/VideoFileMapper.java

@@ -18,7 +18,6 @@ public interface VideoFileMapper extends BaseMapper<VideoFile> {
     void updateSetVideoActivate(@Param("videoFileId") String videoFileId, @Param("activate") boolean activate);
     void updateSetVideoAuth(@Param("videoFileId") String videoFileId, @Param("auth") boolean auth);
 
-    VideoFile findByVideoFileId(String videoFileId);
     VideoFileInfo findVideoFileInfoByUploadId(@Param("uploadId") String uploadId,
                                               @Param("group") int group,
                                               @Param("node") int node);

+ 0 - 4
src/main/java/cn/reghao/dfs/store/db/mapper/VideoUrlMapper.java

@@ -1,13 +1,10 @@
 package cn.reghao.dfs.store.db.mapper;
 
-import cn.reghao.dfs.api.dto.VideoUrlDto;
 import cn.reghao.dfs.store.model.po.VideoUrl;
 import cn.reghao.jutil.jdk.db.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
-import java.util.List;
-
 /**
  * @author reghao
  * @date 2022-08-04 09:31:27
@@ -16,6 +13,5 @@ import java.util.List;
 public interface VideoUrlMapper extends BaseMapper<VideoUrl> {
     void updateSetUrl(@Param("fileId") String fileId, @Param("url") String url);
 
-    List<VideoUrlDto> findByVideoFileId(String videoFileId);
     VideoUrl findByFileId(String fileId);
 }

+ 0 - 78
src/main/java/cn/reghao/dfs/store/rpc/MediaUrlServiceImpl.java

@@ -1,78 +0,0 @@
-package cn.reghao.dfs.store.rpc;
-
-import cn.reghao.dfs.api.dto.EncryptParam;
-import cn.reghao.dfs.api.iface.MediaUrlService;
-import cn.reghao.dfs.store.config.DfsProperties;
-import cn.reghao.dfs.store.db.mapper.VideoFileMapper;
-import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
-import cn.reghao.dfs.api.dto.VideoUrlDto;
-import cn.reghao.jutil.jdk.security.crypto.AesEncrypt;
-import org.apache.dubbo.config.annotation.DubboService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2022-08-05 15:04:19
- */
-@DubboService
-@Service
-public class MediaUrlServiceImpl implements MediaUrlService {
-    private final String encryptKey;
-    private final VideoFileMapper videoFileMapper;
-    private final VideoUrlMapper videoUrlMapper;
-
-    public MediaUrlServiceImpl(DfsProperties dfsProperties, VideoFileMapper videoFileMapper, VideoUrlMapper videoUrlMapper) {
-        this.encryptKey = dfsProperties.getEncryptKey();
-        this.videoFileMapper = videoFileMapper;
-        this.videoUrlMapper = videoUrlMapper;
-    }
-
-    @Override
-    public List<VideoUrlDto> getMp4Urls(String videoFileId) {
-        List<VideoUrlDto> urls = videoUrlMapper.findByVideoFileId(videoFileId);
-        return urls;
-    }
-
-    @Override
-    public List<VideoUrlDto> getEncryptMp4Urls(EncryptParam encryptParam) {
-        String videoFileId = encryptParam.getVideoFileId();
-        List<VideoUrlDto> urls = videoUrlMapper.findByVideoFileId(videoFileId);
-        return urls.stream()
-                .map(videoUrlDto -> {
-                    String url = videoUrlDto.getUrl();
-                    try {
-                        String encryptUrl = encryptUrl(encryptParam.getAccessUserId(), url);
-                        videoUrlDto.setUrl(encryptUrl);
-                        return videoUrlDto;
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    return null;
-                })
-                .filter(Objects::nonNull)
-                .collect(Collectors.toList());
-    }
-
-    private String encryptUrl(long accessUserId, String url) throws Exception {
-        String key = "abcdABCD1234";
-        // 链接过期时间戳,8 小时后过期
-        long t = System.currentTimeMillis() + 8*3600*1000;
-        String sign = String.format("%s_%s_%s", key, accessUserId, t);
-        String encryptSign = AesEncrypt.encrypt(sign, encryptKey);
-        return String.format("%s?sign=%s", url, encryptSign);
-    }
-
-    @Override
-    public void setVideoFileAuth(String videoFileId, boolean auth) {
-        videoFileMapper.updateSetVideoAuth(videoFileId, auth);
-    }
-
-    @Override
-    public void setVideoFileActivate(String videoFileId, boolean activate) {
-        videoFileMapper.updateSetVideoActivate(videoFileId, activate);
-    }
-}

+ 1 - 5
src/main/resources/application-dev.yml

@@ -1,16 +1,12 @@
-dubbo:
-  registry:
-    address: zookeeper://zk1.reghao.cn:2181
 spring:
   datasource:
     url: jdbc:mysql://localhost:3306/reghao_vid_file_rdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
     username: dev
     password: Dev@123456
 dfs:
-  domain: file1.reghao.cn
+  domain: file.reghao.cn
   group: 0
   node: 0
   baseDirs:
     - /opt/file/disk1/
-    - /home/reghao/opt/file/disk1/
   encryptKey: 5JCdi68CulSDu0TqD4jR

+ 0 - 16
src/main/resources/application-dev1.yml

@@ -1,16 +0,0 @@
-dubbo:
-  registry:
-    address: zookeeper://localhost:2181
-spring:
-  datasource:
-    url: jdbc:mysql://localhost:3306/reghao_vid_file_rdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
-    username: dev
-    password: Dev@123456
-dfs:
-  domain: file1.reghao.cn
-  group: 0
-  node: 0
-  baseDirs:
-    - /opt/file/disk0/
-    - /home/reghao/opt/file/disk0/
-  encryptKey: 5JCdi68CulSDu0TqD4jR

+ 0 - 16
src/main/resources/application-dev2.yml

@@ -1,16 +0,0 @@
-dubbo:
-  registry:
-    address: zookeeper://localhost:2181
-spring:
-  datasource:
-    url: jdbc:mysql://192.168.0.50:3306/reghao_vid_file_tdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
-    username: test
-    password: Test@123456
-dfs:
-  domain: file1.reghao.cn
-  group: 0
-  node: 0
-  baseDirs:
-    - /opt/file/disk0/
-    - /home/reghao/opt/file/disk0/
-  encryptKey: 5JCdi68CulSDu0TqD4jR

+ 1 - 6
src/main/resources/application-test.yml

@@ -1,9 +1,6 @@
-dubbo:
-  registry:
-    address: zookeeper://zk1.reghao.cn:2181
 spring:
   datasource:
-    url: jdbc:mysql://192.168.0.50:3306/reghao_vid_file_tdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
+    url: jdbc:mysql://192.168.0.110:3306/reghao_vid_file_tdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
     username: test
     password: Test@123456
 dfs:
@@ -11,7 +8,5 @@ dfs:
   group: 0
   node: 0
   baseDirs:
-    - /opt/file/disk0/
     - /opt/file/disk1/
-    - /opt/file/disk2/
   encryptKey: 5JCdi68CulSDu0TqD4jR

+ 0 - 3
src/main/resources/mapper/VideoFileMapper.xml

@@ -27,9 +27,6 @@
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.VideoFile">
         select * from video_file
     </select>
-    <select id="findByVideoFileId" resultType="cn.reghao.dfs.store.model.po.VideoFile">
-        select * from video_file where video_file_id=#{videoFileId}
-    </select>
     <select id="findVideoFileInfoByUploadId" resultType="cn.reghao.dfs.store.model.vo.VideoFileInfo">
         select videoFile.video_file_id,videoFile.activate,videoFile.auth,videoUrl.file_id,filePath.absolute_path,fileUser.upload_by
         from video_file videoFile

+ 0 - 6
src/main/resources/mapper/VideoUrlMapper.xml

@@ -16,10 +16,4 @@
     <select id="findByFileId" resultType="cn.reghao.dfs.store.model.po.VideoUrl">
         select * from video_url where file_id=#{fileId}
     </select>
-    <select id="findByVideoFileId" resultType="cn.reghao.dfs.api.dto.VideoUrlDto">
-        select fileUrl.url,fileUrl.path,videoUrl.url_type as type,videoUrl.width,videoUrl.height,videoUrl.quality
-        from video_url videoUrl
-        inner join file_url fileUrl
-        on videoUrl.file_id=fileUrl.file_id and videoUrl.video_file_id=#{videoFileId}
-    </select>
 </mapper>