Go语言操作etcd的示例详解

2024-04-18 0 289

etcd介绍

etcd是使用Go语言开发的一个开源的、高可用的分布式key—value存储系统,可以用于配置共享和服务的注册和发现,基于raft算法实现具有强一致性

etcd中涉及了数据一致性、多版本并发控制、watch监控、磁盘IO读写等知识点

etcd的特性:

1.简单:etcd的安装简单,为用户提供了HTTP的接口,使用也很简单

2.存储:etcd的基本功能,基本信息存储在文件中

3.Watch机制:watch指定的键的更改会通知

4.安全通信:SSL证书验证

5.高性能:2K/s读操作,提供了基准测试的工具

6.一致可靠:raft一致性算法

类似的项目有zookeeper和consul。

etcd具有以下的特点:

1.完全复制:集群中的每个节点都可以使用完整的存档

2.高可用性:Etcd可用于避免硬件的单点故障或网络问题

3.一致性:每次读取都会返回跨多主机的最新写入

4.简单:包括一个定义良好、面向用户的API(gRPC)

5.安全:实现了带有可选的客户端证书身份验证的自动化TLS

6.快速:每秒10000次写入的基准速度

7.可靠:使用Raft算法实现了强一致、高可用的服务存储目录

etcd的常见分布式场景:

1.键值对存储

2.服务注册与发现

3.消息订阅与发布

4.分布式锁

go语言操作etcd

首先在后台启动etcd

Go语言操作etcd的示例详解

写一段go代码

package main

import (
\”context\”
\”fmt\”
clientv3 \”go.etcd.io/etcd/client/v3\”
\”time\”
)

func main() {
// 创建客户端,连接etcd
cli, err := clientv3.New(clientv3.Config{
Endpoints: []string{\”127.0.0.1:2379\”},
DialTimeout: 5 * time.Second,
})
if err != nil {
fmt.Printf(\”connect to etcd failed, err:%v\\n\”, err)
return
}
fmt.Println(\”connect to etcd success\”)
defer cli.Close()
str := `[{\”path\”:\”d:/logs/s4.logs\”,\”topic\”:\”s4_logs\”},{\”path\”:\”d:/logs/web.logs\”,\”topic\”:\”web_logs\”}`
// put操作
_, err = cli.Put(context.TODO(), \”collect_log_conf\”, str)
if err != nil {
fmt.Printf(\”put to etcd failed, err:%v\\n\”, err)
return
}
get操作
resp, err := cli.Get(context.TODO(), \”collect_log_conf\”) // 获取指定Key的值
if err != nil {
fmt.Printf(\”get to etcd failed\”)
return
}
for _, ev := range resp.Kvs {
fmt.Printf(\”key:%s,value:%s\\n\”, ev.Key, ev.Value)
}
delete 删除key
//if _,err = cli.Delete(context.TODO(), \”testetcd\”);err != nil{
// fmt.Println(\”delete key failed\”)
//}else{
// fmt.Println(\”delete key success\”)
//}
}

也可以直接使用ectdctl工具查看key

etcdctl.exe –endpoints=127.0.0.1:2379 get collect_log_conf

Go语言操作etcd的示例详解

到此这篇关于Go语言操作etcd的示例详解的文章就介绍到这了,更多相关Go操作etcd内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • golang对etcd存取和数值监测的实现
  • Go操作etcd的实现示例
  • Go操作Kafka和Etcd方法详解
  • Go语言使用Etcd实现分布式锁
  • Go语言使用Redis和Etcd实现高性能分布式锁

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Golang Go语言操作etcd的示例详解 https://www.u-9.cn/jiaoben/golang/187033.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务