chenshijun
2019-09-04 161a6826538945851cb367b1f743461265542839
合并晓龙因业务而增加的更新
2个文件已修改
52 ■■■■■ 已修改文件
agent.go 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
searcher.go 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
    }
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
}