是什么
解决什么问题 / 作用
分布式系统中最基本的问题之一就是实现信息的共识,在此基础上才能实现对服务配置信息的管理、服务的发现、更新、同步等等。要解决这个问题需要一套能保证一致性的分布式数据库系统,比如ZooKeeper,采用了Paxos算法来实现数据的强一致性。
Etcd使用更为简洁的Raft共识算法来实现数据的强一致性。
Raft是一套通过选举主节点来实现分布式系统一致性的算法
特点
- 简单:支持restful api 和 grpc api
- 安全:基于TLS实现安全链接访问
- 快速:每秒一万次访问,超时控制在毫秒级
- 可靠:支持分布式架构,强一致性
同一个集群中Etcd实例会自动保持彼此信息的一致性,
安装
https://etcd.io/docs/current/dl-build/
与redis的区别
作用不一样
高可用的角度,redis 主从是异步复制的机制,这就导致了其有丢失数据的风险。redis 的哨兵或 cluster 解决的是系统的可服务性确保在有单点故障的情况下也能对外提供服务,但是因为异步复制的机制在从升主的过程中或者网络分区的情况下都是有可能丢失数据的。etcd 基于 raft 协议在写入数据的时候需要多数应答确认后才会向客户端返回数据写入成功这就保证了数据的一致性。etcd 除此外还有其他的一些特性优势。
https://www.v2ex.com/t/520367#;
总结
通过实践案例,可以看出 Etcd 的功能十分类似于 ZooKeeper ,但作为后起之秀,它在REST 接口支持 访问权限管理、大量数据存储方面表现更为优秀 同时,提供了多种语言(目前包括 Python Go Java 等)实现的客户端支持 基于 Etcd ,用户可以很容易实现集群中的配置管理和服务发现等复杂功能
