12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package unicom
- import (
- "sync"
- "time"
- "go-common/app/interface/main/app-wall/conf"
- accdao "go-common/app/interface/main/app-wall/dao/account"
- liveDao "go-common/app/interface/main/app-wall/dao/live"
- seqDao "go-common/app/interface/main/app-wall/dao/seq"
- shopDao "go-common/app/interface/main/app-wall/dao/shopping"
- unicomDao "go-common/app/interface/main/app-wall/dao/unicom"
- "go-common/app/interface/main/app-wall/model/unicom"
- "go-common/library/queue/databus"
- "go-common/library/stat/prom"
- )
- const (
- _initIPlimitKey = "iplimit_%v_%v"
- )
- type Service struct {
- c *conf.Config
- dao *unicomDao.Dao
- live *liveDao.Dao
- seqdao *seqDao.Dao
- accd *accdao.Dao
- shop *shopDao.Dao
- tick time.Duration
- unicomIpCache []*unicom.UnicomIP
- unicomIpSQLCache map[string]*unicom.UnicomIP
- operationIPlimit map[string]struct{}
- unicomPackCache []*unicom.UserPack
- // infoc
- logCh chan interface{}
- packCh chan interface{}
- packLogCh chan interface{}
- userBindCh chan interface{}
- // waiter
- waiter sync.WaitGroup
- // databus
- userbindPub *databus.Databus
- // prom
- pHit *prom.Prom
- pMiss *prom.Prom
- }
- func New(c *conf.Config) (s *Service) {
- s = &Service{
- c: c,
- dao: unicomDao.New(c),
- live: liveDao.New(c),
- seqdao: seqDao.New(c),
- accd: accdao.New(c),
- shop: shopDao.New(c),
- tick: time.Duration(c.Tick),
- unicomIpCache: []*unicom.UnicomIP{},
- unicomIpSQLCache: map[string]*unicom.UnicomIP{},
- operationIPlimit: map[string]struct{}{},
- unicomPackCache: []*unicom.UserPack{},
- // databus
- userbindPub: databus.New(c.UnicomDatabus),
- // infoc
- logCh: make(chan interface{}, 1024),
- packCh: make(chan interface{}, 1024),
- packLogCh: make(chan interface{}, 1024),
- userBindCh: make(chan interface{}, 1024),
- // prom
- pHit: prom.CacheHit,
- pMiss: prom.CacheMiss,
- }
- // now := time.Now()
- s.loadIPlimit(c)
- s.loadUnicomIP()
- // s.loadUnicomIPOrder(now)
- s.loadUnicomPacks()
- // s.loadUnicomFlow()
- go s.loadproc()
- go s.unicomInfocproc()
- go s.unicomPackInfocproc()
- go s.addUserPackLogproc()
- s.waiter.Add(1)
- go s.userbindConsumer()
- return
- }
- // cacheproc load cache
- func (s *Service) loadproc() {
- for {
- time.Sleep(s.tick)
- // now := time.Now()
- s.loadUnicomIP()
- // s.loadUnicomIPOrder(now)
- s.loadUnicomPacks()
- // s.loadUnicomFlow()
- }
- }
|