etcd入门

etcd入门

​ etcd是分布式协调框架,基本和zookeeper功能和场景相似。它使用高可用的k-v键值对做数据库,采用raft一致性算法。采用Go语言实现。

​ etcd使用gRPC对外提供API。总共分为三类

  • Kv:key-value的创建、更新、读取和删除
  • watch:提供监控数据更新的机制
  • Lease :用来支持客户端的keep-alive的消息 可以设置lease和key进行绑定,当lease释放后,key就会被删除,相当于zk中的临时性节点

etcd本地安装

Mac : etcd-v3.4.13-darwin-amd64.zip

linux: etcd-v3.4.13-linux-amd64.tar.gz

Windows: etcd-v3.4.13-windows-amd64.zip

下载后解压即可

etcd启动

cd "解压目录"
etcd # 启动etcd standalone
etcdctl # etcd控制的工具
etcdctl put foo value1
etcdctl get foo

Go连接etcd并使用v3Client操作etcd

package main

import (
	"context"
	"fmt"
	"go.etcd.io/etcd/clientv3"
	"time"
)

func main() {
	cli, err := clientv3.New(clientv3.Config{
		Endpoints:   []string{"localhost:2379"},
		DialTimeout: 5 * time.Second,
	})
	if err != nil {
		fmt.Println("failed to create client")
	}
	defer cli.Close()
	ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
	resp, err := cli.Put(ctx, "cpf", "zzc1")
	cancel()
	if err != nil {
		fmt.Println("failed to put")
	}
	// use the response
	fmt.Println("resp", resp)
}
module declares its path as: go.etcd.io/bbolt
	        but was required as: github.com/coreos/bbolt

使用etcd v3Client可能遇到几个问题:

  1. module declares its path as: go.etcd.io/bbolt but was required as: github.com/coreos/bbolt(包依赖冲突)
   replace github.com/coreos/bbolt v1.3.5 => go.etcd.io/bbolt v1.3.5
   
   replace go.etcd.io/bbolt v1.3.5 => github.com/coreos/bbolt v1.3.5
  1. etcd undefined: resolver.BuildOption (版本依赖冲突)

    go mod edit -require=google.golang.org/grpc@v1.26.0
    go get -u -x google.golang.org/grpc@v1.26.0
    go build
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值