golang基础-etcd介绍与使用、etcd存取值、etcd监测数据写入
发布时间:2020-12-16 09:42:36 所属栏目:大数据 来源:网络整理
导读:etcd介绍与使用 etcd测试链接 etcd存取值 etcd检测Watch etcd介绍与使用 概念:高可用的分布式key-value存储,可以用于配置共享和服务发现。 类似项目:zookeeper和consul 开发语言:Go 接口:提供restful的http接口,使用简单 实现算法:基于raft算法的强一
etcd介绍与使用概念:高可用的分布式key-value存储,可以用于配置共享和服务发现。 etcd搭建 etcd测试链接package main
import (
"fmt"
"github.com/coreos/etcd/clientv3"
"time"
)
func main() {
/*
DialTimeout time.Duration `json:"dial-timeout"`
Endpoints []string `json:"endpoints"`
*/
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()
}
输出如下: PS E:golanggo_prosrcsafly> go run main.go
connect succ
PS E:golanggo_prosrcsafly>
etcd存取值package main
import (
"context"
"fmt"
"github.com/coreos/etcd/clientv3"
"time"
)
func main() {
cli,err := clientv3.New(clientv3.Config{
Endpoints: []string{"localhost:2379",DialTimeout: 5 * time.Second,})
if err != nil {
fmt.Println("connect failed,err)
return
}
fmt.Println("connect succ")
defer cli.Close()
//设置1秒超时,访问etcd有超时控制
ctx,cancel := context.WithTimeout(context.Background(),time.Second)
//操作etcd
_,err = cli.Put(ctx,"/logagent/conf/","sample_value")
//操作完毕,取消etcd
cancel()
if err != nil {
fmt.Println("put failed,err)
return
}
//取值,设置超时为1秒
ctx,cancel = context.WithTimeout(context.Background(),time.Second)
resp,err := cli.Get(ctx,"/logagent/conf/")
cancel()
if err != nil {
fmt.Println("get failed,err)
return
}
for _,ev := range resp.Kvs {
fmt.Printf("%s : %sn",ev.Key,ev.Value)
}
}
输出如下: PS E:golanggo_prosrcsafly> go run example.go
connect succ
/logagent/conf/ : sample_value
etcd检测Watchpackage main
import (
"context"
"fmt"
"time"
"github.com/coreos/etcd/clientv3"
)
func main() {
cli,err)
return
}
fmt.Println("connect succ")
defer cli.Close()
cli.Put(context.Background(),"8888888")
for {
rch := cli.Watch(context.Background(),"/logagent/conf/")
for wresp := range rch {
for _,ev := range wresp.Events {
fmt.Printf("%s %q : %qn",ev.Type,ev.Kv.Key,ev.Kv.Value)
}
}
}
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |