分布式,可靠的,kv分布式系统
Raft算法
- 从多个节点选出leader,leader负责数据的同步和分发。
### quorum=(n+1)/2
- 3个节点容忍1个故障
- 5个节点容忍2个故障
API
- PUT(key,value)/Delete(key)
- Get(key)/Get(keyFrom,keyEnd) key的范围
- Watch(key/keyPrefix)
- Transactions(if/then/else ops).commit() 满足条件,执行操纵
- Leases:Grant/Revoke/KeepAlive
etcd的数据版本号机制
- term:全局单调递增 (整个集群leader的任期,leader进行切换,term加1)
- revision: 全局单调递增 (代表的kv修改一次,revision加1)
- KeyValue:
- create_revision:创建的次数
- mod_revision:修改的次数
- version:此次key修改的次数
一个数据有多个版本,通过定期Compaction来清理历史数据
lease(租约)
性能优化
Ratf层
客户端性能优化
- put 避免大value,精简再精简
- 避免创建频繁变化的key/value
- 避免创建按大量lease,尽量选择复用
Etcd介绍
原文:https://www.cnblogs.com/zhangjxblog/p/12168338.html