|
|
@@ -1,15 +1,13 @@
|
|
|
-package cn.reghao.oss.store.config.spring;
|
|
|
+package cn.reghao.oss.store.config;
|
|
|
|
|
|
import cn.reghao.jutil.jdk.serializer.JsonConverter;
|
|
|
-import cn.reghao.jutil.jdk.store.LocalStores;
|
|
|
-import cn.reghao.jutil.jdk.store.SubDirCount;
|
|
|
import cn.reghao.oss.sdk.OssConsoleClient;
|
|
|
import cn.reghao.oss.store.api.dto.ObjectChannel;
|
|
|
import cn.reghao.oss.store.api.dto.StoreDiskDto;
|
|
|
import cn.reghao.oss.store.api.dto.StoreNodeDto;
|
|
|
import cn.reghao.oss.store.api.dto.StoreProperties;
|
|
|
-import cn.reghao.oss.store.config.SpringProperties;
|
|
|
-import cn.reghao.oss.store.db.mapper.DataBlockMapper;
|
|
|
+import cn.reghao.oss.store.config.props.SpringProperties;
|
|
|
+import cn.reghao.oss.store.service.FileStoreService;
|
|
|
import cn.reghao.oss.store.service.StoreChannelService;
|
|
|
import cn.reghao.oss.store.service.StoreLocalCache;
|
|
|
import cn.reghao.oss.store.task.FileTask;
|
|
|
@@ -19,11 +17,8 @@ import org.springframework.boot.ApplicationArguments;
|
|
|
import org.springframework.boot.ApplicationRunner;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.io.File;
|
|
|
-import java.io.IOException;
|
|
|
-import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author reghao
|
|
|
@@ -31,75 +26,53 @@ import java.util.Map;
|
|
|
*/
|
|
|
@Slf4j
|
|
|
@Component
|
|
|
-public class AppLifecycle implements ApplicationRunner, DisposableBean {
|
|
|
- private final DataBlockMapper dataBlockMapper;
|
|
|
+public class SpringLifecycle implements ApplicationRunner, DisposableBean {
|
|
|
private final FileTask fileTask;
|
|
|
private final SpringProperties springProperties;
|
|
|
+ private final FileStoreService fileStoreService;
|
|
|
private final OssConsoleClient ossConsoleClient;
|
|
|
- private final StoreLocalCache storeLocalCache;
|
|
|
private final StoreChannelService storeChannelService;
|
|
|
+ private final StoreLocalCache storeLocalCache;
|
|
|
|
|
|
- public AppLifecycle(DataBlockMapper dataBlockMapper, FileTask fileTask, SpringProperties springProperties,
|
|
|
- OssConsoleClient ossConsoleClient, StoreLocalCache storeLocalCache,
|
|
|
- StoreChannelService storeChannelService) {
|
|
|
- this.dataBlockMapper = dataBlockMapper;
|
|
|
+ public SpringLifecycle(FileTask fileTask, SpringProperties springProperties, FileStoreService fileStoreService,
|
|
|
+ OssConsoleClient ossConsoleClient, StoreChannelService storeChannelService,
|
|
|
+ StoreLocalCache storeLocalCache) {
|
|
|
this.fileTask = fileTask;
|
|
|
this.springProperties = springProperties;
|
|
|
+ this.fileStoreService = fileStoreService;
|
|
|
this.ossConsoleClient = ossConsoleClient;
|
|
|
- this.storeLocalCache = storeLocalCache;
|
|
|
this.storeChannelService = storeChannelService;
|
|
|
+ this.storeLocalCache = storeLocalCache;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void run(ApplicationArguments args) throws Exception {
|
|
|
- initLocalStore();
|
|
|
initStoreNode();
|
|
|
log.info("执行文件任务...");
|
|
|
fileTask.exec();
|
|
|
log.info("文件任务执行完成...");
|
|
|
}
|
|
|
|
|
|
- private void initLocalStore() throws IOException {
|
|
|
- log.info("初始化本地磁盘...");
|
|
|
- List<String> diskDirs = springProperties.getDiskDirs();
|
|
|
- for (String diskDir : diskDirs) {
|
|
|
- File dir = new File(diskDir);
|
|
|
- if (!dir.exists()) {
|
|
|
- dir.mkdirs();
|
|
|
- }
|
|
|
- }
|
|
|
- LocalStores.init(diskDirs);
|
|
|
-
|
|
|
- for (String diskDir : diskDirs) {
|
|
|
- Map<String, Integer> map = new HashMap<>();
|
|
|
- /*List<SubDirCount> list = dataBlockMapper.findSubDirCount("");
|
|
|
- list.forEach(subDirCount -> {
|
|
|
- String relativeDir = subDirCount.getRelativeDir();
|
|
|
- String storeDir = diskDir + relativeDir;
|
|
|
- File file = new File(storeDir);
|
|
|
-
|
|
|
- int total = subDirCount.getTotal();
|
|
|
- map.put(file.getAbsolutePath(), total);
|
|
|
- });*/
|
|
|
-
|
|
|
- LocalStores.initStoreDirs(diskDir, map);
|
|
|
- }
|
|
|
- log.info("本地磁盘数据初始化完成...");
|
|
|
- }
|
|
|
-
|
|
|
private void initStoreNode() throws Exception {
|
|
|
log.info("初始化 StoreNode...");
|
|
|
- List<StoreDiskDto> list = storeLocalCache.getStoreDisks();
|
|
|
- String nodeAddr = springProperties.getHost();
|
|
|
+
|
|
|
+ // 注册 oss-store 到 oss-console
|
|
|
+ String nodeAddr = springProperties.getNodeAddress();
|
|
|
int httpPort = springProperties.getHttpPort();
|
|
|
int rpcPort = springProperties.getRpcPort();
|
|
|
+ List<StoreDiskDto> list = fileStoreService.getStoreDisks().stream()
|
|
|
+ .map(StoreDiskDto::new)
|
|
|
+ .collect(Collectors.toList());
|
|
|
StoreNodeDto storeNodeDto = new StoreNodeDto(nodeAddr, httpPort, rpcPort, list);
|
|
|
String jsonPayload = JsonConverter.objectToJson(storeNodeDto);
|
|
|
- ossConsoleClient.registerNode(jsonPayload);
|
|
|
+ //ossConsoleClient.registerNode(jsonPayload);
|
|
|
|
|
|
+ // 获取 oss-store 配置
|
|
|
StoreProperties storeProperties = ossConsoleClient.getStoreProperties(nodeAddr);
|
|
|
- List<ObjectChannel> objectChannels = ossConsoleClient.getObjectChannels(nodeAddr);
|
|
|
storeLocalCache.initOssStore(storeProperties);
|
|
|
+
|
|
|
+ // 获取 oss-store channel
|
|
|
+ List<ObjectChannel> objectChannels = ossConsoleClient.getObjectChannels(nodeAddr);
|
|
|
storeChannelService.initChannels(objectChannels);
|
|
|
log.info("StoreNode 初始化完成...");
|
|
|
}
|