Etcd 与 Redis、ZooKeeper 区别和对比

Etcd 是开源的、高可用的分布式 key-value 存储系统,可用于配置共享和服务的注册和发现。

 

1. Etcd 特点

  • 简单:定义清晰、面向用户的API(gRPC)。
  • 安全:可选的客户端TLS证书自动认证。
  • 快速:支持每秒 10,000 次写入。
  • 可靠:基于Raft算法确保强一致性。

 

2. Etcd 与 Redis 对比

etcd 和 redis 都支持键值存储,也支持分布式特性,redis支持的数据格式更加丰富,但是他们两个定位和应用场景不一样,关键差异如下:

  • redis在分布式环境下不是强一致性的,可能会丢失数据,或者读取不到最新数据
  • redis的数据变化监听机制没有etcd完善
  • etcd强一致性保证数据可靠性,导致性能上要低于redis
  • etcd和ZooKeeper是定位类似的项目,跟redis定位不一样

 

3. Etcd 与 ZooKeeper 对比

与 Etcd 相比,ZooKeeper 有如下缺点:

  • 复杂:ZooKeeper的部署维护复杂,管理员需要掌握一系列的知识和技能;而 Paxos 强一致性算法也是素来以复杂难懂而闻名于世;另外,ZooKeeper的使用也比较复杂,需要安装客户端,官方只提供了 Java 和 C 两种语言的接口。
  • 难以维护:Java 编写。这里不是对 Java 有偏见,而是 Java 本身就偏向于重型应用,它会引入大量的依赖。而运维人员则普遍希望保持强一致、高可用的机器集群尽可能简单,维护起来也不易出错。
  • 发展缓慢:Apache 基金会项目特有的“Apache Way”在开源界饱受争议,其中一大原因就是由于基金会庞大的结构以及松散的管理导致项目发展缓慢。

Etcd 作为一个后起之秀,优点非常明显:

  • 简单:使用 Go 语言编写部署简单;使用 HTTP 作为接口使用简单;使用 Raft 算法保证强一致性让用户易于理解。
  • 数据持久化:etcd 默认数据一更新就进行持久化。
  • 安全:etcd 支持 SSL 客户端安全认证。

etcd 是一个分布式、高可用的一致性键值存储系统,提供可靠的分布式键值存储、配置共享和服务发现等功能。etcd 使用 go语言 编写,通过 raft 协议实现了强一致性,Kubernetes ...