共计 696 个字符,预计需要花费 2 分钟才能阅读完成。
Gossip 协定
一种共识算法,具体的原理倡议给位小伙伴自行谷歌
Gossip 协定包引入
$ go get github.com/hashicorp/[email protected]
测试
// gossip.go
package main
import(
"fmt"
"github.com/hashicorp/memberlist"
)
func main(){
// 应用 Create 办法创立一个成员实例, 这个成员实例就代表着一群的机器
list, err := memberlist.Create(memberlist.DefaultLocalConfig())
if err != nil{panic(err)
}
// 应用 Join 办法退出一个曾经存在的机器群
// 这里的参数是一个 string 切片,只有填写这个集群中的一台机器即可,// gossip 协定会将这个“谰言”散播给机器群的所有机器
_, err = list.Join([]string{"0.0.0.0"})
if err != nil{panic(err)
}
for _, node := range list.Members(){fmt.Println(node.Name, node.Addr)
}
}
$ go run gossip.go
2022/10/20 00:28:52 [DEBUG] memberlist: Initiating push/pull sync with: 127.0.0.1:7946
2022/10/20 00:28:52 [DEBUG] memberlist: Stream connection from=127.0.0.1:32970
634abb028f5466864d91f4a1 192.168.42.6
正文完