main.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "net/rpc"
  7. "time"
  8. "app.yhyue.com/moapp/jybase/endless"
  9. "jygit.jydev.jianyu360.cn/BaseService/ossService/client/constant"
  10. "jygit.jydev.jianyu360.cn/BaseService/ossService/server/config"
  11. ossService "jygit.jydev.jianyu360.cn/BaseService/ossService/server/oss"
  12. "jygit.jydev.jianyu360.cn/BaseService/ossService/util"
  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. http.HandleFunc(constant.GetBidDetailUrl, ossService.BidDetailHandler)
  52. log.Println("HTTP server started on " + config.AppConfig.Port)
  53. if err := endless.ListenAndServe(config.AppConfig.Port, nil, func() {}); err != nil {
  54. log.Fatalln("HTTP server error", err)
  55. }
  56. }