main.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package main
  2. /*
  3. 1. 算法清理可以用仿真云平台的调度系统
  4. */
  5. import (
  6. "cicv-data-closedloop/amd64/dispatch_server/package/global"
  7. "cicv-data-closedloop/amd64/dispatch_server/package/handler"
  8. "cicv-data-closedloop/amd64/dispatch_server/package/infra"
  9. "cicv-data-closedloop/amd64/dispatch_server/package/service"
  10. commonHandler "cicv-data-closedloop/common/gin/handler"
  11. "cicv-data-closedloop/common/util"
  12. _ "embed"
  13. "encoding/json"
  14. "github.com/gin-gonic/gin"
  15. "os"
  16. )
  17. func init() {
  18. // 1 解析YAML内容
  19. infra.InitApplication()
  20. // 2 初始化 日志
  21. infra.InitLog(infra.ApplicationYaml.Log.Dir, infra.ApplicationYaml.Log.Prefix)
  22. // 3 初始化 阿里云oss 客户端
  23. infra.InitOss(
  24. infra.ApplicationYaml.Oss.IsUseCname,
  25. infra.ApplicationYaml.Oss.Endpoint,
  26. infra.ApplicationYaml.Oss.AccessKeyId,
  27. infra.ApplicationYaml.Oss.AccessKeySecret,
  28. infra.ApplicationYaml.Oss.BucketName,
  29. )
  30. // 4 初始化 Redis 客户端
  31. infra.InitRedisClient(
  32. infra.ApplicationYaml.Redis.Addr,
  33. infra.ApplicationYaml.Redis.Password,
  34. infra.ApplicationYaml.Redis.Db,
  35. )
  36. // 5 将 gpu-node-list 写入redis
  37. err := infra.GlobalRedisClient.Del(global.KeyGpuNodeList).Err()
  38. if err != nil {
  39. infra.GlobalLogger.Error("程序崩溃。gpu-node-list 初始化失败1:", err)
  40. os.Exit(-1)
  41. }
  42. for _, gpuNode := range infra.ApplicationYaml.GpuNodeList {
  43. gpuNodeJson, err := json.MarshalIndent(gpuNode, "", " ")
  44. if err != nil {
  45. infra.GlobalLogger.Error("程序崩溃。gpu-node-list 初始化失败2:", err)
  46. os.Exit(-1)
  47. }
  48. _, err = infra.GlobalRedisClient.RPush("gpu-node-list", gpuNodeJson).Result()
  49. if err != nil {
  50. infra.GlobalLogger.Error("程序崩溃。gpu-node-list 初始化失败3:", err)
  51. os.Exit(-1)
  52. }
  53. }
  54. // 6 初始化 kafka 客户端
  55. infra.InitKafkaProducer(infra.ApplicationYaml.Kafka.Broker)
  56. }
  57. func main() {
  58. // 启动任务处理进程
  59. go service.RunWaitingUser()
  60. go service.RunWaitingCluster()
  61. // 启动 web 服务器
  62. router := gin.Default()
  63. router.Use(commonHandler.ValidateHeaders())
  64. api1 := router.Group(infra.ApplicationYaml.Web.RoutePrefix)
  65. api1.POST("/start-project", handler.StartProject)
  66. api2 := router.Group("/simulation/resource/scheduler")
  67. api2.POST("/confirm", handler.Confirm)
  68. api2.POST("/state", handler.State)
  69. api2.POST("/confirm", handler.Confirm)
  70. err := router.Run(":" + infra.ApplicationYaml.Web.Port)
  71. if err != nil {
  72. infra.GlobalLogger.Error("程序崩溃,监听端口 " + util.ToString(infra.ApplicationYaml.Web.Port) + " 失败。")
  73. os.Exit(-1)
  74. }
  75. }