ETCD première expérience

1, l'ETCD d'installation dans un environnement Mac

Utilisation de la commande: Brew installer ETCD, brasser un petit partenaire n'est pas installé, s'il vous plaît installer vous-même

2, démarrer le service

Entrez dans un terminal: ETCD, le message suivant apparaît le démarrage réussi

3, PUT, GET

import (
	"context"
	"encoding/xml"
	"fmt"
	"go.etcd.io/etcd/clientv3"
	"time"
)

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

	fmt.Println("connect succ")
	defer cli.Close()
	//设置1秒超时,访问etcd有超时控制
	ctx, cancel := context.WithTimeout(context.Background(), time.Second)
	//操作etcd
	_, err = cli.Put(ctx, "etcdTest", "sample_value")
	//操作完毕,取消etcd
	cancel()
	if err != nil {
		fmt.Println("put failed, err:", err)
		return
	}
	//取值,设置超时为1秒
	ctx, cancel = context.WithTimeout(context.Background(), time.Second)
	resp, err := cli.Get(ctx, "etcdTest")
	cancel()
	if err != nil {
		fmt.Println("get failed, err:", err)
		return
	}
	fmt.Println("resp.Kvs:",resp.Kvs)
	for _, ev := range resp.Kvs {
		fmt.Printf("%s : %s\n", ev.Key, ev.Value)
	}

	return
}

Les résultats d'exploitation, la sortie de la console:

Connectez succ
resp.Kvs: [clé: "etcdTest" create_revision: 13 mod_revision: 13 Version: 1 Valeur: "sample_value"]
etcdTest: sample_value

4, WATCH

Le programme suivant aller construire, pour générer un fichier exécutable, en cours d'exécution dans le programme de terminal et une console, qui se terminera dans la sortie d'impression pour surveiller: résultat montre ......

import (
	"context"
	"encoding/xml"
	"fmt"
	"go.etcd.io/etcd/clientv3"
	"time"
)

func main() {
	cli, err := clientv3.New(clientv3.Config{
		Endpoints:   []string{"localhost:2379", "localhost:22379", "localhost:32379"},
		DialTimeout: 5 * time.Second,
	})
	if err != nil {
		fmt.Println("connect failed, err:", err)
		return
	}
	fmt.Println("connect succ")
	defer cli.Close()
	cli.Put(context.Background(), "/etcdTest", "8888888")
	for {
		// watch key 监听节点
		rch := cli.Watch(context.Background(), "/etcdTest")
		for wresp := range rch {
			for _, ev := range wresp.Events {
				fmt.Printf("watch result:%s %q : %q\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
			}
		}
	}
}

 

Publié huit articles originaux · louange gagné 1 · vues 9091

Je suppose que tu aimes

Origine blog.csdn.net/xiaoxiao_haiyan/article/details/104953718
conseillé
Classement