Etcd 中 Raft 协议源码的不完全分析(1)

etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd 内部采用 raft 协议作为一致性, 现在就来看看 raft 在 etcd 中是如何实现的。必须先阅读 raft 协议的论文,再对协议论文有深刻理解的情况下,理解实现会更加轻松。

(译) Raft 论文

摘要

Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可理解性,Raft 将一致性算法分解成了几个关键模块,例如领导人选举、日志复制和安全性。同时它通过实施一个更强的一致性来减少需要考虑的状态的数量。从一个用户研究的结果可以证明,对于学生而言,Raft 算法比 Paxos 算法更加容易学习。Raft 算法还包括一个新的机制来允许集群成员的动态改变,它利用重叠的大多数来保证安全性。

Go源码分析(1) - net.http

Golang 中 net/http 包下是非常关键的源码,gin 中的框架也是实现了 Golang 中的handler接口的SeverHttp方法才能够适配,可以见的该包是网络编程的核心,我针对于其中一部分源码进行了分析,希望能够帮助大家更好的理解 Golang 网络编程。

(译) Go中的垃圾收集:第三部分 - GC步伐

这是三部分系列中的第三篇文章,它将提供对Go中垃圾收集器背后的机制和语义的理解。这篇文章重点介绍GC如何自我调整。

(译) Go中的垃圾收集:第二部分 - GC痕迹

这是三部分系列中的第二篇文章,它将提供对Go中垃圾收集器背后的机制和语义的理解。本文重点介绍如何生成GC跟踪并解释它们。

(译) Go中的垃圾收集:第一部分 - 语义

这是三部分系列中的第一篇文章,它将提供对Go中垃圾收集器背后的机制和语义的理解。这篇文章重点介绍了收集器语义的基础材料。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×