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() }