253 lines
4.8 KiB
Go
253 lines
4.8 KiB
Go
package conf
|
|
|
|
import (
|
|
"errors"
|
|
"flag"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
|
|
"go-common/library/conf"
|
|
"go-common/library/database/sql"
|
|
ecode "go-common/library/ecode/tip"
|
|
"go-common/library/log"
|
|
"go-common/library/log/infoc"
|
|
bm "go-common/library/net/http/blademaster"
|
|
"go-common/library/net/rpc"
|
|
"go-common/library/net/rpc/warden"
|
|
"go-common/library/net/trace"
|
|
"go-common/library/queue/databus"
|
|
"go-common/library/time"
|
|
|
|
"go-common/library/database/hbase.v2"
|
|
)
|
|
|
|
// Conf info.
|
|
var (
|
|
ConfPath string
|
|
Conf = &Config{}
|
|
client *conf.Client
|
|
)
|
|
|
|
// Config struct.
|
|
type Config struct {
|
|
// db
|
|
DB *DB
|
|
// base
|
|
// ecode
|
|
Ecode *ecode.Config
|
|
// log
|
|
Log *log.Config
|
|
// httpClinet
|
|
HTTPClient *HTTPClient
|
|
// BM
|
|
BM *HTTPServers
|
|
// tracer
|
|
Tracer *trace.Config
|
|
// host
|
|
Host *Host
|
|
// Databus
|
|
Env string
|
|
Consume bool
|
|
Pub bool
|
|
ArcSub *databus.Config
|
|
ArcNotifySub *databus.Config
|
|
UpPub *databus.Config
|
|
//task
|
|
TaskSub, ShareSub, RelationSub, StatLikeSub *databus.Config
|
|
StatShareSub, StatCoinSub, StatFavSub *databus.Config
|
|
StatReplySub, StatDMSub, StatViewSub *databus.Config
|
|
NewUpSub *databus.Config
|
|
|
|
Task *Task
|
|
// channal len
|
|
ChanSize int64
|
|
//moni
|
|
Monitor *Monitor
|
|
// rpc client2
|
|
ArchiveRPC *rpc.ClientConfig
|
|
ArticleRPC *rpc.ClientConfig
|
|
// grpc Client
|
|
CreativeGRPClient *warden.ClientConfig
|
|
UpGRPCClient *warden.ClientConfig
|
|
//hot compute switch
|
|
HotSwitch bool
|
|
//hot compute switch
|
|
HonorSwitch bool
|
|
HonorStep int
|
|
HonorMSGSpec string
|
|
HonorFlushSpec string
|
|
SendEveryWeek bool
|
|
// hbase
|
|
HBaseOld *HBaseConfig
|
|
// infoc
|
|
WeeklyHonorInfoc *infoc.Config
|
|
}
|
|
|
|
// DB conf.
|
|
type DB struct {
|
|
// Creative db
|
|
Creative *sql.Config
|
|
// Archive db
|
|
Archive *sql.Config
|
|
}
|
|
|
|
// HBaseConfig for new hbase client.
|
|
type HBaseConfig struct {
|
|
*hbase.Config
|
|
WriteTimeout time.Duration
|
|
ReadTimeout time.Duration
|
|
}
|
|
|
|
// HTTPServers Http Servers
|
|
type HTTPServers struct {
|
|
Outer *bm.ServerConfig
|
|
}
|
|
|
|
// HTTPClient conf.
|
|
type HTTPClient struct {
|
|
Normal *bm.ClientConfig
|
|
Slow *bm.ClientConfig
|
|
}
|
|
|
|
// Host conf.
|
|
type Host struct {
|
|
Monitor string
|
|
Passport string
|
|
Account string
|
|
Message string
|
|
API string
|
|
Videoup string
|
|
}
|
|
|
|
// Monitor conf.
|
|
type Monitor struct {
|
|
Host string
|
|
Moni string
|
|
UserName string
|
|
AppSecret string
|
|
AppToken string
|
|
}
|
|
|
|
// Task conf.
|
|
type Task struct {
|
|
//扫表
|
|
RowLimit int //每次从表中取的最大数据量
|
|
TableJobNum int //开启n张表的扫描任务的协程数量
|
|
TableConsumeNum int //开启消费表数据的协程数量
|
|
//databus 消费
|
|
SwitchHighQPS bool
|
|
SwitchDatabus bool
|
|
DatabusQueueLen int
|
|
StatViewQueueLen int
|
|
StatLikeQueueLen int
|
|
ChanSize int
|
|
//task notify
|
|
SwitchMsgNotify bool
|
|
TaskRowLimitNum int
|
|
TaskTableJobNum int
|
|
TaskTableConsumeNum int
|
|
TaskExpireTime int64
|
|
TaskSendHour int
|
|
TaskSendMiniute int
|
|
TaskSendSecond int
|
|
TaskBatchMidNum int
|
|
|
|
TaskMsgCode string
|
|
TaskTitle string
|
|
TaskContent string
|
|
TestNotifyMids string
|
|
//reward notify
|
|
RewardRowLimitNum int
|
|
RewardTableJobNum int
|
|
RewardTableConsumeNum int
|
|
RewardWeek int
|
|
RewardLastDay int
|
|
RewardLastHour int
|
|
RewardLastMiniute int
|
|
RewardLastSecond int
|
|
RewardNowHour int
|
|
RewardNowMiniute int
|
|
RewardNowSecond int
|
|
RewardSendHour int
|
|
RewardSendMiniute int
|
|
RewardSendSecond int
|
|
RewardBatchMidNum int
|
|
|
|
RewardMsgCode string
|
|
RewardTitle string
|
|
RewardContent string
|
|
BiliMID int64
|
|
|
|
//新手和进阶粉丝数
|
|
NewFollower int64
|
|
AdvancedFollower int64
|
|
|
|
//单个稿件计数
|
|
StatView int64
|
|
StatLike int64
|
|
StatReply int64
|
|
StatShare int64
|
|
StatFav int64
|
|
StatCoin int64
|
|
StatDM int64
|
|
//单个稿件计数设定上限
|
|
StatViewUp int64
|
|
StatLikeUp int64
|
|
StatReplyUp int64
|
|
StatShareUp int64
|
|
StatFavUp int64
|
|
StatCoinUp int64
|
|
StatDMUp int64
|
|
}
|
|
|
|
func init() {
|
|
flag.StringVar(&ConfPath, "conf", "", "default config path")
|
|
}
|
|
|
|
// Init conf.
|
|
func Init() (err error) {
|
|
if ConfPath != "" {
|
|
return local()
|
|
}
|
|
return remote()
|
|
}
|
|
|
|
func local() (err error) {
|
|
_, err = toml.DecodeFile(ConfPath, &Conf)
|
|
return
|
|
}
|
|
|
|
func remote() (err error) {
|
|
if client, err = conf.New(); err != nil {
|
|
return
|
|
}
|
|
if err = load(); err != nil {
|
|
return
|
|
}
|
|
go func() {
|
|
for range client.Event() {
|
|
log.Info("config reload")
|
|
if load() != nil {
|
|
log.Error("config reload error (%v)", err)
|
|
}
|
|
}
|
|
}()
|
|
return
|
|
}
|
|
|
|
func load() (err error) {
|
|
var (
|
|
tomlStr string
|
|
ok bool
|
|
tmpConf *Config
|
|
)
|
|
if tomlStr, ok = client.Toml2(); !ok {
|
|
return errors.New("load config center error")
|
|
}
|
|
if _, err = toml.Decode(tomlStr, &tmpConf); err != nil {
|
|
return errors.New("could not decode toml config")
|
|
}
|
|
*Conf = *tmpConf
|
|
return
|
|
}
|