API节点自动生成实例代号,用来外界查询多个API节点实例是否为同一个

This commit is contained in:
GoEdgeLab
2022-07-21 19:21:11 +08:00
parent c08aaa2169
commit 384de90f00
4 changed files with 36 additions and 6 deletions

View File

@@ -161,6 +161,20 @@ func main() {
}
}
})
app.On("instance", func() {
var sock = gosock.NewTmpSock(teaconst.ProcessName)
reply, err := sock.Send(&gosock.Command{Code: "instance"})
if err != nil {
fmt.Println("[ERROR]" + err.Error())
} else {
replyJSON, err := json.MarshalIndent(reply.Params, "", " ")
if err != nil {
fmt.Println("[ERROR]marshal result failed: " + err.Error())
} else {
fmt.Println(string(replyJSON))
}
}
})
app.Run(func() {
nodes.NewAPINode().Start()

View File

@@ -2,9 +2,18 @@
package teaconst
var (
IsPlus = false
MaxNodes int32 = 0
NodeId int64 = 0
Debug = false
import (
"crypto/sha1"
"fmt"
"github.com/iwind/TeaGo/rands"
"github.com/iwind/TeaGo/types"
"time"
)
var (
IsPlus = false
MaxNodes int32 = 0
NodeId int64 = 0
Debug = false
InstanceCode = fmt.Sprintf("%x", sha1.Sum([]byte("INSTANCE"+types.String(time.Now().UnixNano())+"@"+types.String(rands.Int64()))))
)

View File

@@ -677,6 +677,12 @@ func (this *APINode) listenSock() error {
Params: map[string]interface{}{"count": 0},
})
}
case "instance":
_ = cmd.Reply(&gosock.Command{
Params: map[string]interface{}{
"code": teaconst.InstanceCode,
},
})
}
})

View File

@@ -273,8 +273,9 @@ func (this *APINodeService) FindCurrentAPINode(ctx context.Context, req *pb.Find
RestHTTPSJSON: nil,
AccessAddrsJSON: node.AccessAddrs,
AccessAddrs: accessAddrs,
StatusJSON: nil,
StatusJSON: node.Status,
IsPrimary: node.IsPrimary,
InstanceCode: teaconst.InstanceCode,
}}, nil
}