From 161a6826538945851cb367b1f743461265542839 Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期三, 04 九月 2019 16:27:40 +0800
Subject: [PATCH] 合并晓龙因业务而增加的更新
---
agent.go | 39 +++++++++++++++++++++++----------------
searcher.go | 13 +++++++++----
2 files changed, 32 insertions(+), 20 deletions(-)
diff --git a/agent.go b/agent.go
index 1f84e47..0a6b6ac 100644
--- a/agent.go
+++ b/agent.go
@@ -25,6 +25,7 @@
"io/ioutil"
"net"
"os"
+ "strconv"
//"os"
"strings"
@@ -444,14 +445,14 @@
}
//Init serf Init
-func Init(clusterID string, password string, nodeID string, ips []string) (*Agent, error) {
+func Init(clusterID string, password string, nodeID string, addrs []string) (*Agent, error) {
agent, err := InitNode(clusterID, password, nodeID)
if err != nil {
fmt.Printf("InitNode failed, error: %s", err)
return agent, err
}
- err = agent.JoinByNodeIP(ips)
+ err = agent.JoinByNodeAddrs(addrs)
if err != nil {
fmt.Printf("JoinByNodeIP failed, error: %s", err)
return agent, err
@@ -496,6 +497,21 @@
return agent, nil
}
+func (a *Agent) JoinByNodeAddrs(addrs []string) error {
+ var nodes []string
+
+ if len(addrs) == 0 {
+ return fmt.Errorf("No Nodes To Join!")
+ }
+ for _, addr := range addrs {
+ nodes = append(nodes, addr)
+ }
+
+ a.Agent.Join(nodes, true)
+
+ return nil
+}
+
func (a *Agent) JoinByNodeIP(ips []string) error {
var nodes []string
@@ -509,30 +525,21 @@
n, err := a.Agent.Join(nodes, true)
if err != nil || n == 0 {
- //a.Stop()
- //fmt.Println("Stop node")
return fmt.Errorf("Error Encrypt Key!")
}
return err
}
-type Node struct {
- clusterID string
- NodeID string
- IP string
- isAlive int //StatusNone:0, StatusAlive:1, StatusLeaving:2, StatusLeft:3, StatusFailed:4
-}
-
-func (a *Agent) GetNodes() (nodes []Node) {
- var node Node
+func (a *Agent) GetNodes() (nodes []NodeInfo) {
+ var node NodeInfo
fmt.Println("a.conf.ClusterID:", a.conf.ClusterID)
mbs := a.GroupMembers(a.conf.ClusterID)
for _, mb := range mbs {
node.NodeID = mb.Name
- node.IP = mb.Addr.String()
- node.isAlive = int(mb.Status)
- node.clusterID = mb.Tags[tagKeyClusterID]
+ node.NodeAddress = mb.Addr.String() + ":" + strconv.Itoa(int(mb.Port))
+ node.IsAlive = int(mb.Status)
+ node.ClusterID = mb.Tags[tagKeyClusterID]
nodes = append(nodes, node)
}
diff --git a/searcher.go b/searcher.go
index afd2daa..2f7096e 100644
--- a/searcher.go
+++ b/searcher.go
@@ -9,7 +9,7 @@
)
var (
- members [][]byte
+ members = make(map[string]NodeInfo,0)
delay time.Duration
)
@@ -53,7 +53,12 @@
// NotifyMsg is called when a user-data message is received
func (d *delegate) NotifyMsg(b []byte) {
// logMsg(b)
- members = append(members, b)
+ n := NodeInfo{}
+ if err:= json.Unmarshal(b, &n);err ==nil {
+ members[n.NodeID] = n
+ } else {
+ fmt.Println("NotifyMsg msg unmarshal err")
+ }
}
func logMsg(b []byte) {
@@ -90,7 +95,7 @@
return memberlist.Create(conf)
}
-func CreateSearchNodeWhitClose(key string, delay time.Duration) [][]byte {
+func CreateSearchNodeWhitClose(key string, delay time.Duration) map[string]NodeInfo {
m, err := CreateSearchNode(key)
if err == nil {
// fmt.Printf("Local member %s:%d\n", m.LocalNode().Addr, m.LocalNode().Port)
@@ -105,6 +110,6 @@
return m.Shutdown()
}
-func GetSearchNodes() [][]byte {
+func GetSearchNodes() map[string]NodeInfo {
return members
}
--
Gitblit v1.8.0