1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package main
- import (
- "fmt"
- "log"
- "net/http"
- "net/rpc"
- "time"
- "app.yhyue.com/moapp/jybase/endless"
- "jygit.jydev.jianyu360.cn/BaseService/ossService/client/constant"
- "jygit.jydev.jianyu360.cn/BaseService/ossService/server/config"
- ossService "jygit.jydev.jianyu360.cn/BaseService/ossService/server/oss"
- "jygit.jydev.jianyu360.cn/BaseService/ossService/util"
- )
- func main() {
- log.SetOutput(config.AppConfig.Logger)
- // 初始化OSS帐号与bucket信息
- ossService.LoadOSSAccounts()
- ossService.InitBuckets()
- // 初始化Redis(用于节点心跳检测)
- util.InitRedis()
- // 启动心跳检测协程,每5秒发送一次心跳,同时检查在线节点数量
- go func() {
- ticker := time.NewTicker(5 * time.Second)
- var prevWarn int64
- for range ticker.C {
- util.SendHeartbeat()
- nodes, err := util.CheckOnlineNodes()
- if err != nil {
- log.Println("Heartbeat check error", err)
- continue
- }
- if len(nodes) < config.AppConfig.WarnMaxNodeNum {
- alertMsg := fmt.Sprintf("在线节点数少于%d: 当前在线节点数:%d", config.AppConfig.WarnMaxNodeNum, len(nodes))
- log.Println(alertMsg)
- if nowUnix := time.Now().Unix(); nowUnix-prevWarn > config.AppConfig.WarnInterval {
- prevWarn = nowUnix
- util.SendWeixinNotification(alertMsg)
- util.SendEmailNotification(alertMsg)
- }
- }
- }
- }()
- // 启动RPC服务:注册OSSService,实现接口调用
- rpcService := new(ossService.OSSService)
- rpc.Register(rpcService)
- rpc.HandleHTTP()
- http.HandleFunc(constant.UploadUrl, ossService.UploadHandler)
- http.HandleFunc(constant.DownloadUrl, ossService.DownloadHandler)
- http.HandleFunc(constant.DeleteUrl, ossService.DeleteHandler)
- http.HandleFunc("/ossservice/nodes", ossService.NodesHandler)
- http.HandleFunc(constant.GetBidDetailUrl, ossService.BidDetailHandler)
- log.Println("HTTP server started on " + config.AppConfig.Port)
- if err := endless.ListenAndServe(config.AppConfig.Port, nil, func() {}); err != nil {
- log.Fatalln("HTTP server error", err)
- }
- }
|