从etcd看Raft协议
来源:互联网 发布:网贷大数据免费查询 编辑:程序博客网 时间:2024/05/22 07:51
- 简单:基于HTTP+JSON的API让你用curl就可以轻松使用。
- 安全:可选SSL客户认证机制。
- 快速:每个实例每秒支持一千次写操作。(比Redis性能差很多)
- 可信:使用Raft算法充分实现了分布式。
一个 etcd 节点的核心由三部分组成:
- raft:raft 状态机,对 raft 共识算法的实现
- wal:raft 日志存储
- storage:数据的存储与索引
Wal (Write-ahead logging),是用于向系统提供原子性和持久性的一系列技术,所有的修改在提交之前都要先写入 log 文件中。etcd 的wal 由日志存储与快照存储两部分组成,其中 entry 负责存储具体日志的内容,而 snapshot 负责在日志内容发生变化的时候保存 raft 的状态。Wal 会在本地磁盘的一个指定目录下分别日志条目与快照内容。
etcd 集群的工作原理基于 raft 共识算法。优点在于可以在高效的解决分布式系统中各个节点日志内容一致性问题的同时,也使得集群具备一定的容错能力。即使集群中出现部分节点故障、网络故障等问题,仍可保证其余大多数节点正确的步进。甚至当更多的节点(一般来说超过集群节点总数的一半)出现故障而导致集群不可用时,依然可以保证节点中的数据不会出现错误的结果。
-此图转自infoq.com.cn
raft算法的要求是选择一个节点作为leader, 客户端的读写操作都发往leader, leader先将请求记录在log中,然后再发送请求到follower,follower写入成功后返回给leader写入成功的消息,leader确认后才完成本次写入到磁盘中,最后返回给客户端写入成功的响应。leader通过心跳与follower保持通讯,如果leader异常,则重新选举leader,这是最正常的情况,但是,当网络异常时,leader无法与所有follower通讯,如下图所示:
此时raft 日志写入流程图:
raft算法介绍:http://raftconsensus.github.io/
etcd中raft的应用:http://www.infoq.com/cn/articles/coreos-analyse-etcd
- 从etcd看Raft协议
- 从etcd看Raft协议
- 从etcd看Raft协议
- 剖析 etcd-raft协议和日志复制的图解
- etcd raft算法动画
- Etcd分布式原理基于Raft算法
- etcd raft如何实现Linearizable Read
- etcd raft如何实现成员变更
- 学习如何使用etcd-raft库
- etcd raft如何实现leadership transfer
- Raft一致性协议
- Raft一致性协议
- 一致性协议:RAFT
- Raft分布式一致性协议
- 分布式协议Raft浅析
- Raft协议安全性保证
- Raft协议安全性保证
- raft协议和paxos
- Boost String Algorithms Library
- java学习线路总结
- modelsim 保存仿真结果(波形文件)
- Java同一个文件包含多个类 注意事项
- Notepad++ 搭建g++ python
- 从etcd看Raft协议
- 初学数据结构-单链表初探的一些兴奋点
- DOM中的克隆节点
- Uva Alignment of Code
- Ubuntu关机重启命令简介
- 努力提高自学的能力吧,否则你无路可走。
- Raft一致性算法分析与总结
- Android github上优秀开源项目分类汇总
- two simple problems solved by dynamic programming