mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-21 17:21:09 +01:00
@@ -14,16 +14,18 @@ import (
|
||||
"github.com/apex/log"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
"github.com/gomodule/redigo/redis"
|
||||
"github.com/spf13/viper"
|
||||
"runtime/debug"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Data struct {
|
||||
Key string `json:"key"`
|
||||
Mac string `json:"mac"`
|
||||
Ip string `json:"ip"`
|
||||
Hostname string `json:"hostname"`
|
||||
Key string `json:"key"`
|
||||
Mac string `json:"mac"`
|
||||
Ip string `json:"ip"`
|
||||
Hostname string `json:"hostname"`
|
||||
Name string `json:"name"`
|
||||
NameType string `json:"name_type"`
|
||||
|
||||
Master bool `json:"master"`
|
||||
UpdateTs time.Time `json:"update_ts"`
|
||||
UpdateTsUnix int64 `json:"update_ts_unix"`
|
||||
@@ -122,19 +124,6 @@ func UpdateNodeStatus() {
|
||||
}
|
||||
}
|
||||
|
||||
func getNodeName(data *Data) string {
|
||||
registerType := viper.GetString("server.register.type")
|
||||
if registerType == constants.RegisterTypeMac {
|
||||
return data.Ip
|
||||
} else if registerType == constants.RegisterTypeIp {
|
||||
return data.Ip
|
||||
} else if registerType == constants.RegisterTypeHostname {
|
||||
return data.Hostname
|
||||
} else {
|
||||
return data.Ip
|
||||
}
|
||||
}
|
||||
|
||||
// 处理节点信息
|
||||
func UpdateNodeInfo(data *Data) (err error) {
|
||||
// 更新节点信息到数据库
|
||||
@@ -144,17 +133,18 @@ func UpdateNodeInfo(data *Data) (err error) {
|
||||
_, err = c.Upsert(bson.M{"key": data.Key}, bson.M{
|
||||
"$set": bson.M{
|
||||
"status": constants.StatusOnline,
|
||||
"key": data.Key,
|
||||
"name": data.Name,
|
||||
"name_type": data.NameType,
|
||||
"ip": data.Ip,
|
||||
"port": "8000",
|
||||
"mac": data.Mac,
|
||||
"is_master": data.Master,
|
||||
"update_ts": time.Now(),
|
||||
"update_ts_unix": time.Now().Unix(),
|
||||
},
|
||||
"$setOnInsert": bson.M{
|
||||
"_id": bson.NewObjectId(),
|
||||
"key": data.Key,
|
||||
"name": getNodeName(data),
|
||||
"ip": data.Ip,
|
||||
"port": "8000",
|
||||
"mac": data.Mac,
|
||||
"is_master": data.Master,
|
||||
"_id": bson.NewObjectId(),
|
||||
},
|
||||
})
|
||||
return err
|
||||
@@ -170,6 +160,8 @@ func UpdateNodeData() {
|
||||
Mac: localNode.Mac,
|
||||
Ip: localNode.Ip,
|
||||
Hostname: localNode.Hostname,
|
||||
Name: localNode.Identify,
|
||||
NameType: string(localNode.IdentifyType),
|
||||
Master: model.IsMaster(),
|
||||
UpdateTs: time.Now(),
|
||||
UpdateTsUnix: time.Now().Unix(),
|
||||
@@ -243,7 +235,12 @@ func InitNodeService() error {
|
||||
|
||||
// 首次更新节点数据(注册到Redis)
|
||||
UpdateNodeData()
|
||||
|
||||
if model.IsMaster() {
|
||||
err = model.UpdateMasterNodeInfo(node.Identify, node.Ip, node.Mac, node.Hostname)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
err = node.Ready()
|
||||
|
||||
if err != nil {
|
||||
@@ -251,11 +248,6 @@ func InitNodeService() error {
|
||||
}
|
||||
|
||||
if model.IsMaster() {
|
||||
err = model.UpdateMasterNodeInfo(node.Identify, node.Ip, node.Mac, node.Hostname)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// 如果为主节点,订阅主节点通信频道
|
||||
if err := database.Sub(constants.ChannelMasterNode, MasterNodeCallback); err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user