1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package main
- import (
- "app.yhyue.com/moapp/jybase/endless"
- "fmt"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/os/gctx"
- "github.com/gogf/gf/v2/os/gfsnotify"
- "gopkg.in/natefinch/lumberjack.v2"
- "jygit.jydev.jianyu360.cn/BaseService/ossClient/constant"
- ossService "jygit.jydev.jianyu360.cn/BaseService/ossService/oss"
- "jygit.jydev.jianyu360.cn/BaseService/ossService/util"
- "log"
- "net/http"
- "net/rpc"
- "time"
- )
- func main() {
- ctx := gctx.New()
- var logger *lumberjack.Logger
- g.Config().MustGet(ctx, "logger").Struct(&logger)
- log.SetOutput(logger)
- // 初始化OSS帐号与bucket信息
- ossService.LoadOSSAccounts()
- // 注册一个回调函数,当配置发生变更时会被调用
- gfsnotify.Add("./config.json", func(event *gfsnotify.Event) {
- if event.IsWrite() || event.IsChmod() {
- log.Println("配置文件有变化,更新内存。。。")
- ossService.LoadOSSAccounts()
- }
- })
- // 初始化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
- }
- warnMaxNodeNum := g.Config().MustGet(ctx, "warnMaxNodeNum").Int()
- if len(nodes) < warnMaxNodeNum {
- alertMsg := fmt.Sprintf("在线节点数少于%d: 当前在线节点数:%d", warnMaxNodeNum, len(nodes))
- log.Println(alertMsg)
- if nowUnix := time.Now().Unix(); nowUnix-prevWarn > g.Config().MustGet(ctx, "warnInterval").Int64() {
- 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)
- port := g.Config().MustGet(ctx, "port").String()
- log.Println("HTTP server started on " + port)
- if err := endless.ListenAndServe(port, nil, func() {}); err != nil {
- log.Fatalln("HTTP server error", err)
- }
- }
|