Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了golang基础-etcd介绍与使用、etcd存取值、etcd监测数据写入大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

etcd介绍与使用

概念:高可用的分布式key-value存储,可以用于配置共享和服务发现。
类似项目:zookeeper和consul
开发语言:Go
接口:提供restful的http接口,使用简单
实现算法:基于raft算法的强一致性、高可用的服务存储目录

etcd搭建
a. 下载etcd release版本:https://github.com/coreos/etcd/releases/
b. ./bin/etcd即可以启动etcd
c. 使用etcdctl工具更改配置

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:\golang\go_pro\src\safly> go run main.go
connect succ
PS E:\golang\go_pro\src\safly>

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 : %s\n",ev.Key,ev.Value)
    }
}

输出如下:

PS E:\golang\go_pro\src\safly> go run example.go
connect succ
/logagent/conf/ : sample_value

etcd检测Watch

package 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 : %q\n",ev.Type,ev.Kv.Key,ev.Kv.Value)
            }
        }
    }
}

大佬总结

以上是大佬教程为你收集整理的golang基础-etcd介绍与使用、etcd存取值、etcd监测数据写入全部内容,希望文章能够帮你解决golang基础-etcd介绍与使用、etcd存取值、etcd监测数据写入所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。