etcdtest_main.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package main
  2. import (
  3. "context"
  4. "github.com/coreos/etcd/clientv3"
  5. "log"
  6. "rocommon/service"
  7. "time"
  8. )
  9. func main() {
  10. /*
  11. log.SetFlags(log.Lshortfile | log.LstdFlags)
  12. conf := clientv3.Config{
  13. Endpoints: []string{"192.168.73.129:2379"},
  14. DialTimeout: 10 * time.Second,
  15. }
  16. cli,err := clientv3.New(conf)
  17. if err != nil {
  18. log.Fatalf("etcd connect err:", err)
  19. }
  20. defer cli.Close()
  21. ctx, _ := context.WithTimeout(context.TODO(), 5 * time.Second)
  22. kv := clientv3.NewKV(cli)
  23. putack, err := kv.Put(ctx, "etcdchy", "helloworld")
  24. if err != nil {
  25. log.Println("kv put err:", err)
  26. }
  27. log.Println("put kv:", putack)
  28. getack,err := kv.Get(ctx, "etcdchy")
  29. if err != nil {
  30. log.Println("kv get err:", err)
  31. }
  32. log.Println("get kv:", getack)
  33. */
  34. /*
  35. cli,err := clientv3.NewFromURL("http://192.168.73.129:2379")
  36. if err != nil {
  37. log.Fatalln("NewFromURL err:", err)
  38. }
  39. r := &naming.GRPCResolver{Client:cli}
  40. b := grpc.RoundRobin(r)
  41. conn, geer := grpc.Dial("my-service", grpc.WithBalancer(b))
  42. if geer != nil {
  43. log.Fatalln("NewFromURL err:", geer)
  44. }
  45. log.Println("conn:", conn)
  46. */
  47. conf := clientv3.Config{
  48. Endpoints: []string{"192.168.73.129:2379"},
  49. DialTimeout: 10 * time.Second,
  50. }
  51. cli, err := clientv3.New(conf)
  52. if err != nil {
  53. log.Fatalf("etcd connect err:", err)
  54. }
  55. defer cli.Close()
  56. kv := clientv3.NewKV(cli)
  57. leaseResp, _ := cli.Grant(context.TODO(), 10) //返回 lease相关信息
  58. ctx, _ := context.WithTimeout(context.TODO(), 10*time.Second)
  59. //rsp, err := kv.Put(ctx, "root/game/1-1-1", `{"addr":"127.0.0.1:1111"}`, clientv3.WithLease(leaseResp.ID))
  60. rsp, err := kv.Put(ctx, "rootgame", `{"addr":"127.0.0.1:1111"}`, clientv3.WithLease(leaseResp.ID))
  61. log.Println("rsp:", rsp)
  62. //cli.KeepAlive()
  63. cli.KeepAlive(context.TODO(), leaseResp.ID)
  64. go func() {
  65. for {
  66. select {
  67. case <-time.After(5 * time.Second):
  68. rsp, err := kv.Get(context.TODO(), "rootgame")
  69. if err != nil {
  70. log.Println("kv get err:", err)
  71. } else {
  72. log.Println("kv get data:", rsp.Kvs, rsp.Count)
  73. }
  74. }
  75. }
  76. }()
  77. service.WaitExitSignal()
  78. }