gossip协议

gossip协议用于分布式中consul就是使用gossip协议,gossip协议是流行病协议,

流行病:    一 传十, 十传百,就这样所有人都感染了。

gossip也是这样

           1.  网络中某个节点随机选择k个节点 (k个节点都是没传染的节点) 散播消息

           2. k个节点接着传下去

最终消息传遍了整个集群,这里只是简单的介绍,其实gossip协议它还有很多内容,这里主要是是看看代码。

使用gossip协议可以使用

go get github.com/hashicorp/memberlist
    node := flag.String("node", "127.0.0.1", "local node")
	cluster := flag.String("cluster", "", "add exist cluster")
	flag.Parse()
	conf := memberlist.DefaultLANConfig()
	conf.Name = *node
	conf.BindAddr = *node
	list, err := memberlist.Create(conf)

	if err != nil {
		panic("Failed to create memberlist: " + err.Error())
	}

	// 将list加入到已存在的集群.
	if *cluster == "" {
		n, err := list.Join([]string{*cluster})
		if err != nil {
			panic("Failed to join cluster: " + err.Error())
		}
	}
	// Ask for members of the cluster
	for _, member := range list.Members() {
		fmt.Printf("Member: %s %s\n", member.Name, member.Addr)
	}
  master:
   ./server -node 172.17.0.2
  node1:
   ./server -node 172.17.0.3  -cluster 172.17.0.2
  node2:
   ./server  -node 172.17.0.4  -cluster 172.17.0.2
  或者
  node3:
    ./server  -node 172.17.0.5   -cluster 172.17.0.4
  node4:
    ./server  -node 172.17.0.6  -cluster 172.17.0.5
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值