This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new eea2598  Automatic Site Publish by Buildbot
eea2598 is described below

commit eea2598f70f149fa6b2a8afbd61500248774c513
Author: buildbot <[email protected]>
AuthorDate: Tue Aug 18 11:42:19 2020 +0000

    Automatic Site Publish by Buildbot
---
 output/2019/06/09/duplication-design.html      |  87 +++++++++++++-------
 output/administration/backup-request.html      |   4 +-
 output/administration/bad-disk.html            |   4 +-
 output/administration/cold-backup.html         |   4 +-
 output/administration/compression.html         |   4 +-
 output/administration/config.html              |   4 +-
 output/administration/deployment.html          |   4 +-
 output/administration/duplication.html         |   8 +-
 output/administration/experiences.html         |   4 +-
 output/administration/index.html               |   4 +-
 output/administration/manual-compact.html      |   4 +-
 output/administration/membership-change.html   |   4 +-
 output/administration/meta-recovery.html       |   4 +-
 output/administration/monitoring.html          |   4 +-
 output/administration/partition-split.html     |   4 +-
 output/administration/rebalance.html           |   4 +-
 output/administration/remote-commands.html     |   4 +-
 output/administration/replica-recovery.html    |   4 +-
 output/administration/resource-management.html |   4 +-
 output/administration/rolling-update.html      |   4 +-
 output/administration/table-env.html           |   4 +-
 output/administration/table-migration.html     |   4 +-
 output/administration/table-soft-delete.html   |   4 +-
 output/administration/throttling.html          |   4 +-
 output/administration/usage-scenario.html      |   4 +-
 output/administration/whitelist.html           |   4 +-
 output/administration/zk-migration.html        |   4 +-
 output/api/geo.html                            |   4 +-
 output/api/http.html                           |   4 +-
 output/api/index.html                          |   4 +-
 output/api/redis.html                          |   4 +-
 output/api/single-atomic.html                  |   4 +-
 output/api/ttl.html                            |   4 +-
 output/clients/cpp-client.html                 |   4 +-
 output/clients/go-client.html                  |   4 +-
 output/clients/index.html                      |   4 +-
 output/clients/java-client.html                |   4 +-
 output/clients/node-client.html                |   4 +-
 output/clients/python-client.html              |   4 +-
 output/clients/scala-client.html               |   4 +-
 output/community/coding-guides.html            |   4 +-
 output/community/index.html                    |   4 +-
 output/community/mail-subscribe.html           |   4 +-
 output/community/proposal.html                 |   4 +-
 output/community/roadmap.html                  |   4 +-
 output/feed.xml                                |  74 +++++++++++------
 output/overview/architecture.html              |   4 +-
 output/overview/background.html                |   4 +-
 output/overview/benchmark.html                 |   4 +-
 output/overview/compilation.html               |   4 +-
 output/overview/data-model.html                |   4 +-
 output/overview/index.html                     |   4 +-
 output/overview/onebox.html                    |   4 +-
 output/overview/shell.html                     |   4 +-
 output/releases/index.html                     |   4 +-
 output/sitemap.xml                             | 106 ++++++++++++-------------
 56 files changed, 270 insertions(+), 213 deletions(-)

diff --git a/output/2019/06/09/duplication-design.html 
b/output/2019/06/09/duplication-design.html
index 070958b..7d2e7cf 100644
--- a/output/2019/06/09/duplication-design.html
+++ b/output/2019/06/09/duplication-design.html
@@ -249,10 +249,11 @@
 | +---+ |    |       |
 +-------+    +-------+
   dead         alive
-
-只用两机房,使用 raft 协议进行进行跨机房同步依然无法避免机房故障时的停服。(5节点同理)
 </code></pre></div></div>
 
+<p>如上图可看到,只用两机房,使用 raft 协议进行进行跨机房同步依然
+无法避免机房故障时的停服。(5节点同理)</p>
+
 <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>          +---+                     +---+
           | A |                     | B |
           +-+-+                     +-+-+
@@ -262,28 +263,28 @@
 |    |  pegasus A   &lt;----------&gt;  pegasus B   |    |
 |    +--------------+          +--------------+    |
 +--------------------------------------------------+
-
- 虽然是各写一个机房,但理想情况下 A B 都能读到所有的数据。
-
 </code></pre></div></div>
 
+<p>如上图可看到,虽然是各写一个机房,但理想情况下 A B 都能读到所有的数据。
+机房故障时,原来访问A集群的客户端可以切换至B集群。</p>
+
 <h2 id="架构选择">架构选择</h2>
 
 <p>即使同样是做方案 3 的集群间异步同步,业内的做法也有不同:</p>
 
 <ol>
   <li>
-    
<p><strong>各集群单副本</strong>:这种方案考虑到多集群已存在冗余的情况下,可以减少单集群内的副本数,同时既然一致性已没有保证,大可以索性脱离一致性协议,完全依赖于稳定的集群间网络,保证即使单机房宕机,损失的数据量也是仅仅几十毫秒内的请求量级。考虑机房数为
 5 的时候,如果每个机房都是 3 副本,那么全量数据就是 3*5=15 副本,这时候简化为各集群单副本的方案就是几乎最自然的选择。</p>
+    
<p><strong>各集群单副本</strong>:这种方案考虑到多集群已存在冗余的情况下,可以减少单集群内的副本数。同时既然一致性已没有保证,大可以索性脱离一致性协议,完全依赖于稳定的集群间网络,保证即使单机房宕机,损失的数据量也是仅仅几十毫秒内的请求量级。考虑机房数为
 5 的时候,如果每个机房都是 3 副本,那么全量数据就是 3*5=15 副本,这时候简化为各集群单副本的方案就是几乎最自然的选择。</p>
   </li>
   <li>
-    
<p><strong>同步工具作为外部依赖使用</strong>:跨机房同步自然是尽可能不影响服务是最好,所以同步工具可以作为外部依赖部署,单纯访问节点磁盘的日志(WAL)并转发日志。这个方案对日志
 GC 有前提条件,即<strong>日志不可以在同步完成前被删除</strong>,否则就丢数据了,但存储服务日志的 GC 
是外部工具难以控制的。所以可以把日志强行保留一周以上,但缺点是磁盘空间的成本较大。同步工具作为外部依赖的优点在于稳定性强,不影响服务,缺点在于对服务的控制能力差,很难处理一些琐碎的一致性问题(后面会讲到),<strong>难以实现最终一致性</strong>。</p>
+    
<p><strong>同步工具作为外部依赖使用</strong>:跨机房同步自然是尽可能不影响服务是最好,所以同步工具可以作为外部依赖部署,单纯访问节点磁盘的日志(WAL)并转发日志。这个方案对日志
 GC 有前提条件,即<strong>日志不可以在同步完成前被删除</strong>,否则就丢数据了。但存储服务日志的 GC 
是外部工具难以控制的,所以可以把日志强行保留一周以上,但缺点是磁盘空间的成本较大。同步工具作为外部依赖的优点在于稳定性强,不影响服务,缺点在于对服务的控制能力差,很难处理一些琐碎的一致性问题(后面会讲到),<strong>难以实现最终一致性</strong>。</p>
   </li>
   <li>
-    
<p><strong>同步工具嵌入到服务内部</strong>:这种做法在工具稳定前会有一段阵痛期,即工具的稳定性影响服务的稳定性。但实现的灵活性肯定是最强的。</p>
+    <p><strong>同步工具嵌入到服务内部</strong>:对应到 Pegasus 则是将热备份功能集成至 ReplicaServer 
中。这种做法在工具稳定前会有一段阵痛期,即工具的稳定性会影响服务的稳定性。但实现的灵活性较优,同时易于部署,不需要部署额外的服务。</p>
   </li>
 </ol>
 
-<p>最初 Pegasus 的热备份方案借鉴于 HBase Replication,基本只考虑了第三种方案。而事实证明这种方案更容易保证 Pegasus 
存储数据不丢的属性。</p>
+<p>最初 Pegasus 的热备份方案借鉴于 HBase Replication,基本只考虑了第三种方案。而确实这种方案更容易保证 Pegasus 
数据的一致性。</p>
 
 <h2 id="基本概念">基本概念</h2>
 
@@ -328,7 +329,7 @@
 
 <h3 id="duplicate_rpc">duplicate_rpc</h3>
 
-<p>如上图所示,每个 replica (这里特指每个分片的 primary,注意 secondary 不负责热备份复制)独自复制自己的 private 
log 到远端,replica 之间互不影响。复制直接通过 pegasus client 来完成。每一条写入 A 的记录(如 set / 
multiset)都会通过 pegasus client 复制到 B。为了将热备份的写与常规写区别开,我们这里定义 
<strong><em>duplicate_rpc</em></strong> 表示热备写。</p>
+<p>如上图所示,每个 replica (这里特指每个分片的 primary,注意 secondary 不负责热备份复制)独自复制自己的 private 
log 到目的集群,replica 之间互不影响。数据复制直接通过 pegasus client 来完成。每一条写入 A 的记录(如 set / 
multiset)都会通过 pegasus client 复制到 B。为了将热备份的写与常规写区别开,我们这里定义 
<strong><em>duplicate_rpc</em></strong> 表示热备写。</p>
 
 <p>A-&gt;B 的热备写,B 也同样会经由三副本的 PacificA 协议提交,并且写入 private log 中。</p>
 
@@ -361,11 +362,15 @@ hashkey sortkey 20190912 =&gt; value
 
 <h3 id="confirmed_decree">confirmed_decree</h3>
 
-<p>热备份同时也需要容忍在 replica 主备切换下复制的进度不会丢失,例如当前 replica1 复制到日志 
decree=5001,此时发生主备切换,我们不想看到 replica1 从 0 开始,所以为了能够支持 
<strong><em>断点续传</em></strong>,我们引入 
<strong><em>confirmed_decree</em></strong>。replica 定期向 meta 汇报当前进度(如 
confirmed_decree=5001),一旦 meta 将该进度持久化至 zookeeper,当 replica 故障恢复时即可安全地从 
confirmed_decree=5001 重新开始热备份。</p>
+<p>热备份同时也需要容忍在 ReplicaServer 主备切换下复制的进度不会丢失,例如当前 replica1 复制到日志 
decree=5001,此时发生主备切换,我们不想看到 replica1 从 0 开始,所以为了能够支持 
<strong><em>断点续传</em></strong>,我们引入 
<strong><em>confirmed_decree</em></strong>。</p>
+
+<p>ReplicaServer 定期向 MetaServer 汇报当前热备份的进度(如 confirmed_decree=5001),一旦 
MetaServer 将该进度持久化至 Zookeeper,当 。ReplicaServer 故障恢复时即可安全地从 
confirmed_decree=5001 重新开始热备份。</p>
 
 <h2 id="流程">流程</h2>
 
-<p>热备份相关的元信息首先会记录至 meta server 上,replica server 通过 <strong><em>duplication 
sync</em></strong> 定期同步元信息,包括各个分片的 confirmed_decree。</p>
+<h3 id="1-热备份元信息同步">1. 热备份元信息同步</h3>
+
+<p>热备份相关的元信息首先会记录至 MetaServer 上,ReplicaServer 通过 <strong><em>duplication 
sync</em></strong> 定期同步元信息,包括各个分片的 confirmed_decree。</p>
 
 <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>+----------+  add dup  +----------+
 |  client  +-----------&gt;   meta   |
@@ -378,7 +383,11 @@ hashkey sortkey 20190912 =&gt; value
                       +-----------+
 </code></pre></div></div>
 
-<p>每个 replica 首先读取 private log,为了限制流量,每次只会读入一个日志块而非一整个日志文件。每一批日志统一传递给 <code 
class="language-plaintext highlighter-rouge">mutation_duplicator</code> 
进行发送。mutation_duplicator 是一个接口类,目前只实现用 pegasus client 将日志分发至目标集群,未来如有需求也可接入 
HBase 等系统。</p>
+<h3 id="2-热备份日志复制">2. 热备份日志复制</h3>
+
+<p>每个 replica 首先读取 private log,为了限制流量,每次只会读入一个日志块而非一整个日志文件。每一批日志统一传递给 <code 
class="language-plaintext highlighter-rouge">mutation_duplicator</code> 
进行发送。</p>
+
+<p><code class="language-plaintext 
highlighter-rouge">mutation_duplicator</code> 是一个可插拔的接口类。我们目前只实现用 pegasus 
client 将日志分发至目标集群,未来如有需求也可接入 HBase 等系统,例如将 Pegasus 的数据通过热备份实时同步到 HBase 中。</p>
 
 <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>+----------------------+      2
 |  private_log_loader  +--------------+
@@ -393,21 +402,33 @@ hashkey sortkey 20190912 =&gt; value
  +-----------------+     +-----------------------------+        3
 </code></pre></div></div>
 
-<p>每个日志块的一批写中可能有多组 hashkey,不同的 hashkey 可以并行分发而不会影响正确性,从而可以提高热备份效率。而如果 hashkey 
相同,例如 set&lt;hashkey=”h”, sortkey=”s1”, value=”v1”&gt; 与 set&lt;hashkey=”h”, 
sortkey=”s2”, value=”v2”&gt; 有先后关系,则它们必须串行依次发送。</p>
+<p>每个日志块的一批写中可能有多组 hashkey,不同的 hashkey 可以并行分发而不会影响正确性,从而可以提高热备份效率。而如果 hashkey 
相同,例如:</p>
 
-<p>当前我们的策略是每一个日志块的所有写发完毕后,再重复读日志块,发日志的过程。往后可能再做优化。</p>
+<ol>
+  <li><code class="language-plaintext highlighter-rouge">Set: hashkey="h", 
sortkey="s1", value="v1"</code></li>
+  <li><code class="language-plaintext highlighter-rouge">Set: hashkey="h", 
sortkey="s2", value="v2"</code></li>
+</ol>
+
+<p>这两条写有先后关系,则它们必须串行依次发送。</p>
+
+<ol>
+  <li><code class="language-plaintext highlighter-rouge">Set: hashkey="h1", 
sortkey="s1", value="v1"</code></li>
+  <li><code class="language-plaintext highlighter-rouge">Set: hashkey="h2", 
sortkey="s2", value="v2"</code></li>
+</ol>
+
+<p>这两条写是不相干的,它们无需串行发送。</p>
 
 <h2 id="日志完整性">日志完整性</h2>
 
 <p>在引入热备份之前,Pegasus 
的日志会定期被清理,无用的日志文件会被删除(通常日志的保留时间为5分钟)。但在引入热备份之后,如果有被删除的日志还没有被复制到远端集群,两集群就会数据不一致。我们引入了几个机制来保证日志的完整性,从而实现两集群的最终一致性:</p>
 
-<h3 id="gc-delay">GC Delay</h3>
+<h3 id="1-gc-delay">1. GC Delay</h3>
 
-<p>Pegasus 认为 <code class="language-plaintext 
highlighter-rouge">last_durable_decree</code> 之后的日志即可被删除回收(Garbage 
Collected),因为它们已经被持久化至 rocksdb 的 sst files 
中,即使宕机重启数据也不会丢失。但考虑如果热备份的进度较慢,我们则需要延后 GC,保证数据只有在 <code 
class="language-plaintext highlighter-rouge">confirmed_decree</code> 之后的日志才可被 
GC。</p>
+<p>Pegasus 先前认为 <code class="language-plaintext 
highlighter-rouge">last_durable_decree</code> 之后的日志即可被删除回收(Garbage 
Collected),因为它们已经被持久化至 rocksdb 的 sst files 
中,即使宕机重启数据也不会丢失。但考虑如果热备份的进度较慢,我们则需要延后 GC,保证数据只有在 <code 
class="language-plaintext highlighter-rouge">confirmed_decree</code> 之后的日志才可被 
GC。</p>
 
 <p>当然我们也可以将日志 GC 的时间设置的相当长,例如一周,因为此时数据必然已复制到远端集群(什么环境下复制一条日志需要超过 1 
周时间?)。最终我们没有选择这种方法。</p>
 
-<h3 id="broadcast-confirmed_decree">Broadcast confirmed_decree</h3>
+<h3 id="2-broadcast-confirmed_decree">2. Broadcast confirmed_decree</h3>
 
 <p>虽然 primary 不会 GC 那些未被热备的日志,但 secondary 并未遵守这一约定,这些丢失日志的 secondary 
有朝一日也会被提拔为 primary,从而影响日志完整性。所以 primary 需要将 confirmed_decree 通过组间心跳(group 
check)的方式通知 secondary,保证它们不会误删日志。</p>
 
@@ -426,7 +447,7 @@ hashkey sortkey 20190912 =&gt; value
 
 <p>这里有一个问题:由于 secondary 滞后于 primary 了解到热备份正在进行,所以在创建热备份后,secondary 
有一定概率误删日志。这是一个已知的设计bug。我们会在后续引入新机制来修复该问题。</p>
 
-<h3 id="replica-learn-step-back">Replica Learn Step Back</h3>
+<h3 id="3-replica-learn-step-back">3. Replica Learn Step Back</h3>
 
 <p>当一个 replica 新加入3副本组中,由于它的数据滞后于 primary,它会通过 <strong><em>replica 
learn</em></strong> 来拷贝新日志以跟上组员的进度。此时从何处开始拷贝日志(称为 <code 
class="language-plaintext 
highlighter-rouge">learn_start_decree</code>)就是一个问题。</p>
 
@@ -474,15 +495,18 @@ hashkey sortkey 20190912 =&gt; value
 
 <p>我们假设 learner 已经持有 [251, 400] 的日志,下一步 learnee 将会复制 [301, 800] 的日志,与 learner 
数据为空的情况相同。新的日志集将会把旧的日志集覆盖。</p>
 
-<h3 id="sync-is_duplicating-to-every-replica">Sync is_duplicating to every 
replica</h3>
+<h3 id="4-sync-is_duplicating-to-every-replica">4. Sync is_duplicating to 
every replica</h3>
 
 <p>不管是考虑 GC,还是考虑 learn,我们都需要让每一个 replica 知道“自己正在进行热备份”,因为普通的表不应该考虑 GC 
Delay,也不应该考虑在 learn 的过程中补齐未热备份的日志,只有热备份的表需要额外考虑这些事情。所以我们需要向所有 replica 
同步一个标识(<code class="language-plaintext 
highlighter-rouge">is_duplicating</code>)。</p>
 
 <p>这个同步不需要考虑强一致性:不需要在 <code class="language-plaintext 
highlighter-rouge">is_duplicating</code> 的值改变时强一致地通知所有 replica。但我们需要保证在 replica 
learn 的过程中,该标识能够立刻同步给 learner。因此,我们让这个标识通过 config sync 同步。</p>
 
-<h3 id="apply-learned-state">Apply Learned State</h3>
+<h3 id="5-apply-learned-state">5. Apply Learned State</h3>
 
-<p>原先 learner 收到 [21-60] 之间的日志后首先会放入 learn/ 目录下,然后简单地重放每一条日志并写入 
rocksdb,并不会写入日志中。为了保证日志完整性,我们会将 learn/ 目录 rename 至 plog 目录,替代之前所有的日志。</p>
+<p>原先流程中,learner 收到 [21-60] 之间的日志后首先会放入 learn/ 目录下,然后简单地重放每一条日志并写入 
rocksdb。Learn 流程完成后这些日志即丢弃。
+如果没有热备份,该流程并没有问题。但考虑到热备份,如果 learner 丢弃 [21-60] 的日志,那么热备份的日志完整性就有问题。</p>
+
+<p>为了解决这一问题,我们会将 learn/ 目录 rename 至 plog 目录,替代之前所有的日志。</p>
 
 <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>                     +----+
                      | 60 |
@@ -522,6 +546,8 @@ hashkey sortkey 20190912 =&gt; value
                   +----+
 </code></pre></div></div>
 
+<p>通过整合上述的几个机制,Pegasus实现了在热备份过程中,数据不会丢失。</p>
+
 </div>
 
 <div class="tags">
@@ -548,14 +574,19 @@ hashkey sortkey 20190912 =&gt; value
       <li><a href="#confirmed_decree">confirmed_decree</a></li>
     </ul>
   </li>
-  <li><a href="#流程">流程</a></li>
+  <li><a href="#流程">流程</a>
+    <ul>
+      <li><a href="#1-热备份元信息同步">1. 热备份元信息同步</a></li>
+      <li><a href="#2-热备份日志复制">2. 热备份日志复制</a></li>
+    </ul>
+  </li>
   <li><a href="#日志完整性">日志完整性</a>
     <ul>
-      <li><a href="#gc-delay">GC Delay</a></li>
-      <li><a href="#broadcast-confirmed_decree">Broadcast 
confirmed_decree</a></li>
-      <li><a href="#replica-learn-step-back">Replica Learn Step Back</a></li>
-      <li><a href="#sync-is_duplicating-to-every-replica">Sync is_duplicating 
to every replica</a></li>
-      <li><a href="#apply-learned-state">Apply Learned State</a></li>
+      <li><a href="#1-gc-delay">1. GC Delay</a></li>
+      <li><a href="#2-broadcast-confirmed_decree">2. Broadcast 
confirmed_decree</a></li>
+      <li><a href="#3-replica-learn-step-back">3. Replica Learn Step 
Back</a></li>
+      <li><a href="#4-sync-is_duplicating-to-every-replica">4. Sync 
is_duplicating to every replica</a></li>
+      <li><a href="#5-apply-learned-state">5. Apply Learned State</a></li>
     </ul>
   </li>
 </ul>
diff --git a/output/administration/backup-request.html 
b/output/administration/backup-request.html
index 78ebabe..a34c477 100644
--- a/output/administration/backup-request.html
+++ b/output/administration/backup-request.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="背景 
在当前的Pegasus实现中,由于向secondary读取会导致不一致的情况发生,所以目前Pegasus仅仅支持对primary副本的读取。但是在某些情况下(例如:负载均衡、热点写入等)经常会导致primary不稳定。所以我们希望在primary不稳定时能够读取secondary,通过牺牲部分强一致性来降低读请求的长尾并提高系统的可用性。backup
 request便是用来实现此功能的。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/backup-request","@type":"BlogPosting","headline":"Backup
 
Request","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"背景
 
在当前的Pegasus实现中,由于向secondary读取会导致不一致的情况发生,所以目前Pegasus仅仅支持对primary副本的读取。但是在某些情况下(例如:负载均衡、热点写入等)经常会导致primary不稳定。所以我们希望在primary不稳定时能够读取secondary,通过牺牲部分强一致性来降低读请求的长尾并提高系统的可用性。backup
 
request便是用来实现此功能的。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/backup-request"},"@context":"https://sc
 [...]
+{"url":"/administration/backup-request","@type":"BlogPosting","headline":"Backup
 
Request","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"背景
 
在当前的Pegasus实现中,由于向secondary读取会导致不一致的情况发生,所以目前Pegasus仅仅支持对primary副本的读取。但是在某些情况下(例如:负载均衡、热点写入等)经常会导致primary不稳定。所以我们希望在primary不稳定时能够读取secondary,通过牺牲部分强一致性来降低读请求的长尾并提高系统的可用性。backup
 
request便是用来实现此功能的。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/backup-request"},"@context":"https://sc
 [...]
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/bad-disk.html 
b/output/administration/bad-disk.html
index 8df8dba..b7a2bea 100644
--- a/output/administration/bad-disk.html
+++ b/output/administration/bad-disk.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="磁盘故障时有发生,通常有下列检查方式:" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/bad-disk","@type":"BlogPosting","headline":"坏盘检修","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"磁盘故障时有发生,通常有下列检查方式:","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/bad-disk"},"@context":"https://schema.org"}</script>
+{"url":"/administration/bad-disk","@type":"BlogPosting","headline":"坏盘检修","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"磁盘故障时有发生,通常有下列检查方式:","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/bad-disk"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/cold-backup.html 
b/output/administration/cold-backup.html
index 3b5f624..9205460 100644
--- a/output/administration/cold-backup.html
+++ b/output/administration/cold-backup.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="介绍" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/cold-backup","@type":"BlogPosting","headline":"冷备份","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"介绍","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/cold-backup"},"@context":"https://schema.org"}</script>
+{"url":"/administration/cold-backup","@type":"BlogPosting","headline":"冷备份","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"介绍","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/cold-backup"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/compression.html 
b/output/administration/compression.html
index df5219c..43ae48f 100644
--- a/output/administration/compression.html
+++ b/output/administration/compression.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="客户端压缩" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/compression","@type":"BlogPosting","headline":"数据压缩","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"客户端压缩","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/compression"},"@context":"https://schema.org"}</script>
+{"url":"/administration/compression","@type":"BlogPosting","headline":"数据压缩","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"客户端压缩","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/compression"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/config.html 
b/output/administration/config.html
index 0247026..c251cf3 100644
--- a/output/administration/config.html
+++ b/output/administration/config.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="配置组成部分" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/config","@type":"BlogPosting","headline":"配置说明","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"配置组成部分","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/config"},"@context":"https://schema.org"}</script>
+{"url":"/administration/config","@type":"BlogPosting","headline":"配置说明","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"配置组成部分","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/config"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/deployment.html 
b/output/administration/deployment.html
index 1a0bf28..80af51b 100644
--- a/output/administration/deployment.html
+++ b/output/administration/deployment.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="集群部署" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/deployment","@type":"BlogPosting","headline":"集群部署","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"集群部署","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/deployment"},"@context":"https://schema.org"}</script>
+{"url":"/administration/deployment","@type":"BlogPosting","headline":"集群部署","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"集群部署","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/deployment"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/duplication.html 
b/output/administration/duplication.html
index 28df16a..5fd4670 100644
--- a/output/administration/duplication.html
+++ b/output/administration/duplication.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="在 pegasus 中,跨机房同步又被称为 热备份,或 
duplication,简称 dup。这一功能的主要目的是保证 数据中心级别的可用性。当业务需要保证服务与数据能够容忍机房故障时,可以考虑使用此功能。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/duplication","@type":"BlogPosting","headline":"跨机房同步","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"在
 pegasus 中,跨机房同步又被称为 热备份,或 duplication,简称 dup。这一功能的主要目的是保证 
数据中心级别的可用性。当业务需要保证服务与数据能够容忍机房故障时,可以考虑使用此功能。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/duplication"},"@context":"https://schema.org"}</script>
+{"url":"/administration/duplication","@type":"BlogPosting","headline":"跨机房同步","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"在
 pegasus 中,跨机房同步又被称为 热备份,或 duplication,简称 dup。这一功能的主要目的是保证 
数据中心级别的可用性。当业务需要保证服务与数据能够容忍机房故障时,可以考虑使用此功能。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/duplication"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
@@ -551,10 +551,10 @@ replica.write_throttling = 
30000*delay*100,40000*reject*200
 </code></pre></div>    </div>
   </li>
   <li>
-    <p><code class="language-plaintext 
highlighter-rouge">replica*eon.replica_stub*dup.pending_mutations_count</code>:当前有多少写堆积在源集群,且尚未复制。如果一切正常,该监控项会稳定维持在某个的值上下。当某个环节出现故障时,往往会有大量的写堆积,该值会持续上涨。</p>
+    <p><code class="language-plaintext 
highlighter-rouge">replica*eon.replica_stub*dup.pending_mutations_count</code>:当前有多少写堆积在源集群,且尚未复制。如果一切正常,该监控项会稳定维持在某个值上下。当热备份的某个环节出现故障时,往往会有大量的写堆积,该值会持续上涨。</p>
   </li>
   <li>
-    <p><code class="language-plaintext 
highlighter-rouge">replica*eon.replica_stub*dup.load_file_failed_count</code>:源集群读取日志文件的失败次数。日志文件的读取是热备份的关键环节,如果该环节因某种原因出现故障,则会导致日志长时间无法被复制。</p>
+    <p><code class="language-plaintext 
highlighter-rouge">replica*eon.replica_stub*dup.load_file_failed_count</code>:源集群读取日志文件的失败次数。日志文件的读取是热备份的关键环节,如果该环节因某种原因出现故障,则会导致热备份被阻塞。</p>
   </li>
 </ul>
 
diff --git a/output/administration/experiences.html 
b/output/administration/experiences.html
index 3a8a2fe..1754e6a 100644
--- a/output/administration/experiences.html
+++ b/output/administration/experiences.html
@@ -16,9 +16,9 @@
 <meta property="og:description" 
content="任何一个分布式系统的运维工作都少不了周期巡检,问题排查,故障报警,人工审核。它们是保证服务稳定运行的关键。 
这里整理Pegasus的监控指标,你可以根据需要接入到你的运维工具中。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/experiences","@type":"BlogPosting","headline":"运维经验","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"任何一个分布式系统的运维工作都少不了周期巡检,问题排查,故障报警,人工审核。它们是保证服务稳定运行的关键。
 
这里整理Pegasus的监控指标,你可以根据需要接入到你的运维工具中。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/experiences"},"@context":"https://schema.org"}</script>
+{"url":"/administration/experiences","@type":"BlogPosting","headline":"运维经验","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"任何一个分布式系统的运维工作都少不了周期巡检,问题排查,故障报警,人工审核。它们是保证服务稳定运行的关键。
 
这里整理Pegasus的监控指标,你可以根据需要接入到你的运维工具中。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/experiences"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/index.html b/output/administration/index.html
index c5f8e64..5a3cf65 100644
--- a/output/administration/index.html
+++ b/output/administration/index.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="Pegasus 不仅仅只提供简单的 key value 
存储接口,我们还基于稳定性考虑,增加了许多有助于高效运维的特性。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/index","@type":"BlogPosting","headline":"高效运维","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Pegasus
 不仅仅只提供简单的 key value 
存储接口,我们还基于稳定性考虑,增加了许多有助于高效运维的特性。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/index"},"@context":"https://schema.org"}</script>
+{"url":"/administration/index","@type":"BlogPosting","headline":"高效运维","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Pegasus
 不仅仅只提供简单的 key value 
存储接口,我们还基于稳定性考虑,增加了许多有助于高效运维的特性。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/index"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/manual-compact.html 
b/output/administration/manual-compact.html
index bb913fa..20bb274 100644
--- a/output/administration/manual-compact.html
+++ b/output/administration/manual-compact.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="注:manual compact功能从v1.8.1版本开始支持。 原理" 
/>
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/manual-compact","@type":"BlogPosting","headline":"Manual
 
Compact功能","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"注:manual
 compact功能从v1.8.1版本开始支持。 
原理","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/manual-compact"},"@context":"https://schema.org"}</script>
+{"url":"/administration/manual-compact","@type":"BlogPosting","headline":"Manual
 
Compact功能","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"注:manual
 compact功能从v1.8.1版本开始支持。 
原理","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/manual-compact"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/membership-change.html 
b/output/administration/membership-change.html
index cbf5f68..f73626c 100644
--- a/output/administration/membership-change.html
+++ b/output/administration/membership-change.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="功能目标" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/membership-change","@type":"BlogPosting","headline":"集群扩容缩容","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"功能目标","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/membership-change"},"@context":"https://schema.org"}</script>
+{"url":"/administration/membership-change","@type":"BlogPosting","headline":"集群扩容缩容","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"功能目标","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/membership-change"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/meta-recovery.html 
b/output/administration/meta-recovery.html
index e0fcc36..593be34 100644
--- a/output/administration/meta-recovery.html
+++ b/output/administration/meta-recovery.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="功能目标 在Pegasus bootstrap的过程中,meta 
server需要先从zookeeper上拉取table的元信息以及所有replica的拓扑结构,再开始服务。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/meta-recovery","@type":"BlogPosting","headline":"元数据恢复","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"功能目标
 在Pegasus bootstrap的过程中,meta 
server需要先从zookeeper上拉取table的元信息以及所有replica的拓扑结构,再开始服务。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/meta-recovery"},"@context":"https://schema.org"}</script>
+{"url":"/administration/meta-recovery","@type":"BlogPosting","headline":"元数据恢复","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"功能目标
 在Pegasus bootstrap的过程中,meta 
server需要先从zookeeper上拉取table的元信息以及所有replica的拓扑结构,再开始服务。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/meta-recovery"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/monitoring.html 
b/output/administration/monitoring.html
index bda963b..e67293d 100644
--- a/output/administration/monitoring.html
+++ b/output/administration/monitoring.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="组件 从v1.12.0开始, Pegasus 支持使用 
Prometheus 和 Grafana 进项监控项的采集和展示。 Prometheus Prometheus 
是一款开源的系统监控和报警套件。它可以通过将采集被监控系统的监控项存入自身的时序数据库中,并且通过丰富的多维数据查询语言,满足用户的不同数据展示需求。 
Grafana Grafana 是一款开源的数据分析和展示平台。支持包括 Prometheus 
在内的多个主流时序数据库源。通过对应的数据库查询语句,从数据源中获取展现数据。通过灵活可配置的 Dashboard,快速的将这些数据以图表的形式展示给用户。 
注意* 本文档仅提供一种使用 Prometheus 和 Grafana 进行 Pegasus 
监控数据采集和展示的方式。Pegasus不包含、不维护这些组件。更多关于这些组件的详细介绍,请移步对应官方文档进行查阅。 配置 Prometheus 
本小节介绍如何配置 Prometheu
 s。 第一步: 配置Pegasus服务 Peg [...]
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/monitoring","@type":"BlogPosting","headline":"可视化监控","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"组件
 从v1.12.0开始, Pegasus 支持使用 Prometheus 和 Grafana 进项监控项的采集和展示。 Prometheus 
Prometheus 
是一款开源的系统监控和报警套件。它可以通过将采集被监控系统的监控项存入自身的时序数据库中,并且通过丰富的多维数据查询语言,满足用户的不同数据展示需求。 
Grafana Grafana 是一款开源的数据分析和展示平台。支持包括 Prometheus 
在内的多个主流时序数据库源。通过对应的数据库查询语句,从数据源中获取展现数据。通过灵活可配置的 Dashboard,快速的将这些数据以图表的形式展示给用户。 
注意* 本文档仅提供一种使用 Prometheus  [...]
+{"url":"/administration/monitoring","@type":"BlogPosting","headline":"可视化监控","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"组件
 从v1.12.0开始, Pegasus 支持使用 Prometheus 和 Grafana 进项监控项的采集和展示。 Prometheus 
Prometheus 
是一款开源的系统监控和报警套件。它可以通过将采集被监控系统的监控项存入自身的时序数据库中,并且通过丰富的多维数据查询语言,满足用户的不同数据展示需求。 
Grafana Grafana 是一款开源的数据分析和展示平台。支持包括 Prometheus 
在内的多个主流时序数据库源。通过对应的数据库查询语句,从数据源中获取展现数据。通过灵活可配置的 Dashboard,快速的将这些数据以图表的形式展示给用户。 
注意* 本文档仅提供一种使用 Prometheus  [...]
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/partition-split.html 
b/output/administration/partition-split.html
index d8bf65b..2da22f8 100644
--- a/output/administration/partition-split.html
+++ b/output/administration/partition-split.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="功能简介 
在pegasus中,表的partition个数是在创建时指定的,并且不会动态改变,但随着数据量不断增大,可能出现partition数据过大的情况,这样可能会导致读写效率下降,因此需要人工增大partition个数来保障服务质量。"
 />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/partition-split","@type":"BlogPosting","headline":"Partition
 
Split","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"功能简介
 
在pegasus中,表的partition个数是在创建时指定的,并且不会动态改变,但随着数据量不断增大,可能出现partition数据过大的情况,这样可能会导致读写效率下降,因此需要人工增大partition个数来保障服务质量。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/partition-split"},"@context":"https://schema.org"}</script>
+{"url":"/administration/partition-split","@type":"BlogPosting","headline":"Partition
 
Split","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"功能简介
 
在pegasus中,表的partition个数是在创建时指定的,并且不会动态改变,但随着数据量不断增大,可能出现partition数据过大的情况,这样可能会导致读写效率下降,因此需要人工增大partition个数来保障服务质量。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/partition-split"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/rebalance.html 
b/output/administration/rebalance.html
index 22b4c92..b3003a6 100644
--- a/output/administration/rebalance.html
+++ b/output/administration/rebalance.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="本文档主要介绍Pegasus负载均衡的概念、使用和设计。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/rebalance","@type":"BlogPosting","headline":"负载均衡","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"本文档主要介绍Pegasus负载均衡的概念、使用和设计。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/rebalance"},"@context":"https://schema.org"}</script>
+{"url":"/administration/rebalance","@type":"BlogPosting","headline":"负载均衡","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"本文档主要介绍Pegasus负载均衡的概念、使用和设计。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/rebalance"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/remote-commands.html 
b/output/administration/remote-commands.html
index 93f0502..d980c4e 100644
--- a/output/administration/remote-commands.html
+++ b/output/administration/remote-commands.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="功能目标" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/remote-commands","@type":"BlogPosting","headline":"远程命令","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"功能目标","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/remote-commands"},"@context":"https://schema.org"}</script>
+{"url":"/administration/remote-commands","@type":"BlogPosting","headline":"远程命令","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"功能目标","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/remote-commands"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/replica-recovery.html 
b/output/administration/replica-recovery.html
index ee36149..1f68f7c 100644
--- a/output/administration/replica-recovery.html
+++ b/output/administration/replica-recovery.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="原理" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/replica-recovery","@type":"BlogPosting","headline":"Replica数据恢复","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"原理","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/replica-recovery"},"@context":"https://schema.org"}</script>
+{"url":"/administration/replica-recovery","@type":"BlogPosting","headline":"Replica数据恢复","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"原理","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/replica-recovery"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/resource-management.html 
b/output/administration/resource-management.html
index 9f21093..250ccc3 100644
--- a/output/administration/resource-management.html
+++ b/output/administration/resource-management.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="背景介绍 
Pegasus系统主要用到了资源包括SSD存储、内存、网络连接等。对这些资源的使用不要太满,否则系统可能会不稳定甚至崩溃。建议: 
SSD存储使用不要超过每个节点的80%。 内存使用不要超过每个节点的80%。 网络连接数不要超过系统配置,建议连接数控制在5万以内。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/resource-management","@type":"BlogPosting","headline":"资源管理","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"背景介绍
 Pegasus系统主要用到了资源包括SSD存储、内存、网络连接等。对这些资源的使用不要太满,否则系统可能会不稳定甚至崩溃。建议: 
SSD存储使用不要超过每个节点的80%。 内存使用不要超过每个节点的80%。 
网络连接数不要超过系统配置,建议连接数控制在5万以内。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/resource-management"},"@context":"https://schema.org"}</script>
+{"url":"/administration/resource-management","@type":"BlogPosting","headline":"资源管理","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"背景介绍
 Pegasus系统主要用到了资源包括SSD存储、内存、网络连接等。对这些资源的使用不要太满,否则系统可能会不稳定甚至崩溃。建议: 
SSD存储使用不要超过每个节点的80%。 内存使用不要超过每个节点的80%。 
网络连接数不要超过系统配置,建议连接数控制在5万以内。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/resource-management"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/rolling-update.html 
b/output/administration/rolling-update.html
index ccacb34..8aa6b52 100644
--- a/output/administration/rolling-update.html
+++ b/output/administration/rolling-update.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="功能目标" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/rolling-update","@type":"BlogPosting","headline":"集群升级","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"功能目标","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/rolling-update"},"@context":"https://schema.org"}</script>
+{"url":"/administration/rolling-update","@type":"BlogPosting","headline":"集群升级","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"功能目标","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/rolling-update"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/table-env.html 
b/output/administration/table-env.html
index 29f92d6..f53be6f 100644
--- a/output/administration/table-env.html
+++ b/output/administration/table-env.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="功能目标" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/table-env","@type":"BlogPosting","headline":"Table环境变量","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"功能目标","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/table-env"},"@context":"https://schema.org"}</script>
+{"url":"/administration/table-env","@type":"BlogPosting","headline":"Table环境变量","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"功能目标","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/table-env"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/table-migration.html 
b/output/administration/table-migration.html
index d1c321e..a23bc57 100644
--- a/output/administration/table-migration.html
+++ b/output/administration/table-migration.html
@@ -16,9 +16,9 @@
 <meta property="og:description" 
content="这里说的Table迁移是指将某个Pegasus集群的一个表的数据迁移到另一个Pegasus集群中。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/table-migration","@type":"BlogPosting","headline":"Table迁移","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"这里说的Table迁移是指将某个Pegasus集群的一个表的数据迁移到另一个Pegasus集群中。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/table-migration"},"@context":"https://schema.org"}</script>
+{"url":"/administration/table-migration","@type":"BlogPosting","headline":"Table迁移","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"这里说的Table迁移是指将某个Pegasus集群的一个表的数据迁移到另一个Pegasus集群中。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/table-migration"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/table-soft-delete.html 
b/output/administration/table-soft-delete.html
index bd074fc..f7abc34 100644
--- a/output/administration/table-soft-delete.html
+++ b/output/administration/table-soft-delete.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="功能目标 
软删除主要用于防范数据被错误的永久删除。具体而言,软删除应该具有如下几个功能: 当用户删除某个指定的表后,该表变得不可访问。 
被删除的表其数据不会立即物理清除,而是会保留一段时间。 
被删除的表过期(超过保留时间)后,数据会从物理上做彻底的删除,但是数据真正删除的时间还取决于其他因素,参见垃圾文件夹管理。 
未过期的表可以通过一定的方式恢复,恢复成功后又可以像正常的表一样进行读写访问。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/table-soft-delete","@type":"BlogPosting","headline":"Table软删除","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"功能目标
 软删除主要用于防范数据被错误的永久删除。具体而言,软删除应该具有如下几个功能: 当用户删除某个指定的表后,该表变得不可访问。 
被删除的表其数据不会立即物理清除,而是会保留一段时间。 
被删除的表过期(超过保留时间)后,数据会从物理上做彻底的删除,但是数据真正删除的时间还取决于其他因素,参见垃圾文件夹管理。 
未过期的表可以通过一定的方式恢复,恢复成功后又可以像正常的表一样进行读写访问。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/table-soft-delete"},"@context":"https://sch
 [...]
+{"url":"/administration/table-soft-delete","@type":"BlogPosting","headline":"Table软删除","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"功能目标
 软删除主要用于防范数据被错误的永久删除。具体而言,软删除应该具有如下几个功能: 当用户删除某个指定的表后,该表变得不可访问。 
被删除的表其数据不会立即物理清除,而是会保留一段时间。 
被删除的表过期(超过保留时间)后,数据会从物理上做彻底的删除,但是数据真正删除的时间还取决于其他因素,参见垃圾文件夹管理。 
未过期的表可以通过一定的方式恢复,恢复成功后又可以像正常的表一样进行读写访问。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/table-soft-delete"},"@context":"https://sch
 [...]
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/throttling.html 
b/output/administration/throttling.html
index 7b721d7..f27873f 100644
--- a/output/administration/throttling.html
+++ b/output/administration/throttling.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="关于流控 流量控制是指通过一些手段来控制读写请求的速度。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/throttling","@type":"BlogPosting","headline":"流量控制","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"关于流控
 
流量控制是指通过一些手段来控制读写请求的速度。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/throttling"},"@context":"https://schema.org"}</script>
+{"url":"/administration/throttling","@type":"BlogPosting","headline":"流量控制","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"关于流控
 
流量控制是指通过一些手段来控制读写请求的速度。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/throttling"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/usage-scenario.html 
b/output/administration/usage-scenario.html
index bd8d05f..a565f30 100644
--- a/output/administration/usage-scenario.html
+++ b/output/administration/usage-scenario.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="注:Usage Scenario功能从v1.8.1版本开始支持。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/usage-scenario","@type":"BlogPosting","headline":"Usage
 
Scenario功能","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"注:Usage
 
Scenario功能从v1.8.1版本开始支持。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/usage-scenario"},"@context":"https://schema.org"}</script>
+{"url":"/administration/usage-scenario","@type":"BlogPosting","headline":"Usage
 
Scenario功能","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"注:Usage
 
Scenario功能从v1.8.1版本开始支持。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/usage-scenario"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/whitelist.html 
b/output/administration/whitelist.html
index 2341902..98de07d 100644
--- a/output/administration/whitelist.html
+++ b/output/administration/whitelist.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="介绍" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/whitelist","@type":"BlogPosting","headline":"白名单","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"介绍","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/whitelist"},"@context":"https://schema.org"}</script>
+{"url":"/administration/whitelist","@type":"BlogPosting","headline":"白名单","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"介绍","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/whitelist"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/administration/zk-migration.html 
b/output/administration/zk-migration.html
index 5d0a10a..7ecf717 100644
--- a/output/administration/zk-migration.html
+++ b/output/administration/zk-migration.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="由于Pegasus的meta 
server依赖Zookeeper存储元数据和抢主,所以Zookeeper服务的不稳定会造成Pegasus服务不稳定,有时就需要迁移到其他更稳定或者空闲的Zookeeper上。"
 />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/administration/zk-migration","@type":"BlogPosting","headline":"Zookeeper迁移","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"由于Pegasus的meta
 
server依赖Zookeeper存储元数据和抢主,所以Zookeeper服务的不稳定会造成Pegasus服务不稳定,有时就需要迁移到其他更稳定或者空闲的Zookeeper上。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/zk-migration"},"@context":"https://schema.org"}</script>
+{"url":"/administration/zk-migration","@type":"BlogPosting","headline":"Zookeeper迁移","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"由于Pegasus的meta
 
server依赖Zookeeper存储元数据和抢主,所以Zookeeper服务的不稳定会造成Pegasus服务不稳定,有时就需要迁移到其他更稳定或者空闲的Zookeeper上。","mainEntityOfPage":{"@type":"WebPage","@id":"/administration/zk-migration"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/api/geo.html b/output/api/geo.html
index c8785bb..8b6b6f6 100644
--- a/output/api/geo.html
+++ b/output/api/geo.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="Pegasus GEO支持" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/api/geo","@type":"BlogPosting","headline":"GEO支持","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Pegasus
 
GEO支持","mainEntityOfPage":{"@type":"WebPage","@id":"/api/geo"},"@context":"https://schema.org"}</script>
+{"url":"/api/geo","@type":"BlogPosting","headline":"GEO支持","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Pegasus
 
GEO支持","mainEntityOfPage":{"@type":"WebPage","@id":"/api/geo"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/api/http.html b/output/api/http.html
index f8b1e1e..42bc446 100644
--- a/output/api/http.html
+++ b/output/api/http.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="功能介绍" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/api/http","@type":"BlogPosting","headline":"HTTP接口","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"功能介绍","mainEntityOfPage":{"@type":"WebPage","@id":"/api/http"},"@context":"https://schema.org"}</script>
+{"url":"/api/http","@type":"BlogPosting","headline":"HTTP接口","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"功能介绍","mainEntityOfPage":{"@type":"WebPage","@id":"/api/http"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/api/index.html b/output/api/index.html
index ea1cfe8..6580517 100644
--- a/output/api/index.html
+++ b/output/api/index.html
@@ -16,9 +16,9 @@
 <meta property="og:description" 
content="这里介绍Pegasus服务所提供的用户接口。客户端可以在我们的服务接口上做二次封装。 通常你只需要通过 客户端文档 
学习如何与Pegasus交互。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/api/index","@type":"BlogPosting","headline":"用户接口","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"这里介绍Pegasus服务所提供的用户接口。客户端可以在我们的服务接口上做二次封装。
 通常你只需要通过 客户端文档 
学习如何与Pegasus交互。","mainEntityOfPage":{"@type":"WebPage","@id":"/api/index"},"@context":"https://schema.org"}</script>
+{"url":"/api/index","@type":"BlogPosting","headline":"用户接口","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"这里介绍Pegasus服务所提供的用户接口。客户端可以在我们的服务接口上做二次封装。
 通常你只需要通过 客户端文档 
学习如何与Pegasus交互。","mainEntityOfPage":{"@type":"WebPage","@id":"/api/index"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/api/redis.html b/output/api/redis.html
index de1d1dc..1830ed5 100644
--- a/output/api/redis.html
+++ b/output/api/redis.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="Redis适配" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/api/redis","@type":"BlogPosting","headline":"Redis适配","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Redis适配","mainEntityOfPage":{"@type":"WebPage","@id":"/api/redis"},"@context":"https://schema.org"}</script>
+{"url":"/api/redis","@type":"BlogPosting","headline":"Redis适配","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Redis适配","mainEntityOfPage":{"@type":"WebPage","@id":"/api/redis"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/api/single-atomic.html b/output/api/single-atomic.html
index dba1855..37c541f 100644
--- a/output/api/single-atomic.html
+++ b/output/api/single-atomic.html
@@ -16,9 +16,9 @@
 <meta property="og:description" 
content="从v1.10.0版本开始,Pegasus支持单行原子操作。这里的单行是指同一HashKey下的所有数据。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/api/single-atomic","@type":"BlogPosting","headline":"单行原子操作","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"从v1.10.0版本开始,Pegasus支持单行原子操作。这里的单行是指同一HashKey下的所有数据。","mainEntityOfPage":{"@type":"WebPage","@id":"/api/single-atomic"},"@context":"https://schema.org"}</script>
+{"url":"/api/single-atomic","@type":"BlogPosting","headline":"单行原子操作","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"从v1.10.0版本开始,Pegasus支持单行原子操作。这里的单行是指同一HashKey下的所有数据。","mainEntityOfPage":{"@type":"WebPage","@id":"/api/single-atomic"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/api/ttl.html b/output/api/ttl.html
index 58d54eb..36d3a91 100644
--- a/output/api/ttl.html
+++ b/output/api/ttl.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="原理 
Pegasus支持TTL(Time-To-Live)功能,即在写入数据的时候,可以指定数据的过期时间。一旦过期,数据对用户就是不可见的,通过get/multiGet等查询接口获取不到数据,就跟数据没有写入一样。"
 />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/api/ttl","@type":"BlogPosting","headline":"TTL","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"原理
 
Pegasus支持TTL(Time-To-Live)功能,即在写入数据的时候,可以指定数据的过期时间。一旦过期,数据对用户就是不可见的,通过get/multiGet等查询接口获取不到数据,就跟数据没有写入一样。","mainEntityOfPage":{"@type":"WebPage","@id":"/api/ttl"},"@context":"https://schema.org"}</script>
+{"url":"/api/ttl","@type":"BlogPosting","headline":"TTL","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"原理
 
Pegasus支持TTL(Time-To-Live)功能,即在写入数据的时候,可以指定数据的过期时间。一旦过期,数据对用户就是不可见的,通过get/multiGet等查询接口获取不到数据,就跟数据没有写入一样。","mainEntityOfPage":{"@type":"WebPage","@id":"/api/ttl"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/clients/cpp-client.html b/output/clients/cpp-client.html
index 670b804..c3d1976 100644
--- a/output/clients/cpp-client.html
+++ b/output/clients/cpp-client.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="获取Cpp客户端 
首先需要编译Pegasus,编译完成后运行以下命令可以打包生产Cpp客户端库: ./run.sh pack_client 
运行成功后,会在本地文件夹下生产pegasus-client-{version}-{platform}-{buildType}的文件夹以及tar.gz文件。在文件夹里面有个sample/文件夹,进去后可以运行make编译示例程序。"
 />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/clients/cpp-client","@type":"BlogPosting","headline":"C++客户端文档","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"获取Cpp客户端
 首先需要编译Pegasus,编译完成后运行以下命令可以打包生产Cpp客户端库: ./run.sh pack_client 
运行成功后,会在本地文件夹下生产pegasus-client-{version}-{platform}-{buildType}的文件夹以及tar.gz文件。在文件夹里面有个sample/文件夹,进去后可以运行make编译示例程序。","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/cpp-client"},"@context":"https://schema.org"}</script>
+{"url":"/clients/cpp-client","@type":"BlogPosting","headline":"C++客户端文档","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"获取Cpp客户端
 首先需要编译Pegasus,编译完成后运行以下命令可以打包生产Cpp客户端库: ./run.sh pack_client 
运行成功后,会在本地文件夹下生产pegasus-client-{version}-{platform}-{buildType}的文件夹以及tar.gz文件。在文件夹里面有个sample/文件夹,进去后可以运行make编译示例程序。","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/cpp-client"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/clients/go-client.html b/output/clients/go-client.html
index 6381a75..2dc6368 100644
--- a/output/clients/go-client.html
+++ b/output/clients/go-client.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="项目地址" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/clients/go-client","@type":"BlogPosting","headline":"Go客户端文档","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"项目地址","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/go-client"},"@context":"https://schema.org"}</script>
+{"url":"/clients/go-client","@type":"BlogPosting","headline":"Go客户端文档","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"项目地址","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/go-client"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/clients/index.html b/output/clients/index.html
index e17db8c..1dda7b6 100644
--- a/output/clients/index.html
+++ b/output/clients/index.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="Pegasus目前提供以下多种客户端支持:" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/clients/index","@type":"BlogPosting","headline":"客户端库","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Pegasus目前提供以下多种客户端支持:","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/index"},"@context":"https://schema.org"}</script>
+{"url":"/clients/index","@type":"BlogPosting","headline":"客户端库","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Pegasus目前提供以下多种客户端支持:","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/index"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/clients/java-client.html b/output/clients/java-client.html
index 3e3d188..cbc6e70 100644
--- a/output/clients/java-client.html
+++ b/output/clients/java-client.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="获取Java客户端" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/clients/java-client","@type":"BlogPosting","headline":"Java客户端文档","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"获取Java客户端","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/java-client"},"@context":"https://schema.org"}</script>
+{"url":"/clients/java-client","@type":"BlogPosting","headline":"Java客户端文档","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"获取Java客户端","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/java-client"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/clients/node-client.html b/output/clients/node-client.html
index 0853172..f47f653 100644
--- a/output/clients/node-client.html
+++ b/output/clients/node-client.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="安装NodeJs客户端 项目地址:Pegasus NodeJS 
Client 下载并将客户端依赖添加到package.json中: npm install pegasus-nodejs-client --save 
创建/关闭客户端 create let pegasusClient = require(&#39;pegasus-nodejs-client&#39;); 
/** * Create a client instance * @param {Object} configs * {Array} 
configs.metaServers required * {String} configs.metaServers[i] required * 
{Number} configs.operationTimeout(ms) optional * {Object} configs.log optional 
* @return {Client} client instance * @throws { [...]
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/clients/node-client","@type":"BlogPosting","headline":"NodeJs客户端文档","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"安装NodeJs客户端
 项目地址:Pegasus NodeJS Client 下载并将客户端依赖添加到package.json中: npm install 
pegasus-nodejs-client --save 创建/关闭客户端 create let pegasusClient = 
require(&#39;pegasus-nodejs-client&#39;); /** * Create a client instance * 
@param {Object} configs * {Array} configs.metaServers required * {String} 
configs.metaServers[i [...]
+{"url":"/clients/node-client","@type":"BlogPosting","headline":"NodeJs客户端文档","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"安装NodeJs客户端
 项目地址:Pegasus NodeJS Client 下载并将客户端依赖添加到package.json中: npm install 
pegasus-nodejs-client --save 创建/关闭客户端 create let pegasusClient = 
require(&#39;pegasus-nodejs-client&#39;); /** * Create a client instance * 
@param {Object} configs * {Array} configs.metaServers required * {String} 
configs.metaServers[i [...]
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/clients/python-client.html 
b/output/clients/python-client.html
index f163836..654f74b 100644
--- a/output/clients/python-client.html
+++ b/output/clients/python-client.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="pegasus python client" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/clients/python-client","@type":"BlogPosting","headline":"Python客户端文档","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"pegasus
 python 
client","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/python-client"},"@context":"https://schema.org"}</script>
+{"url":"/clients/python-client","@type":"BlogPosting","headline":"Python客户端文档","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"pegasus
 python 
client","mainEntityOfPage":{"@type":"WebPage","@id":"/clients/python-client"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/clients/scala-client.html b/output/clients/scala-client.html
index 5944071..3e5398c 100644
--- a/output/clients/scala-client.html
+++ b/output/clients/scala-client.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="获取客户端 项目地址:Pegasus scala client 下载: 
git clone https://github.com/XiaoMi/pegasus-scala-client.git cd 
pegasus-scala-client 
选择所使用的版本并构建,建议使用master版本。同时注意,scala客户端构建依赖Java客户端,请参考获取Java客户端在项目中添加Java依赖。你可以打包成Jar包进行使用:
 sbt package 或者,安装到本地的sbt repository,方便在sbt项目中使用: sbt publish-local 
或者,安装到本地的maven repository: sbt publish-m2 
项目默认使用scala-2.11进行构建,打包发布时则同时发布2.11版本(pegasus-scala-client_2.11)和2.12版本(pegasus-scala-client_2.12),如果你的项目使用sbt构建,则可配置为:
 //使用sbt仓库, [...]
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/clients/scala-client","@type":"BlogPosting","headline":"Scala客户端文档","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"获取客户端
 项目地址:Pegasus scala client 下载: git clone 
https://github.com/XiaoMi/pegasus-scala-client.git cd pegasus-scala-client 
选择所使用的版本并构建,建议使用master版本。同时注意,scala客户端构建依赖Java客户端,请参考获取Java客户端在项目中添加Java依赖。你可以打包成Jar包进行使用:
 sbt package 或者,安装到本地的sbt repository,方便在sbt项目中使用: sbt publish-local 
或者,安装到本地的maven repository: sbt pub [...]
+{"url":"/clients/scala-client","@type":"BlogPosting","headline":"Scala客户端文档","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"获取客户端
 项目地址:Pegasus scala client 下载: git clone 
https://github.com/XiaoMi/pegasus-scala-client.git cd pegasus-scala-client 
选择所使用的版本并构建,建议使用master版本。同时注意,scala客户端构建依赖Java客户端,请参考获取Java客户端在项目中添加Java依赖。你可以打包成Jar包进行使用:
 sbt package 或者,安装到本地的sbt repository,方便在sbt项目中使用: sbt publish-local 
或者,安装到本地的maven repository: sbt pub [...]
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/community/coding-guides.html 
b/output/community/coding-guides.html
index 0f074a1..076ef72 100644
--- a/output/community/coding-guides.html
+++ b/output/community/coding-guides.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="Clang-Format" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/community/coding-guides","@type":"BlogPosting","headline":"开发工具栈","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Clang-Format","mainEntityOfPage":{"@type":"WebPage","@id":"/community/coding-guides"},"@context":"https://schema.org"}</script>
+{"url":"/community/coding-guides","@type":"BlogPosting","headline":"开发工具栈","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Clang-Format","mainEntityOfPage":{"@type":"WebPage","@id":"/community/coding-guides"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/community/index.html b/output/community/index.html
index f5bc523..b082d5d 100644
--- a/output/community/index.html
+++ b/output/community/index.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="邮件订阅" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/community/index","@type":"BlogPosting","headline":"Pegasus 
社区","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"邮件订阅","mainEntityOfPage":{"@type":"WebPage","@id":"/community/index"},"@context":"https://schema.org"}</script>
+{"url":"/community/index","@type":"BlogPosting","headline":"Pegasus 
社区","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"邮件订阅","mainEntityOfPage":{"@type":"WebPage","@id":"/community/index"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/community/mail-subscribe.html 
b/output/community/mail-subscribe.html
index 43e8728..1ef1f62 100644
--- a/output/community/mail-subscribe.html
+++ b/output/community/mail-subscribe.html
@@ -16,9 +16,9 @@
 <meta property="og:description" 
content="Pegasus已经建立了Apache邮件列表([email protected]),其本意是帮助信息的透明化。Apache项目的运作宗旨为“社区大于代码”(”Community
 Over Code”),一个活跃的社区远要比一份极致的代码更重要。而邮件列表则是实现这一理念的重要组件。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/community/mail-subscribe","@type":"BlogPosting","headline":"Pegasus邮件列表","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Pegasus已经建立了Apache邮件列表([email protected]),其本意是帮助信息的透明化。Apache项目的运作宗旨为“社区大于代码”(”Community
 Over 
Code”),一个活跃的社区远要比一份极致的代码更重要。而邮件列表则是实现这一理念的重要组件。","mainEntityOfPage":{"@type":"WebPage","@id":"/community/mail-subscribe"},"@context":"https://schema.org"}</script>
+{"url":"/community/mail-subscribe","@type":"BlogPosting","headline":"Pegasus邮件列表","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Pegasus已经建立了Apache邮件列表([email protected]),其本意是帮助信息的透明化。Apache项目的运作宗旨为“社区大于代码”(”Community
 Over 
Code”),一个活跃的社区远要比一份极致的代码更重要。而邮件列表则是实现这一理念的重要组件。","mainEntityOfPage":{"@type":"WebPage","@id":"/community/mail-subscribe"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/community/proposal.html b/output/community/proposal.html
index e54f658..065e065 100644
--- a/output/community/proposal.html
+++ b/output/community/proposal.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="Abstract" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/community/proposal","@type":"BlogPosting","headline":"Pegasus 
Proposal","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Abstract","mainEntityOfPage":{"@type":"WebPage","@id":"/community/proposal"},"@context":"https://schema.org"}</script>
+{"url":"/community/proposal","@type":"BlogPosting","headline":"Pegasus 
Proposal","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Abstract","mainEntityOfPage":{"@type":"WebPage","@id":"/community/proposal"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/community/roadmap.html b/output/community/roadmap.html
index ea241b9..cb8c42a 100644
--- a/output/community/roadmap.html
+++ b/output/community/roadmap.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="Pinned WIP (Work-In-Progress)" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/community/roadmap","@type":"BlogPosting","headline":"Roadmap","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Pinned
 WIP 
(Work-In-Progress)","mainEntityOfPage":{"@type":"WebPage","@id":"/community/roadmap"},"@context":"https://schema.org"}</script>
+{"url":"/community/roadmap","@type":"BlogPosting","headline":"Roadmap","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Pinned
 WIP 
(Work-In-Progress)","mainEntityOfPage":{"@type":"WebPage","@id":"/community/roadmap"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/feed.xml b/output/feed.xml
index 235c8ce..383f0a6 100644
--- a/output/feed.xml
+++ b/output/feed.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?><feed 
xmlns="http://www.w3.org/2005/Atom"; ><generator uri="https://jekyllrb.com/"; 
version="4.1.1">Jekyll</generator><link href="/feed.xml" rel="self" 
type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" 
/><updated>2020-08-18T09:27:35+00:00</updated><id>/feed.xml</id><title 
type="html">Pegasus</title><entry><title type="html">Pegasus Server 2.0.0 
来了</title><link href="/2020/06/19/pegasus-2.0.0-is-out.html" rel="alternate" 
type [...]
+<?xml version="1.0" encoding="utf-8"?><feed 
xmlns="http://www.w3.org/2005/Atom"; ><generator uri="https://jekyllrb.com/"; 
version="4.1.1">Jekyll</generator><link href="/feed.xml" rel="self" 
type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" 
/><updated>2020-08-18T11:42:17+00:00</updated><id>/feed.xml</id><title 
type="html">Pegasus</title><entry><title type="html">Pegasus Server 2.0.0 
来了</title><link href="/2020/06/19/pegasus-2.0.0-is-out.html" rel="alternate" 
type [...]
 
 &lt;blockquote&gt;
   &lt;p&gt;Github Release: &lt;a 
href=&quot;https://github.com/XiaoMi/pegasus/releases/tag/v2.0.0&quot;&gt;https://github.com/XiaoMi/pegasus/releases/tag/v2.0.0&lt;/a&gt;&lt;/p&gt;
@@ -600,10 +600,11 @@ partition split结束后,历史数据会同时存在于parent和child,但实
 | +---+ |    |       |
 +-------+    +-------+
   dead         alive
-
-只用两机房,使用 raft 协议进行进行跨机房同步依然无法避免机房故障时的停服。(5节点同理)
 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 
+&lt;p&gt;如上图可看到,只用两机房,使用 raft 协议进行进行跨机房同步依然
+无法避免机房故障时的停服。(5节点同理)&lt;/p&gt;
+
 &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div 
class=&quot;highlight&quot;&gt;&lt;pre 
class=&quot;highlight&quot;&gt;&lt;code&gt;          +---+                     
+---+
           | A |                     | B |
           +-+-+                     +-+-+
@@ -613,28 +614,28 @@ partition split结束后,历史数据会同时存在于parent和child,但实
 |    |  pegasus A   &amp;lt;----------&amp;gt;  pegasus B   |    |
 |    +--------------+          +--------------+    |
 +--------------------------------------------------+
-
- 虽然是各写一个机房,但理想情况下 A B 都能读到所有的数据。
-
 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 
+&lt;p&gt;如上图可看到,虽然是各写一个机房,但理想情况下 A B 都能读到所有的数据。
+机房故障时,原来访问A集群的客户端可以切换至B集群。&lt;/p&gt;
+
 &lt;h2 id=&quot;架构选择&quot;&gt;架构选择&lt;/h2&gt;
 
 &lt;p&gt;即使同样是做方案 3 的集群间异步同步,业内的做法也有不同:&lt;/p&gt;
 
 &lt;ol&gt;
   &lt;li&gt;
-    
&lt;p&gt;&lt;strong&gt;各集群单副本&lt;/strong&gt;:这种方案考虑到多集群已存在冗余的情况下,可以减少单集群内的副本数,同时既然一致性已没有保证,大可以索性脱离一致性协议,完全依赖于稳定的集群间网络,保证即使单机房宕机,损失的数据量也是仅仅几十毫秒内的请求量级。考虑机房数为
 5 的时候,如果每个机房都是 3 副本,那么全量数据就是 3*5=15 副本,这时候简化为各集群单副本的方案就是几乎最自然的选择。&lt;/p&gt;
+    
&lt;p&gt;&lt;strong&gt;各集群单副本&lt;/strong&gt;:这种方案考虑到多集群已存在冗余的情况下,可以减少单集群内的副本数。同时既然一致性已没有保证,大可以索性脱离一致性协议,完全依赖于稳定的集群间网络,保证即使单机房宕机,损失的数据量也是仅仅几十毫秒内的请求量级。考虑机房数为
 5 的时候,如果每个机房都是 3 副本,那么全量数据就是 3*5=15 副本,这时候简化为各集群单副本的方案就是几乎最自然的选择。&lt;/p&gt;
   &lt;/li&gt;
   &lt;li&gt;
-    
&lt;p&gt;&lt;strong&gt;同步工具作为外部依赖使用&lt;/strong&gt;:跨机房同步自然是尽可能不影响服务是最好,所以同步工具可以作为外部依赖部署,单纯访问节点磁盘的日志(WAL)并转发日志。这个方案对日志
 GC 有前提条件,即&lt;strong&gt;日志不可以在同步完成前被删除&lt;/strong&gt;,否则就丢数据了,但存储服务日志的 GC 
是外部工具难以控制的。所以可以把日志强行保留一周以上,但缺点是磁盘空间的成本较大。同步工具作为外部依赖的优点在于稳定性强,不影响服务,缺点在于对服务的控制能力差,很难处理一些琐碎的一致性问题(后面会讲到),&lt;strong&gt;难以实现最终一致性&lt;/strong&gt;。&lt;/p&gt;
+    
&lt;p&gt;&lt;strong&gt;同步工具作为外部依赖使用&lt;/strong&gt;:跨机房同步自然是尽可能不影响服务是最好,所以同步工具可以作为外部依赖部署,单纯访问节点磁盘的日志(WAL)并转发日志。这个方案对日志
 GC 有前提条件,即&lt;strong&gt;日志不可以在同步完成前被删除&lt;/strong&gt;,否则就丢数据了。但存储服务日志的 GC 
是外部工具难以控制的,所以可以把日志强行保留一周以上,但缺点是磁盘空间的成本较大。同步工具作为外部依赖的优点在于稳定性强,不影响服务,缺点在于对服务的控制能力差,很难处理一些琐碎的一致性问题(后面会讲到),&lt;strong&gt;难以实现最终一致性&lt;/strong&gt;。&lt;/p&gt;
   &lt;/li&gt;
   &lt;li&gt;
-    
&lt;p&gt;&lt;strong&gt;同步工具嵌入到服务内部&lt;/strong&gt;:这种做法在工具稳定前会有一段阵痛期,即工具的稳定性影响服务的稳定性。但实现的灵活性肯定是最强的。&lt;/p&gt;
+    &lt;p&gt;&lt;strong&gt;同步工具嵌入到服务内部&lt;/strong&gt;:对应到 Pegasus 则是将热备份功能集成至 
ReplicaServer 
中。这种做法在工具稳定前会有一段阵痛期,即工具的稳定性会影响服务的稳定性。但实现的灵活性较优,同时易于部署,不需要部署额外的服务。&lt;/p&gt;
   &lt;/li&gt;
 &lt;/ol&gt;
 
-&lt;p&gt;最初 Pegasus 的热备份方案借鉴于 HBase Replication,基本只考虑了第三种方案。而事实证明这种方案更容易保证 
Pegasus 存储数据不丢的属性。&lt;/p&gt;
+&lt;p&gt;最初 Pegasus 的热备份方案借鉴于 HBase Replication,基本只考虑了第三种方案。而确实这种方案更容易保证 
Pegasus 数据的一致性。&lt;/p&gt;
 
 &lt;h2 id=&quot;基本概念&quot;&gt;基本概念&lt;/h2&gt;
 
@@ -679,7 +680,7 @@ partition split结束后,历史数据会同时存在于parent和child,但实
 
 &lt;h3 id=&quot;duplicate_rpc&quot;&gt;duplicate_rpc&lt;/h3&gt;
 
-&lt;p&gt;如上图所示,每个 replica (这里特指每个分片的 primary,注意 secondary 不负责热备份复制)独自复制自己的 
private log 到远端,replica 之间互不影响。复制直接通过 pegasus client 来完成。每一条写入 A 的记录(如 set / 
multiset)都会通过 pegasus client 复制到 B。为了将热备份的写与常规写区别开,我们这里定义 
&lt;strong&gt;&lt;em&gt;duplicate_rpc&lt;/em&gt;&lt;/strong&gt; 表示热备写。&lt;/p&gt;
+&lt;p&gt;如上图所示,每个 replica (这里特指每个分片的 primary,注意 secondary 不负责热备份复制)独自复制自己的 
private log 到目的集群,replica 之间互不影响。数据复制直接通过 pegasus client 来完成。每一条写入 A 的记录(如 set 
/ multiset)都会通过 pegasus client 复制到 B。为了将热备份的写与常规写区别开,我们这里定义 
&lt;strong&gt;&lt;em&gt;duplicate_rpc&lt;/em&gt;&lt;/strong&gt; 表示热备写。&lt;/p&gt;
 
 &lt;p&gt;A-&amp;gt;B 的热备写,B 也同样会经由三副本的 PacificA 协议提交,并且写入 private log 
中。&lt;/p&gt;
 
@@ -712,11 +713,15 @@ hashkey sortkey 20190912 =&amp;gt; value
 
 &lt;h3 id=&quot;confirmed_decree&quot;&gt;confirmed_decree&lt;/h3&gt;
 
-&lt;p&gt;热备份同时也需要容忍在 replica 主备切换下复制的进度不会丢失,例如当前 replica1 复制到日志 
decree=5001,此时发生主备切换,我们不想看到 replica1 从 0 开始,所以为了能够支持 
&lt;strong&gt;&lt;em&gt;断点续传&lt;/em&gt;&lt;/strong&gt;,我们引入 
&lt;strong&gt;&lt;em&gt;confirmed_decree&lt;/em&gt;&lt;/strong&gt;。replica 定期向 
meta 汇报当前进度(如 confirmed_decree=5001),一旦 meta 将该进度持久化至 zookeeper,当 replica 
故障恢复时即可安全地从 confirmed_decree=5001 重新开始热备份。&lt;/p&gt;
+&lt;p&gt;热备份同时也需要容忍在 ReplicaServer 主备切换下复制的进度不会丢失,例如当前 replica1 复制到日志 
decree=5001,此时发生主备切换,我们不想看到 replica1 从 0 开始,所以为了能够支持 
&lt;strong&gt;&lt;em&gt;断点续传&lt;/em&gt;&lt;/strong&gt;,我们引入 
&lt;strong&gt;&lt;em&gt;confirmed_decree&lt;/em&gt;&lt;/strong&gt;。&lt;/p&gt;
+
+&lt;p&gt;ReplicaServer 定期向 MetaServer 汇报当前热备份的进度(如 confirmed_decree=5001),一旦 
MetaServer 将该进度持久化至 Zookeeper,当 。ReplicaServer 故障恢复时即可安全地从 
confirmed_decree=5001 重新开始热备份。&lt;/p&gt;
 
 &lt;h2 id=&quot;流程&quot;&gt;流程&lt;/h2&gt;
 
-&lt;p&gt;热备份相关的元信息首先会记录至 meta server 上,replica server 通过 
&lt;strong&gt;&lt;em&gt;duplication sync&lt;/em&gt;&lt;/strong&gt; 
定期同步元信息,包括各个分片的 confirmed_decree。&lt;/p&gt;
+&lt;h3 id=&quot;1-热备份元信息同步&quot;&gt;1. 热备份元信息同步&lt;/h3&gt;
+
+&lt;p&gt;热备份相关的元信息首先会记录至 MetaServer 上,ReplicaServer 通过 
&lt;strong&gt;&lt;em&gt;duplication sync&lt;/em&gt;&lt;/strong&gt; 
定期同步元信息,包括各个分片的 confirmed_decree。&lt;/p&gt;
 
 &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div 
class=&quot;highlight&quot;&gt;&lt;pre 
class=&quot;highlight&quot;&gt;&lt;code&gt;+----------+  add dup  +----------+
 |  client  +-----------&amp;gt;   meta   |
@@ -729,7 +734,11 @@ hashkey sortkey 20190912 =&amp;gt; value
                       +-----------+
 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 
-&lt;p&gt;每个 replica 首先读取 private log,为了限制流量,每次只会读入一个日志块而非一整个日志文件。每一批日志统一传递给 
&lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;mutation_duplicator&lt;/code&gt; 
进行发送。mutation_duplicator 是一个接口类,目前只实现用 pegasus client 将日志分发至目标集群,未来如有需求也可接入 
HBase 等系统。&lt;/p&gt;
+&lt;h3 id=&quot;2-热备份日志复制&quot;&gt;2. 热备份日志复制&lt;/h3&gt;
+
+&lt;p&gt;每个 replica 首先读取 private log,为了限制流量,每次只会读入一个日志块而非一整个日志文件。每一批日志统一传递给 
&lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;mutation_duplicator&lt;/code&gt; 进行发送。&lt;/p&gt;
+
+&lt;p&gt;&lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;mutation_duplicator&lt;/code&gt; 是一个可插拔的接口类。我们目前只实现用 
pegasus client 将日志分发至目标集群,未来如有需求也可接入 HBase 等系统,例如将 Pegasus 的数据通过热备份实时同步到 HBase 
中。&lt;/p&gt;
 
 &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div 
class=&quot;highlight&quot;&gt;&lt;pre 
class=&quot;highlight&quot;&gt;&lt;code&gt;+----------------------+      2
 |  private_log_loader  +--------------+
@@ -744,21 +753,33 @@ hashkey sortkey 20190912 =&amp;gt; value
  +-----------------+     +-----------------------------+        3
 &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 
-&lt;p&gt;每个日志块的一批写中可能有多组 hashkey,不同的 hashkey 可以并行分发而不会影响正确性,从而可以提高热备份效率。而如果 
hashkey 相同,例如 set&amp;lt;hashkey=”h”, sortkey=”s1”, value=”v1”&amp;gt; 与 
set&amp;lt;hashkey=”h”, sortkey=”s2”, value=”v2”&amp;gt; 
有先后关系,则它们必须串行依次发送。&lt;/p&gt;
+&lt;p&gt;每个日志块的一批写中可能有多组 hashkey,不同的 hashkey 可以并行分发而不会影响正确性,从而可以提高热备份效率。而如果 
hashkey 相同,例如:&lt;/p&gt;
 
-&lt;p&gt;当前我们的策略是每一个日志块的所有写发完毕后,再重复读日志块,发日志的过程。往后可能再做优化。&lt;/p&gt;
+&lt;ol&gt;
+  &lt;li&gt;&lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;Set: hashkey=&quot;h&quot;, sortkey=&quot;s1&quot;, 
value=&quot;v1&quot;&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;Set: hashkey=&quot;h&quot;, sortkey=&quot;s2&quot;, 
value=&quot;v2&quot;&lt;/code&gt;&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;这两条写有先后关系,则它们必须串行依次发送。&lt;/p&gt;
+
+&lt;ol&gt;
+  &lt;li&gt;&lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;Set: hashkey=&quot;h1&quot;, sortkey=&quot;s1&quot;, 
value=&quot;v1&quot;&lt;/code&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;Set: hashkey=&quot;h2&quot;, sortkey=&quot;s2&quot;, 
value=&quot;v2&quot;&lt;/code&gt;&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;这两条写是不相干的,它们无需串行发送。&lt;/p&gt;
 
 &lt;h2 id=&quot;日志完整性&quot;&gt;日志完整性&lt;/h2&gt;
 
 &lt;p&gt;在引入热备份之前,Pegasus 
的日志会定期被清理,无用的日志文件会被删除(通常日志的保留时间为5分钟)。但在引入热备份之后,如果有被删除的日志还没有被复制到远端集群,两集群就会数据不一致。我们引入了几个机制来保证日志的完整性,从而实现两集群的最终一致性:&lt;/p&gt;
 
-&lt;h3 id=&quot;gc-delay&quot;&gt;GC Delay&lt;/h3&gt;
+&lt;h3 id=&quot;1-gc-delay&quot;&gt;1. GC Delay&lt;/h3&gt;
 
-&lt;p&gt;Pegasus 认为 &lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;last_durable_decree&lt;/code&gt; 
之后的日志即可被删除回收(Garbage Collected),因为它们已经被持久化至 rocksdb 的 sst files 
中,即使宕机重启数据也不会丢失。但考虑如果热备份的进度较慢,我们则需要延后 GC,保证数据只有在 &lt;code 
class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;confirmed_decree&lt;/code&gt; 之后的日志才可被 GC。&lt;/p&gt;
+&lt;p&gt;Pegasus 先前认为 &lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;last_durable_decree&lt;/code&gt; 
之后的日志即可被删除回收(Garbage Collected),因为它们已经被持久化至 rocksdb 的 sst files 
中,即使宕机重启数据也不会丢失。但考虑如果热备份的进度较慢,我们则需要延后 GC,保证数据只有在 &lt;code 
class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;confirmed_decree&lt;/code&gt; 之后的日志才可被 GC。&lt;/p&gt;
 
 &lt;p&gt;当然我们也可以将日志 GC 的时间设置的相当长,例如一周,因为此时数据必然已复制到远端集群(什么环境下复制一条日志需要超过 1 
周时间?)。最终我们没有选择这种方法。&lt;/p&gt;
 
-&lt;h3 id=&quot;broadcast-confirmed_decree&quot;&gt;Broadcast 
confirmed_decree&lt;/h3&gt;
+&lt;h3 id=&quot;2-broadcast-confirmed_decree&quot;&gt;2. Broadcast 
confirmed_decree&lt;/h3&gt;
 
 &lt;p&gt;虽然 primary 不会 GC 那些未被热备的日志,但 secondary 并未遵守这一约定,这些丢失日志的 secondary 
有朝一日也会被提拔为 primary,从而影响日志完整性。所以 primary 需要将 confirmed_decree 通过组间心跳(group 
check)的方式通知 secondary,保证它们不会误删日志。&lt;/p&gt;
 
@@ -777,7 +798,7 @@ hashkey sortkey 20190912 =&amp;gt; value
 
 &lt;p&gt;这里有一个问题:由于 secondary 滞后于 primary 了解到热备份正在进行,所以在创建热备份后,secondary 
有一定概率误删日志。这是一个已知的设计bug。我们会在后续引入新机制来修复该问题。&lt;/p&gt;
 
-&lt;h3 id=&quot;replica-learn-step-back&quot;&gt;Replica Learn Step 
Back&lt;/h3&gt;
+&lt;h3 id=&quot;3-replica-learn-step-back&quot;&gt;3. Replica Learn Step 
Back&lt;/h3&gt;
 
 &lt;p&gt;当一个 replica 新加入3副本组中,由于它的数据滞后于 primary,它会通过 
&lt;strong&gt;&lt;em&gt;replica learn&lt;/em&gt;&lt;/strong&gt; 
来拷贝新日志以跟上组员的进度。此时从何处开始拷贝日志(称为 &lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;learn_start_decree&lt;/code&gt;)就是一个问题。&lt;/p&gt;
 
@@ -825,15 +846,18 @@ hashkey sortkey 20190912 =&amp;gt; value
 
 &lt;p&gt;我们假设 learner 已经持有 [251, 400] 的日志,下一步 learnee 将会复制 [301, 800] 的日志,与 
learner 数据为空的情况相同。新的日志集将会把旧的日志集覆盖。&lt;/p&gt;
 
-&lt;h3 id=&quot;sync-is_duplicating-to-every-replica&quot;&gt;Sync 
is_duplicating to every replica&lt;/h3&gt;
+&lt;h3 id=&quot;4-sync-is_duplicating-to-every-replica&quot;&gt;4. Sync 
is_duplicating to every replica&lt;/h3&gt;
 
 &lt;p&gt;不管是考虑 GC,还是考虑 learn,我们都需要让每一个 replica 知道“自己正在进行热备份”,因为普通的表不应该考虑 GC 
Delay,也不应该考虑在 learn 的过程中补齐未热备份的日志,只有热备份的表需要额外考虑这些事情。所以我们需要向所有 replica 
同步一个标识(&lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;is_duplicating&lt;/code&gt;)。&lt;/p&gt;
 
 &lt;p&gt;这个同步不需要考虑强一致性:不需要在 &lt;code class=&quot;language-plaintext 
highlighter-rouge&quot;&gt;is_duplicating&lt;/code&gt; 的值改变时强一致地通知所有 
replica。但我们需要保证在 replica learn 的过程中,该标识能够立刻同步给 learner。因此,我们让这个标识通过 config sync 
同步。&lt;/p&gt;
 
-&lt;h3 id=&quot;apply-learned-state&quot;&gt;Apply Learned State&lt;/h3&gt;
+&lt;h3 id=&quot;5-apply-learned-state&quot;&gt;5. Apply Learned 
State&lt;/h3&gt;
+
+&lt;p&gt;原先流程中,learner 收到 [21-60] 之间的日志后首先会放入 learn/ 目录下,然后简单地重放每一条日志并写入 
rocksdb。Learn 流程完成后这些日志即丢弃。
+如果没有热备份,该流程并没有问题。但考虑到热备份,如果 learner 丢弃 [21-60] 的日志,那么热备份的日志完整性就有问题。&lt;/p&gt;
 
-&lt;p&gt;原先 learner 收到 [21-60] 之间的日志后首先会放入 learn/ 目录下,然后简单地重放每一条日志并写入 
rocksdb,并不会写入日志中。为了保证日志完整性,我们会将 learn/ 目录 rename 至 plog 目录,替代之前所有的日志。&lt;/p&gt;
+&lt;p&gt;为了解决这一问题,我们会将 learn/ 目录 rename 至 plog 目录,替代之前所有的日志。&lt;/p&gt;
 
 &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div 
class=&quot;highlight&quot;&gt;&lt;pre 
class=&quot;highlight&quot;&gt;&lt;code&gt;                     +----+
                      | 60 |
@@ -871,7 +895,9 @@ hashkey sortkey 20190912 =&amp;gt; value
                   +----+
                   | 21 |
                   +----+
-&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><author><name>吴涛</name></author><summary
 type="html">关于热备份的基本概念和使用可以参照 
administration/duplication,这里将主要描述跨机房同步的设计方案和执行细节。</summary></entry><entry><title
 type="html">我如何为 Pegasus 编写网站?</title><link 
href="/2019/06/09/how-i-build-pegasus-website.html" rel="alternate" 
type="text/html" title="我如何为 Pegasus 编写网站?" 
/><published>2019-06-09T00:00:00+00:00</published><updated>2019-06-09T00:00:00+00:00</updated><id>/2019/06/09/how-i-build-pe
 [...]
+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
+
+&lt;p&gt;通过整合上述的几个机制,Pegasus实现了在热备份过程中,数据不会丢失。&lt;/p&gt;</content><author><name>吴涛</name></author><summary
 type="html">关于热备份的基本概念和使用可以参照 
administration/duplication,这里将主要描述跨机房同步的设计方案和执行细节。</summary></entry><entry><title
 type="html">我如何为 Pegasus 编写网站?</title><link 
href="/2019/06/09/how-i-build-pegasus-website.html" rel="alternate" 
type="text/html" title="我如何为 Pegasus 编写网站?" 
/><published>2019-06-09T00:00:00+00:00</published><updated>2019-06-09T00:00:00+00:00</updated><id>/2019/06/09/how-i-b
 [...]
 
 &lt;hr /&gt;
 
diff --git a/output/overview/architecture.html 
b/output/overview/architecture.html
index 70f56d5..c36a75d 100644
--- a/output/overview/architecture.html
+++ b/output/overview/architecture.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="整体架构" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/overview/architecture","@type":"BlogPosting","headline":"系统架构","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"整体架构","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/architecture"},"@context":"https://schema.org"}</script>
+{"url":"/overview/architecture","@type":"BlogPosting","headline":"系统架构","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"整体架构","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/architecture"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/overview/background.html b/output/overview/background.html
index e7b1c37..ace9719 100644
--- a/output/overview/background.html
+++ b/output/overview/background.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="小米云平台长期以来一直使用开源的Apache 
HBase来存储结构化/半结构化数据,并逐渐成为国内使用HBase最多的公司之一,同时也培养了一个比较有实力的HBase开发团队,前后共产生了6位HBase 
Committer,包括一位PMC成员。可以说,HBase在小米云存储中起到了举足轻重的作用,而小米也为HBase社区贡献出一份重要的力量。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/overview/background","@type":"BlogPosting","headline":"项目背景","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"小米云平台长期以来一直使用开源的Apache
 HBase来存储结构化/半结构化数据,并逐渐成为国内使用HBase最多的公司之一,同时也培养了一个比较有实力的HBase开发团队,前后共产生了6位HBase 
Committer,包括一位PMC成员。可以说,HBase在小米云存储中起到了举足轻重的作用,而小米也为HBase社区贡献出一份重要的力量。","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/background"},"@context":"https://schema.org"}</script>
+{"url":"/overview/background","@type":"BlogPosting","headline":"项目背景","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"小米云平台长期以来一直使用开源的Apache
 HBase来存储结构化/半结构化数据,并逐渐成为国内使用HBase最多的公司之一,同时也培养了一个比较有实力的HBase开发团队,前后共产生了6位HBase 
Committer,包括一位PMC成员。可以说,HBase在小米云存储中起到了举足轻重的作用,而小米也为HBase社区贡献出一份重要的力量。","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/background"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/overview/benchmark.html b/output/overview/benchmark.html
index 216c0e2..344f207 100644
--- a/output/overview/benchmark.html
+++ b/output/overview/benchmark.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="测试环境" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/overview/benchmark","@type":"BlogPosting","headline":"Benchmark","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"测试环境","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/benchmark"},"@context":"https://schema.org"}</script>
+{"url":"/overview/benchmark","@type":"BlogPosting","headline":"Benchmark","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"测试环境","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/benchmark"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/overview/compilation.html b/output/overview/compilation.html
index 0324da6..f06bf65 100644
--- a/output/overview/compilation.html
+++ b/output/overview/compilation.html
@@ -16,9 +16,9 @@
 <meta property="og:description" 
content="Pegasus目前只支持Linux平台。目前在CentOS、Ubuntu上都测试运行过。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/overview/compilation","@type":"BlogPosting","headline":"编译构建","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Pegasus目前只支持Linux平台。目前在CentOS、Ubuntu上都测试运行过。","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/compilation"},"@context":"https://schema.org"}</script>
+{"url":"/overview/compilation","@type":"BlogPosting","headline":"编译构建","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Pegasus目前只支持Linux平台。目前在CentOS、Ubuntu上都测试运行过。","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/compilation"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/overview/data-model.html b/output/overview/data-model.html
index 164d2f0..2e3682f 100644
--- a/output/overview/data-model.html
+++ b/output/overview/data-model.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="模型介绍" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/overview/data-model","@type":"BlogPosting","headline":"数据模型","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"模型介绍","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/data-model"},"@context":"https://schema.org"}</script>
+{"url":"/overview/data-model","@type":"BlogPosting","headline":"数据模型","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"模型介绍","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/data-model"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/overview/index.html b/output/overview/index.html
index 7253d2d..ce4afde 100644
--- a/output/overview/index.html
+++ b/output/overview/index.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="项目概览" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/overview/index","@type":"BlogPosting","headline":"概览","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"项目概览","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/index"},"@context":"https://schema.org"}</script>
+{"url":"/overview/index","@type":"BlogPosting","headline":"概览","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"项目概览","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/index"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/overview/onebox.html b/output/overview/onebox.html
index b9fe0dd..5b70e7c 100644
--- a/output/overview/onebox.html
+++ b/output/overview/onebox.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="什么是onebox集群" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/overview/onebox","@type":"BlogPosting","headline":"体验onebox集群","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"什么是onebox集群","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/onebox"},"@context":"https://schema.org"}</script>
+{"url":"/overview/onebox","@type":"BlogPosting","headline":"体验onebox集群","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"什么是onebox集群","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/onebox"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/overview/shell.html b/output/overview/shell.html
index 18d5cf2..1142d73 100644
--- a/output/overview/shell.html
+++ b/output/overview/shell.html
@@ -16,9 +16,9 @@
 <meta property="og:description" 
content="Pegasus提供了Shell工具,用于查看集群相关信息,创建/删除表,操作数据等。" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/overview/shell","@type":"BlogPosting","headline":"Shell工具","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Pegasus提供了Shell工具,用于查看集群相关信息,创建/删除表,操作数据等。","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/shell"},"@context":"https://schema.org"}</script>
+{"url":"/overview/shell","@type":"BlogPosting","headline":"Shell工具","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Pegasus提供了Shell工具,用于查看集群相关信息,创建/删除表,操作数据等。","mainEntityOfPage":{"@type":"WebPage","@id":"/overview/shell"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/releases/index.html b/output/releases/index.html
index 8399fdf..b261d46 100644
--- a/output/releases/index.html
+++ b/output/releases/index.html
@@ -16,9 +16,9 @@
 <meta property="og:description" content="Release Notes of v2.0.0 (Latest)" />
 <meta property="og:site_name" content="Pegasus" />
 <meta property="og:type" content="article" />
-<meta property="article:published_time" content="2020-08-18T09:27:35+00:00" />
+<meta property="article:published_time" content="2020-08-18T11:42:17+00:00" />
 <script type="application/ld+json">
-{"url":"/releases/index","@type":"BlogPosting","headline":"Release History of 
Pegasus","datePublished":"2020-08-18T09:27:35+00:00","dateModified":"2020-08-18T09:27:35+00:00","description":"Release
 Notes of v2.0.0 
(Latest)","mainEntityOfPage":{"@type":"WebPage","@id":"/releases/index"},"@context":"https://schema.org"}</script>
+{"url":"/releases/index","@type":"BlogPosting","headline":"Release History of 
Pegasus","datePublished":"2020-08-18T11:42:17+00:00","dateModified":"2020-08-18T11:42:17+00:00","description":"Release
 Notes of v2.0.0 
(Latest)","mainEntityOfPage":{"@type":"WebPage","@id":"/releases/index"},"@context":"https://schema.org"}</script>
 <!-- End Jekyll SEO tag -->
 </head>
 
diff --git a/output/sitemap.xml b/output/sitemap.xml
index e3429cb..d55873a 100644
--- a/output/sitemap.xml
+++ b/output/sitemap.xml
@@ -2,211 +2,211 @@
 <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"; 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
 <url>
 <loc>/administration/backup-request</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/bad-disk</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/cold-backup</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/compression</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/config</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/deployment</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/duplication</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/experiences</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/index</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/manual-compact</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/membership-change</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/meta-recovery</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/monitoring</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/partition-split</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/rebalance</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/remote-commands</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/replica-recovery</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/resource-management</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/rolling-update</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/table-env</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/table-migration</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/table-soft-delete</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/throttling</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/usage-scenario</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/whitelist</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/administration/zk-migration</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/api/geo</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/api/http</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/api/index</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/api/redis</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/api/single-atomic</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/api/ttl</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/clients/cpp-client</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/clients/go-client</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/clients/index</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/clients/java-client</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/clients/node-client</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/clients/python-client</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/clients/scala-client</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/community/coding-guides</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/community/index</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/community/mail-subscribe</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/community/proposal</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/community/roadmap</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/overview/architecture</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/overview/background</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/overview/benchmark</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/overview/compilation</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/overview/data-model</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/overview/index</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/overview/onebox</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/overview/shell</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/2017/11/21/meta-server-design.html</loc>
@@ -246,7 +246,7 @@
 </url>
 <url>
 <loc>/releases/index</loc>
-<lastmod>2020-08-18T09:27:35+00:00</lastmod>
+<lastmod>2020-08-18T11:42:17+00:00</lastmod>
 </url>
 <url>
 <loc>/blogs.html</loc>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to