93 lines
2.1 KiB
Go
93 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"github.com/coreos/etcd/clientv3"
|
|
"log"
|
|
"rocommon/service"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
/*
|
|
log.SetFlags(log.Lshortfile | log.LstdFlags)
|
|
|
|
conf := clientv3.Config{
|
|
Endpoints: []string{"192.168.73.129:2379"},
|
|
DialTimeout: 10 * time.Second,
|
|
}
|
|
|
|
cli,err := clientv3.New(conf)
|
|
if err != nil {
|
|
log.Fatalf("etcd connect err:", err)
|
|
}
|
|
defer cli.Close()
|
|
|
|
ctx, _ := context.WithTimeout(context.TODO(), 5 * time.Second)
|
|
kv := clientv3.NewKV(cli)
|
|
putack, err := kv.Put(ctx, "etcdchy", "helloworld")
|
|
if err != nil {
|
|
log.Println("kv put err:", err)
|
|
}
|
|
log.Println("put kv:", putack)
|
|
|
|
getack,err := kv.Get(ctx, "etcdchy")
|
|
if err != nil {
|
|
log.Println("kv get err:", err)
|
|
}
|
|
log.Println("get kv:", getack)
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
cli,err := clientv3.NewFromURL("http://192.168.73.129:2379")
|
|
if err != nil {
|
|
log.Fatalln("NewFromURL err:", err)
|
|
}
|
|
r := &naming.GRPCResolver{Client:cli}
|
|
b := grpc.RoundRobin(r)
|
|
conn, geer := grpc.Dial("my-service", grpc.WithBalancer(b))
|
|
if geer != nil {
|
|
log.Fatalln("NewFromURL err:", geer)
|
|
}
|
|
log.Println("conn:", conn)
|
|
*/
|
|
|
|
conf := clientv3.Config{
|
|
Endpoints: []string{"192.168.73.129:2379"},
|
|
DialTimeout: 10 * time.Second,
|
|
}
|
|
|
|
cli, err := clientv3.New(conf)
|
|
if err != nil {
|
|
log.Fatalf("etcd connect err:", err)
|
|
}
|
|
defer cli.Close()
|
|
|
|
kv := clientv3.NewKV(cli)
|
|
leaseResp, _ := cli.Grant(context.TODO(), 10) //返回 lease相关信息
|
|
ctx, _ := context.WithTimeout(context.TODO(), 10*time.Second)
|
|
//rsp, err := kv.Put(ctx, "root/game/1-1-1", `{"addr":"127.0.0.1:1111"}`, clientv3.WithLease(leaseResp.ID))
|
|
rsp, err := kv.Put(ctx, "rootgame", `{"addr":"127.0.0.1:1111"}`, clientv3.WithLease(leaseResp.ID))
|
|
log.Println("rsp:", rsp)
|
|
//cli.KeepAlive()
|
|
cli.KeepAlive(context.TODO(), leaseResp.ID)
|
|
|
|
go func() {
|
|
for {
|
|
select {
|
|
case <-time.After(5 * time.Second):
|
|
rsp, err := kv.Get(context.TODO(), "rootgame")
|
|
if err != nil {
|
|
log.Println("kv get err:", err)
|
|
} else {
|
|
log.Println("kv get data:", rsp.Kvs, rsp.Count)
|
|
}
|
|
}
|
|
}
|
|
}()
|
|
|
|
service.WaitExitSignal()
|
|
}
|