天天看點

etcd使用筆記1

1、啟動服務端

etcd使用筆記1

2、 設定版本set ETCDCTL_API=3

3、使用用戶端指令操作:

etcdctl put key1 value1               成功傳回OK

4、代碼操作

1、向etcd中put,set

func main() {

	SetLogConfToEtcd()
	//EtcdExmaple()
}

func EtcdExmaple() {
	cli, err := clientv3.New(clientv3.Config{
		Endpoints:   []string{"localhost:2379"},
		DialTimeout: 100 * time.Second,
	})
	if err != nil {
		fmt.Println("connect failed, err:", err)
		return
	}

	fmt.Println("connect succ")
	defer cli.Close()

	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	_, err = cli.Put(ctx, "/logagent/conf/", "sample_value")
	cancel()
	if err != nil {
		fmt.Println("put failed, err:", err)
		return
	}

	ctx, cancel = context.WithTimeout(context.Background(), time.Second)
	resp, err := cli.Get(ctx, "/logagent/conf/")
	cancel()
	if err != nil {
		fmt.Println("get failed, err:", err)
		return
	}
	for _, ev := range resp.Kvs {
		fmt.Printf("%s : %s\n", ev.Key, ev.Value)
	}
}
           

測試結果:

connect succ
/logagent/conf/ : sample_value
           

2、watch監聽

func main() {

	cli, err := clientv3.New(clientv3.Config{
		Endpoints:   []string{"localhost:2379"},
		DialTimeout: 10 * time.Second,
	})
	if err != nil {
		fmt.Println("connect failed, err:", err)
		return
	}

	fmt.Println("connect succ")
	defer cli.Close()

	cli.Put(context.Background(), "/logagent/conf/", "2222222222")
	for {
		rch := cli.Watch(context.Background(), "/logagent/conf/")    //到這裡就會停下,一直監聽。
		for wresp := range rch {
			for _, ev := range wresp.Events {
				fmt.Printf("%s %q : %q\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
			}
		}
	}
}
           

結果:

1、處于監聽狀态:

etcd使用筆記1

2、修改etcd中的key值,etcd可以監聽到了。

etcd使用筆記1