leader

package
v0.0.0-...-3055c0c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2017 License: BSD-3-Clause Imports: 8 Imported by: 0

README

Zookeeper Leader

This package implements zookeeper leader mode by Go.

Usage:


package main

import (
	"fmt"
	zkConf "github.com/928799934/zookeeper/conf"
	zkLeader "github.com/928799934/zookeeper/leader"
	"sync"
	"testing"
	"time"
)

var (
	leader bool
	wg     sync.WaitGroup
)

func view() {
	defer wg.Done()
	for leader {
		fmt.Println("i'm leader")
		time.Sleep(time.Second / 2)
	}
	fmt.Println("i'm not leader")
}

func main() {
	conf := &zkConf.Conf{
		[]string{"10.60.82.109:2181", "10.60.82.109:2182", "10.60.82.109:2183"},
		time.Second,
		"/ElectMaster2",
	}
	ele, err := zkLeader.NewNode(conf)
	if err != nil {
		fmt.Printf("connect error(%v)", err)
		return
	}

	go func() {
		time.Sleep(time.Second * 30)
		ele.Close()
	}()

	for {
		e, ok := <-ele.State()
		if !ok {
			fmt.Println("break loop")
			break
		}
		switch e {
		case zkLeader.StateConnected:
		case zkLeader.StateDisconnected:
		case zkLeader.StateLeader:
			leader = true
			wg.Add(1)
			go view()
		case zkLeader.StateFollower:
			leader = false
		}
	}
	wg.Wait()
}

Documentation

Index

Constants

View Source
const (
	StateConnected    zk.State = 100
	StateDisconnected zk.State = 0
	StateLeader       zk.State = 1000
	StateFollower     zk.State = 1001
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Logger

type Logger interface {
	Printf(string, ...interface{})
}

Logger is an interface that can be implemented to provide custom log output.

var DefaultLogger Logger = defaultLogger{}

type Node

type Node interface {
	Close()
	State() <-chan zk.State
}

Node 外部对象

func NewNode

func NewNode(conf *zkConf.Conf) (Node, error)

NewNode 创建节点

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL