lftk / etcdd

etcd service discovery

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

etcdd

etcd service discovery, compatible with v2 and v3 etcd.

getting

go get github.com/4396/etcdd

usage

new discoverer

endpoints := []string{
    "http://127.0.0.1:2379",
}

dv2, err := etcdd.NewV2(endpoints)
if err != nil {
    // ...
}
dv3, err := etcdd.NewV3(endpoints)
if err != nil {
    // ...
}

register and unregister

svrname := "svr1"
svraddr := "127.0.0.1:1234"
namespace := "/services"
timeout := time.Second * 5

// register service, returns keepalive function
keepalive, err := dv3.Register(namespace, svrname, svraddr, timeout * 2)
if err != nil {
    // ...
}
// unregister service
defer dv3.Unregister(namespace, svrname)

// keep alive service
ticker := time.NewTicker(timeout)
for {
    select {
    case <-ticker.C:
        if err = keepalive(); err != nil {
            // ...
        }
    }
}

watch namespace

// watch namespace, returns chan event and cancel function
event, cancel, err := dv3.Watch(namespace)
if err != nil {
    // ...
}
// cancel watch
defer cancel()

for {
    select {
    case ev, ok := <-event:
        if ok {
            fmt.Println(ev.Action, ev.Name, ev.Addr)
        }
    }
}

list services

svrs, err := dv3.Services(namespace)
if err != nil {
    // ...
}
for name, addr := range svrs {
    fmt.Println(name, addr)
}

version

ver := dv3.Version()
if ver != 3 {
    // ...
}

close

err := dv3.Close()
if err != nil {
    // ...
}

example

About

etcd service discovery

License:Apache License 2.0


Languages

Language:Go 100.0%