etcd

1:分布式的key value存储服务,能为整个分布式集群存储一些关键数据,协助分布式集群正常运行。

2:etcd使用比较简单,对外提供了GRPC的接口,可以直接使用protobuf和grpc对etcd存储的数据进行管理,也可以用官方提供的ectdctl去操作数据的存储。

Raft

每一个分布式系统中,etcd都扮演了非常重要的角色,由于很多系统的etcd的服务配置发现和服务配置都存在etcd中,所以往往整个集群可用性的上限就是etcd的可用性,在系统中3-5个etcd的节点构成高可用的集群都是常规操作。

正是因为etcd启用中会启用多个节点,如何保证节点之前的分布式一致性就是个比较重要的问题。

其实解决多个节点之间的一致性的方案就是共识算法,常见的共识算法有Raft和Paxos,etcd就是用Raft算法。

 

05-13
### Etcd Distributed Key Value Store Overview #### 什么是 EtcdEtcd 是一个分布式的、可靠的键值存储系统,设计用于高可用性和一致性的场景。它提供了简单的 API 接口来操作数据,支持 `set`、`get` 和 `delete` 等基本功能[^1]。 #### 安装与配置 Etcd 的安装过程相对简单,通常可以通过二进制文件或者包管理工具完成部署。以下是基于 Linux 平台的一个典型安装流程: ```bash # 下载并解压 Etcd 二进制文件 wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz tar xzvf etcd-v3.5.0-linux-amd64.tar.gz # 将可执行文件移动到 PATH 中 sudo mv etcd-v3.5.0-linux-amd64/etcd* /usr/local/bin/ ``` 启动单节点实例可以使用如下命令: ```bash etcd --data-dir=/var/lib/etcd ``` 对于集群模式下的配置,则需要指定多个成员之间的通信地址以及客户端访问端口。例如: ```yaml name: 'node1' initial-advertise-peer-urls: http://localhost:2380 listen-peer-urls: http://localhost:2380 advertise-client-urls: http://localhost:2379 listen-client-urls: http://localhost:2379 initial-cluster-token: etcd-cluster-1 initial-cluster-state: new initial-cluster: node1=http://localhost:2380,node2=http://another-host:2380,... ``` #### 工作原理 Etcd 使用 Raft 协议来实现分布式一致性,确保即使在网络分区或其他故障情况下也能保持强一致性[^2]。Raft 协议通过选举机制选出领导者,并由该领导负责处理所有的写入请求。其他跟随者仅需同步日志即可。 当客户端向某个节点发起读取或更新请求时,如果当前节点不是领导者,则会自动重定向至实际的领导者位置;而对于写入操作来说,在提交之前必须先经过多数派确认才能最终生效。 此外,为了提高性能和降低延迟,Etcd 还实现了 watch 功能允许订阅特定路径的变化通知[^1]。 #### 数据模型与接口 尽管 Dynamo 提出了弱一致性模型以换取更高的可用性[^3],但 Etcd 更倾向于提供更强的一致性保障。它的数据结构类似于哈希表形式,即每条记录都对应唯一标识符(key),并通过 RESTful 风格 HTTP 请求交互。 示例代码展示如何利用 Python 库与 Etcd 进行基础 CRUD 操作: ```python import etcd3 client = etcd3.client(host='localhost', port=2379) # 设置键值对 client.put('my_key', 'hello world') # 获取值 value, meta = client.get('my_key') print(value.decode()) # 删除键 client.delete('my_key') ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值