Cara menggunakan etcd dalam golang

王林
Lepaskan: 2023-05-10 09:24:36
asal
1152 orang telah melayarinya

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
Salin selepas log masuk
  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() }
Salin selepas log masuk
  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) } }
Salin selepas log masuk

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) } } }
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!