12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package service
- import (
- "context"
- "go-common/app/admin/main/apm/conf"
- "go-common/app/admin/main/apm/dao"
- "go-common/app/admin/main/apm/model/tree"
- "go-common/app/admin/main/apm/model/ut"
- "go-common/app/tool/saga/service/gitlab"
- bm "go-common/library/net/http/blademaster"
- "sync"
- "github.com/jinzhu/gorm"
- "github.com/robfig/cron"
- )
- // Service is a service.
- type Service struct {
- c *conf.Config
- dao *dao.Dao
- DB *gorm.DB
- DBDatabus *gorm.DB
- DBCanal *gorm.DB
- client *bm.Client
- // tree cache
- treeCache map[string][]*tree.Node
- treeLock sync.RWMutex
- // cron cron
- cron *cron.Cron
- // discoveryID cache
- discoveryIDCache map[string]*tree.Resd
- discoveryIDLock sync.RWMutex
- ranksCache *ut.RanksCache
- appsCache *ut.AppsCache
- // dapper proxy
- dapperProxy *dapperProxy
- // gitlab api conf
- gitlab *gitlab.Gitlab
- }
- // New new a service
- func New(c *conf.Config) (s *Service) {
- s = &Service{
- c: c,
- dao: dao.New(c),
- client: bm.NewClient(c.HTTPClient),
- // tree cache
- treeCache: map[string][]*tree.Node{},
- // discoveryID cache
- discoveryIDCache: map[string]*tree.Resd{},
- // ranks cache
- ranksCache: &ut.RanksCache{},
- appsCache: &ut.AppsCache{},
- // cron cron
- cron: cron.New(),
- }
- s.gitlab = gitlab.New(conf.Conf.Gitlab.API, conf.Conf.Gitlab.Token)
- s.DB = s.dao.DB
- s.DBDatabus = s.dao.DBDatabus
- s.DBCanal = s.dao.DBCanal
- if err := s.cron.AddFunc(s.c.Cron.Crontab, s.taskAddMonitor); err != nil {
- panic(err)
- }
- if err := s.cron.AddFunc(s.c.Cron.Crontab, s.taskAddCache); err != nil {
- panic(err)
- }
- if err := s.cron.AddFunc(s.c.Cron.CrontabRepo, s.taskRankWechatReport); err != nil {
- panic(err)
- }
- if err := s.cron.AddFunc(s.c.Cron.CrontabRepo, s.taskWeeklyWechatReport); err != nil {
- panic(err)
- }
- dp, err := newDapperProxy(c.Host.DapperCo)
- if err != nil {
- panic(err)
- }
- s.dapperProxy = dp
- s.cron.Start()
- go s.taskAddCache()
- return
- }
- // Ping ping db,
- func (s *Service) Ping(c context.Context) (err error) {
- return
- }
- // Close close resource.
- func (s *Service) Close() {
- s.dao.Close()
- }
|