Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan etcd dalam golang

Cara menggunakan etcd dalam golang

王林
王林asal
2023-05-10 09:24:361209semak imbas

Dalam sistem teragih, pengurusan konfigurasi ialah pautan yang sangat kritikal. etcd ialah bekas storan nilai kunci yang sangat tersedia, diedarkan dan konsisten yang sering digunakan dalam senario seperti penyelarasan teragih, penemuan perkhidmatan dan pengurusan konfigurasi. Golang ialah bahasa yang dikompilasi Kerana prestasi yang cekap dan ciri keselarasannya, ia telah menjadi pilihan terbaik untuk menggunakan etcd. Artikel ini akan memperkenalkan cara golang menggunakan etcd.

  1. Pasang etcd

Muat turun versi yang sepadan dengan sistem di tapak web rasmi https://github.com/etcd-io/etcd/releases, unzip dan berlari dll.

  1. Pasang etcd client library
go get go.etcd.io/etcd/clientv3
  1. Connect etcd

Cara menyambung etcd dalam golang disediakan oleh etcd Dilaksanakan oleh perpustakaan clientv3. Berikut ialah contoh mudah menyambung 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()
}
  1. Menulis dan membaca pasangan nilai kunci

Seterusnya kita boleh menggunakan kaedah Put and Get yang disediakan oleh clientv3 untuk Menulis dan baca pasangan nilai kunci. Kaedah Put akan menulis pasangan nilai kunci kepada etcd, dan kaedah Dapatkan akan membaca nilai kunci dari etcd. Berikut ialah contoh lengkap:

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

Dengan menjalankan contoh di atas, kita boleh menulis pasangan nilai kunci dalam etcd dan membaca nilai kunci dari etcd.

  1. Dengar perubahan dalam pasangan nilai kunci dalam etcd

Satu lagi fungsi berkuasa etcd ialah ia boleh merealisasikan pemantauan masa nyata pasangan nilai kunci melalui Jam Tangan Sekali kunci Jika pasangan nilai berubah, anda akan dimaklumkan dengan segera. clientv3 menyediakan kaedah Watch, yang boleh kita gunakan untuk memantau perubahan dalam kunci tertentu dalam etcd. Berikut ialah contoh lengkap:

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

Dalam contoh ini, kami mencipta konteks dan menggunakan kaedah Tonton untuk mendengar kekunci "hello" dalam dll. Jika nilai kunci berubah, kaedah Tonton akan mengembalikan pemberitahuan yang mengandungi pasangan nilai kunci yang diubah. Kami boleh mengulangi pemberitahuan ini dan mengeluarkan kandungan yang sepadan.

  1. Ringkasan

Artikel ini memperkenalkan cara golang menggunakan etcd, termasuk pengenalan kepada penyambungan etcd, menulis dan membaca pasangan nilai kunci dan memantau perubahan dalam pasangan nilai kunci. etcd ialah bekas storan nilai kunci teragih yang sangat praktikal Digabungkan dengan prestasi cekap dan ciri konkurensi golang, ia boleh mencapai pengurusan konfigurasi yang sangat fleksibel dan cekap.

Atas ialah kandungan terperinci Cara menggunakan etcd dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:peta golang padam semuaArtikel seterusnya:peta golang padam semua