Skip to content

Commit

Permalink
Site updated: 2023-08-24 08:41:10
Browse files Browse the repository at this point in the history
  • Loading branch information
LLiuJJ committed Aug 24, 2023
1 parent 8f72bb9 commit 31f3408
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 6 deletions.
23 changes: 19 additions & 4 deletions 2023/08/24/raft-basic-algorithm-ch3/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,20 @@
<title>raftpractice 大论文阅读-第三章 Raft 算法基础 - ERaftBooks</title>


<meta name="description" content="这一章我们来介绍 Raft 算法,我们将 Raft 设计得尽可能易于理解,第一部分我们将介绍我们让算法易于理解的设计方法。剩下的部分我们描述了算法本身,并包括了我们为了让算法更容易理解做出来的设计的示例。 为了容易理解而设计的算法Raft 概览">
<meta name="description" content="这一章我们来介绍 Raft 算法,我们将 Raft 设计得尽可能易于理解,第一部分我们将介绍我们让算法易于理解的设计方法。剩下的部分我们描述了算法本身,并包括了我们为了让算法更容易理解做出来的设计的示例。 为了容易理解而设计的算法Raft 概览Raft 算法管理了上一章我们介绍的复制状态机的日志。下面这个图我们以简洁的方式给出了算法的参考。 还有 Raft 算法的关键属性如下,图中的其余元素我">
<meta property="og:type" content="article">
<meta property="og:title" content="raftpractice 大论文阅读-第三章 Raft 算法基础">
<meta property="og:url" content="https://eraft.cn/2023/08/24/raft-basic-algorithm-ch3/index.html">
<meta property="og:site_name" content="ERaftBooks">
<meta property="og:description" content="这一章我们来介绍 Raft 算法,我们将 Raft 设计得尽可能易于理解,第一部分我们将介绍我们让算法易于理解的设计方法。剩下的部分我们描述了算法本身,并包括了我们为了让算法更容易理解做出来的设计的示例。 为了容易理解而设计的算法Raft 概览">
<meta property="og:description" content="这一章我们来介绍 Raft 算法,我们将 Raft 设计得尽可能易于理解,第一部分我们将介绍我们让算法易于理解的设计方法。剩下的部分我们描述了算法本身,并包括了我们为了让算法更容易理解做出来的设计的示例。 为了容易理解而设计的算法Raft 概览Raft 算法管理了上一章我们介绍的复制状态机的日志。下面这个图我们以简洁的方式给出了算法的参考。 还有 Raft 算法的关键属性如下,图中的其余元素我">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://eraft.cn/images/f3-1.png">
<meta property="og:image" content="https://eraft.cn/images/f3-2.png">
<meta property="article:published_time" content="2023-08-24T00:15:40.000Z">
<meta property="article:modified_time" content="2023-08-24T00:21:56.249Z">
<meta property="article:modified_time" content="2023-08-24T00:41:03.407Z">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://eraft.cn/images/f3-1.png">



Expand Down Expand Up @@ -103,7 +106,19 @@
<article class='md-text content post'>
<h1 class="article-title"><span>raftpractice 大论文阅读-第三章 Raft 算法基础</span></h1>
<p>这一章我们来介绍 Raft 算法,我们将 Raft 设计得尽可能易于理解,第一部分我们将介绍我们让算法易于理解的设计方法。剩下的部分我们描述了算法本身,并包括了我们为了让算法更容易理解做出来的设计的示例。</p>
<h3 id="为了容易理解而设计的算法"><a href="#为了容易理解而设计的算法" class="headerlink" title="为了容易理解而设计的算法"></a>为了容易理解而设计的算法</h3><h3 id="Raft-概览"><a href="#Raft-概览" class="headerlink" title="Raft 概览"></a>Raft 概览</h3>
<h3 id="为了容易理解而设计的算法"><a href="#为了容易理解而设计的算法" class="headerlink" title="为了容易理解而设计的算法"></a>为了容易理解而设计的算法</h3><h3 id="Raft-概览"><a href="#Raft-概览" class="headerlink" title="Raft 概览"></a>Raft 概览</h3><p>Raft 算法管理了上一章我们介绍的复制状态机的日志。下面这个图我们以简洁的方式给出了算法的参考。</p>
<div class="tag-plugin image"><div class="image-bg"><img class="lazy" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAAaADAAQAAAABAAAAAQAAAADa6r/EAAAAC0lEQVQIHWNgAAIAAAUAAY27m/MAAAAASUVORK5CYII=" data-src="/images/f3-1.png"/></div></div>

<p>还有 Raft 算法的关键属性如下,图中的其余元素我们将在论文剩下的部分来讨论。</p>
<div class="tag-plugin image"><div class="image-bg"><img class="lazy" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAAaADAAQAAAABAAAAAQAAAADa6r/EAAAAC0lEQVQIHWNgAAIAAAUAAY27m/MAAAAASUVORK5CYII=" data-src="/images/f3-2.png"/></div></div>

<p>Raft 首先选举一个服务节点作为 Leader,然后给这个 Leader 管理复制日志的权限。Leader 接受来自客户端的请求并生成日志条目,把它们复制给其他的服务器,并告诉服务什么时候可以安全的将日志应用到状态机中。</p>
<p>集群中拥有一个 Leader 简化了复制日志的管理,例如,Leader 可以不用咨询其他的服务器自己决定日志里面追加新条目的位置,数据以简单的方式从 Leader 流向其他服务器。Leader 可能会故障或者与其他服务器网络断开,在这种情况下会选举出新的 Leader。</p>
<p>考虑到集群的领导方式,Raft 将一致性问题分为三个相对独立的子问题,这些子问题我们将在下面的章节进行详细的讨论。</p>
<ul>
<li>Leader 选举:启动集群或者集群中 Leader 节点故障的时候会选举出一个新的 Leader。</li>
</ul>



<div class="article-footer reveal fs14"><section id="license"><div class="header"><span>许可协议</span></div><div class="body"><p>本文采用 <a target="_blank" rel="noopener" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">署名-非商业性使用-相同方式共享 4.0 国际</a> 许可协议,转载请注明出处。</p>
Expand Down
Binary file added images/f3-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/f3-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 4 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,10 @@

<div class="post-list post"><a class="post-card post " href="/2023/08/24/raft-basic-algorithm-ch3/">
<article class="md-text"><h2 class="post-title">raftpractice 大论文阅读-第三章 Raft 算法基础</h2><div class="excerpt"><p>这一章我们来介绍 Raft 算法,我们将 Raft 设计得尽可能易于理解,第一部分我们将介绍我们让算法易于理解的设计方法。剩下的部分我们描述了算法本身,并包括了我们为了让算法更容易理解做出来的设计的示例。
为了容易理解而设计的算法Raft 概览</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于&nbsp;<time datetime="2023-08-24T00:15:40.000Z">2023-08-24</time></span></div></article>
为了容易理解而设计的算法Raft 概览Raft 算法管理了上一章我们介绍的复制状态机的日志。下面这个图我们以简洁的方式给出了算法的参考。


还有 Raft 算法的关键属性如下,图中的其余...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于&nbsp;<time datetime="2023-08-24T00:15:40.000Z">2023-08-24</time></span></div></article>
</a><a class="post-card post " href="/2023/08/21/raftpractice-ch2/">
<article class="md-text"><h2 class="post-title">raftpractice 大论文阅读-第二章 设计 Raft 算法的动机</h2><div class="excerpt"><p>一、通过复制状态机来实现系统的容错共识算法通常伴随着复制状态机出现,通过共识算法,我们实现一组拥有相同状态的计算机,我们通常把这一组拥有相同状态的计算机称为副本集。在某些机器宕机的情况下,这些计算机仍然能够继续之前的工作进行操作。
复制状态机通常通过复制日志来实现,如下图:
Expand Down
2 changes: 1 addition & 1 deletion search.json

Large diffs are not rendered by default.

0 comments on commit 31f3408

Please sign in to comment.