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