最近学习Kubernetes的时候经常遇到etcd这个组件,它是用于存储K8S的集群信息的,感觉和zookeeper功能有点相似的,于是自己去查了查这个东西。
1. 什么是ETCD?
A distributed, reliable key-value store for the most critical data of a distributed system,这个是官网上的第一句话,即:用于配置共享和服务发现的键值存储系统。说白了就是个高可用的分布式k-v存储系统。由CoreOS开发并维护的并用go语言编写的。
2. ETCD有哪些特点?
简单:基于HTTP+JSON的API让你用curl命令就可以轻松使用。
安全:可选SSL客户认证机制。
快速:每个实例每秒支持一千次写操作。
可信:使用Raft算法充分实现了分布式。
3. ETCD的架构
HTTP Server:用于处理用户发送的API请求以及其它etcd节点的同步与心跳信息请求。
Store:用于处理etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现。
Raft:Raft强一致性算法的具体实现,是etcd的核心。
W