编程

etcd:一款Go语言编写的高可用分布式键值数据库

538 2023-04-22 09:15:00

etcd 是一款可靠的分布式键值(key-value)存储数据库,专注于:

  • 简单:定义明确、面向用户的API (gRPC)
  • 安全:具有可选客户端证书身份验证的自动TLS
  • 快速:benchmark基准测试 10,000 writes/sec
  • 可靠:使用 Raft 一致性算法

etcd 使用 Go 语言编写,使用 Raft 共识算法来管理高可用的 replicated log。

etcd 已经被多个公司用于生产环境,开发团队在关键部署场景中支持它,在这些场景中,etcd经常与Kubernetes、locksmith、vulcand、Doorman等应用程序合作。通过严格的稳健性测试进一步确保了可靠性。

开始

获取 etcd

获取etcd的最简单方法是使用预构建发布的二进制文件,这些二进制文件可在其发布页面上获取,适用于OSX、Linux、Windows和Docker。

运行 etcd

首先启动etcd的单个成员集群

如果etcd是使用预构建发布的二进制文件,请在安装目录中运行:

/tmp/etcd-download-test/etcd

可使用如下命令将其移动到系统目录再执行,如下:

mv /tmp/etcd-download-test/etcd /usr/local/bin/
etcd

这一操作会启动etcd,使之监听 2379 端口以供客户端通信,监听 2380端口以供服务端之间通信。

接着,我们设置单个key,并检索之:

etcdctl put mykey "this is awesome"
etcdctl get mykey

etcd现在正在运行并为客户端请求提供服务。欲了解更多信息,请查看:

etcd TCP 端口

官方的etcd端口为:2379用于客户端请求,2380用于对等通信。

运行本地etcd集群

首先安装 goreman,它管理基于Procfile的应用程序

 Procfile 脚本会安装本地示例集群。使用如下命令开始:

goreman start

这将带来3个etcd成员infra1、infra2和infra3,以及可选的etcd grpc-proxy,它们在本地运行并组成一个集群。

每个集群成员和代理都接受键值的读写。

按照Procfile.learner中的步骤将learner节点添加到集群中。使用以下内容启动learner节点:

goreman -f ./Procfile.learner start

安装 etcd client v3

go get go.etcd.io/etcd/client/v3