LingxinMeng 1 gadu atpakaļ
vecāks
revīzija
0d3554d314

+ 2 - 0
amd64/dispatch_server/README.md

@@ -0,0 +1,2 @@
+# 依赖
+1. Redis

+ 10 - 1
amd64/dispatch_server/application.yaml

@@ -1,6 +1,6 @@
 application-name: dispatch_server
 web:
-  port: 12341
+  port: 12342
   route-prefix: /dispatch_server
   token: U9yKpD6kZZDDe4LFKK6myAxBUT1XRrDM
   white-list:
@@ -11,6 +11,15 @@ redis:
   password: 1qaz2wsx!
   db: 3
 
+oss:
+  is-user-cname: true
+  endpoint: http://open-bucket.oss.icvdc.com
+#  is-user-cname: false
+#  endpoint: oss-cn-beijing-gqzl-d01-a.ops.gqzl-cloud.com
+  accessKeyId: n8glvFGS25MrLY7j
+  accessKeySecret: xZ2Fozoarpfw0z28FUhtg8cu0yDc5d
+  bucketName: open-bucket
+
 gpu-node-list:
   - hostname: gpu003
     ip: 10.14.85.238

+ 43 - 18
amd64/dispatch_server/main.go

@@ -5,21 +5,22 @@ package main
 */
 
 import (
-	"cicv-data-closedloop/amd64/dispatch_server/package/entity"
 	"cicv-data-closedloop/amd64/dispatch_server/package/handler"
-	"cicv-data-closedloop/common/config/c_log"
-	"cicv-data-closedloop/common/config/c_oss"
+	"cicv-data-closedloop/amd64/dispatch_server/package/infra"
 	commonHandler "cicv-data-closedloop/common/gin/handler"
 	"cicv-data-closedloop/common/util"
 	_ "embed"
 	"github.com/gin-gonic/gin"
+	"gopkg.in/yaml.v3"
 	"os"
 )
 
 type ApplicationYamlStruct struct {
-	ApplicationName string    `yaml:"application"`
-	Web             WebStruct `yaml:"web"`
-	GpuNodeList     []GpuNode `yaml:"gpu_node_list"`
+	ApplicationName string      `yaml:"application"`
+	Web             WebStruct   `yaml:"web"`
+	Redis           RedisStruct `yaml:"redis"`
+	Oss             OssStruct   `yaml:"oss"`
+	GpuNodeList     []GpuNode   `yaml:"gpu_node_list"`
 }
 
 type WebStruct struct {
@@ -29,36 +30,60 @@ type WebStruct struct {
 	WhiteList   []string `yaml:"white-list"`
 }
 
+type RedisStruct struct {
+	Addr     string `yaml:"addr"`
+	Password string `yaml:"password"`
+	Db       int    `yaml:"db"`
+}
+type OssStruct struct {
+	IsUseCname      bool   `json:"is-use-cname"`
+	Endpoint        string `json:"endpoint"`
+	AccessKeyId     string `json:"accessKeyId"`
+	AccessKeySecret string `json:"accessKeySecret"`
+	BucketName      string `json:"bucketName"`
+}
+
 type GpuNode struct {
 	Hostname    string `yaml:"hostname"`
 	Ip          string `yaml:"ip"`
 	Parallelism string `yaml:"parallelism"`
 }
 
-type RedisStruct struct {
-}
-
 var (
 	//go:embed application.yaml
-	applicationYamlBytes      []byte
-	ApplicationYaml           ApplicationYamlStruct
-	KubernetesSchedulerConfig = new(entity.KubernetesSchedulerConfigStruct)
+	applicationYamlBytes []byte
+	ApplicationYaml      ApplicationYamlStruct
 )
 
 func init() {
-	c_log.InitLog("./log/", KubernetesSchedulerConfig.Service.Name)
-	c_oss.InitOss(false)
-
+	// 1 解析YAML内容
+	_ = yaml.Unmarshal(applicationYamlBytes, &ApplicationYaml)
+	// 2 初始化 日志
+	infra.InitLog("./log/", ApplicationYaml.ApplicationName)
+	// 3 初始化 阿里云oss 客户端
+	infra.InitOss(
+		ApplicationYaml.Oss.IsUseCname,
+		ApplicationYaml.Oss.Endpoint,
+		ApplicationYaml.Oss.AccessKeyId,
+		ApplicationYaml.Oss.AccessKeySecret,
+		ApplicationYaml.Oss.BucketName,
+	)
+	// 4 初始化 Redis 客户端
+	infra.InitRedisClient(
+		ApplicationYaml.Redis.Addr,
+		ApplicationYaml.Redis.Password,
+		ApplicationYaml.Redis.Db,
+	)
 }
 
 func main() {
 	router := gin.Default()
 	router.Use(commonHandler.ValidateHeaders())
-	api := router.Group(KubernetesSchedulerConfig.Service.RouterPrefix)
+	api := router.Group(ApplicationYaml.Web.RoutePrefix)
 	api.POST("/start-project", handler.StartProject)
-	err := router.Run(":12345")
+	err := router.Run(":" + ApplicationYaml.Web.Port)
 	if err != nil {
-		c_log.GlobalLogger.Error("程序崩溃,监听端口 " + util.ToString(KubernetesSchedulerConfig.Service.Port) + " 失败。")
+		infra.GlobalLogger.Error("程序崩溃,监听端口 " + util.ToString(ApplicationYaml.Web.Port) + " 失败。")
 		os.Exit(-1)
 	}
 }

+ 39 - 0
amd64/dispatch_server/package/infra/i_log.go

@@ -0,0 +1,39 @@
+package infra
+
+import (
+	"cicv-data-closedloop/common/util"
+	"fmt"
+	"github.com/sirupsen/logrus"
+	"os"
+	"path/filepath"
+	"runtime"
+	"time"
+)
+
+var GlobalLogger *logrus.Logger
+
+// InitLog 初始化日志配置
+func InitLog(logDir string, prefix string) {
+	time.Sleep(time.Duration(1) * time.Second)
+	// 创建、追加、读写,777,所有权限
+	logPath := logDir + prefix + "-" + time.Now().Format("2006-01-02-15-04-05") + ".log"
+	err := util.CreateParentDir(logPath)
+	if err != nil {
+		os.Exit(-1)
+	}
+	f, err := os.OpenFile(logPath, os.O_CREATE|os.O_APPEND|os.O_RDWR, os.ModePerm)
+	if err != nil {
+		os.Exit(-1)
+	}
+	GlobalLogger = logrus.New()
+	GlobalLogger.SetOutput(f)
+	GlobalLogger.SetReportCaller(true) // 开启行号显示
+	GlobalLogger.SetFormatter(&logrus.JSONFormatter{
+		CallerPrettyfier: func(frame *runtime.Frame) (string, string) {
+			fileName := filepath.Base(frame.File)
+			return "", fmt.Sprintf("%s:%d", fileName, frame.Line)
+		},
+	})
+	GlobalLogger.Info("初始化GlobalLogger - 成功")
+
+}

+ 31 - 0
amd64/dispatch_server/package/infra/i_oss.go

@@ -0,0 +1,31 @@
+package infra
+
+import (
+	"cicv-data-closedloop/common/config/c_log"
+	"fmt"
+	"github.com/aliyun/aliyun-oss-go-sdk/oss"
+	"os"
+)
+
+var (
+	OssClient *oss.Client
+	OssBucket *oss.Bucket
+)
+
+func InitOss(isUseCname bool, endpoint string, accessKeyId string, accessKeySecret string, bucketName string) {
+	var err error
+	if isUseCname {
+		OssClient, err = oss.New(endpoint, accessKeyId, accessKeySecret, oss.UseCname(true)) // 公网
+	} else {
+		OssClient, err = oss.New(endpoint, accessKeyId, accessKeySecret, oss.UseCname(false)) // 内网
+	}
+	if err != nil {
+		c_log.GlobalLogger.Error("无法创建阿里云client:", err)
+		os.Exit(-1)
+	}
+	OssBucket, err = OssClient.Bucket(bucketName)
+	if err != nil {
+		fmt.Println("无法创建阿里云bucket:", err)
+		os.Exit(-1)
+	}
+}

+ 8 - 2
amd64/dispatch_server/package/redis/redis_config.go → amd64/dispatch_server/package/infra/i_redis.go

@@ -1,7 +1,7 @@
-package redis
+package infra
 
 import (
-	"github.com/go-redis/redis/v8"
+	"github.com/go-redis/redis"
 	"sync"
 )
 
@@ -20,4 +20,10 @@ func InitRedisClient(addr string, password string, db int) {
 			DB:       db,       // Redis数据库索引
 		})
 	})
+	// 添加键值对到 Redis
+	err := GlobalRedisClient.Set("init", "success", 0).Err()
+	if err != nil {
+		GlobalLogger.Error("初始化 Redis 客户端报错:", err)
+	}
+	GlobalLogger.Error("初始化 Redis 客户端成功。")
 }

+ 1 - 0
go.mod

@@ -38,6 +38,7 @@ require (
 	github.com/go-playground/locales v0.14.1 // indirect
 	github.com/go-playground/universal-translator v0.18.1 // indirect
 	github.com/go-playground/validator/v10 v10.17.0 // indirect
+	github.com/go-redis/redis v6.15.9+incompatible // indirect
 	github.com/go-redis/redis/v8 v8.11.5 // indirect
 	github.com/goccy/go-json v0.10.2 // indirect
 	github.com/golang/mock v1.6.0 // indirect

+ 2 - 0
go.sum

@@ -121,6 +121,8 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn
 github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
 github.com/go-playground/validator/v10 v10.17.0 h1:SmVVlfAOtlZncTxRuinDPomC2DkXJ4E5T9gDA0AIH74=
 github.com/go-playground/validator/v10 v10.17.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU=
+github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg=
+github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
 github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
 github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=