Maison > développement back-end > Golang > le corps du texte

Comment utiliser etcd dans Golang

王林
Libérer: 2023-05-10 09:24:36
original
1212 Les gens l'ont consulté

Dans les systèmes distribués, la gestion de la configuration est un maillon très critique. etcd est un conteneur de stockage clé-valeur hautement disponible, distribué et cohérent qui est souvent utilisé dans des scénarios tels que la coordination distribuée, la découverte de services et la gestion de configuration. Golang est un langage compilé En raison de ses performances efficaces et de ses fonctionnalités de concurrence, il est devenu le meilleur choix pour utiliser etcd. Cet article présentera comment Golang utilise etcd.

  1. Installez etcd

Téléchargez la version qui correspond au système depuis le site officiel https://github.com/etcd-io/etcd/releases, décompressez-la et exécutez etcd.

  1. Installer la bibliothèque client etcd
go get go.etcd.io/etcd/clientv3
Copier après la connexion
  1. Connecter etcd

La façon de connecter etcd dans Golang se fait via la bibliothèque clientv3 fournie par etcd. Voici un exemple simple de connexion à etcd :

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

func main() {
    config := clientv3.Config{
        Endpoints:   []string{"localhost:2379"}, // etcd endpoints
        DialTimeout: 5 * time.Second,
    }
    client, err := clientv3.New(config)
    if err != nil {
        // handle error
    }
    defer client.Close()
}
Copier après la connexion
  1. Écriture et lecture de paires clé-valeur

Ensuite, nous pouvons utiliser les méthodes Put et Get fournies par clientv3 pour écrire et lire des paires clé-valeur. La méthode Put écrira une paire clé-valeur dans etcd et la méthode Get lira la valeur de la clé dans etcd. Voici un exemple complet :

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

func main() {
    // 连接etcd
    config := clientv3.Config{
        Endpoints:   []string{"localhost:2379"}, // etcd endpoints
        DialTimeout: 5 * time.Second,
    }
    client, err := clientv3.New(config)
    if err != nil {
        // handle error
    }
    defer client.Close()

    // 写入键值对
    _, err = client.Put(context.Background(), "hello", "world")
    if err != nil {
        // handle error
    }

    // 读取键值对
    resp, err := client.Get(context.Background(), "hello")
    if err != nil {
        // handle error
    }
    // 输出键的值
    for _, ev := range resp.Kvs {
        fmt.Printf("%s : %s
", ev.Key, ev.Value)
    }
}
Copier après la connexion

En exécutant l'exemple ci-dessus, nous pouvons écrire une paire clé-valeur dans etcd et lire la valeur de la clé dans etcd.

  1. Écoutez les changements dans les paires clé-valeur dans etcd

Une autre fonctionnalité puissante d'etcd est qu'il peut surveiller les paires clé-valeur en temps réel via le mécanisme Watch. Une fois qu'une paire clé-valeur change, vous en serez informé. immédiatement. clientv3 fournit la méthode Watch, que nous pouvons utiliser pour surveiller les modifications d'une certaine clé dans etcd. Ce qui suit est un exemple complet :

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

func main() {
    // 连接etcd
    config := clientv3.Config{
        Endpoints:   []string{"localhost:2379"}, // etcd endpoints
        DialTimeout: 5 * time.Second,
    }
    client, err := clientv3.New(config)
    if err != nil {
        // handle error
    }
    defer client.Close()

    ctx, cancel := context.WithCancel(context.Background())
    defer cancel()

    // 监听键值对变化
    rch := client.Watch(ctx, "hello")
    for wresp := range rch {
        for _, ev := range wresp.Events {
            fmt.Printf("%s %q: %q
", ev.Type, ev.Kv.Key, ev.Kv.Value)
        }
    }
}
Copier après la connexion

Dans cet exemple, nous créons un contexte et utilisons la méthode Watch pour écouter la clé "hello" dans etcd. Si la valeur d'une clé change, la méthode Watch renverra une notification contenant la paire clé-valeur modifiée. Nous pouvons parcourir ces notifications et afficher le contenu correspondant.

  1. Résumé

Cet article présente comment golang utilise etcd, y compris une introduction à la connexion d'etcd, à l'écriture et à la lecture de paires clé-valeur et à la surveillance des modifications dans les paires clé-valeur. etcd est un conteneur de stockage clé-valeur distribué très pratique, combiné aux performances efficaces et aux fonctionnalités de concurrence de Golang, il permet une gestion de configuration très flexible et efficace.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal