跳到主要内容

Etcd

这个章节将介绍Etcd组件如何使用。

简介

Etcd组件对是对go.etcd.io/etcd库的简单封装,允许开发者忽略连接细节并提供简单的监听关键功能。
当Go-Sail启动时,如果启用Etcd组件,它将自动初始化Etcd组件。之后开发者就可以直接通过sail关键字来调用它。

main.go
import (
"github.com/keepchen/go-sail/v3/sail"
)

func main() {
instance := sail.GetEtcdInstance()
}

配置

上一章我们学习了Etcd的详细配置,如下:

github.com/keepchen/go-sail/lib/etcd/conf.go
type Conf struct {
Enable bool `yaml:"enable" toml:"enable" json:"enable" default:"false"` //是否启用
Endpoints []string `yaml:"endpoints" toml:"endpoints" json:"endpoints"` //地址列表,如: localhost:2379
Username string `yaml:"username" toml:"username" json:"username"` //账号
Password string `yaml:"password" toml:"password" json:"password"` //密码
Timeout int `yaml:"timeout" toml:"timeout" json:"timeout"` //连接超时时间(毫秒)默认10000ms
Tls *tls.Config `yaml:"-" toml:"-" json:"-"` //tls配置
}

使用方法

监听Key

main.go
var fn = func(k, v []byte) {
fmt.Printf("key: %s changed: %s\n", string(k), string(v))
}

func main() {
sail.GetEtcdInstance().Watch(key, fn)
}

通过前缀监听Key

main.go
var fn = func(k, v []byte) {
fmt.Printf("key: %s changed: %s\n", string(k), string(v))
}

func main() {
sail.GetEtcdInstance().WatchWithPrefix(key, fn)
}

其他

更多原生调用方法请查看go.etcd.io/etcd/client/v3的官方文档。