main.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package main
  2. import (
  3. "app.yhyue.com/moapp/jybase/endless"
  4. "fmt"
  5. "jygit.jydev.jianyu360.cn/BaseService/ossService/config"
  6. "jygit.jydev.jianyu360.cn/BaseService/ossService/constant"
  7. ossService "jygit.jydev.jianyu360.cn/BaseService/ossService/oss"
  8. "jygit.jydev.jianyu360.cn/BaseService/ossService/util"
  9. "log"
  10. "net/http"
  11. "net/rpc"
  12. "time"
  13. )
  14. func main() {
  15. log.SetOutput(config.AppConfig.Logger)
  16. // 初始化OSS帐号与bucket信息
  17. ossService.LoadOSSAccounts()
  18. ossService.InitBuckets()
  19. // 初始化Redis(用于节点心跳检测)
  20. util.InitRedis()
  21. // 启动心跳检测协程,每5秒发送一次心跳,同时检查在线节点数量
  22. go func() {
  23. ticker := time.NewTicker(5 * time.Second)
  24. var prevWarn int64
  25. for range ticker.C {
  26. util.SendHeartbeat()
  27. nodes, err := util.CheckOnlineNodes()
  28. if err != nil {
  29. log.Println("Heartbeat check error", err)
  30. continue
  31. }
  32. if len(nodes) < config.AppConfig.WarnMaxNodeNum {
  33. alertMsg := fmt.Sprintf("在线节点数少于%d: 当前在线节点数:%d", config.AppConfig.WarnMaxNodeNum, len(nodes))
  34. log.Println(alertMsg)
  35. if nowUnix := time.Now().Unix(); nowUnix-prevWarn > config.AppConfig.WarnInterval {
  36. prevWarn = nowUnix
  37. util.SendWeixinNotification(alertMsg)
  38. util.SendEmailNotification(alertMsg)
  39. }
  40. }
  41. }
  42. }()
  43. // 启动RPC服务:注册OSSService,实现接口调用
  44. rpcService := new(ossService.OSSService)
  45. rpc.Register(rpcService)
  46. rpc.HandleHTTP()
  47. http.HandleFunc(constant.UploadUrl, ossService.UploadHandler)
  48. http.HandleFunc(constant.DownloadUrl, ossService.DownloadHandler)
  49. http.HandleFunc(constant.DeleteUrl, ossService.DeleteHandler)
  50. http.HandleFunc("/ossservice/nodes", ossService.NodesHandler)
  51. log.Println("HTTP server started on " + config.AppConfig.Port)
  52. if err := endless.ListenAndServe(config.AppConfig.Port, nil, func() {}); err != nil {
  53. log.Fatalln("HTTP server error: %v", err)
  54. }
  55. }