You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.go 2.0 kB

2 years ago
2 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package main
  2. // 主程序包,负责初始化和启动协调器服务器。
  3. import (
  4. "fmt"
  5. "os"
  6. "gitlink.org.cn/cloudream/common/pkgs/logger"
  7. mydb "gitlink.org.cn/cloudream/storage/common/pkgs/db"
  8. coormq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/coordinator"
  9. scmq "gitlink.org.cn/cloudream/storage/common/pkgs/mq/scanner"
  10. "gitlink.org.cn/cloudream/storage/coordinator/internal/config"
  11. "gitlink.org.cn/cloudream/storage/coordinator/internal/mq"
  12. )
  13. // 主函数,负责程序的初始化和启动。
  14. func main() {
  15. // 初始化配置
  16. err := config.Init()
  17. if err != nil {
  18. fmt.Printf("init config failed, err: %s", err.Error())
  19. os.Exit(1)
  20. }
  21. // 初始化日志系统
  22. err = logger.Init(&config.Cfg().Logger)
  23. if err != nil {
  24. fmt.Printf("init logger failed, err: %s", err.Error())
  25. os.Exit(1)
  26. }
  27. // 初始化数据库连接
  28. db, err := mydb.NewDB(&config.Cfg().DB)
  29. if err != nil {
  30. logger.Fatalf("new db failed, err: %s", err.Error())
  31. }
  32. // 初始化扫描器客户端
  33. scanner, err := scmq.NewClient(&config.Cfg().RabbitMQ)
  34. if err != nil {
  35. logger.Fatalf("new scanner client failed, err: %s", err.Error())
  36. }
  37. // 初始化协调器服务器
  38. coorSvr, err := coormq.NewServer(mq.NewService(db, scanner), &config.Cfg().RabbitMQ)
  39. if err != nil {
  40. logger.Fatalf("new coordinator server failed, err: %s", err.Error())
  41. }
  42. // 设置协调器服务器错误处理
  43. coorSvr.OnError(func(err error) {
  44. logger.Warnf("coordinator server err: %s", err.Error())
  45. })
  46. // 启动协调器服务器为异步操作
  47. go serveCoorServer(coorSvr)
  48. // 永久等待,保持程序运行
  49. forever := make(chan bool)
  50. <-forever
  51. }
  52. // serveCoorServer 启动并运行协调器服务器。
  53. func serveCoorServer(server *coormq.Server) {
  54. logger.Info("start serving command server")
  55. // 服务启动和错误处理
  56. err := server.Serve()
  57. if err != nil {
  58. logger.Errorf("command server stopped with error: %s", err.Error())
  59. }
  60. logger.Info("command server stopped")
  61. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。