顺序
main.go
kingbus/CMD/kingbus
Package main
Import(
Flag '
Fmt '
“操作系统”
Os/signal '
' Syscall '
GI;
GI;
GI;
)。
Var(
//builddate used for generating build date in make command
BuildDate string
//build version used for generating king bus version in make command
构建版本字符串(BuildVersion string)
)。
Const banner string=`
_ _ _ _ _ _
//_ _ _ _(_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/////_ _ _ _ _ _ _ '/_ _ _ _ _ _/////_ _ _/
/、///////////////////_/(_ _)
/_/| _/_/_/_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _/
/_ _ _ _ _ _/
“`
Func main() {
ConfigFile :=('config ','。“kingbus config file”)
Printversion:=('version ',false,' print king bus version info ')
()
//only打印版本
If *打印版本{
(' version is% s,build at% s n ',build version,builddate)
Return
}
(横幅)
(' version is% s,build at% s n ',build version,builddate)
Iflen (*配置文件)==0 {
(' must use a config file ')
Return
}
Servercfg、err:=con (*配置文件)
If err!=nil {
(“newkingbusserverconfig error、err3360% s n”、err.error())
Return
}
//init log
Log。InitLogger、)
Defer log。UnInitLoggers()
Ks,err :=(serverCfg)
If err!=nil {
log . log . fatalf(' main : newkingbusserver error、err :% s '、err)
}
Sc :=make(chan os。Signal,1)
(sc,
而且,
而且,
而且,
)。
Go func() {
For {
Sig :=-sc
If SIG==|| SIG==|| SIG=={
Ks。Stop()
操作系统。Exit(0)
}
}
}()
Ks。Run()
}main方法读取config,version参数,通过con(*configFile)获取serverCfg,然后通过(serverCfg)创建KingbusServer并运行ks.re
func newkingbusserverconfig(config path string)(* kingbusserverconfig,error) {
if config path=' ' {
Return nil,errors.new ('config path is nil ')
}
配置路径(Vi)
if err :=VI();Err!=nil {
Return nil、err
}
//get raft node config
Raftnodecfg、err:=getraftnodeconfig()
If err!=nil {
Return nil、err
}
Adminurls、err :=([]string { VI(' admin-URL ')})
If err!=nil {
Return nil、err
}
If len(管理URLs)!=1 {
Return nil,(' adminURLs muster be 1 ')
}
kscfg :=kingbusserverconfig {
RaftNodeCfg: *raftNodeCfg、
管理URLs :管理URLs、
metrics addr : VI(' metrics-addr '),
logdir : VI(“log-dir”)、
}
Return ksCfg,nil
}NewKingbusServerConfig方法通过viper解析配置文件。KingbusServerConfig定义了RaftNodeCfg、AdminURLs、MetricsAddr、LogDir和LogLevel属性
con
kingbus/server/
func newkingbusserver(CFG * con)(* kingbusserver,error) {
S :=new(KingbusServer)
S.Cfg=CFG
S.lead=a(0)
Err :=s.starRa)
If err!=nil {
log . log . errorf(' newkingbusserver : start raft error,err :% s ',err)
Return nil、err
}
Err=s.startRaftPeer)
If err!=nil {
log . log . errorf(' newkingbusserver : start raftpeer error,err :% s ',err)
Return nil、err
}
Err=s.startAdminServer)
If err!=nil {
log . log . errorf(' newkingbusserver : startadminserver error,err:% s ',err)
Return nil、err
}
If err!=nil {
log . log . errorf(' newkingbusserver : newbinlogprogress error、err3360% s '、err)
Return nil、err
}
Err=s.startPrometheu)
If err!=nil {
log . log . errorf(' newkingbusserver : start Prometheus error,err :% s ',err)
Return nil、err
}
S.started=a(false)
Return s,nil
}NewKingbusServer主要通过KingbusServerConfig提供KingbusServer创建。运行KingbusServer的starRaft、startRaftPeer、startAdminServer、newBinlogProgress、startPrometheus
kingbus,然后运行Run()
小结
main.go
1.《关于kingexit我想说聊聊kingbus的main.go》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《关于kingexit我想说聊聊kingbus的main.go》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.cxvn.com/gl/djyxgl/146898.html