You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/12/11 11:31:44 UTC

[pulsar] branch asf-site updated: Updated site at revision 1260bf3

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

mmerli pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 8b148d3  Updated site at revision 1260bf3
8b148d3 is described below

commit 8b148d312628f4111e2bd0e36966d3f78bbf77d5
Author: jenkins <bu...@apache.org>
AuthorDate: Tue Dec 11 11:31:35 2018 +0000

    Updated site at revision 1260bf3
---
 content/api/admin/index-all.html                   |  8 +++
 ....SinkInstanceStatus.SinkInstanceStatusData.html | 30 ++++++++-
 ...rceInstanceStatus.SourceInstanceStatusData.html | 30 ++++++++-
 content/docs/en/next/deploy-bare-metal.html        | 21 ++++++-
 content/docs/en/next/deploy-bare-metal/index.html  | 21 ++++++-
 content/docs/fr/next/deploy-bare-metal.html        | 73 +++++++++++++++-------
 content/docs/fr/next/deploy-bare-metal/index.html  | 73 +++++++++++++++-------
 content/docs/ja/next/deploy-bare-metal.html        | 73 +++++++++++++++-------
 content/docs/ja/next/deploy-bare-metal/index.html  | 73 +++++++++++++++-------
 .../docs/latest/adaptors/PulsarSpark/index.html    | 10 +--
 .../docs/latest/adaptors/PulsarStorm/index.html    |  8 +--
 content/docs/latest/admin-api/overview/index.html  | 18 +++---
 content/docs/latest/clients/Cpp/index.html         |  8 +--
 content/docs/latest/clients/Java/index.html        | 16 ++---
 content/docs/latest/clients/Python/index.html      | 10 +--
 content/docs/latest/clients/WebSocket/index.html   |  8 +--
 content/docs/latest/clients/go/index.html          |  6 +-
 .../docs/latest/cookbooks/Encryption/index.html    |  6 +-
 .../latest/cookbooks/PartitionedTopics/index.html  | 16 ++---
 .../latest/cookbooks/RetentionExpiry/index.html    | 16 ++---
 .../docs/latest/cookbooks/compaction/index.html    |  8 +--
 .../cookbooks/message-deduplication/index.html     | 12 ++--
 .../docs/latest/cookbooks/message-queue/index.html | 16 ++---
 .../latest/cookbooks/tiered-storage/index.html     |  6 +-
 .../docs/latest/deployment/Kubernetes/index.html   |  4 +-
 .../docs/latest/deployment/aws-cluster/index.html  |  6 +-
 content/docs/latest/deployment/cluster/index.html  |  6 +-
 content/docs/latest/deployment/instance/index.html |  6 +-
 .../ConceptsAndArchitecture/index.html             |  4 +-
 .../latest/getting-started/LocalCluster/index.html |  4 +-
 .../latest/getting-started/Pulsar-2.0/index.html   |  2 +-
 .../docs/latest/getting-started/docker/index.html  |  4 +-
 .../docs/latest/project/BinaryProtocol/index.html  |  4 +-
 content/docs/latest/project/CompileCpp/index.html  |  8 +--
 .../docs/latest/project/SimulationTools/index.html |  2 +-
 .../docs/latest/project/schema-storage/index.html  |  4 +-
 content/docs/latest/reference/CliTools/index.html  | 22 +++----
 .../docs/latest/security/authorization/index.html  | 14 ++---
 content/docs/latest/security/encryption/index.html |  6 +-
 .../admin-api-persistent-topics.html               |  6 +-
 .../admin-api-persistent-topics/index.html         |  6 +-
 .../concepts-architecture-overview.html            | 24 +++----
 .../concepts-architecture-overview/index.html      | 24 +++----
 .../2.1.0-incubating/concepts-architecture.html    | 12 ++--
 .../concepts-architecture/index.html               | 12 ++--
 .../docs/zh-CN/2.1.0-incubating/functions-api.html | 32 +++++-----
 .../2.1.0-incubating/functions-api/index.html      | 32 +++++-----
 .../admin-api-persistent-topics.html               |  6 +-
 .../admin-api-persistent-topics/index.html         |  6 +-
 .../concepts-architecture-overview.html            | 24 +++----
 .../concepts-architecture-overview/index.html      | 24 +++----
 .../2.1.1-incubating/concepts-architecture.html    |  6 +-
 .../concepts-architecture/index.html               |  6 +-
 .../docs/zh-CN/2.1.1-incubating/functions-api.html | 32 +++++-----
 .../2.1.1-incubating/functions-api/index.html      | 32 +++++-----
 .../docs/zh-CN/admin-api-persistent-topics.html    |  6 +-
 .../zh-CN/admin-api-persistent-topics/index.html   |  6 +-
 .../docs/zh-CN/concepts-architecture-overview.html | 24 +++----
 .../concepts-architecture-overview/index.html      | 24 +++----
 content/docs/zh-CN/concepts-architecture.html      |  6 +-
 .../docs/zh-CN/concepts-architecture/index.html    |  6 +-
 content/docs/zh-CN/functions-api.html              | 42 ++++++-------
 content/docs/zh-CN/functions-api/index.html        | 42 ++++++-------
 .../zh-CN/next/admin-api-persistent-topics.html    |  6 +-
 .../next/admin-api-persistent-topics/index.html    |  6 +-
 .../zh-CN/next/concepts-architecture-overview.html | 24 +++----
 .../next/concepts-architecture-overview/index.html | 24 +++----
 content/docs/zh-CN/next/concepts-architecture.html | 10 +--
 .../zh-CN/next/concepts-architecture/index.html    | 10 +--
 content/docs/zh-CN/next/deploy-bare-metal.html     | 73 +++++++++++++++-------
 .../docs/zh-CN/next/deploy-bare-metal/index.html   | 73 +++++++++++++++-------
 content/docs/zh-CN/next/functions-api.html         | 42 ++++++-------
 content/docs/zh-CN/next/functions-api/index.html   | 42 ++++++-------
 content/ja/adaptors/PulsarSpark/index.html         |  8 +--
 content/ja/adaptors/PulsarStorm/index.html         |  6 +-
 content/ja/admin/AdminInterface/index.html         | 12 ++--
 content/ja/admin/Authz/index.html                  | 12 ++--
 content/ja/admin/ClustersBrokers/index.html        |  6 +-
 content/ja/admin/PropertiesNamespaces/index.html   |  6 +-
 content/ja/advanced/PartitionedTopics/index.html   | 12 ++--
 content/ja/advanced/RetentionExpiry/index.html     | 12 ++--
 content/ja/clients/Cpp/index.html                  |  6 +-
 content/ja/clients/Java/index.html                 |  8 +--
 content/ja/clients/Python/index.html               |  8 +--
 content/ja/clients/WebSocket/index.html            |  8 +--
 content/ja/deployment/InstanceSetup/index.html     |  6 +-
 content/ja/deployment/Kubernetes/index.html        |  4 +-
 .../ConceptsAndArchitecture/index.html             |  2 +-
 content/ja/getting-started/LocalCluster/index.html |  4 +-
 content/ja/project/BinaryProtocol/index.html       |  4 +-
 content/ja/project/SimulationTools/index.html      |  2 +-
 content/ja/reference/CliTools/index.html           | 18 +++---
 content/swagger/swagger.json                       | 32 +++++-----
 93 files changed, 924 insertions(+), 664 deletions(-)

diff --git a/content/api/admin/index-all.html b/content/api/admin/index-all.html
index eab8a90..a74b2ba 100644
--- a/content/api/admin/index-all.html
+++ b/content/api/admin/index-all.html
@@ -1482,6 +1482,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/Policies.html#latency_stats_sample_rate">latency_stats_sample_rate</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/Policies.html" title="class in org.apache.pulsar.common.policies.data">Policies</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#latestSinkExceptions">latestSinkExceptions</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html" title="class in org.apache.pulsar.common.policies.data">SinkStatus.SinkInstanceStatus.SinkInstanceStatusData</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html#latestSourceExceptions">latestSourceExceptions</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html" title="class in org.apache.pulsar.common.policies.data">SourceStatus.SourceInstanceStatus.SourceInstanceStatusData</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/FunctionStatus.FunctionInstanceStatus.FunctionInstanceStatusData.html#latestSystemExceptions">latestSystemExceptions</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/FunctionStatus.FunctionInstanceStatus.FunctionInstanceStatusData.html" title="class in org.apache.pulsar.common.policies.data">FunctionStatus.FunctionInstanceStatus.FunctionIns [...]
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#latestSystemExceptions">latestSystemExceptions</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html" title="class in org.apache.pulsar.common.policies.data">SinkStatus.SinkInstanceStatus.SinkInstanceStatusData</a></dt>
@@ -1771,6 +1775,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/SourceStatus.html#numRunning">numRunning</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/SourceStatus.html" title="class in org.apache.pulsar.common.policies.data">SourceStatus</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#numSinkExceptions">numSinkExceptions</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html" title="class in org.apache.pulsar.common.policies.data">SinkStatus.SinkInstanceStatus.SinkInstanceStatusData</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html#numSourceExceptions">numSourceExceptions</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html" title="class in org.apache.pulsar.common.policies.data">SourceStatus.SourceInstanceStatus.SourceInstanceStatusData</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/FunctionStatus.FunctionInstanceStatus.FunctionInstanceStatusData.html#numSuccessfullyProcessed">numSuccessfullyProcessed</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/FunctionStatus.FunctionInstanceStatus.FunctionInstanceStatusData.html" title="class in org.apache.pulsar.common.policies.data">FunctionStatus.FunctionInstanceStatus.Functio [...]
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/FunctionStatus.FunctionInstanceStatus.FunctionInstanceStatusData.html#numSystemExceptions">numSystemExceptions</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/FunctionStatus.FunctionInstanceStatus.FunctionInstanceStatusData.html" title="class in org.apache.pulsar.common.policies.data">FunctionStatus.FunctionInstanceStatus.FunctionInstanceS [...]
diff --git a/content/api/admin/org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html b/content/api/admin/org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html
index 1e2d3a5..a6cd38d 100644
--- a/content/api/admin/org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html
+++ b/content/api/admin/org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html
@@ -135,16 +135,24 @@ extends Object</pre>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>List&lt;<a href="../../../../../../org/apache/pulsar/common/policies/data/ExceptionInformation.html" title="class in org.apache.pulsar.common.policies.data">ExceptionInformation</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#latestSystemExceptions">latestSystemExceptions</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#latestSinkExceptions">latestSinkExceptions</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>List&lt;<a href="../../../../../../org/apache/pulsar/common/policies/data/ExceptionInformation.html" title="class in org.apache.pulsar.common.policies.data">ExceptionInformation</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#latestSystemExceptions">latestSystemExceptions</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#numReadFromPulsar">numReadFromPulsar</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#numRestarts">numRestarts</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#numSinkExceptions">numSinkExceptions</a></span></code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SinkStatus.SinkInstanceStatus.SinkInstanceStatusData.html#numSystemExceptions">numSystemExceptions</a></span></code>&nbsp;</td>
@@ -262,6 +270,24 @@ extends Object</pre>
 <pre>public&nbsp;List&lt;<a href="../../../../../../org/apache/pulsar/common/policies/data/ExceptionInformation.html" title="class in org.apache.pulsar.common.policies.data">ExceptionInformation</a>&gt; latestSystemExceptions</pre>
 </li>
 </ul>
+<a name="numSinkExceptions">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>numSinkExceptions</h4>
+<pre>public&nbsp;long numSinkExceptions</pre>
+</li>
+</ul>
+<a name="latestSinkExceptions">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>latestSinkExceptions</h4>
+<pre>public&nbsp;List&lt;<a href="../../../../../../org/apache/pulsar/common/policies/data/ExceptionInformation.html" title="class in org.apache.pulsar.common.policies.data">ExceptionInformation</a>&gt; latestSinkExceptions</pre>
+</li>
+</ul>
 <a name="numWrittenToSink">
 <!--   -->
 </a>
diff --git a/content/api/admin/org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html b/content/api/admin/org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html
index 9edc6bc..caa9105 100644
--- a/content/api/admin/org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html
+++ b/content/api/admin/org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html
@@ -135,16 +135,24 @@ extends Object</pre>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>List&lt;<a href="../../../../../../org/apache/pulsar/common/policies/data/ExceptionInformation.html" title="class in org.apache.pulsar.common.policies.data">ExceptionInformation</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html#latestSystemExceptions">latestSystemExceptions</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html#latestSourceExceptions">latestSourceExceptions</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>List&lt;<a href="../../../../../../org/apache/pulsar/common/policies/data/ExceptionInformation.html" title="class in org.apache.pulsar.common.policies.data">ExceptionInformation</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html#latestSystemExceptions">latestSystemExceptions</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html#numReceivedFromSource">numReceivedFromSource</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html#numRestarts">numRestarts</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html#numSourceExceptions">numSourceExceptions</a></span></code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/SourceStatus.SourceInstanceStatus.SourceInstanceStatusData.html#numSystemExceptions">numSystemExceptions</a></span></code>&nbsp;</td>
@@ -262,6 +270,24 @@ extends Object</pre>
 <pre>public&nbsp;List&lt;<a href="../../../../../../org/apache/pulsar/common/policies/data/ExceptionInformation.html" title="class in org.apache.pulsar.common.policies.data">ExceptionInformation</a>&gt; latestSystemExceptions</pre>
 </li>
 </ul>
+<a name="numSourceExceptions">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>numSourceExceptions</h4>
+<pre>public&nbsp;long numSourceExceptions</pre>
+</li>
+</ul>
+<a name="latestSourceExceptions">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>latestSourceExceptions</h4>
+<pre>public&nbsp;List&lt;<a href="../../../../../../org/apache/pulsar/common/policies/data/ExceptionInformation.html" title="class in org.apache.pulsar.common.policies.data">ExceptionInformation</a>&gt; latestSourceExceptions</pre>
+</li>
+</ul>
 <a name="numWritten">
 <!--   -->
 </a>
diff --git a/content/docs/en/next/deploy-bare-metal.html b/content/docs/en/next/deploy-bare-metal.html
index 73f39a4..afa9768 100644
--- a/content/docs/en/next/deploy-bare-metal.html
+++ b/content/docs/en/next/deploy-bare-metal.html
@@ -75,7 +75,7 @@ have run a separate cluster of function workers for <a href="/docs/en/next/funct
 <p>If you already have an existing zookeeper cluster and would like to reuse it, you don't need to prepare the machines
 for running ZooKeeper.</p>
 </blockquote>
-<p>To run Pulsar on bare metal, you will need:</p>
+<p>To run Pulsar on bare metal, you are recommended to have:</p>
 <ul>
 <li>At least 6 Linux machines or VMs
 <ul>
@@ -84,6 +84,10 @@ for running ZooKeeper.</p>
 </ul></li>
 <li>A single <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> name covering all of the Pulsar broker hosts</li>
 </ul>
+<blockquote>
+<p>However if you don't have enough machines, or are trying out Pulsar in cluster mode (and expand the cluster later),
+you can even deploy Pulsar in one node, where it will run zookeeper, bookie and broker in same machine.</p>
+</blockquote>
 <p>Each machine in your cluster will need to have <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a> or higher installed.</p>
 <p>Here's a diagram showing the basic setup:</p>
 <p><img src="/docs/assets/pulsar-basic-setup.png" alt="alt-text"></p>
@@ -178,6 +182,9 @@ pulsar-io-twitter-2.2.0.nar
 <span class="hljs-meta">server.2</span>=<span class="hljs-string">zk2.us-west.example.com:2888:3888</span>
 <span class="hljs-meta">server.3</span>=<span class="hljs-string">zk3.us-west.example.com:2888:3888</span>
 </code></pre>
+<blockquote>
+<p>If you have only one machine to deploy Pulsar, you just need to add one server entry in the configuration file.</p>
+</blockquote>
 <p>On each host, you need to specify the ID of the node in each node's <code>myid</code> file, which is in each server's <code>data/zookeeper</code> folder by default (this can be changed via the <a href="/docs/en/next/reference-configuration#zookeeper-dataDir"><code>dataDir</code></a> parameter).</p>
 <blockquote>
 <p>See the <a href="https://zookeeper.apache.org/doc/r3.4.10/zookeeperAdmin.html#sc_zkMulitServerSetup">Multi-server setup guide</a> in the ZooKeeper documentation for detailed info on <code>myid</code> and more.</p>
@@ -256,6 +263,18 @@ verify all the bookies in the cluster are up running.</p>
 <p>You also need to specify the cluster name (matching the name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
 </code></pre>
+<blockquote>
+<p>If you deploy Pulsar in a one-node cluster, you should update the replication settings in <code>conf/broker.conf</code> to <code>1</code></p>
+<pre><code class="hljs css language-properties"><span class="hljs-comment"># Number of bookies to use when creating a ledger</span>
+<span class="hljs-attr">managedLedgerDefaultEnsembleSize</span>=<span class="hljs-string">1</span>
+<span class="hljs-comment">
+# Number of copies to store for each message</span>
+<span class="hljs-attr">managedLedgerDefaultWriteQuorum</span>=<span class="hljs-string">1</span>
+<span class="hljs-comment">
+# Number of guaranteed copies (acks to wait before write is complete)</span>
+<span class="hljs-attr">managedLedgerDefaultAckQuorum</span>=<span class="hljs-string">1</span>
+</code></pre>
+</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="enabling-pulsar-functions-optional"></a><a href="#enabling-pulsar-functions-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
 <p>If you want to enable <a href="/docs/en/next/functions-overview">Pulsar Functions</a>, you can follow the instructions as below:</p>
 <ol>
diff --git a/content/docs/en/next/deploy-bare-metal/index.html b/content/docs/en/next/deploy-bare-metal/index.html
index 73f39a4..afa9768 100644
--- a/content/docs/en/next/deploy-bare-metal/index.html
+++ b/content/docs/en/next/deploy-bare-metal/index.html
@@ -75,7 +75,7 @@ have run a separate cluster of function workers for <a href="/docs/en/next/funct
 <p>If you already have an existing zookeeper cluster and would like to reuse it, you don't need to prepare the machines
 for running ZooKeeper.</p>
 </blockquote>
-<p>To run Pulsar on bare metal, you will need:</p>
+<p>To run Pulsar on bare metal, you are recommended to have:</p>
 <ul>
 <li>At least 6 Linux machines or VMs
 <ul>
@@ -84,6 +84,10 @@ for running ZooKeeper.</p>
 </ul></li>
 <li>A single <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> name covering all of the Pulsar broker hosts</li>
 </ul>
+<blockquote>
+<p>However if you don't have enough machines, or are trying out Pulsar in cluster mode (and expand the cluster later),
+you can even deploy Pulsar in one node, where it will run zookeeper, bookie and broker in same machine.</p>
+</blockquote>
 <p>Each machine in your cluster will need to have <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a> or higher installed.</p>
 <p>Here's a diagram showing the basic setup:</p>
 <p><img src="/docs/assets/pulsar-basic-setup.png" alt="alt-text"></p>
@@ -178,6 +182,9 @@ pulsar-io-twitter-2.2.0.nar
 <span class="hljs-meta">server.2</span>=<span class="hljs-string">zk2.us-west.example.com:2888:3888</span>
 <span class="hljs-meta">server.3</span>=<span class="hljs-string">zk3.us-west.example.com:2888:3888</span>
 </code></pre>
+<blockquote>
+<p>If you have only one machine to deploy Pulsar, you just need to add one server entry in the configuration file.</p>
+</blockquote>
 <p>On each host, you need to specify the ID of the node in each node's <code>myid</code> file, which is in each server's <code>data/zookeeper</code> folder by default (this can be changed via the <a href="/docs/en/next/reference-configuration#zookeeper-dataDir"><code>dataDir</code></a> parameter).</p>
 <blockquote>
 <p>See the <a href="https://zookeeper.apache.org/doc/r3.4.10/zookeeperAdmin.html#sc_zkMulitServerSetup">Multi-server setup guide</a> in the ZooKeeper documentation for detailed info on <code>myid</code> and more.</p>
@@ -256,6 +263,18 @@ verify all the bookies in the cluster are up running.</p>
 <p>You also need to specify the cluster name (matching the name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
 </code></pre>
+<blockquote>
+<p>If you deploy Pulsar in a one-node cluster, you should update the replication settings in <code>conf/broker.conf</code> to <code>1</code></p>
+<pre><code class="hljs css language-properties"><span class="hljs-comment"># Number of bookies to use when creating a ledger</span>
+<span class="hljs-attr">managedLedgerDefaultEnsembleSize</span>=<span class="hljs-string">1</span>
+<span class="hljs-comment">
+# Number of copies to store for each message</span>
+<span class="hljs-attr">managedLedgerDefaultWriteQuorum</span>=<span class="hljs-string">1</span>
+<span class="hljs-comment">
+# Number of guaranteed copies (acks to wait before write is complete)</span>
+<span class="hljs-attr">managedLedgerDefaultAckQuorum</span>=<span class="hljs-string">1</span>
+</code></pre>
+</blockquote>
 <h3><a class="anchor" aria-hidden="true" id="enabling-pulsar-functions-optional"></a><a href="#enabling-pulsar-functions-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
 <p>If you want to enable <a href="/docs/en/next/functions-overview">Pulsar Functions</a>, you can follow the instructions as below:</p>
 <ol>
diff --git a/content/docs/fr/next/deploy-bare-metal.html b/content/docs/fr/next/deploy-bare-metal.html
index 6569618..3fd8d69 100644
--- a/content/docs/fr/next/deploy-bare-metal.html
+++ b/content/docs/fr/next/deploy-bare-metal.html
@@ -70,7 +70,7 @@
 <blockquote>
 <p>If you already have an existing zookeeper cluster and would like to reuse it, you don't need to prepare the machines for running ZooKeeper.</p>
 </blockquote>
-<p>To run Pulsar on bare metal, you will need:</p>
+<p>To run Pulsar on bare metal, you are recommended to have:</p>
 <ul>
 <li>At least 6 Linux machines or VMs
 <ul>
@@ -79,6 +79,9 @@
 </ul></li>
 <li>A single <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> name covering all of the Pulsar broker hosts</li>
 </ul>
+<blockquote>
+<p>However if you don't have enough machines, or are trying out Pulsar in cluster mode (and expand the cluster later), you can even deploy Pulsar in one node, where it will run zookeeper, bookie and broker in same machine.</p>
+</blockquote>
 <p>Each machine in your cluster will need to have <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a> or higher installed.</p>
 <p>Here's a diagram showing the basic setup:</p>
 <p><img src="/docs/assets/pulsar-basic-setup.png" alt="alt-text"></p>
@@ -169,6 +172,9 @@ pulsar-io-twitter-2.2.0.nar
 <span class="hljs-meta">server.2</span>=<span class="hljs-string">zk2.us-west.example.com:2888:3888</span>
 <span class="hljs-meta">server.3</span>=<span class="hljs-string">zk3.us-west.example.com:2888:3888</span>
 </code></pre>
+<blockquote>
+<p>If you have only one machine to deploy Pulsar, you just need to add one server entry in the configuration file.</p>
+</blockquote>
 <p>On each host, you need to specify the ID of the node in each node's <code>myid</code> file, which is in each server's <code>data/zookeeper</code> folder by default (this can be changed via the <a href="/docs/fr/next/reference-configuration#zookeeper-dataDir"><code>dataDir</code></a> parameter).</p>
 <blockquote>
 <p>See the <a href="https://zookeeper.apache.org/doc/r3.4.10/zookeeperAdmin.html#sc_zkMulitServerSetup">Multi-server setup guide</a> in the ZooKeeper documentation for detailed info on <code>myid</code> and more.</p>
@@ -249,30 +255,51 @@ $ bin/pulsar-daemon start bookie
 <p>You also need to specify the cluster name (matching the name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="enabling-pulsar-functions-optional"></a><a href="#enabling-pulsar-functions-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>If you want to enable <a href="functions-overview.md">Pulsar Functions</a>, you can follow the instructions as below:</p>
-<ol>
-<li><p>Edit <code>conf/broker.conf</code> to enable function worker, by setting <code>functionsWorkerEnabled</code> to <code>true</code>.</p>
-<pre><code class="hljs css language-conf"><span class="hljs-attr">functionsWorkerEnabled</span>=<span class="hljs-literal">true</span>
-</code></pre></li>
-</ol>
-<ol start="2">
-<li><p>Edit <code>conf/functions_worker.yml</code> and set <code>pulsarFunctionsCluster</code> to the cluster name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>.</p>
-<pre><code class="hljs css language-conf">pulsarFunctionsCluster: pulsar-cluster<span class="hljs-number">-1</span>
-</code></pre></li>
-</ol>
-<h3><a class="anchor" aria-hidden="true" id="starting-brokers"></a><a href="#starting-brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>You can then provide any other configuration changes that you'd like in the <a href="reference-configuration.md#broker"><code>conf/broker.conf</code></a> file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.</p>
-<p>You can start a broker in the foreground using the <a href="reference-cli-tools.md#pulsar-broker"><code>pulsar broker</code></a> command:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar broker
-</code></pre>
-<p>You can start a broker in the background using the <a href="reference-cli-tools.md#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<blockquote>
+<p>If you deploy Pulsar in a one-node cluster, you should update the replication settings in <code>conf/broker.conf</code> to <code>1</code></p>
+<pre><code class="hljs css language-properties"></code></pre>
+</blockquote>
+<h1><a class="anchor" aria-hidden="true" id="number-of-bookies-to-use-when-creating-a-ledger"></a><a href="#number-of-bookies-to-use-when-creating-a-ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9 [...]
+<p>managedLedgerDefaultEnsembleSize=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-copies-to-store-for-each-message"></a><a href="#number-of-copies-to-store-for-each-message" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>managedLedgerDefaultWriteQuorum=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-guaranteed-copies-acks-to-wait-before-write-is-complete"></a><a href="#number-of-guaranteed-copies-acks-to-wait-before-write-is-complete" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4  [...]
+<p>managedLedgerDefaultAckQuorum=1</p>
+<pre><code class="hljs">
+<span class="hljs-section">### Enabling Pulsar Functions (optional)</span>
+
+If you want to enable [<span class="hljs-string">Pulsar Functions</span>](<span class="hljs-link">/docs/fr/next/functions-overview</span>), you can follow the instructions as below:
+
+<span class="hljs-bullet">1. </span>Edit <span class="hljs-code">`conf/broker.conf`</span> to enable function worker, by setting <span class="hljs-code">`functionsWorkerEnabled`</span> to <span class="hljs-code">`true`</span>.
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      functionsWorkerEnabled=true</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-bullet">2. </span>Edit <span class="hljs-code">`conf/functions_worker.yml`</span> and set <span class="hljs-code">`pulsarFunctionsCluster`</span> to the cluster name that you provided when [<span class="hljs-string">initializing the cluster's metadata</span>](<span class="hljs-link">#initializing-cluster-metadata</span>).
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      pulsarFunctionsCluster: pulsar-cluster-1</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-section">### Starting Brokers</span>
+
+You can then provide any other configuration changes that you'd like in the [<span class="hljs-string">`conf/broker.conf`</span>](<span class="hljs-link">/docs/fr/next/reference-configuration#broker</span>) file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.
+
+You can start a broker in the foreground using the [<span class="hljs-string">`pulsar broker`</span>](<span class="hljs-link">/docs/fr/next/reference-cli-tools#pulsar-broker</span>) command:
+
+<span class="hljs-code">```bash
+$ bin/pulsar broker
+</span></code></pre>
+<p>You can start a broker in the background using the <a href="/docs/fr/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-daemon start broker
 </code></pre>
 <p>Once you've succesfully started up all the brokers you intend to use, your Pulsar cluster should be ready to go!</p>
 <h2><a class="anchor" aria-hidden="true" id="connecting-to-the-running-cluster"></a><a href="#connecting-to-the-running-cluster" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="reference-cli-tools.md#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
-<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="reference-configuration.md#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
+<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="/docs/fr/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
+<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="/docs/fr/next/reference-configuration#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">http://us-west.example.com:8080/</span>
 <span class="hljs-attr">brokerServiceurl</span>=<span class="hljs-string">pulsar://us-west.example.com:6650/</span>
 </code></pre>
@@ -300,13 +327,13 @@ $ bin/pulsar-daemon start bookie
   --namespace default \
   --name exclamation
 </code></pre>
-<p>Check if the function is running as expected by <a href="functions-deploying.md#triggering-pulsar-functions">triggering</a> the function.</p>
+<p>Check if the function is running as expected by <a href="/docs/fr/next/functions-deploying#triggering-pulsar-functions">triggering</a> the function.</p>
 <pre><code class="hljs css language-bash">bin/pulsar-admin <span class="hljs-built_in">functions</span> trigger --name exclamation --trigger-value <span class="hljs-string">"hello world"</span>
 </code></pre>
 <p>You will see output as below:</p>
 <pre><code class="hljs css language-shell">hello world!
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/fr/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href="#requi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/fr/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href="#requi [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/deploy-bare-metal/index.html b/content/docs/fr/next/deploy-bare-metal/index.html
index 6569618..3fd8d69 100644
--- a/content/docs/fr/next/deploy-bare-metal/index.html
+++ b/content/docs/fr/next/deploy-bare-metal/index.html
@@ -70,7 +70,7 @@
 <blockquote>
 <p>If you already have an existing zookeeper cluster and would like to reuse it, you don't need to prepare the machines for running ZooKeeper.</p>
 </blockquote>
-<p>To run Pulsar on bare metal, you will need:</p>
+<p>To run Pulsar on bare metal, you are recommended to have:</p>
 <ul>
 <li>At least 6 Linux machines or VMs
 <ul>
@@ -79,6 +79,9 @@
 </ul></li>
 <li>A single <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> name covering all of the Pulsar broker hosts</li>
 </ul>
+<blockquote>
+<p>However if you don't have enough machines, or are trying out Pulsar in cluster mode (and expand the cluster later), you can even deploy Pulsar in one node, where it will run zookeeper, bookie and broker in same machine.</p>
+</blockquote>
 <p>Each machine in your cluster will need to have <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a> or higher installed.</p>
 <p>Here's a diagram showing the basic setup:</p>
 <p><img src="/docs/assets/pulsar-basic-setup.png" alt="alt-text"></p>
@@ -169,6 +172,9 @@ pulsar-io-twitter-2.2.0.nar
 <span class="hljs-meta">server.2</span>=<span class="hljs-string">zk2.us-west.example.com:2888:3888</span>
 <span class="hljs-meta">server.3</span>=<span class="hljs-string">zk3.us-west.example.com:2888:3888</span>
 </code></pre>
+<blockquote>
+<p>If you have only one machine to deploy Pulsar, you just need to add one server entry in the configuration file.</p>
+</blockquote>
 <p>On each host, you need to specify the ID of the node in each node's <code>myid</code> file, which is in each server's <code>data/zookeeper</code> folder by default (this can be changed via the <a href="/docs/fr/next/reference-configuration#zookeeper-dataDir"><code>dataDir</code></a> parameter).</p>
 <blockquote>
 <p>See the <a href="https://zookeeper.apache.org/doc/r3.4.10/zookeeperAdmin.html#sc_zkMulitServerSetup">Multi-server setup guide</a> in the ZooKeeper documentation for detailed info on <code>myid</code> and more.</p>
@@ -249,30 +255,51 @@ $ bin/pulsar-daemon start bookie
 <p>You also need to specify the cluster name (matching the name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="enabling-pulsar-functions-optional"></a><a href="#enabling-pulsar-functions-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>If you want to enable <a href="functions-overview.md">Pulsar Functions</a>, you can follow the instructions as below:</p>
-<ol>
-<li><p>Edit <code>conf/broker.conf</code> to enable function worker, by setting <code>functionsWorkerEnabled</code> to <code>true</code>.</p>
-<pre><code class="hljs css language-conf"><span class="hljs-attr">functionsWorkerEnabled</span>=<span class="hljs-literal">true</span>
-</code></pre></li>
-</ol>
-<ol start="2">
-<li><p>Edit <code>conf/functions_worker.yml</code> and set <code>pulsarFunctionsCluster</code> to the cluster name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>.</p>
-<pre><code class="hljs css language-conf">pulsarFunctionsCluster: pulsar-cluster<span class="hljs-number">-1</span>
-</code></pre></li>
-</ol>
-<h3><a class="anchor" aria-hidden="true" id="starting-brokers"></a><a href="#starting-brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>You can then provide any other configuration changes that you'd like in the <a href="reference-configuration.md#broker"><code>conf/broker.conf</code></a> file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.</p>
-<p>You can start a broker in the foreground using the <a href="reference-cli-tools.md#pulsar-broker"><code>pulsar broker</code></a> command:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar broker
-</code></pre>
-<p>You can start a broker in the background using the <a href="reference-cli-tools.md#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<blockquote>
+<p>If you deploy Pulsar in a one-node cluster, you should update the replication settings in <code>conf/broker.conf</code> to <code>1</code></p>
+<pre><code class="hljs css language-properties"></code></pre>
+</blockquote>
+<h1><a class="anchor" aria-hidden="true" id="number-of-bookies-to-use-when-creating-a-ledger"></a><a href="#number-of-bookies-to-use-when-creating-a-ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9 [...]
+<p>managedLedgerDefaultEnsembleSize=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-copies-to-store-for-each-message"></a><a href="#number-of-copies-to-store-for-each-message" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>managedLedgerDefaultWriteQuorum=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-guaranteed-copies-acks-to-wait-before-write-is-complete"></a><a href="#number-of-guaranteed-copies-acks-to-wait-before-write-is-complete" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4  [...]
+<p>managedLedgerDefaultAckQuorum=1</p>
+<pre><code class="hljs">
+<span class="hljs-section">### Enabling Pulsar Functions (optional)</span>
+
+If you want to enable [<span class="hljs-string">Pulsar Functions</span>](<span class="hljs-link">/docs/fr/next/functions-overview</span>), you can follow the instructions as below:
+
+<span class="hljs-bullet">1. </span>Edit <span class="hljs-code">`conf/broker.conf`</span> to enable function worker, by setting <span class="hljs-code">`functionsWorkerEnabled`</span> to <span class="hljs-code">`true`</span>.
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      functionsWorkerEnabled=true</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-bullet">2. </span>Edit <span class="hljs-code">`conf/functions_worker.yml`</span> and set <span class="hljs-code">`pulsarFunctionsCluster`</span> to the cluster name that you provided when [<span class="hljs-string">initializing the cluster's metadata</span>](<span class="hljs-link">#initializing-cluster-metadata</span>).
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      pulsarFunctionsCluster: pulsar-cluster-1</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-section">### Starting Brokers</span>
+
+You can then provide any other configuration changes that you'd like in the [<span class="hljs-string">`conf/broker.conf`</span>](<span class="hljs-link">/docs/fr/next/reference-configuration#broker</span>) file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.
+
+You can start a broker in the foreground using the [<span class="hljs-string">`pulsar broker`</span>](<span class="hljs-link">/docs/fr/next/reference-cli-tools#pulsar-broker</span>) command:
+
+<span class="hljs-code">```bash
+$ bin/pulsar broker
+</span></code></pre>
+<p>You can start a broker in the background using the <a href="/docs/fr/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-daemon start broker
 </code></pre>
 <p>Once you've succesfully started up all the brokers you intend to use, your Pulsar cluster should be ready to go!</p>
 <h2><a class="anchor" aria-hidden="true" id="connecting-to-the-running-cluster"></a><a href="#connecting-to-the-running-cluster" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="reference-cli-tools.md#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
-<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="reference-configuration.md#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
+<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="/docs/fr/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
+<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="/docs/fr/next/reference-configuration#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">http://us-west.example.com:8080/</span>
 <span class="hljs-attr">brokerServiceurl</span>=<span class="hljs-string">pulsar://us-west.example.com:6650/</span>
 </code></pre>
@@ -300,13 +327,13 @@ $ bin/pulsar-daemon start bookie
   --namespace default \
   --name exclamation
 </code></pre>
-<p>Check if the function is running as expected by <a href="functions-deploying.md#triggering-pulsar-functions">triggering</a> the function.</p>
+<p>Check if the function is running as expected by <a href="/docs/fr/next/functions-deploying#triggering-pulsar-functions">triggering</a> the function.</p>
 <pre><code class="hljs css language-bash">bin/pulsar-admin <span class="hljs-built_in">functions</span> trigger --name exclamation --trigger-value <span class="hljs-string">"hello world"</span>
 </code></pre>
 <p>You will see output as below:</p>
 <pre><code class="hljs css language-shell">hello world!
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/fr/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href="#requi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/fr/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href="#requi [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/deploy-bare-metal.html b/content/docs/ja/next/deploy-bare-metal.html
index 9822ee4..d4a7c63 100644
--- a/content/docs/ja/next/deploy-bare-metal.html
+++ b/content/docs/ja/next/deploy-bare-metal.html
@@ -70,7 +70,7 @@
 <blockquote>
 <p>If you already have an existing zookeeper cluster and would like to reuse it, you don't need to prepare the machines for running ZooKeeper.</p>
 </blockquote>
-<p>To run Pulsar on bare metal, you will need:</p>
+<p>To run Pulsar on bare metal, you are recommended to have:</p>
 <ul>
 <li>At least 6 Linux machines or VMs
 <ul>
@@ -79,6 +79,9 @@
 </ul></li>
 <li>A single <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> name covering all of the Pulsar broker hosts</li>
 </ul>
+<blockquote>
+<p>However if you don't have enough machines, or are trying out Pulsar in cluster mode (and expand the cluster later), you can even deploy Pulsar in one node, where it will run zookeeper, bookie and broker in same machine.</p>
+</blockquote>
 <p>Each machine in your cluster will need to have <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a> or higher installed.</p>
 <p>Here's a diagram showing the basic setup:</p>
 <p><img src="/docs/assets/pulsar-basic-setup.png" alt="alt-text"></p>
@@ -169,6 +172,9 @@ pulsar-io-twitter-2.2.0.nar
 <span class="hljs-meta">server.2</span>=<span class="hljs-string">zk2.us-west.example.com:2888:3888</span>
 <span class="hljs-meta">server.3</span>=<span class="hljs-string">zk3.us-west.example.com:2888:3888</span>
 </code></pre>
+<blockquote>
+<p>If you have only one machine to deploy Pulsar, you just need to add one server entry in the configuration file.</p>
+</blockquote>
 <p>On each host, you need to specify the ID of the node in each node's <code>myid</code> file, which is in each server's <code>data/zookeeper</code> folder by default (this can be changed via the <a href="/docs/ja/next/reference-configuration#zookeeper-dataDir"><code>dataDir</code></a> parameter).</p>
 <blockquote>
 <p>See the <a href="https://zookeeper.apache.org/doc/r3.4.10/zookeeperAdmin.html#sc_zkMulitServerSetup">Multi-server setup guide</a> in the ZooKeeper documentation for detailed info on <code>myid</code> and more.</p>
@@ -249,30 +255,51 @@ $ bin/pulsar-daemon start bookie
 <p>You also need to specify the cluster name (matching the name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="enabling-pulsar-functions-optional"></a><a href="#enabling-pulsar-functions-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>If you want to enable <a href="functions-overview.md">Pulsar Functions</a>, you can follow the instructions as below:</p>
-<ol>
-<li><p>Edit <code>conf/broker.conf</code> to enable function worker, by setting <code>functionsWorkerEnabled</code> to <code>true</code>.</p>
-<pre><code class="hljs css language-conf"><span class="hljs-attr">functionsWorkerEnabled</span>=<span class="hljs-literal">true</span>
-</code></pre></li>
-</ol>
-<ol start="2">
-<li><p>Edit <code>conf/functions_worker.yml</code> and set <code>pulsarFunctionsCluster</code> to the cluster name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>.</p>
-<pre><code class="hljs css language-conf">pulsarFunctionsCluster: pulsar-cluster<span class="hljs-number">-1</span>
-</code></pre></li>
-</ol>
-<h3><a class="anchor" aria-hidden="true" id="starting-brokers"></a><a href="#starting-brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>You can then provide any other configuration changes that you'd like in the <a href="reference-configuration.md#broker"><code>conf/broker.conf</code></a> file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.</p>
-<p>You can start a broker in the foreground using the <a href="reference-cli-tools.md#pulsar-broker"><code>pulsar broker</code></a> command:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar broker
-</code></pre>
-<p>You can start a broker in the background using the <a href="reference-cli-tools.md#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<blockquote>
+<p>If you deploy Pulsar in a one-node cluster, you should update the replication settings in <code>conf/broker.conf</code> to <code>1</code></p>
+<pre><code class="hljs css language-properties"></code></pre>
+</blockquote>
+<h1><a class="anchor" aria-hidden="true" id="number-of-bookies-to-use-when-creating-a-ledger"></a><a href="#number-of-bookies-to-use-when-creating-a-ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9 [...]
+<p>managedLedgerDefaultEnsembleSize=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-copies-to-store-for-each-message"></a><a href="#number-of-copies-to-store-for-each-message" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>managedLedgerDefaultWriteQuorum=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-guaranteed-copies-acks-to-wait-before-write-is-complete"></a><a href="#number-of-guaranteed-copies-acks-to-wait-before-write-is-complete" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4  [...]
+<p>managedLedgerDefaultAckQuorum=1</p>
+<pre><code class="hljs">
+<span class="hljs-section">### Enabling Pulsar Functions (optional)</span>
+
+If you want to enable [<span class="hljs-string">Pulsar Functions</span>](<span class="hljs-link">/docs/ja/next/functions-overview</span>), you can follow the instructions as below:
+
+<span class="hljs-bullet">1. </span>Edit <span class="hljs-code">`conf/broker.conf`</span> to enable function worker, by setting <span class="hljs-code">`functionsWorkerEnabled`</span> to <span class="hljs-code">`true`</span>.
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      functionsWorkerEnabled=true</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-bullet">2. </span>Edit <span class="hljs-code">`conf/functions_worker.yml`</span> and set <span class="hljs-code">`pulsarFunctionsCluster`</span> to the cluster name that you provided when [<span class="hljs-string">initializing the cluster's metadata</span>](<span class="hljs-link">#initializing-cluster-metadata</span>).
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      pulsarFunctionsCluster: pulsar-cluster-1</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-section">### Starting Brokers</span>
+
+You can then provide any other configuration changes that you'd like in the [<span class="hljs-string">`conf/broker.conf`</span>](<span class="hljs-link">/docs/ja/next/reference-configuration#broker</span>) file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.
+
+You can start a broker in the foreground using the [<span class="hljs-string">`pulsar broker`</span>](<span class="hljs-link">/docs/ja/next/reference-cli-tools#pulsar-broker</span>) command:
+
+<span class="hljs-code">```bash
+$ bin/pulsar broker
+</span></code></pre>
+<p>You can start a broker in the background using the <a href="/docs/ja/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-daemon start broker
 </code></pre>
 <p>Once you've succesfully started up all the brokers you intend to use, your Pulsar cluster should be ready to go!</p>
 <h2><a class="anchor" aria-hidden="true" id="connecting-to-the-running-cluster"></a><a href="#connecting-to-the-running-cluster" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="reference-cli-tools.md#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
-<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="reference-configuration.md#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
+<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="/docs/ja/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
+<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="/docs/ja/next/reference-configuration#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">http://us-west.example.com:8080/</span>
 <span class="hljs-attr">brokerServiceurl</span>=<span class="hljs-string">pulsar://us-west.example.com:6650/</span>
 </code></pre>
@@ -300,13 +327,13 @@ $ bin/pulsar-daemon start bookie
   --namespace default \
   --name exclamation
 </code></pre>
-<p>Check if the function is running as expected by <a href="functions-deploying.md#triggering-pulsar-functions">triggering</a> the function.</p>
+<p>Check if the function is running as expected by <a href="/docs/ja/next/functions-deploying#triggering-pulsar-functions">triggering</a> the function.</p>
 <pre><code class="hljs css language-bash">bin/pulsar-admin <span class="hljs-built_in">functions</span> trigger --name exclamation --trigger-value <span class="hljs-string">"hello world"</span>
 </code></pre>
 <p>You will see output as below:</p>
 <pre><code class="hljs css language-shell">hello world!
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/ja/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href="#requi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/ja/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href="#requi [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/deploy-bare-metal/index.html b/content/docs/ja/next/deploy-bare-metal/index.html
index 9822ee4..d4a7c63 100644
--- a/content/docs/ja/next/deploy-bare-metal/index.html
+++ b/content/docs/ja/next/deploy-bare-metal/index.html
@@ -70,7 +70,7 @@
 <blockquote>
 <p>If you already have an existing zookeeper cluster and would like to reuse it, you don't need to prepare the machines for running ZooKeeper.</p>
 </blockquote>
-<p>To run Pulsar on bare metal, you will need:</p>
+<p>To run Pulsar on bare metal, you are recommended to have:</p>
 <ul>
 <li>At least 6 Linux machines or VMs
 <ul>
@@ -79,6 +79,9 @@
 </ul></li>
 <li>A single <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> name covering all of the Pulsar broker hosts</li>
 </ul>
+<blockquote>
+<p>However if you don't have enough machines, or are trying out Pulsar in cluster mode (and expand the cluster later), you can even deploy Pulsar in one node, where it will run zookeeper, bookie and broker in same machine.</p>
+</blockquote>
 <p>Each machine in your cluster will need to have <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a> or higher installed.</p>
 <p>Here's a diagram showing the basic setup:</p>
 <p><img src="/docs/assets/pulsar-basic-setup.png" alt="alt-text"></p>
@@ -169,6 +172,9 @@ pulsar-io-twitter-2.2.0.nar
 <span class="hljs-meta">server.2</span>=<span class="hljs-string">zk2.us-west.example.com:2888:3888</span>
 <span class="hljs-meta">server.3</span>=<span class="hljs-string">zk3.us-west.example.com:2888:3888</span>
 </code></pre>
+<blockquote>
+<p>If you have only one machine to deploy Pulsar, you just need to add one server entry in the configuration file.</p>
+</blockquote>
 <p>On each host, you need to specify the ID of the node in each node's <code>myid</code> file, which is in each server's <code>data/zookeeper</code> folder by default (this can be changed via the <a href="/docs/ja/next/reference-configuration#zookeeper-dataDir"><code>dataDir</code></a> parameter).</p>
 <blockquote>
 <p>See the <a href="https://zookeeper.apache.org/doc/r3.4.10/zookeeperAdmin.html#sc_zkMulitServerSetup">Multi-server setup guide</a> in the ZooKeeper documentation for detailed info on <code>myid</code> and more.</p>
@@ -249,30 +255,51 @@ $ bin/pulsar-daemon start bookie
 <p>You also need to specify the cluster name (matching the name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="enabling-pulsar-functions-optional"></a><a href="#enabling-pulsar-functions-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>If you want to enable <a href="functions-overview.md">Pulsar Functions</a>, you can follow the instructions as below:</p>
-<ol>
-<li><p>Edit <code>conf/broker.conf</code> to enable function worker, by setting <code>functionsWorkerEnabled</code> to <code>true</code>.</p>
-<pre><code class="hljs css language-conf"><span class="hljs-attr">functionsWorkerEnabled</span>=<span class="hljs-literal">true</span>
-</code></pre></li>
-</ol>
-<ol start="2">
-<li><p>Edit <code>conf/functions_worker.yml</code> and set <code>pulsarFunctionsCluster</code> to the cluster name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>.</p>
-<pre><code class="hljs css language-conf">pulsarFunctionsCluster: pulsar-cluster<span class="hljs-number">-1</span>
-</code></pre></li>
-</ol>
-<h3><a class="anchor" aria-hidden="true" id="starting-brokers"></a><a href="#starting-brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>You can then provide any other configuration changes that you'd like in the <a href="reference-configuration.md#broker"><code>conf/broker.conf</code></a> file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.</p>
-<p>You can start a broker in the foreground using the <a href="reference-cli-tools.md#pulsar-broker"><code>pulsar broker</code></a> command:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar broker
-</code></pre>
-<p>You can start a broker in the background using the <a href="reference-cli-tools.md#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<blockquote>
+<p>If you deploy Pulsar in a one-node cluster, you should update the replication settings in <code>conf/broker.conf</code> to <code>1</code></p>
+<pre><code class="hljs css language-properties"></code></pre>
+</blockquote>
+<h1><a class="anchor" aria-hidden="true" id="number-of-bookies-to-use-when-creating-a-ledger"></a><a href="#number-of-bookies-to-use-when-creating-a-ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9 [...]
+<p>managedLedgerDefaultEnsembleSize=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-copies-to-store-for-each-message"></a><a href="#number-of-copies-to-store-for-each-message" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>managedLedgerDefaultWriteQuorum=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-guaranteed-copies-acks-to-wait-before-write-is-complete"></a><a href="#number-of-guaranteed-copies-acks-to-wait-before-write-is-complete" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4  [...]
+<p>managedLedgerDefaultAckQuorum=1</p>
+<pre><code class="hljs">
+<span class="hljs-section">### Enabling Pulsar Functions (optional)</span>
+
+If you want to enable [<span class="hljs-string">Pulsar Functions</span>](<span class="hljs-link">/docs/ja/next/functions-overview</span>), you can follow the instructions as below:
+
+<span class="hljs-bullet">1. </span>Edit <span class="hljs-code">`conf/broker.conf`</span> to enable function worker, by setting <span class="hljs-code">`functionsWorkerEnabled`</span> to <span class="hljs-code">`true`</span>.
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      functionsWorkerEnabled=true</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-bullet">2. </span>Edit <span class="hljs-code">`conf/functions_worker.yml`</span> and set <span class="hljs-code">`pulsarFunctionsCluster`</span> to the cluster name that you provided when [<span class="hljs-string">initializing the cluster's metadata</span>](<span class="hljs-link">#initializing-cluster-metadata</span>).
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      pulsarFunctionsCluster: pulsar-cluster-1</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-section">### Starting Brokers</span>
+
+You can then provide any other configuration changes that you'd like in the [<span class="hljs-string">`conf/broker.conf`</span>](<span class="hljs-link">/docs/ja/next/reference-configuration#broker</span>) file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.
+
+You can start a broker in the foreground using the [<span class="hljs-string">`pulsar broker`</span>](<span class="hljs-link">/docs/ja/next/reference-cli-tools#pulsar-broker</span>) command:
+
+<span class="hljs-code">```bash
+$ bin/pulsar broker
+</span></code></pre>
+<p>You can start a broker in the background using the <a href="/docs/ja/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-daemon start broker
 </code></pre>
 <p>Once you've succesfully started up all the brokers you intend to use, your Pulsar cluster should be ready to go!</p>
 <h2><a class="anchor" aria-hidden="true" id="connecting-to-the-running-cluster"></a><a href="#connecting-to-the-running-cluster" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="reference-cli-tools.md#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
-<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="reference-configuration.md#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
+<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="/docs/ja/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
+<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="/docs/ja/next/reference-configuration#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">http://us-west.example.com:8080/</span>
 <span class="hljs-attr">brokerServiceurl</span>=<span class="hljs-string">pulsar://us-west.example.com:6650/</span>
 </code></pre>
@@ -300,13 +327,13 @@ $ bin/pulsar-daemon start bookie
   --namespace default \
   --name exclamation
 </code></pre>
-<p>Check if the function is running as expected by <a href="functions-deploying.md#triggering-pulsar-functions">triggering</a> the function.</p>
+<p>Check if the function is running as expected by <a href="/docs/ja/next/functions-deploying#triggering-pulsar-functions">triggering</a> the function.</p>
 <pre><code class="hljs css language-bash">bin/pulsar-admin <span class="hljs-built_in">functions</span> trigger --name exclamation --trigger-value <span class="hljs-string">"hello world"</span>
 </code></pre>
 <p>You will see output as below:</p>
 <pre><code class="hljs css language-shell">hello world!
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/ja/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href="#requi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/ja/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href="#requi [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/latest/adaptors/PulsarSpark/index.html b/content/docs/latest/adaptors/PulsarSpark/index.html
index c00dd49..d130108 100644
--- a/content/docs/latest/adaptors/PulsarSpark/index.html
+++ b/content/docs/latest/adaptors/PulsarSpark/index.html
@@ -1079,9 +1079,9 @@
           
           
           
+          <li><a href="/docs/latest/adaptors/PulsarSpark/">Spark Streaming Pulsar receiver</a></li>
           
           
-          <li><a href="/docs/latest/adaptors/PulsarSpark/">Spark Streaming Pulsar receiver</a></li>
           
           
           
@@ -1325,9 +1325,9 @@
           
           
           
+          <li><a href="/docs/latest/adaptors/PulsarSpark/">Spark Streaming Pulsar receiver</a></li>
           
           
-          <li><a href="/docs/latest/adaptors/PulsarSpark/">Spark Streaming Pulsar receiver</a></li>
           
           
           
@@ -1537,8 +1537,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
@@ -1617,6 +1615,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1673,9 +1673,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
diff --git a/content/docs/latest/adaptors/PulsarStorm/index.html b/content/docs/latest/adaptors/PulsarStorm/index.html
index a100055..67a4256 100644
--- a/content/docs/latest/adaptors/PulsarStorm/index.html
+++ b/content/docs/latest/adaptors/PulsarStorm/index.html
@@ -1083,9 +1083,9 @@
           
           
           
+          <li><a href="/docs/latest/adaptors/PulsarStorm/">Pulsar adaptor for Apache Storm</a></li>
           
           
-          <li><a href="/docs/latest/adaptors/PulsarStorm/">Pulsar adaptor for Apache Storm</a></li>
           
           
           
@@ -1291,8 +1291,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
@@ -1371,6 +1369,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1427,9 +1427,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
diff --git a/content/docs/latest/admin-api/overview/index.html b/content/docs/latest/admin-api/overview/index.html
index 994ad01..a2bc7c5 100644
--- a/content/docs/latest/admin-api/overview/index.html
+++ b/content/docs/latest/admin-api/overview/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1271,9 +1271,9 @@
           
           
           
+          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
-          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
           
@@ -1439,9 +1439,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1685,9 +1685,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1805,8 +1805,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
@@ -1885,6 +1883,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1941,9 +1941,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
diff --git a/content/docs/latest/clients/Cpp/index.html b/content/docs/latest/clients/Cpp/index.html
index 5dabb35..58e0246 100644
--- a/content/docs/latest/clients/Cpp/index.html
+++ b/content/docs/latest/clients/Cpp/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1021,9 +1019,9 @@
           
           
           
-          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
+          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
           
@@ -1157,6 +1155,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/clients/go/">The Pulsar Go client</a></li>
           
           
@@ -1287,9 +1287,9 @@
           
           
           
+          <li><a href="/docs/latest/clients/Cpp/">The Pulsar C++ client</a></li>
           
           
-          <li><a href="/docs/latest/clients/Cpp/">The Pulsar C++ client</a></li>
           
           
           
diff --git a/content/docs/latest/clients/Java/index.html b/content/docs/latest/clients/Java/index.html
index 8ce7177..5b89223 100644
--- a/content/docs/latest/clients/Java/index.html
+++ b/content/docs/latest/clients/Java/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1021,9 +1019,9 @@
           
           
           
-          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
+          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
           
@@ -1157,6 +1155,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/clients/go/">The Pulsar Go client</a></li>
           
           
@@ -1301,8 +1301,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
@@ -1381,6 +1379,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1437,9 +1437,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1557,9 +1557,9 @@
           
           
           
+          <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
-          <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
           
@@ -1805,9 +1805,9 @@
           
           
           
+          <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
-          <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
           
diff --git a/content/docs/latest/clients/Python/index.html b/content/docs/latest/clients/Python/index.html
index 4d34e49..60bea8e 100644
--- a/content/docs/latest/clients/Python/index.html
+++ b/content/docs/latest/clients/Python/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1021,9 +1019,9 @@
           
           
           
-          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
+          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
           
@@ -1157,6 +1155,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/clients/go/">The Pulsar Go client</a></li>
           
           
@@ -1343,8 +1343,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/clients/Python/">The Pulsar Python client</a></li>
           
           
@@ -1417,6 +1415,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/cookbooks/message-queue/">Using Pulsar as a message queue</a></li>
           
           
diff --git a/content/docs/latest/clients/WebSocket/index.html b/content/docs/latest/clients/WebSocket/index.html
index 0c3f19d..b881453 100644
--- a/content/docs/latest/clients/WebSocket/index.html
+++ b/content/docs/latest/clients/WebSocket/index.html
@@ -1107,9 +1107,9 @@
           
           
           
+          <li><a href="/docs/latest/clients/WebSocket/">Pulsar's WebSocket API</a></li>
           
           
-          <li><a href="/docs/latest/clients/WebSocket/">Pulsar's WebSocket API</a></li>
           
           
           
@@ -1353,9 +1353,9 @@
           
           
           
+          <li><a href="/docs/latest/clients/WebSocket/">Pulsar's WebSocket API</a></li>
           
           
-          <li><a href="/docs/latest/clients/WebSocket/">Pulsar's WebSocket API</a></li>
           
           
           
@@ -1579,8 +1579,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/clients/Python/">The Pulsar Python client</a></li>
           
           
@@ -1653,6 +1651,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/cookbooks/message-queue/">Using Pulsar as a message queue</a></li>
           
           
diff --git a/content/docs/latest/clients/go/index.html b/content/docs/latest/clients/go/index.html
index 1492ffb..a06ad5f 100644
--- a/content/docs/latest/clients/go/index.html
+++ b/content/docs/latest/clients/go/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1021,9 +1019,9 @@
           
           
           
-          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
+          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
           
@@ -1157,6 +1155,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/clients/go/">The Pulsar Go client</a></li>
           
           
diff --git a/content/docs/latest/cookbooks/Encryption/index.html b/content/docs/latest/cookbooks/Encryption/index.html
index 18ca402..a6132a3 100644
--- a/content/docs/latest/cookbooks/Encryption/index.html
+++ b/content/docs/latest/cookbooks/Encryption/index.html
@@ -1567,9 +1567,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
           
@@ -1823,8 +1823,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
@@ -1901,6 +1899,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/encryption/">Pulsar Encryption</a></li>
           
           
diff --git a/content/docs/latest/cookbooks/PartitionedTopics/index.html b/content/docs/latest/cookbooks/PartitionedTopics/index.html
index 25ce2c6..b385286 100644
--- a/content/docs/latest/cookbooks/PartitionedTopics/index.html
+++ b/content/docs/latest/cookbooks/PartitionedTopics/index.html
@@ -1069,9 +1069,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
           
@@ -1315,9 +1315,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
           
@@ -1497,8 +1497,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1617,6 +1615,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1681,9 +1681,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1829,9 +1829,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
           
@@ -2085,8 +2085,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
@@ -2163,6 +2161,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/encryption/">Pulsar Encryption</a></li>
           
           
diff --git a/content/docs/latest/cookbooks/RetentionExpiry/index.html b/content/docs/latest/cookbooks/RetentionExpiry/index.html
index 0a51438..48e2d65 100644
--- a/content/docs/latest/cookbooks/RetentionExpiry/index.html
+++ b/content/docs/latest/cookbooks/RetentionExpiry/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1361,9 +1361,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/RetentionExpiry/">Message retention and expiry</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/RetentionExpiry/">Message retention and expiry</a></li>
           
           
           
@@ -1607,9 +1607,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/RetentionExpiry/">Message retention and expiry</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/RetentionExpiry/">Message retention and expiry</a></li>
           
           
           
@@ -1853,9 +1853,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/RetentionExpiry/">Message retention and expiry</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/RetentionExpiry/">Message retention and expiry</a></li>
           
           
           
@@ -2075,8 +2075,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
@@ -2153,6 +2151,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/encryption/">Pulsar Encryption</a></li>
           
           
diff --git a/content/docs/latest/cookbooks/compaction/index.html b/content/docs/latest/cookbooks/compaction/index.html
index fd7475c..0d47061 100644
--- a/content/docs/latest/cookbooks/compaction/index.html
+++ b/content/docs/latest/cookbooks/compaction/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1337,9 +1337,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
           
diff --git a/content/docs/latest/cookbooks/message-deduplication/index.html b/content/docs/latest/cookbooks/message-deduplication/index.html
index 03df0bf..5505920 100644
--- a/content/docs/latest/cookbooks/message-deduplication/index.html
+++ b/content/docs/latest/cookbooks/message-deduplication/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1287,9 +1287,9 @@
           
           
           
+          <li><a href="/docs/latest/getting-started/ConceptsAndArchitecture/">Pulsar concepts and architecture</a></li>
           
           
-          <li><a href="/docs/latest/getting-started/ConceptsAndArchitecture/">Pulsar concepts and architecture</a></li>
           
           
           
@@ -1585,8 +1585,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
@@ -1663,6 +1661,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/encryption/">Pulsar Encryption</a></li>
           
           
diff --git a/content/docs/latest/cookbooks/message-queue/index.html b/content/docs/latest/cookbooks/message-queue/index.html
index 3655ec9..3aed975 100644
--- a/content/docs/latest/cookbooks/message-queue/index.html
+++ b/content/docs/latest/cookbooks/message-queue/index.html
@@ -1071,9 +1071,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
           
@@ -1301,8 +1301,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
@@ -1381,6 +1379,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1437,9 +1437,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1599,8 +1599,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/clients/Python/">The Pulsar Python client</a></li>
           
           
@@ -1673,6 +1671,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/cookbooks/message-queue/">Using Pulsar as a message queue</a></li>
           
           
@@ -2079,8 +2079,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
@@ -2157,6 +2155,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/encryption/">Pulsar Encryption</a></li>
           
           
diff --git a/content/docs/latest/cookbooks/tiered-storage/index.html b/content/docs/latest/cookbooks/tiered-storage/index.html
index 92718d6..e6a26c3 100644
--- a/content/docs/latest/cookbooks/tiered-storage/index.html
+++ b/content/docs/latest/cookbooks/tiered-storage/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
diff --git a/content/docs/latest/deployment/Kubernetes/index.html b/content/docs/latest/deployment/Kubernetes/index.html
index 868a18b..82e2140 100644
--- a/content/docs/latest/deployment/Kubernetes/index.html
+++ b/content/docs/latest/deployment/Kubernetes/index.html
@@ -1051,9 +1051,9 @@
           
           
           
+          <li><a href="/docs/latest/deployment/Kubernetes/">Deploying Pulsar on Kubernetes</a></li>
           
           
-          <li><a href="/docs/latest/deployment/Kubernetes/">Deploying Pulsar on Kubernetes</a></li>
           
           
           
@@ -1297,9 +1297,9 @@
           
           
           
+          <li><a href="/docs/latest/deployment/Kubernetes/">Deploying Pulsar on Kubernetes</a></li>
           
           
-          <li><a href="/docs/latest/deployment/Kubernetes/">Deploying Pulsar on Kubernetes</a></li>
           
           
           
diff --git a/content/docs/latest/deployment/aws-cluster/index.html b/content/docs/latest/deployment/aws-cluster/index.html
index 31cfc51..c0f626a 100644
--- a/content/docs/latest/deployment/aws-cluster/index.html
+++ b/content/docs/latest/deployment/aws-cluster/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
diff --git a/content/docs/latest/deployment/cluster/index.html b/content/docs/latest/deployment/cluster/index.html
index 0a12601..64813ca 100644
--- a/content/docs/latest/deployment/cluster/index.html
+++ b/content/docs/latest/deployment/cluster/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
diff --git a/content/docs/latest/deployment/instance/index.html b/content/docs/latest/deployment/instance/index.html
index e4d8219..cf29458 100644
--- a/content/docs/latest/deployment/instance/index.html
+++ b/content/docs/latest/deployment/instance/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
diff --git a/content/docs/latest/getting-started/ConceptsAndArchitecture/index.html b/content/docs/latest/getting-started/ConceptsAndArchitecture/index.html
index 51203a8..c7b2dad 100644
--- a/content/docs/latest/getting-started/ConceptsAndArchitecture/index.html
+++ b/content/docs/latest/getting-started/ConceptsAndArchitecture/index.html
@@ -1021,9 +1021,9 @@
           
           
           
+          <li><a href="/docs/latest/getting-started/ConceptsAndArchitecture/">Pulsar concepts and architecture</a></li>
           
           
-          <li><a href="/docs/latest/getting-started/ConceptsAndArchitecture/">Pulsar concepts and architecture</a></li>
           
           
           
@@ -1267,9 +1267,9 @@
           
           
           
+          <li><a href="/docs/latest/getting-started/ConceptsAndArchitecture/">Pulsar concepts and architecture</a></li>
           
           
-          <li><a href="/docs/latest/getting-started/ConceptsAndArchitecture/">Pulsar concepts and architecture</a></li>
           
           
           
diff --git a/content/docs/latest/getting-started/LocalCluster/index.html b/content/docs/latest/getting-started/LocalCluster/index.html
index 564bdd5..dcceda6 100644
--- a/content/docs/latest/getting-started/LocalCluster/index.html
+++ b/content/docs/latest/getting-started/LocalCluster/index.html
@@ -1057,9 +1057,9 @@
           
           
           
+          <li><a href="/docs/latest/getting-started/LocalCluster/">Setting up a local standalone cluster</a></li>
           
           
-          <li><a href="/docs/latest/getting-started/LocalCluster/">Setting up a local standalone cluster</a></li>
           
           
           
@@ -1305,9 +1305,9 @@
           
           
           
+          <li><a href="/docs/latest/getting-started/LocalCluster/">Setting up a local standalone cluster</a></li>
           
           
-          <li><a href="/docs/latest/getting-started/LocalCluster/">Setting up a local standalone cluster</a></li>
           
           
           
diff --git a/content/docs/latest/getting-started/Pulsar-2.0/index.html b/content/docs/latest/getting-started/Pulsar-2.0/index.html
index 45ec5ca..2018e47 100644
--- a/content/docs/latest/getting-started/Pulsar-2.0/index.html
+++ b/content/docs/latest/getting-started/Pulsar-2.0/index.html
@@ -1563,9 +1563,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
           
diff --git a/content/docs/latest/getting-started/docker/index.html b/content/docs/latest/getting-started/docker/index.html
index 9bd32cd..d67525e 100644
--- a/content/docs/latest/getting-started/docker/index.html
+++ b/content/docs/latest/getting-started/docker/index.html
@@ -1057,9 +1057,9 @@
           
           
           
+          <li><a href="/docs/latest/getting-started/LocalCluster/">Setting up a local standalone cluster</a></li>
           
           
-          <li><a href="/docs/latest/getting-started/LocalCluster/">Setting up a local standalone cluster</a></li>
           
           
           
@@ -1305,9 +1305,9 @@
           
           
           
+          <li><a href="/docs/latest/getting-started/LocalCluster/">Setting up a local standalone cluster</a></li>
           
           
-          <li><a href="/docs/latest/getting-started/LocalCluster/">Setting up a local standalone cluster</a></li>
           
           
           
diff --git a/content/docs/latest/project/BinaryProtocol/index.html b/content/docs/latest/project/BinaryProtocol/index.html
index 3e28b29..5d74a12 100644
--- a/content/docs/latest/project/BinaryProtocol/index.html
+++ b/content/docs/latest/project/BinaryProtocol/index.html
@@ -1001,9 +1001,9 @@
           
           
           
+          <li><a href="/docs/latest/project/BinaryProtocol/">Pulsar binary protocol specification</a></li>
           
           
-          <li><a href="/docs/latest/project/BinaryProtocol/">Pulsar binary protocol specification</a></li>
           
           
           
@@ -1247,9 +1247,9 @@
           
           
           
+          <li><a href="/docs/latest/project/BinaryProtocol/">Pulsar binary protocol specification</a></li>
           
           
-          <li><a href="/docs/latest/project/BinaryProtocol/">Pulsar binary protocol specification</a></li>
           
           
           
diff --git a/content/docs/latest/project/CompileCpp/index.html b/content/docs/latest/project/CompileCpp/index.html
index bd1db5f..0b1376a 100644
--- a/content/docs/latest/project/CompileCpp/index.html
+++ b/content/docs/latest/project/CompileCpp/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1021,9 +1019,9 @@
           
           
           
-          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
+          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
           
@@ -1157,6 +1155,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/clients/go/">The Pulsar Go client</a></li>
           
           
@@ -1287,9 +1287,9 @@
           
           
           
+          <li><a href="/docs/latest/clients/Cpp/">The Pulsar C++ client</a></li>
           
           
-          <li><a href="/docs/latest/clients/Cpp/">The Pulsar C++ client</a></li>
           
           
           
diff --git a/content/docs/latest/project/SimulationTools/index.html b/content/docs/latest/project/SimulationTools/index.html
index e601624..8857516 100644
--- a/content/docs/latest/project/SimulationTools/index.html
+++ b/content/docs/latest/project/SimulationTools/index.html
@@ -1099,9 +1099,9 @@
           
           
           
+          <li><a href="/docs/latest/project/SimulationTools/">Simulation tools</a></li>
           
           
-          <li><a href="/docs/latest/project/SimulationTools/">Simulation tools</a></li>
           
           
           
diff --git a/content/docs/latest/project/schema-storage/index.html b/content/docs/latest/project/schema-storage/index.html
index 333ed51..9d6b5fd 100644
--- a/content/docs/latest/project/schema-storage/index.html
+++ b/content/docs/latest/project/schema-storage/index.html
@@ -1045,9 +1045,9 @@
           
           
           
+          <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
-          <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
           
@@ -1293,9 +1293,9 @@
           
           
           
+          <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
-          <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
           
diff --git a/content/docs/latest/reference/CliTools/index.html b/content/docs/latest/reference/CliTools/index.html
index cc20bbd..6956c81 100644
--- a/content/docs/latest/reference/CliTools/index.html
+++ b/content/docs/latest/reference/CliTools/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1271,9 +1271,9 @@
           
           
           
+          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
-          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
           
@@ -1439,9 +1439,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -1519,8 +1519,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1535,9 +1533,9 @@
           
           
           
-          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
+          <li><a href="/docs/latest/project/CompileCpp/">Building Pulsar C++ client</a></li>
           
           
           
@@ -1671,6 +1669,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/clients/go/">The Pulsar Go client</a></li>
           
           
@@ -1775,9 +1775,9 @@
           
           
           
+          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
-          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
           
@@ -2021,9 +2021,9 @@
           
           
           
+          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
-          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
           
@@ -2267,9 +2267,9 @@
           
           
           
+          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
-          <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
           
diff --git a/content/docs/latest/security/authorization/index.html b/content/docs/latest/security/authorization/index.html
index 755417d..45a42d9 100644
--- a/content/docs/latest/security/authorization/index.html
+++ b/content/docs/latest/security/authorization/index.html
@@ -1005,8 +1005,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/reference/CliTools/">Pulsar command-line tools</a></li>
           
           
@@ -1125,6 +1123,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -1189,9 +1189,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -2299,8 +2299,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/clients/Java/">The Pulsar Java client</a></li>
           
           
@@ -2379,6 +2377,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/authorization/">Authentication and authorization in Pulsar</a></li>
           
           
@@ -2435,9 +2435,9 @@
           
           
           
-          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
+          <li><a href="/docs/latest/admin-api/overview/">The Pulsar admin interface</a></li>
           
           
           
@@ -2541,9 +2541,9 @@
           
           
           
+          <li><a href="/docs/latest/clients/Cpp/">The Pulsar C++ client</a></li>
           
           
-          <li><a href="/docs/latest/clients/Cpp/">The Pulsar C++ client</a></li>
           
           
           
diff --git a/content/docs/latest/security/encryption/index.html b/content/docs/latest/security/encryption/index.html
index 18ca402..a6132a3 100644
--- a/content/docs/latest/security/encryption/index.html
+++ b/content/docs/latest/security/encryption/index.html
@@ -1567,9 +1567,9 @@
           
           
           
+          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
-          <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
           
@@ -1823,8 +1823,6 @@
           
           
           
-          
-          
           <li><a href="/docs/latest/cookbooks/PartitionedTopics/">Partitioned topics</a></li>
           
           
@@ -1901,6 +1899,8 @@
           
           
           
+          
+          
           <li><a href="/docs/latest/security/encryption/">Pulsar Encryption</a></li>
           
           
diff --git a/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics.html b/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics.html
index 4997a34..267b937 100644
--- a/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics.html
+++ b/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics.html
@@ -240,9 +240,9 @@ admin.persistentTopics().getStats(topic);
 <li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
 <li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
 <li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
-<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
-<li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
-<li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 如果entryid是-1,这代表ledger已经被打开或者正在被打开,但是还没有entry被写入。</p></li>
+<li><p><strong>state</strong>: 要写入的ledger的状态。LedgerOpened表示有打开的ledger用来保存发布的消息。</p></li>
+<li><p><strong>ledgers</strong>:本topic保存消息的有序ledger列表。</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
 <li><p><strong>markDeletePosition</strong>: The ack position: the last message the subscriber acknowledged receiving</p></li>
 <li><p><strong>readPosition</strong>: The latest position of subscriber for reading message</p></li>
diff --git a/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics/index.html b/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics/index.html
index 4997a34..267b937 100644
--- a/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics/index.html
@@ -240,9 +240,9 @@ admin.persistentTopics().getStats(topic);
 <li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
 <li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
 <li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
-<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
-<li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
-<li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 如果entryid是-1,这代表ledger已经被打开或者正在被打开,但是还没有entry被写入。</p></li>
+<li><p><strong>state</strong>: 要写入的ledger的状态。LedgerOpened表示有打开的ledger用来保存发布的消息。</p></li>
+<li><p><strong>ledgers</strong>:本topic保存消息的有序ledger列表。</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
 <li><p><strong>markDeletePosition</strong>: The ack position: the last message the subscriber acknowledged receiving</p></li>
 <li><p><strong>readPosition</strong>: The latest position of subscriber for reading message</p></li>
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview.html b/content/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview.html
index 7db040e..fbc9605 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview.html
@@ -55,7 +55,7 @@
 <li>用于Pulsar集群操作的该Pulsar集群独有的ZooKeeper</li>
 </ul>
 <p>下图展示了一个Pulsar集群:</p>
-<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar architecture diagram"></p>
+<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar架构图"></p>
 <p>在更细粒度的实例级别, 有一个能访问到全部实例的ZooKeeper群集处理涉及多个pulsar集群的配置协调任务, 例如 <a href="/docs/zh-CN/2.1.0-incubating/concepts-replication">异地复制</a>。</p>
 <h2><a class="anchor" aria-hidden="true" id="brokers"></a><a href="#brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Pulsar的broker是一个无状态组件, 主要负责运行另外的两个组件:</p>
@@ -107,7 +107,7 @@
 <p>Pulsar也支持临时消息( (<a href="/docs/zh-CN/2.1.0-incubating/concepts-messaging#non-persistent-topics">非持久消息</a>) )存储。</p>
 </blockquote>
 <p>下图展示了brokers和bookies是如何交互的</p>
-<p><img src="/docs/assets/broker-bookie.png" alt="Brokers and bookies"></p>
+<p><img src="/docs/assets/broker-bookie.png" alt="Brokers和bookies"></p>
 <h3><a class="anchor" aria-hidden="true" id="ledgers"></a><a href="#ledgers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Ledger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个BookKeeper存储节点(就是Bookies)的写入。 Ledger的条目会被复制到多个bookies。 Ledgers本身有着非常简单的语义:</p>
 <ul>
@@ -132,26 +132,26 @@
 <blockquote>
 <p>为了性能和容错,你可以运行任意个Pulsar proxy。</p>
 </blockquote>
-<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 When starting the proxy on a machine, you only need to provide ZooKeeper connection strings for the cluster-specific and instance-wide configuration store clusters. Here's an example:</p>
+<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 当启动代理时,你只需要提供用于集群独有和实例范围的配置存储的ZooKeeper连接串。 Here's an example:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar proxy \
   --zookeeper-servers zk-0,zk-1,zk-2 \
   --configuration-store-servers zk-0,zk-1,zk-2
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-docs"></a><a href="#pulsar-proxy-docs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>For documentation on using the Pulsar proxy, see the <a href="/docs/zh-CN/2.1.0-incubating/administration-proxy">Pulsar proxy admin documentation</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-文档"></a><a href="#pulsar-proxy-文档" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>如何使用Pulsar proxy,参考 <a href="/docs/zh-CN/2.1.0-incubating/administration-proxy">Pulsar proxy 管理指南</a>。</p>
 </blockquote>
-<p>Some important things to know about the Pulsar proxy:</p>
+<p>关于Pulsar proxy有一些比较重要的注意点:</p>
 <ul>
-<li>Connecting clients don't need to provide <em>any</em> specific configuration to use the Pulsar proxy. You won't need to update the client configuration for existing applications beyond updating the IP used for the service URL (for example if you're running a load balancer over the Pulsar proxy).</li>
-<li><a href="/docs/zh-CN/2.1.0-incubating/security-tls-transport">TLS encryption</a> and <a href="/docs/zh-CN/2.1.0-incubating/security-tls-authentication">authentication</a> is supported by the Pulsar proxy</li>
+<li>连接客户端不需要为使用Pulsar proxy提供<em>任何</em>特定配置。 除了更新用于服务URL的IP之外,你不需要为现有的应用更新客户端配置(例如你在Pulsar proxy上层架设运行了负载均衡器)。</li>
+<li>Pulsar proxy支持<a href="/docs/zh-CN/2.1.0-incubating/security-tls-transport">TLS 加密</a> 和 <a href="/docs/zh-CN/2.1.0-incubating/security-tls-authentication">认证</a>。</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="service-discovery"></a><a href="#service-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p><a href="/docs/zh-CN/2.1.0-incubating/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the <a href="/docs/zh-CN/2.1.0-incubating/deploy-bare-metal#service-discovery-setup">Deploying a Pulsar instance</a> guide.</p>
-<p>You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as <code>http://pulsar.us-west.example.com:8080</code>, the client needs to be redirected to <em>some</em> active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.</p>
-<p>The diagram below illustrates Pulsar service discovery:</p>
+<p><a href="/docs/zh-CN/2.1.0-incubating/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar内部提供了服务发现的机制,你可以通过 <a href="/docs/zh-CN/2.1.0-incubating/deploy-bare-metal#service-discovery-setup">配置Pulsar实例指南</a>设置。</p>
+<p>你也可以用你自己的服务发现系统。 如果你用你自己的系统,只需满足一个需求:当客户端发送一个HTTP请求,例如发到<code>http://pulsar.us-west.example.com:8080</code>,客户端需要被重定向到<em>某些</em>所需的集群中活跃的broker,或者通过DNS,或者通过HTTP和IP重定向,或者其他机制。</p>
+<p>下面这张图展示了Pulsar服务发现机制:</p>
 <p><img src="/docs/assets/pulsar-service-discovery.png" alt="alt-text"></p>
-<p>In this diagram, the Pulsar cluster is addressable via a single DNS name: <code>pulsar-cluster.acme.com</code>. A <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-python">Python client</a>, for example, could access this Pulsar cluster like this:</p>
+<p>图中,Pulsar集群可以通过一个DNS名称寻址:<code>pulsar-cluster.acme.com</code>。 例如<a href="/docs/zh-CN/2.1.0-incubating/client-libraries-python">Python客户端</a>,可以像这样访问这个Pulsar集群:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client
 
 client = Client(<span class="hljs-string">'pulsar://pulsar-cluster.acme.com:6650'</span>)
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview/index.html b/content/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview/index.html
index 7db040e..fbc9605 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview/index.html
@@ -55,7 +55,7 @@
 <li>用于Pulsar集群操作的该Pulsar集群独有的ZooKeeper</li>
 </ul>
 <p>下图展示了一个Pulsar集群:</p>
-<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar architecture diagram"></p>
+<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar架构图"></p>
 <p>在更细粒度的实例级别, 有一个能访问到全部实例的ZooKeeper群集处理涉及多个pulsar集群的配置协调任务, 例如 <a href="/docs/zh-CN/2.1.0-incubating/concepts-replication">异地复制</a>。</p>
 <h2><a class="anchor" aria-hidden="true" id="brokers"></a><a href="#brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Pulsar的broker是一个无状态组件, 主要负责运行另外的两个组件:</p>
@@ -107,7 +107,7 @@
 <p>Pulsar也支持临时消息( (<a href="/docs/zh-CN/2.1.0-incubating/concepts-messaging#non-persistent-topics">非持久消息</a>) )存储。</p>
 </blockquote>
 <p>下图展示了brokers和bookies是如何交互的</p>
-<p><img src="/docs/assets/broker-bookie.png" alt="Brokers and bookies"></p>
+<p><img src="/docs/assets/broker-bookie.png" alt="Brokers和bookies"></p>
 <h3><a class="anchor" aria-hidden="true" id="ledgers"></a><a href="#ledgers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Ledger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个BookKeeper存储节点(就是Bookies)的写入。 Ledger的条目会被复制到多个bookies。 Ledgers本身有着非常简单的语义:</p>
 <ul>
@@ -132,26 +132,26 @@
 <blockquote>
 <p>为了性能和容错,你可以运行任意个Pulsar proxy。</p>
 </blockquote>
-<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 When starting the proxy on a machine, you only need to provide ZooKeeper connection strings for the cluster-specific and instance-wide configuration store clusters. Here's an example:</p>
+<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 当启动代理时,你只需要提供用于集群独有和实例范围的配置存储的ZooKeeper连接串。 Here's an example:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar proxy \
   --zookeeper-servers zk-0,zk-1,zk-2 \
   --configuration-store-servers zk-0,zk-1,zk-2
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-docs"></a><a href="#pulsar-proxy-docs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>For documentation on using the Pulsar proxy, see the <a href="/docs/zh-CN/2.1.0-incubating/administration-proxy">Pulsar proxy admin documentation</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-文档"></a><a href="#pulsar-proxy-文档" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>如何使用Pulsar proxy,参考 <a href="/docs/zh-CN/2.1.0-incubating/administration-proxy">Pulsar proxy 管理指南</a>。</p>
 </blockquote>
-<p>Some important things to know about the Pulsar proxy:</p>
+<p>关于Pulsar proxy有一些比较重要的注意点:</p>
 <ul>
-<li>Connecting clients don't need to provide <em>any</em> specific configuration to use the Pulsar proxy. You won't need to update the client configuration for existing applications beyond updating the IP used for the service URL (for example if you're running a load balancer over the Pulsar proxy).</li>
-<li><a href="/docs/zh-CN/2.1.0-incubating/security-tls-transport">TLS encryption</a> and <a href="/docs/zh-CN/2.1.0-incubating/security-tls-authentication">authentication</a> is supported by the Pulsar proxy</li>
+<li>连接客户端不需要为使用Pulsar proxy提供<em>任何</em>特定配置。 除了更新用于服务URL的IP之外,你不需要为现有的应用更新客户端配置(例如你在Pulsar proxy上层架设运行了负载均衡器)。</li>
+<li>Pulsar proxy支持<a href="/docs/zh-CN/2.1.0-incubating/security-tls-transport">TLS 加密</a> 和 <a href="/docs/zh-CN/2.1.0-incubating/security-tls-authentication">认证</a>。</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="service-discovery"></a><a href="#service-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p><a href="/docs/zh-CN/2.1.0-incubating/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the <a href="/docs/zh-CN/2.1.0-incubating/deploy-bare-metal#service-discovery-setup">Deploying a Pulsar instance</a> guide.</p>
-<p>You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as <code>http://pulsar.us-west.example.com:8080</code>, the client needs to be redirected to <em>some</em> active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.</p>
-<p>The diagram below illustrates Pulsar service discovery:</p>
+<p><a href="/docs/zh-CN/2.1.0-incubating/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar内部提供了服务发现的机制,你可以通过 <a href="/docs/zh-CN/2.1.0-incubating/deploy-bare-metal#service-discovery-setup">配置Pulsar实例指南</a>设置。</p>
+<p>你也可以用你自己的服务发现系统。 如果你用你自己的系统,只需满足一个需求:当客户端发送一个HTTP请求,例如发到<code>http://pulsar.us-west.example.com:8080</code>,客户端需要被重定向到<em>某些</em>所需的集群中活跃的broker,或者通过DNS,或者通过HTTP和IP重定向,或者其他机制。</p>
+<p>下面这张图展示了Pulsar服务发现机制:</p>
 <p><img src="/docs/assets/pulsar-service-discovery.png" alt="alt-text"></p>
-<p>In this diagram, the Pulsar cluster is addressable via a single DNS name: <code>pulsar-cluster.acme.com</code>. A <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-python">Python client</a>, for example, could access this Pulsar cluster like this:</p>
+<p>图中,Pulsar集群可以通过一个DNS名称寻址:<code>pulsar-cluster.acme.com</code>。 例如<a href="/docs/zh-CN/2.1.0-incubating/client-libraries-python">Python客户端</a>,可以像这样访问这个Pulsar集群:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client
 
 client = Client(<span class="hljs-string">'pulsar://pulsar-cluster.acme.com:6650'</span>)
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-architecture.html b/content/docs/zh-CN/2.1.0-incubating/concepts-architecture.html
index 70a4302..e7c8550 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-architecture.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-architecture.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar concepts and architecture · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;id: version-2.1.0-incubating-concepts-architecture&lt;/p&gt;
-"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar concepts and architecture · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;id: version-2.1.0-incubating-concepts-architecture&lt;/p&gt;
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar概念和架构 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;id: version-2.1.0-incubating-concepts-architecture&lt;/p&gt;
+"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar概念和架构 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;id: version-2.1.0-incubating-concepts-architecture&lt;/p&gt;
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -20,10 +20,10 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
-title: Pulsar concepts and architecture
-sidebar_label: Concepts and architecture
-original_id: concepts-architecture</p>
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
+title: Pulsar概念和架构
+sidebar_label: 概念和架构
+original_id: 概念架构</p>
 <hr>
 </span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-architecture/index.html b/content/docs/zh-CN/2.1.0-incubating/concepts-architecture/index.html
index 70a4302..e7c8550 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-architecture/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-architecture/index.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar concepts and architecture · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;id: version-2.1.0-incubating-concepts-architecture&lt;/p&gt;
-"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar concepts and architecture · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;id: version-2.1.0-incubating-concepts-architecture&lt;/p&gt;
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar概念和架构 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;id: version-2.1.0-incubating-concepts-architecture&lt;/p&gt;
+"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar概念和架构 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;id: version-2.1.0-incubating-concepts-architecture&lt;/p&gt;
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -20,10 +20,10 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
-title: Pulsar concepts and architecture
-sidebar_label: Concepts and architecture
-original_id: concepts-architecture</p>
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
+title: Pulsar概念和架构
+sidebar_label: 概念和架构
+original_id: 概念架构</p>
 <hr>
 </span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.1.0-incubating/functions-api.html b/content/docs/zh-CN/2.1.0-incubating/functions-api.html
index 60121e8..9b23f32 100644
--- a/content/docs/zh-CN/2.1.0-incubating/functions-api.html
+++ b/content/docs/zh-CN/2.1.0-incubating/functions-api.html
@@ -81,17 +81,17 @@
 <li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="部署示例"></a><a href="#部署示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
-<pre><code class="bash">$ bin/pulsar-admin functions localrun \
-  --py sanitizer.py \          # The Python file with the function's code
-  --className sanitizer \      # The class or function holding the processing logic
-  --tenant public \            # The function's tenant (derived from the topic name by default)
-  --namespace default \        # The function's namespace (derived from the topic name by default)
-  --name sanitizer-function \  # The name of the function (the class name by default)
-  --inputs dirty-strings-in \  # The input topic(s) for the function
-  --output clean-strings-out \ # The output topic for the function
-  --logTopic sanitizer-logs    # The topic to which all functions logs are published
-`</pre> 
+<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是<a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin#functions"><code>functions</code></a>命令。 如下的示例命令,它将在 <a href="/docs/zh-CN/2.1.0-incubating/functions-deploying#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
+  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
+  --className sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
+  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
+  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
+  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
+  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
+  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
+  --logTopic sanitizer-logs    <span class="hljs-comment"># The topic to which all functions logs are published</span>
+</code></pre>
 <p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/2.1.0-incubating/functions-deploying">部署Pulsar Functions</a> 文档。</p>
 <h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
@@ -101,14 +101,14 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
-<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">提供开发语言自身接口不提供的一系列功能的特定Pulsar类库。</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
 </tbody>
 </table>
-<p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
+<p>例如, 在 python 中, 语言自带函数没有外部依赖,它会向所有传入的字符串添加一个感叹号,并将结果字符串发布到主题:</p>
 <pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">process</span><span class="hljs-params">(input)</span>:</span>
     <span class="hljs-keyword">return</span> <span class="hljs-string">"{}!"</span>.format(input)
 </code></pre>
-<p>This function, however, would use the Pulsar Functions <a href="#python-sdk-functions">SDK for Python</a>:</p>
+<p>然而,在这个函数里你会看到Pulsar Function为Python提供的<a href="#python-sdk-functions">SDK</a>:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Function
 
 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DisplayFunctionName</span><span class="hljs-params">(Function)</span>:</span>
@@ -119,8 +119,8 @@
 <h3><a class="anchor" aria-hidden="true" id="序列化和反序列化-serde"></a><a href="#序列化和反序列化-serde" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>SerDe stands for <strong>Ser</strong>ialization and <strong>De</strong>serialization. All Pulsar Functions use SerDe for message handling. How SerDe works by default depends on the language you're using for a particular function:</p>
 <ul>
-<li>In <a href="#python-serde">Python</a>, the default SerDe is identity, meaning that the type is serialized as whatever type the producer function returns</li>
-<li>In <a href="#java-serde">Java</a>, a number of commonly used types (<code>String</code>s, <code>Integer</code>s, etc.) are supported by default</li>
+<li>在 <a href="#python-serde">Python</a> 中, 默认的 serde 是标识, 这意味着该类型被序列化为生成函数返回的任何类型。</li>
+<li>在<a href="#java-serde">Java</a>里,许多常用的类型(<code>String</code>,<code>Integer</code>, 等等) 都默认支持。</li>
 </ul>
 <p>In both languages, however, you can write your own custom SerDe logic for more complex, application-specific types. See the docs for <a href="#java-serde">Java</a> and <a href="#python-serde">Python</a> for language-specific instructions.</p>
 <h3><a class="anchor" aria-hidden="true" id="context"></a><a href="#context" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
diff --git a/content/docs/zh-CN/2.1.0-incubating/functions-api/index.html b/content/docs/zh-CN/2.1.0-incubating/functions-api/index.html
index 60121e8..9b23f32 100644
--- a/content/docs/zh-CN/2.1.0-incubating/functions-api/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/functions-api/index.html
@@ -81,17 +81,17 @@
 <li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="部署示例"></a><a href="#部署示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
-<pre><code class="bash">$ bin/pulsar-admin functions localrun \
-  --py sanitizer.py \          # The Python file with the function's code
-  --className sanitizer \      # The class or function holding the processing logic
-  --tenant public \            # The function's tenant (derived from the topic name by default)
-  --namespace default \        # The function's namespace (derived from the topic name by default)
-  --name sanitizer-function \  # The name of the function (the class name by default)
-  --inputs dirty-strings-in \  # The input topic(s) for the function
-  --output clean-strings-out \ # The output topic for the function
-  --logTopic sanitizer-logs    # The topic to which all functions logs are published
-`</pre> 
+<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是<a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin#functions"><code>functions</code></a>命令。 如下的示例命令,它将在 <a href="/docs/zh-CN/2.1.0-incubating/functions-deploying#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
+  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
+  --className sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
+  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
+  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
+  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
+  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
+  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
+  --logTopic sanitizer-logs    <span class="hljs-comment"># The topic to which all functions logs are published</span>
+</code></pre>
 <p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/2.1.0-incubating/functions-deploying">部署Pulsar Functions</a> 文档。</p>
 <h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
@@ -101,14 +101,14 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
-<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">提供开发语言自身接口不提供的一系列功能的特定Pulsar类库。</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
 </tbody>
 </table>
-<p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
+<p>例如, 在 python 中, 语言自带函数没有外部依赖,它会向所有传入的字符串添加一个感叹号,并将结果字符串发布到主题:</p>
 <pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">process</span><span class="hljs-params">(input)</span>:</span>
     <span class="hljs-keyword">return</span> <span class="hljs-string">"{}!"</span>.format(input)
 </code></pre>
-<p>This function, however, would use the Pulsar Functions <a href="#python-sdk-functions">SDK for Python</a>:</p>
+<p>然而,在这个函数里你会看到Pulsar Function为Python提供的<a href="#python-sdk-functions">SDK</a>:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Function
 
 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DisplayFunctionName</span><span class="hljs-params">(Function)</span>:</span>
@@ -119,8 +119,8 @@
 <h3><a class="anchor" aria-hidden="true" id="序列化和反序列化-serde"></a><a href="#序列化和反序列化-serde" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>SerDe stands for <strong>Ser</strong>ialization and <strong>De</strong>serialization. All Pulsar Functions use SerDe for message handling. How SerDe works by default depends on the language you're using for a particular function:</p>
 <ul>
-<li>In <a href="#python-serde">Python</a>, the default SerDe is identity, meaning that the type is serialized as whatever type the producer function returns</li>
-<li>In <a href="#java-serde">Java</a>, a number of commonly used types (<code>String</code>s, <code>Integer</code>s, etc.) are supported by default</li>
+<li>在 <a href="#python-serde">Python</a> 中, 默认的 serde 是标识, 这意味着该类型被序列化为生成函数返回的任何类型。</li>
+<li>在<a href="#java-serde">Java</a>里,许多常用的类型(<code>String</code>,<code>Integer</code>, 等等) 都默认支持。</li>
 </ul>
 <p>In both languages, however, you can write your own custom SerDe logic for more complex, application-specific types. See the docs for <a href="#java-serde">Java</a> and <a href="#python-serde">Python</a> for language-specific instructions.</p>
 <h3><a class="anchor" aria-hidden="true" id="context"></a><a href="#context" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
diff --git a/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics.html b/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics.html
index dcc90b8..5d216b3 100644
--- a/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics.html
+++ b/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics.html
@@ -240,9 +240,9 @@ admin.persistentTopics().getStats(topic);
 <li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
 <li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
 <li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
-<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
-<li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
-<li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 如果entryid是-1,这代表ledger已经被打开或者正在被打开,但是还没有entry被写入。</p></li>
+<li><p><strong>state</strong>: 要写入的ledger的状态。LedgerOpened表示有打开的ledger用来保存发布的消息。</p></li>
+<li><p><strong>ledgers</strong>:本topic保存消息的有序ledger列表。</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
 <li><p><strong>markDeletePosition</strong>: The ack position: the last message the subscriber acknowledged receiving</p></li>
 <li><p><strong>readPosition</strong>: The latest position of subscriber for reading message</p></li>
diff --git a/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics/index.html b/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics/index.html
index dcc90b8..5d216b3 100644
--- a/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics/index.html
@@ -240,9 +240,9 @@ admin.persistentTopics().getStats(topic);
 <li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
 <li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
 <li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
-<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
-<li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
-<li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 如果entryid是-1,这代表ledger已经被打开或者正在被打开,但是还没有entry被写入。</p></li>
+<li><p><strong>state</strong>: 要写入的ledger的状态。LedgerOpened表示有打开的ledger用来保存发布的消息。</p></li>
+<li><p><strong>ledgers</strong>:本topic保存消息的有序ledger列表。</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
 <li><p><strong>markDeletePosition</strong>: The ack position: the last message the subscriber acknowledged receiving</p></li>
 <li><p><strong>readPosition</strong>: The latest position of subscriber for reading message</p></li>
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview.html b/content/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview.html
index 25f33ff..c68c1b5 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview.html
@@ -55,7 +55,7 @@
 <li>用于Pulsar集群操作的该Pulsar集群独有的ZooKeeper</li>
 </ul>
 <p>下图展示了一个Pulsar集群:</p>
-<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar architecture diagram"></p>
+<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar架构图"></p>
 <p>在更细粒度的实例级别, 有一个能访问到全部实例的ZooKeeper群集处理涉及多个pulsar集群的配置协调任务, 例如 <a href="/docs/zh-CN/2.1.1-incubating/concepts-replication">异地复制</a>。</p>
 <h2><a class="anchor" aria-hidden="true" id="brokers"></a><a href="#brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Pulsar的broker是一个无状态组件, 主要负责运行另外的两个组件:</p>
@@ -107,7 +107,7 @@
 <p>Pulsar也支持临时消息( (<a href="/docs/zh-CN/2.1.1-incubating/concepts-messaging#non-persistent-topics">非持久消息</a>) )存储。</p>
 </blockquote>
 <p>下图展示了brokers和bookies是如何交互的</p>
-<p><img src="/docs/assets/broker-bookie.png" alt="Brokers and bookies"></p>
+<p><img src="/docs/assets/broker-bookie.png" alt="Brokers和bookies"></p>
 <h3><a class="anchor" aria-hidden="true" id="ledgers"></a><a href="#ledgers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Ledger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个BookKeeper存储节点(就是Bookies)的写入。 Ledger的条目会被复制到多个bookies。 Ledgers本身有着非常简单的语义:</p>
 <ul>
@@ -132,26 +132,26 @@
 <blockquote>
 <p>为了性能和容错,你可以运行任意个Pulsar proxy。</p>
 </blockquote>
-<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 When starting the proxy on a machine, you only need to provide ZooKeeper connection strings for the cluster-specific and instance-wide configuration store clusters. Here's an example:</p>
+<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 当启动代理时,你只需要提供用于集群独有和实例范围的配置存储的ZooKeeper连接串。 Here's an example:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar proxy \
   --zookeeper-servers zk-0,zk-1,zk-2 \
   --configuration-store-servers zk-0,zk-1,zk-2
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-docs"></a><a href="#pulsar-proxy-docs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>For documentation on using the Pulsar proxy, see the <a href="/docs/zh-CN/2.1.1-incubating/administration-proxy">Pulsar proxy admin documentation</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-文档"></a><a href="#pulsar-proxy-文档" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>如何使用Pulsar proxy,参考 <a href="/docs/zh-CN/2.1.1-incubating/administration-proxy">Pulsar proxy 管理指南</a>。</p>
 </blockquote>
-<p>Some important things to know about the Pulsar proxy:</p>
+<p>关于Pulsar proxy有一些比较重要的注意点:</p>
 <ul>
-<li>Connecting clients don't need to provide <em>any</em> specific configuration to use the Pulsar proxy. You won't need to update the client configuration for existing applications beyond updating the IP used for the service URL (for example if you're running a load balancer over the Pulsar proxy).</li>
-<li><a href="/docs/zh-CN/2.1.1-incubating/security-tls-transport">TLS encryption</a> and <a href="/docs/zh-CN/2.1.1-incubating/security-tls-authentication">authentication</a> is supported by the Pulsar proxy</li>
+<li>连接客户端不需要为使用Pulsar proxy提供<em>任何</em>特定配置。 除了更新用于服务URL的IP之外,你不需要为现有的应用更新客户端配置(例如你在Pulsar proxy上层架设运行了负载均衡器)。</li>
+<li>Pulsar proxy支持<a href="/docs/zh-CN/2.1.1-incubating/security-tls-transport">TLS 加密</a> 和 <a href="/docs/zh-CN/2.1.1-incubating/security-tls-authentication">认证</a>。</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="service-discovery"></a><a href="#service-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p><a href="/docs/zh-CN/2.1.1-incubating/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the <a href="/docs/zh-CN/2.1.1-incubating/deploy-bare-metal#service-discovery-setup">Deploying a Pulsar instance</a> guide.</p>
-<p>You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as <code>http://pulsar.us-west.example.com:8080</code>, the client needs to be redirected to <em>some</em> active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.</p>
-<p>The diagram below illustrates Pulsar service discovery:</p>
+<p><a href="/docs/zh-CN/2.1.1-incubating/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar内部提供了服务发现的机制,你可以通过 <a href="/docs/zh-CN/2.1.1-incubating/deploy-bare-metal#service-discovery-setup">配置Pulsar实例指南</a>设置。</p>
+<p>你也可以用你自己的服务发现系统。 如果你用你自己的系统,只需满足一个需求:当客户端发送一个HTTP请求,例如发到<code>http://pulsar.us-west.example.com:8080</code>,客户端需要被重定向到<em>某些</em>所需的集群中活跃的broker,或者通过DNS,或者通过HTTP和IP重定向,或者其他机制。</p>
+<p>下面这张图展示了Pulsar服务发现机制:</p>
 <p><img src="/docs/assets/pulsar-service-discovery.png" alt="alt-text"></p>
-<p>In this diagram, the Pulsar cluster is addressable via a single DNS name: <code>pulsar-cluster.acme.com</code>. A <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-python">Python client</a>, for example, could access this Pulsar cluster like this:</p>
+<p>图中,Pulsar集群可以通过一个DNS名称寻址:<code>pulsar-cluster.acme.com</code>。 例如<a href="/docs/zh-CN/2.1.1-incubating/client-libraries-python">Python客户端</a>,可以像这样访问这个Pulsar集群:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client
 
 client = Client(<span class="hljs-string">'pulsar://pulsar-cluster.acme.com:6650'</span>)
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview/index.html b/content/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview/index.html
index 25f33ff..c68c1b5 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview/index.html
@@ -55,7 +55,7 @@
 <li>用于Pulsar集群操作的该Pulsar集群独有的ZooKeeper</li>
 </ul>
 <p>下图展示了一个Pulsar集群:</p>
-<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar architecture diagram"></p>
+<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar架构图"></p>
 <p>在更细粒度的实例级别, 有一个能访问到全部实例的ZooKeeper群集处理涉及多个pulsar集群的配置协调任务, 例如 <a href="/docs/zh-CN/2.1.1-incubating/concepts-replication">异地复制</a>。</p>
 <h2><a class="anchor" aria-hidden="true" id="brokers"></a><a href="#brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Pulsar的broker是一个无状态组件, 主要负责运行另外的两个组件:</p>
@@ -107,7 +107,7 @@
 <p>Pulsar也支持临时消息( (<a href="/docs/zh-CN/2.1.1-incubating/concepts-messaging#non-persistent-topics">非持久消息</a>) )存储。</p>
 </blockquote>
 <p>下图展示了brokers和bookies是如何交互的</p>
-<p><img src="/docs/assets/broker-bookie.png" alt="Brokers and bookies"></p>
+<p><img src="/docs/assets/broker-bookie.png" alt="Brokers和bookies"></p>
 <h3><a class="anchor" aria-hidden="true" id="ledgers"></a><a href="#ledgers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Ledger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个BookKeeper存储节点(就是Bookies)的写入。 Ledger的条目会被复制到多个bookies。 Ledgers本身有着非常简单的语义:</p>
 <ul>
@@ -132,26 +132,26 @@
 <blockquote>
 <p>为了性能和容错,你可以运行任意个Pulsar proxy。</p>
 </blockquote>
-<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 When starting the proxy on a machine, you only need to provide ZooKeeper connection strings for the cluster-specific and instance-wide configuration store clusters. Here's an example:</p>
+<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 当启动代理时,你只需要提供用于集群独有和实例范围的配置存储的ZooKeeper连接串。 Here's an example:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar proxy \
   --zookeeper-servers zk-0,zk-1,zk-2 \
   --configuration-store-servers zk-0,zk-1,zk-2
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-docs"></a><a href="#pulsar-proxy-docs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>For documentation on using the Pulsar proxy, see the <a href="/docs/zh-CN/2.1.1-incubating/administration-proxy">Pulsar proxy admin documentation</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-文档"></a><a href="#pulsar-proxy-文档" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>如何使用Pulsar proxy,参考 <a href="/docs/zh-CN/2.1.1-incubating/administration-proxy">Pulsar proxy 管理指南</a>。</p>
 </blockquote>
-<p>Some important things to know about the Pulsar proxy:</p>
+<p>关于Pulsar proxy有一些比较重要的注意点:</p>
 <ul>
-<li>Connecting clients don't need to provide <em>any</em> specific configuration to use the Pulsar proxy. You won't need to update the client configuration for existing applications beyond updating the IP used for the service URL (for example if you're running a load balancer over the Pulsar proxy).</li>
-<li><a href="/docs/zh-CN/2.1.1-incubating/security-tls-transport">TLS encryption</a> and <a href="/docs/zh-CN/2.1.1-incubating/security-tls-authentication">authentication</a> is supported by the Pulsar proxy</li>
+<li>连接客户端不需要为使用Pulsar proxy提供<em>任何</em>特定配置。 除了更新用于服务URL的IP之外,你不需要为现有的应用更新客户端配置(例如你在Pulsar proxy上层架设运行了负载均衡器)。</li>
+<li>Pulsar proxy支持<a href="/docs/zh-CN/2.1.1-incubating/security-tls-transport">TLS 加密</a> 和 <a href="/docs/zh-CN/2.1.1-incubating/security-tls-authentication">认证</a>。</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="service-discovery"></a><a href="#service-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p><a href="/docs/zh-CN/2.1.1-incubating/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the <a href="/docs/zh-CN/2.1.1-incubating/deploy-bare-metal#service-discovery-setup">Deploying a Pulsar instance</a> guide.</p>
-<p>You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as <code>http://pulsar.us-west.example.com:8080</code>, the client needs to be redirected to <em>some</em> active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.</p>
-<p>The diagram below illustrates Pulsar service discovery:</p>
+<p><a href="/docs/zh-CN/2.1.1-incubating/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar内部提供了服务发现的机制,你可以通过 <a href="/docs/zh-CN/2.1.1-incubating/deploy-bare-metal#service-discovery-setup">配置Pulsar实例指南</a>设置。</p>
+<p>你也可以用你自己的服务发现系统。 如果你用你自己的系统,只需满足一个需求:当客户端发送一个HTTP请求,例如发到<code>http://pulsar.us-west.example.com:8080</code>,客户端需要被重定向到<em>某些</em>所需的集群中活跃的broker,或者通过DNS,或者通过HTTP和IP重定向,或者其他机制。</p>
+<p>下面这张图展示了Pulsar服务发现机制:</p>
 <p><img src="/docs/assets/pulsar-service-discovery.png" alt="alt-text"></p>
-<p>In this diagram, the Pulsar cluster is addressable via a single DNS name: <code>pulsar-cluster.acme.com</code>. A <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-python">Python client</a>, for example, could access this Pulsar cluster like this:</p>
+<p>图中,Pulsar集群可以通过一个DNS名称寻址:<code>pulsar-cluster.acme.com</code>。 例如<a href="/docs/zh-CN/2.1.1-incubating/client-libraries-python">Python客户端</a>,可以像这样访问这个Pulsar集群:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client
 
 client = Client(<span class="hljs-string">'pulsar://pulsar-cluster.acme.com:6650'</span>)
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-architecture.html b/content/docs/zh-CN/2.1.1-incubating/concepts-architecture.html
index 8f3a0b6..270e16b 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-architecture.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-architecture.html
@@ -21,9 +21,9 @@
           }
         });
       </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
-title: Pulsar concepts and architecture
-sidebar_label: Concepts and architecture
-original_id: concepts-architecture</p>
+title: Pulsar概念和架构
+sidebar_label: 概念和架构
+original_id: 概念架构</p>
 <hr>
 </span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-architecture/index.html b/content/docs/zh-CN/2.1.1-incubating/concepts-architecture/index.html
index 8f3a0b6..270e16b 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-architecture/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-architecture/index.html
@@ -21,9 +21,9 @@
           }
         });
       </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
-title: Pulsar concepts and architecture
-sidebar_label: Concepts and architecture
-original_id: concepts-architecture</p>
+title: Pulsar概念和架构
+sidebar_label: 概念和架构
+original_id: 概念架构</p>
 <hr>
 </span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.1.1-incubating/functions-api.html b/content/docs/zh-CN/2.1.1-incubating/functions-api.html
index 6b51da4..9ffefd4 100644
--- a/content/docs/zh-CN/2.1.1-incubating/functions-api.html
+++ b/content/docs/zh-CN/2.1.1-incubating/functions-api.html
@@ -81,17 +81,17 @@
 <li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="部署示例"></a><a href="#部署示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
-<pre><code class="bash">$ bin/pulsar-admin functions localrun \
-  --py sanitizer.py \          # The Python file with the function's code
-  --className sanitizer \      # The class or function holding the processing logic
-  --tenant public \            # The function's tenant (derived from the topic name by default)
-  --namespace default \        # The function's namespace (derived from the topic name by default)
-  --name sanitizer-function \  # The name of the function (the class name by default)
-  --inputs dirty-strings-in \  # The input topic(s) for the function
-  --output clean-strings-out \ # The output topic for the function
-  --logTopic sanitizer-logs    # The topic to which all functions logs are published
-`</pre> 
+<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是<a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin#functions"><code>functions</code></a>命令。 如下的示例命令,它将在 <a href="/docs/zh-CN/2.1.1-incubating/functions-deploying#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
+  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
+  --className sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
+  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
+  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
+  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
+  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
+  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
+  --logTopic sanitizer-logs    <span class="hljs-comment"># The topic to which all functions logs are published</span>
+</code></pre>
 <p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/2.1.1-incubating/functions-deploying">部署Pulsar Functions</a> 文档。</p>
 <h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
@@ -101,14 +101,14 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
-<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">提供开发语言自身接口不提供的一系列功能的特定Pulsar类库。</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
 </tbody>
 </table>
-<p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
+<p>例如, 在 python 中, 语言自带函数没有外部依赖,它会向所有传入的字符串添加一个感叹号,并将结果字符串发布到主题:</p>
 <pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">process</span><span class="hljs-params">(input)</span>:</span>
     <span class="hljs-keyword">return</span> <span class="hljs-string">"{}!"</span>.format(input)
 </code></pre>
-<p>This function, however, would use the Pulsar Functions <a href="#python-sdk-functions">SDK for Python</a>:</p>
+<p>然而,在这个函数里你会看到Pulsar Function为Python提供的<a href="#python-sdk-functions">SDK</a>:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Function
 
 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DisplayFunctionName</span><span class="hljs-params">(Function)</span>:</span>
@@ -119,8 +119,8 @@
 <h3><a class="anchor" aria-hidden="true" id="序列化和反序列化-serde"></a><a href="#序列化和反序列化-serde" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>SerDe stands for <strong>Ser</strong>ialization and <strong>De</strong>serialization. All Pulsar Functions use SerDe for message handling. How SerDe works by default depends on the language you're using for a particular function:</p>
 <ul>
-<li>In <a href="#python-serde">Python</a>, the default SerDe is identity, meaning that the type is serialized as whatever type the producer function returns</li>
-<li>In <a href="#java-serde">Java</a>, a number of commonly used types (<code>String</code>s, <code>Integer</code>s, etc.) are supported by default</li>
+<li>在 <a href="#python-serde">Python</a> 中, 默认的 serde 是标识, 这意味着该类型被序列化为生成函数返回的任何类型。</li>
+<li>在<a href="#java-serde">Java</a>里,许多常用的类型(<code>String</code>,<code>Integer</code>, 等等) 都默认支持。</li>
 </ul>
 <p>In both languages, however, you can write your own custom SerDe logic for more complex, application-specific types. See the docs for <a href="#java-serde">Java</a> and <a href="#python-serde">Python</a> for language-specific instructions.</p>
 <h3><a class="anchor" aria-hidden="true" id="context"></a><a href="#context" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
diff --git a/content/docs/zh-CN/2.1.1-incubating/functions-api/index.html b/content/docs/zh-CN/2.1.1-incubating/functions-api/index.html
index 6b51da4..9ffefd4 100644
--- a/content/docs/zh-CN/2.1.1-incubating/functions-api/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/functions-api/index.html
@@ -81,17 +81,17 @@
 <li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="部署示例"></a><a href="#部署示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
-<pre><code class="bash">$ bin/pulsar-admin functions localrun \
-  --py sanitizer.py \          # The Python file with the function's code
-  --className sanitizer \      # The class or function holding the processing logic
-  --tenant public \            # The function's tenant (derived from the topic name by default)
-  --namespace default \        # The function's namespace (derived from the topic name by default)
-  --name sanitizer-function \  # The name of the function (the class name by default)
-  --inputs dirty-strings-in \  # The input topic(s) for the function
-  --output clean-strings-out \ # The output topic for the function
-  --logTopic sanitizer-logs    # The topic to which all functions logs are published
-`</pre> 
+<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是<a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin#functions"><code>functions</code></a>命令。 如下的示例命令,它将在 <a href="/docs/zh-CN/2.1.1-incubating/functions-deploying#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
+  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
+  --className sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
+  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
+  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
+  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
+  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
+  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
+  --logTopic sanitizer-logs    <span class="hljs-comment"># The topic to which all functions logs are published</span>
+</code></pre>
 <p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/2.1.1-incubating/functions-deploying">部署Pulsar Functions</a> 文档。</p>
 <h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
@@ -101,14 +101,14 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
-<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">提供开发语言自身接口不提供的一系列功能的特定Pulsar类库。</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
 </tbody>
 </table>
-<p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
+<p>例如, 在 python 中, 语言自带函数没有外部依赖,它会向所有传入的字符串添加一个感叹号,并将结果字符串发布到主题:</p>
 <pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">process</span><span class="hljs-params">(input)</span>:</span>
     <span class="hljs-keyword">return</span> <span class="hljs-string">"{}!"</span>.format(input)
 </code></pre>
-<p>This function, however, would use the Pulsar Functions <a href="#python-sdk-functions">SDK for Python</a>:</p>
+<p>然而,在这个函数里你会看到Pulsar Function为Python提供的<a href="#python-sdk-functions">SDK</a>:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Function
 
 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DisplayFunctionName</span><span class="hljs-params">(Function)</span>:</span>
@@ -119,8 +119,8 @@
 <h3><a class="anchor" aria-hidden="true" id="序列化和反序列化-serde"></a><a href="#序列化和反序列化-serde" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>SerDe stands for <strong>Ser</strong>ialization and <strong>De</strong>serialization. All Pulsar Functions use SerDe for message handling. How SerDe works by default depends on the language you're using for a particular function:</p>
 <ul>
-<li>In <a href="#python-serde">Python</a>, the default SerDe is identity, meaning that the type is serialized as whatever type the producer function returns</li>
-<li>In <a href="#java-serde">Java</a>, a number of commonly used types (<code>String</code>s, <code>Integer</code>s, etc.) are supported by default</li>
+<li>在 <a href="#python-serde">Python</a> 中, 默认的 serde 是标识, 这意味着该类型被序列化为生成函数返回的任何类型。</li>
+<li>在<a href="#java-serde">Java</a>里,许多常用的类型(<code>String</code>,<code>Integer</code>, 等等) 都默认支持。</li>
 </ul>
 <p>In both languages, however, you can write your own custom SerDe logic for more complex, application-specific types. See the docs for <a href="#java-serde">Java</a> and <a href="#python-serde">Python</a> for language-specific instructions.</p>
 <h3><a class="anchor" aria-hidden="true" id="context"></a><a href="#context" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
diff --git a/content/docs/zh-CN/admin-api-persistent-topics.html b/content/docs/zh-CN/admin-api-persistent-topics.html
index db6b410..cdfd9eb 100644
--- a/content/docs/zh-CN/admin-api-persistent-topics.html
+++ b/content/docs/zh-CN/admin-api-persistent-topics.html
@@ -240,9 +240,9 @@ admin.persistentTopics().getStats(topic);
 <li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
 <li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
 <li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
-<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
-<li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
-<li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 如果entryid是-1,这代表ledger已经被打开或者正在被打开,但是还没有entry被写入。</p></li>
+<li><p><strong>state</strong>: 要写入的ledger的状态。LedgerOpened表示有打开的ledger用来保存发布的消息。</p></li>
+<li><p><strong>ledgers</strong>:本topic保存消息的有序ledger列表。</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
 <li><p><strong>markDeletePosition</strong>: The ack position: the last message the subscriber acknowledged receiving</p></li>
 <li><p><strong>readPosition</strong>: The latest position of subscriber for reading message</p></li>
diff --git a/content/docs/zh-CN/admin-api-persistent-topics/index.html b/content/docs/zh-CN/admin-api-persistent-topics/index.html
index db6b410..cdfd9eb 100644
--- a/content/docs/zh-CN/admin-api-persistent-topics/index.html
+++ b/content/docs/zh-CN/admin-api-persistent-topics/index.html
@@ -240,9 +240,9 @@ admin.persistentTopics().getStats(topic);
 <li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
 <li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
 <li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
-<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
-<li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
-<li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 如果entryid是-1,这代表ledger已经被打开或者正在被打开,但是还没有entry被写入。</p></li>
+<li><p><strong>state</strong>: 要写入的ledger的状态。LedgerOpened表示有打开的ledger用来保存发布的消息。</p></li>
+<li><p><strong>ledgers</strong>:本topic保存消息的有序ledger列表。</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
 <li><p><strong>markDeletePosition</strong>: The ack position: the last message the subscriber acknowledged receiving</p></li>
 <li><p><strong>readPosition</strong>: The latest position of subscriber for reading message</p></li>
diff --git a/content/docs/zh-CN/concepts-architecture-overview.html b/content/docs/zh-CN/concepts-architecture-overview.html
index b80876d..1fbf256 100644
--- a/content/docs/zh-CN/concepts-architecture-overview.html
+++ b/content/docs/zh-CN/concepts-architecture-overview.html
@@ -55,7 +55,7 @@
 <li>用于Pulsar集群操作的该Pulsar集群独有的ZooKeeper</li>
 </ul>
 <p>下图展示了一个Pulsar集群:</p>
-<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar architecture diagram"></p>
+<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar架构图"></p>
 <p>在更细粒度的实例级别, 有一个能访问到全部实例的ZooKeeper群集处理涉及多个pulsar集群的配置协调任务, 例如 <a href="/docs/zh-CN/concepts-replication">异地复制</a>。</p>
 <h2><a class="anchor" aria-hidden="true" id="brokers"></a><a href="#brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Pulsar的broker是一个无状态组件, 主要负责运行另外的两个组件:</p>
@@ -107,7 +107,7 @@
 <p>Pulsar也支持临时消息( (<a href="/docs/zh-CN/concepts-messaging#non-persistent-topics">非持久消息</a>) )存储。</p>
 </blockquote>
 <p>下图展示了brokers和bookies是如何交互的</p>
-<p><img src="/docs/assets/broker-bookie.png" alt="Brokers and bookies"></p>
+<p><img src="/docs/assets/broker-bookie.png" alt="Brokers和bookies"></p>
 <h3><a class="anchor" aria-hidden="true" id="ledgers"></a><a href="#ledgers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Ledger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个BookKeeper存储节点(就是Bookies)的写入。 Ledger的条目会被复制到多个bookies。 Ledgers本身有着非常简单的语义:</p>
 <ul>
@@ -132,26 +132,26 @@
 <blockquote>
 <p>为了性能和容错,你可以运行任意个Pulsar proxy。</p>
 </blockquote>
-<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 When starting the proxy on a machine, you only need to provide ZooKeeper connection strings for the cluster-specific and instance-wide configuration store clusters. Here's an example:</p>
+<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 当启动代理时,你只需要提供用于集群独有和实例范围的配置存储的ZooKeeper连接串。 Here's an example:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar proxy \
   --zookeeper-servers zk-0,zk-1,zk-2 \
   --configuration-store-servers zk-0,zk-1,zk-2
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-docs"></a><a href="#pulsar-proxy-docs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>For documentation on using the Pulsar proxy, see the <a href="/docs/zh-CN/administration-proxy">Pulsar proxy admin documentation</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-文档"></a><a href="#pulsar-proxy-文档" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>如何使用Pulsar proxy,参考 <a href="/docs/zh-CN/administration-proxy">Pulsar proxy 管理指南</a>。</p>
 </blockquote>
-<p>Some important things to know about the Pulsar proxy:</p>
+<p>关于Pulsar proxy有一些比较重要的注意点:</p>
 <ul>
-<li>Connecting clients don't need to provide <em>any</em> specific configuration to use the Pulsar proxy. You won't need to update the client configuration for existing applications beyond updating the IP used for the service URL (for example if you're running a load balancer over the Pulsar proxy).</li>
-<li><a href="/docs/zh-CN/security-tls-transport">TLS encryption</a> and <a href="/docs/zh-CN/security-tls-authentication">authentication</a> is supported by the Pulsar proxy</li>
+<li>连接客户端不需要为使用Pulsar proxy提供<em>任何</em>特定配置。 除了更新用于服务URL的IP之外,你不需要为现有的应用更新客户端配置(例如你在Pulsar proxy上层架设运行了负载均衡器)。</li>
+<li>Pulsar proxy支持<a href="/docs/zh-CN/security-tls-transport">TLS 加密</a> 和 <a href="/docs/zh-CN/security-tls-authentication">认证</a>。</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="service-discovery"></a><a href="#service-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p><a href="/docs/zh-CN/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the <a href="/docs/zh-CN/deploy-bare-metal#service-discovery-setup">Deploying a Pulsar instance</a> guide.</p>
-<p>You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as <code>http://pulsar.us-west.example.com:8080</code>, the client needs to be redirected to <em>some</em> active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.</p>
-<p>The diagram below illustrates Pulsar service discovery:</p>
+<p><a href="/docs/zh-CN/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar内部提供了服务发现的机制,你可以通过 <a href="/docs/zh-CN/deploy-bare-metal#service-discovery-setup">配置Pulsar实例指南</a>设置。</p>
+<p>你也可以用你自己的服务发现系统。 如果你用你自己的系统,只需满足一个需求:当客户端发送一个HTTP请求,例如发到<code>http://pulsar.us-west.example.com:8080</code>,客户端需要被重定向到<em>某些</em>所需的集群中活跃的broker,或者通过DNS,或者通过HTTP和IP重定向,或者其他机制。</p>
+<p>下面这张图展示了Pulsar服务发现机制:</p>
 <p><img src="/docs/assets/pulsar-service-discovery.png" alt="alt-text"></p>
-<p>In this diagram, the Pulsar cluster is addressable via a single DNS name: <code>pulsar-cluster.acme.com</code>. A <a href="/docs/zh-CN/client-libraries-python">Python client</a>, for example, could access this Pulsar cluster like this:</p>
+<p>图中,Pulsar集群可以通过一个DNS名称寻址:<code>pulsar-cluster.acme.com</code>。 例如<a href="/docs/zh-CN/client-libraries-python">Python客户端</a>,可以像这样访问这个Pulsar集群:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client
 
 client = Client(<span class="hljs-string">'pulsar://pulsar-cluster.acme.com:6650'</span>)
diff --git a/content/docs/zh-CN/concepts-architecture-overview/index.html b/content/docs/zh-CN/concepts-architecture-overview/index.html
index b80876d..1fbf256 100644
--- a/content/docs/zh-CN/concepts-architecture-overview/index.html
+++ b/content/docs/zh-CN/concepts-architecture-overview/index.html
@@ -55,7 +55,7 @@
 <li>用于Pulsar集群操作的该Pulsar集群独有的ZooKeeper</li>
 </ul>
 <p>下图展示了一个Pulsar集群:</p>
-<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar architecture diagram"></p>
+<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar架构图"></p>
 <p>在更细粒度的实例级别, 有一个能访问到全部实例的ZooKeeper群集处理涉及多个pulsar集群的配置协调任务, 例如 <a href="/docs/zh-CN/concepts-replication">异地复制</a>。</p>
 <h2><a class="anchor" aria-hidden="true" id="brokers"></a><a href="#brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Pulsar的broker是一个无状态组件, 主要负责运行另外的两个组件:</p>
@@ -107,7 +107,7 @@
 <p>Pulsar也支持临时消息( (<a href="/docs/zh-CN/concepts-messaging#non-persistent-topics">非持久消息</a>) )存储。</p>
 </blockquote>
 <p>下图展示了brokers和bookies是如何交互的</p>
-<p><img src="/docs/assets/broker-bookie.png" alt="Brokers and bookies"></p>
+<p><img src="/docs/assets/broker-bookie.png" alt="Brokers和bookies"></p>
 <h3><a class="anchor" aria-hidden="true" id="ledgers"></a><a href="#ledgers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Ledger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个BookKeeper存储节点(就是Bookies)的写入。 Ledger的条目会被复制到多个bookies。 Ledgers本身有着非常简单的语义:</p>
 <ul>
@@ -132,26 +132,26 @@
 <blockquote>
 <p>为了性能和容错,你可以运行任意个Pulsar proxy。</p>
 </blockquote>
-<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 When starting the proxy on a machine, you only need to provide ZooKeeper connection strings for the cluster-specific and instance-wide configuration store clusters. Here's an example:</p>
+<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 当启动代理时,你只需要提供用于集群独有和实例范围的配置存储的ZooKeeper连接串。 Here's an example:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar proxy \
   --zookeeper-servers zk-0,zk-1,zk-2 \
   --configuration-store-servers zk-0,zk-1,zk-2
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-docs"></a><a href="#pulsar-proxy-docs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>For documentation on using the Pulsar proxy, see the <a href="/docs/zh-CN/administration-proxy">Pulsar proxy admin documentation</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-文档"></a><a href="#pulsar-proxy-文档" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>如何使用Pulsar proxy,参考 <a href="/docs/zh-CN/administration-proxy">Pulsar proxy 管理指南</a>。</p>
 </blockquote>
-<p>Some important things to know about the Pulsar proxy:</p>
+<p>关于Pulsar proxy有一些比较重要的注意点:</p>
 <ul>
-<li>Connecting clients don't need to provide <em>any</em> specific configuration to use the Pulsar proxy. You won't need to update the client configuration for existing applications beyond updating the IP used for the service URL (for example if you're running a load balancer over the Pulsar proxy).</li>
-<li><a href="/docs/zh-CN/security-tls-transport">TLS encryption</a> and <a href="/docs/zh-CN/security-tls-authentication">authentication</a> is supported by the Pulsar proxy</li>
+<li>连接客户端不需要为使用Pulsar proxy提供<em>任何</em>特定配置。 除了更新用于服务URL的IP之外,你不需要为现有的应用更新客户端配置(例如你在Pulsar proxy上层架设运行了负载均衡器)。</li>
+<li>Pulsar proxy支持<a href="/docs/zh-CN/security-tls-transport">TLS 加密</a> 和 <a href="/docs/zh-CN/security-tls-authentication">认证</a>。</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="service-discovery"></a><a href="#service-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p><a href="/docs/zh-CN/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the <a href="/docs/zh-CN/deploy-bare-metal#service-discovery-setup">Deploying a Pulsar instance</a> guide.</p>
-<p>You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as <code>http://pulsar.us-west.example.com:8080</code>, the client needs to be redirected to <em>some</em> active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.</p>
-<p>The diagram below illustrates Pulsar service discovery:</p>
+<p><a href="/docs/zh-CN/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar内部提供了服务发现的机制,你可以通过 <a href="/docs/zh-CN/deploy-bare-metal#service-discovery-setup">配置Pulsar实例指南</a>设置。</p>
+<p>你也可以用你自己的服务发现系统。 如果你用你自己的系统,只需满足一个需求:当客户端发送一个HTTP请求,例如发到<code>http://pulsar.us-west.example.com:8080</code>,客户端需要被重定向到<em>某些</em>所需的集群中活跃的broker,或者通过DNS,或者通过HTTP和IP重定向,或者其他机制。</p>
+<p>下面这张图展示了Pulsar服务发现机制:</p>
 <p><img src="/docs/assets/pulsar-service-discovery.png" alt="alt-text"></p>
-<p>In this diagram, the Pulsar cluster is addressable via a single DNS name: <code>pulsar-cluster.acme.com</code>. A <a href="/docs/zh-CN/client-libraries-python">Python client</a>, for example, could access this Pulsar cluster like this:</p>
+<p>图中,Pulsar集群可以通过一个DNS名称寻址:<code>pulsar-cluster.acme.com</code>。 例如<a href="/docs/zh-CN/client-libraries-python">Python客户端</a>,可以像这样访问这个Pulsar集群:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client
 
 client = Client(<span class="hljs-string">'pulsar://pulsar-cluster.acme.com:6650'</span>)
diff --git a/content/docs/zh-CN/concepts-architecture.html b/content/docs/zh-CN/concepts-architecture.html
index 161d91a..8359120 100644
--- a/content/docs/zh-CN/concepts-architecture.html
+++ b/content/docs/zh-CN/concepts-architecture.html
@@ -21,9 +21,9 @@
           }
         });
       </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
-title: Pulsar concepts and architecture
-sidebar_label: Concepts and architecture
-original_id: concepts-architecture</p>
+title: Pulsar概念和架构
+sidebar_label: 概念和架构
+original_id: 概念架构</p>
 <hr>
 </span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/concepts-architecture/index.html b/content/docs/zh-CN/concepts-architecture/index.html
index 161d91a..8359120 100644
--- a/content/docs/zh-CN/concepts-architecture/index.html
+++ b/content/docs/zh-CN/concepts-architecture/index.html
@@ -21,9 +21,9 @@
           }
         });
       </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
-title: Pulsar concepts and architecture
-sidebar_label: Concepts and architecture
-original_id: concepts-architecture</p>
+title: Pulsar概念和架构
+sidebar_label: 概念和架构
+original_id: 概念架构</p>
 <hr>
 </span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/functions-api.html b/content/docs/zh-CN/functions-api.html
index c1e7049..b47dbfb 100644
--- a/content/docs/zh-CN/functions-api.html
+++ b/content/docs/zh-CN/functions-api.html
@@ -81,17 +81,17 @@
 <li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="部署示例"></a><a href="#部署示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
-<pre><code class="bash">$ bin/pulsar-admin functions localrun \
-  --py sanitizer.py \          # The Python file with the function's code
-  --classname sanitizer \      # The class or function holding the processing logic
-  --tenant public \            # The function's tenant (derived from the topic name by default)
-  --namespace default \        # The function's namespace (derived from the topic name by default)
-  --name sanitizer-function \  # The name of the function (the class name by default)
-  --inputs dirty-strings-in \  # The input topic(s) for the function
-  --output clean-strings-out \ # The output topic for the function
-  --log-topic sanitizer-logs   # The topic to which all functions logs are published
-`</pre> 
+<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是<a href="/docs/zh-CN/pulsar-admin#functions"><code>functions</code></a>命令。 如下的示例命令,它将在 <a href="/docs/zh-CN/functions-deploying#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
+  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
+  --classname sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
+  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
+  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
+  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
+  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
+  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
+  --<span class="hljs-built_in">log</span>-topic sanitizer-logs   <span class="hljs-comment"># The topic to which all functions logs are published</span>
+</code></pre>
 <p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/functions-deploying">部署Pulsar Functions</a> 文档。</p>
 <h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
@@ -101,14 +101,14 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
-<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">提供开发语言自身接口不提供的一系列功能的特定Pulsar类库。</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
 </tbody>
 </table>
-<p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
+<p>例如, 在 python 中, 语言自带函数没有外部依赖,它会向所有传入的字符串添加一个感叹号,并将结果字符串发布到主题:</p>
 <pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">process</span><span class="hljs-params">(input)</span>:</span>
     <span class="hljs-keyword">return</span> <span class="hljs-string">"{}!"</span>.format(input)
 </code></pre>
-<p>This function, however, would use the Pulsar Functions <a href="#python-sdk-functions">SDK for Python</a>:</p>
+<p>然而,在这个函数里你会看到Pulsar Function为Python提供的<a href="#python-sdk-functions">SDK</a>:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Function
 
 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DisplayFunctionName</span><span class="hljs-params">(Function)</span>:</span>
@@ -116,15 +116,15 @@
         function_name = context.function_name()
         <span class="hljs-keyword">return</span> <span class="hljs-string">"The function processing this message has the name {0}"</span>.format(function_name)
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="functions-messages-and-message-types"></a><a href="#functions-messages-and-message-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>Pulsar Functions can take byte arrays as inputs and spit out byte arrays as output. However in languages that support typed interfaces(just Java at the moment) one can write typed Functions as well. In this scenario, there are two ways one can bind messages to types. * <a href="#Schema-Registry">Schema Registry</a> * <a href="#SerDe">SerDe</a></p>
+<h3><a class="anchor" aria-hidden="true" id="函数-消息和消息类型"></a><a href="#函数-消息和消息类型" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>Pulsar函数可以将字节数据作为输入,并且同样可以输出字节数组。 但是,在支持类型化接口的语言中(目前只有Java),也可以编写类型化函数。 在这种情况下, 有两种方法可以将消息绑定到类型。 * <a href="#Schema-Registry">注册Schema</a> * <a href="#SerDe">SerDe</a></p>
 <h3><a class="anchor" aria-hidden="true" id="schema管理服务"></a><a href="#schema管理服务" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
-<p>Pulsar has a built in <a href="concepts-schema-registry">Schema Registry</a> and comes bundled with a variety of popular schema types(avro, json and protobuf). Pulsar Functions can leverage existing schema information from input topics to derive the input type. The same applies for output topic as well.</p>
-<h3><a class="anchor" aria-hidden="true" id="serde"></a><a href="#serde" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>Pulsar内置了 <a href="concepts-schema-registry">Schema注册表</a>,并且捆绑了许多主流的schema类型(avro, json and protobuf)。 Pulsar函数可以利用输入主题中的已有的Schema信息来约束输入类型。 从主题输出也同样如此。</p>
+<h3><a class="anchor" aria-hidden="true" id="序列化和反序列化"></a><a href="#序列化和反序列化" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
 <p>SerDe stands for <strong>Ser</strong>ialization and <strong>De</strong>serialization. All Pulsar Functions use SerDe for message handling. How SerDe works by default depends on the language you're using for a particular function:</p>
 <ul>
-<li>In <a href="#python-serde">Python</a>, the default SerDe is identity, meaning that the type is serialized as whatever type the producer function returns</li>
-<li>In <a href="#java-serde">Java</a>, a number of commonly used types (<code>String</code>s, <code>Integer</code>s, etc.) are supported by default</li>
+<li>在 <a href="#python-serde">Python</a> 中, 默认的 serde 是标识, 这意味着该类型被序列化为生成函数返回的任何类型。</li>
+<li>在<a href="#java-serde">Java</a>里,许多常用的类型(<code>String</code>,<code>Integer</code>, 等等) 都默认支持。</li>
 </ul>
 <p>In both languages, however, you can write your own custom SerDe logic for more complex, application-specific types. See the docs for <a href="#java-serde">Java</a> and <a href="#python-serde">Python</a> for language-specific instructions.</p>
 <h3><a class="anchor" aria-hidden="true" id="context"></a><a href="#context" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -640,7 +640,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li><li><a hr [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li><li><a hr [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/functions-api/index.html b/content/docs/zh-CN/functions-api/index.html
index c1e7049..b47dbfb 100644
--- a/content/docs/zh-CN/functions-api/index.html
+++ b/content/docs/zh-CN/functions-api/index.html
@@ -81,17 +81,17 @@
 <li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="部署示例"></a><a href="#部署示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
-<pre><code class="bash">$ bin/pulsar-admin functions localrun \
-  --py sanitizer.py \          # The Python file with the function's code
-  --classname sanitizer \      # The class or function holding the processing logic
-  --tenant public \            # The function's tenant (derived from the topic name by default)
-  --namespace default \        # The function's namespace (derived from the topic name by default)
-  --name sanitizer-function \  # The name of the function (the class name by default)
-  --inputs dirty-strings-in \  # The input topic(s) for the function
-  --output clean-strings-out \ # The output topic for the function
-  --log-topic sanitizer-logs   # The topic to which all functions logs are published
-`</pre> 
+<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是<a href="/docs/zh-CN/pulsar-admin#functions"><code>functions</code></a>命令。 如下的示例命令,它将在 <a href="/docs/zh-CN/functions-deploying#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
+  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
+  --classname sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
+  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
+  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
+  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
+  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
+  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
+  --<span class="hljs-built_in">log</span>-topic sanitizer-logs   <span class="hljs-comment"># The topic to which all functions logs are published</span>
+</code></pre>
 <p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/functions-deploying">部署Pulsar Functions</a> 文档。</p>
 <h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
@@ -101,14 +101,14 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
-<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">提供开发语言自身接口不提供的一系列功能的特定Pulsar类库。</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
 </tbody>
 </table>
-<p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
+<p>例如, 在 python 中, 语言自带函数没有外部依赖,它会向所有传入的字符串添加一个感叹号,并将结果字符串发布到主题:</p>
 <pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">process</span><span class="hljs-params">(input)</span>:</span>
     <span class="hljs-keyword">return</span> <span class="hljs-string">"{}!"</span>.format(input)
 </code></pre>
-<p>This function, however, would use the Pulsar Functions <a href="#python-sdk-functions">SDK for Python</a>:</p>
+<p>然而,在这个函数里你会看到Pulsar Function为Python提供的<a href="#python-sdk-functions">SDK</a>:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Function
 
 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DisplayFunctionName</span><span class="hljs-params">(Function)</span>:</span>
@@ -116,15 +116,15 @@
         function_name = context.function_name()
         <span class="hljs-keyword">return</span> <span class="hljs-string">"The function processing this message has the name {0}"</span>.format(function_name)
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="functions-messages-and-message-types"></a><a href="#functions-messages-and-message-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>Pulsar Functions can take byte arrays as inputs and spit out byte arrays as output. However in languages that support typed interfaces(just Java at the moment) one can write typed Functions as well. In this scenario, there are two ways one can bind messages to types. * <a href="#Schema-Registry">Schema Registry</a> * <a href="#SerDe">SerDe</a></p>
+<h3><a class="anchor" aria-hidden="true" id="函数-消息和消息类型"></a><a href="#函数-消息和消息类型" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>Pulsar函数可以将字节数据作为输入,并且同样可以输出字节数组。 但是,在支持类型化接口的语言中(目前只有Java),也可以编写类型化函数。 在这种情况下, 有两种方法可以将消息绑定到类型。 * <a href="#Schema-Registry">注册Schema</a> * <a href="#SerDe">SerDe</a></p>
 <h3><a class="anchor" aria-hidden="true" id="schema管理服务"></a><a href="#schema管理服务" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
-<p>Pulsar has a built in <a href="concepts-schema-registry">Schema Registry</a> and comes bundled with a variety of popular schema types(avro, json and protobuf). Pulsar Functions can leverage existing schema information from input topics to derive the input type. The same applies for output topic as well.</p>
-<h3><a class="anchor" aria-hidden="true" id="serde"></a><a href="#serde" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>Pulsar内置了 <a href="concepts-schema-registry">Schema注册表</a>,并且捆绑了许多主流的schema类型(avro, json and protobuf)。 Pulsar函数可以利用输入主题中的已有的Schema信息来约束输入类型。 从主题输出也同样如此。</p>
+<h3><a class="anchor" aria-hidden="true" id="序列化和反序列化"></a><a href="#序列化和反序列化" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
 <p>SerDe stands for <strong>Ser</strong>ialization and <strong>De</strong>serialization. All Pulsar Functions use SerDe for message handling. How SerDe works by default depends on the language you're using for a particular function:</p>
 <ul>
-<li>In <a href="#python-serde">Python</a>, the default SerDe is identity, meaning that the type is serialized as whatever type the producer function returns</li>
-<li>In <a href="#java-serde">Java</a>, a number of commonly used types (<code>String</code>s, <code>Integer</code>s, etc.) are supported by default</li>
+<li>在 <a href="#python-serde">Python</a> 中, 默认的 serde 是标识, 这意味着该类型被序列化为生成函数返回的任何类型。</li>
+<li>在<a href="#java-serde">Java</a>里,许多常用的类型(<code>String</code>,<code>Integer</code>, 等等) 都默认支持。</li>
 </ul>
 <p>In both languages, however, you can write your own custom SerDe logic for more complex, application-specific types. See the docs for <a href="#java-serde">Java</a> and <a href="#python-serde">Python</a> for language-specific instructions.</p>
 <h3><a class="anchor" aria-hidden="true" id="context"></a><a href="#context" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -640,7 +640,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li><li><a hr [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li><li><a hr [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/admin-api-persistent-topics.html b/content/docs/zh-CN/next/admin-api-persistent-topics.html
index 8b83a9c..55ceda0 100644
--- a/content/docs/zh-CN/next/admin-api-persistent-topics.html
+++ b/content/docs/zh-CN/next/admin-api-persistent-topics.html
@@ -240,9 +240,9 @@ admin.persistentTopics().getStats(topic);
 <li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
 <li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
 <li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
-<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
-<li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
-<li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 如果entryid是-1,这代表ledger已经被打开或者正在被打开,但是还没有entry被写入。</p></li>
+<li><p><strong>state</strong>: 要写入的ledger的状态。LedgerOpened表示有打开的ledger用来保存发布的消息。</p></li>
+<li><p><strong>ledgers</strong>:本topic保存消息的有序ledger列表。</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
 <li><p><strong>markDeletePosition</strong>: The ack position: the last message the subscriber acknowledged receiving</p></li>
 <li><p><strong>readPosition</strong>: The latest position of subscriber for reading message</p></li>
diff --git a/content/docs/zh-CN/next/admin-api-persistent-topics/index.html b/content/docs/zh-CN/next/admin-api-persistent-topics/index.html
index 8b83a9c..55ceda0 100644
--- a/content/docs/zh-CN/next/admin-api-persistent-topics/index.html
+++ b/content/docs/zh-CN/next/admin-api-persistent-topics/index.html
@@ -240,9 +240,9 @@ admin.persistentTopics().getStats(topic);
 <li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
 <li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
 <li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
-<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
-<li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
-<li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 如果entryid是-1,这代表ledger已经被打开或者正在被打开,但是还没有entry被写入。</p></li>
+<li><p><strong>state</strong>: 要写入的ledger的状态。LedgerOpened表示有打开的ledger用来保存发布的消息。</p></li>
+<li><p><strong>ledgers</strong>:本topic保存消息的有序ledger列表。</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
 <li><p><strong>markDeletePosition</strong>: The ack position: the last message the subscriber acknowledged receiving</p></li>
 <li><p><strong>readPosition</strong>: The latest position of subscriber for reading message</p></li>
diff --git a/content/docs/zh-CN/next/concepts-architecture-overview.html b/content/docs/zh-CN/next/concepts-architecture-overview.html
index 0d26211..f3d7432 100644
--- a/content/docs/zh-CN/next/concepts-architecture-overview.html
+++ b/content/docs/zh-CN/next/concepts-architecture-overview.html
@@ -55,7 +55,7 @@
 <li>用于Pulsar集群操作的该Pulsar集群独有的ZooKeeper</li>
 </ul>
 <p>下图展示了一个Pulsar集群:</p>
-<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar architecture diagram"></p>
+<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar架构图"></p>
 <p>在更细粒度的实例级别, 有一个能访问到全部实例的ZooKeeper群集处理涉及多个pulsar集群的配置协调任务, 例如 <a href="/docs/zh-CN/next/concepts-replication">异地复制</a>。</p>
 <h2><a class="anchor" aria-hidden="true" id="brokers"></a><a href="#brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Pulsar的broker是一个无状态组件, 主要负责运行另外的两个组件:</p>
@@ -107,7 +107,7 @@
 <p>Pulsar也支持临时消息( (<a href="/docs/zh-CN/next/concepts-messaging#non-persistent-topics">非持久消息</a>) )存储。</p>
 </blockquote>
 <p>下图展示了brokers和bookies是如何交互的</p>
-<p><img src="/docs/assets/broker-bookie.png" alt="Brokers and bookies"></p>
+<p><img src="/docs/assets/broker-bookie.png" alt="Brokers和bookies"></p>
 <h3><a class="anchor" aria-hidden="true" id="ledgers"></a><a href="#ledgers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Ledger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个BookKeeper存储节点(就是Bookies)的写入。 Ledger的条目会被复制到多个bookies。 Ledgers本身有着非常简单的语义:</p>
 <ul>
@@ -132,26 +132,26 @@
 <blockquote>
 <p>为了性能和容错,你可以运行任意个Pulsar proxy。</p>
 </blockquote>
-<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 When starting the proxy on a machine, you only need to provide ZooKeeper connection strings for the cluster-specific and instance-wide configuration store clusters. Here's an example:</p>
+<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 当启动代理时,你只需要提供用于集群独有和实例范围的配置存储的ZooKeeper连接串。 Here's an example:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar proxy \
   --zookeeper-servers zk-0,zk-1,zk-2 \
   --configuration-store-servers zk-0,zk-1,zk-2
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-docs"></a><a href="#pulsar-proxy-docs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>For documentation on using the Pulsar proxy, see the <a href="/docs/zh-CN/next/administration-proxy">Pulsar proxy admin documentation</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-文档"></a><a href="#pulsar-proxy-文档" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>如何使用Pulsar proxy,参考 <a href="/docs/zh-CN/next/administration-proxy">Pulsar proxy 管理指南</a>。</p>
 </blockquote>
-<p>Some important things to know about the Pulsar proxy:</p>
+<p>关于Pulsar proxy有一些比较重要的注意点:</p>
 <ul>
-<li>Connecting clients don't need to provide <em>any</em> specific configuration to use the Pulsar proxy. You won't need to update the client configuration for existing applications beyond updating the IP used for the service URL (for example if you're running a load balancer over the Pulsar proxy).</li>
-<li><a href="/docs/zh-CN/next/security-tls-transport">TLS encryption</a> and <a href="/docs/zh-CN/next/security-tls-authentication">authentication</a> is supported by the Pulsar proxy</li>
+<li>连接客户端不需要为使用Pulsar proxy提供<em>任何</em>特定配置。 除了更新用于服务URL的IP之外,你不需要为现有的应用更新客户端配置(例如你在Pulsar proxy上层架设运行了负载均衡器)。</li>
+<li>Pulsar proxy支持<a href="/docs/zh-CN/next/security-tls-transport">TLS 加密</a> 和 <a href="/docs/zh-CN/next/security-tls-authentication">认证</a>。</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="service-discovery"></a><a href="#service-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p><a href="/docs/zh-CN/next/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the <a href="/docs/zh-CN/next/deploy-bare-metal#service-discovery-setup">Deploying a Pulsar instance</a> guide.</p>
-<p>You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as <code>http://pulsar.us-west.example.com:8080</code>, the client needs to be redirected to <em>some</em> active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.</p>
-<p>The diagram below illustrates Pulsar service discovery:</p>
+<p><a href="/docs/zh-CN/next/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar内部提供了服务发现的机制,你可以通过 <a href="/docs/zh-CN/next/deploy-bare-metal#service-discovery-setup">配置Pulsar实例指南</a>设置。</p>
+<p>你也可以用你自己的服务发现系统。 如果你用你自己的系统,只需满足一个需求:当客户端发送一个HTTP请求,例如发到<code>http://pulsar.us-west.example.com:8080</code>,客户端需要被重定向到<em>某些</em>所需的集群中活跃的broker,或者通过DNS,或者通过HTTP和IP重定向,或者其他机制。</p>
+<p>下面这张图展示了Pulsar服务发现机制:</p>
 <p><img src="/docs/assets/pulsar-service-discovery.png" alt="alt-text"></p>
-<p>In this diagram, the Pulsar cluster is addressable via a single DNS name: <code>pulsar-cluster.acme.com</code>. A <a href="/docs/zh-CN/next/client-libraries-python">Python client</a>, for example, could access this Pulsar cluster like this:</p>
+<p>图中,Pulsar集群可以通过一个DNS名称寻址:<code>pulsar-cluster.acme.com</code>。 例如<a href="/docs/zh-CN/next/client-libraries-python">Python客户端</a>,可以像这样访问这个Pulsar集群:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client
 
 client = Client(<span class="hljs-string">'pulsar://pulsar-cluster.acme.com:6650'</span>)
diff --git a/content/docs/zh-CN/next/concepts-architecture-overview/index.html b/content/docs/zh-CN/next/concepts-architecture-overview/index.html
index 0d26211..f3d7432 100644
--- a/content/docs/zh-CN/next/concepts-architecture-overview/index.html
+++ b/content/docs/zh-CN/next/concepts-architecture-overview/index.html
@@ -55,7 +55,7 @@
 <li>用于Pulsar集群操作的该Pulsar集群独有的ZooKeeper</li>
 </ul>
 <p>下图展示了一个Pulsar集群:</p>
-<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar architecture diagram"></p>
+<p><img src="/docs/assets/pulsar-system-architecture.png" alt="Pulsar架构图"></p>
 <p>在更细粒度的实例级别, 有一个能访问到全部实例的ZooKeeper群集处理涉及多个pulsar集群的配置协调任务, 例如 <a href="/docs/zh-CN/next/concepts-replication">异地复制</a>。</p>
 <h2><a class="anchor" aria-hidden="true" id="brokers"></a><a href="#brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Pulsar的broker是一个无状态组件, 主要负责运行另外的两个组件:</p>
@@ -107,7 +107,7 @@
 <p>Pulsar也支持临时消息( (<a href="/docs/zh-CN/next/concepts-messaging#non-persistent-topics">非持久消息</a>) )存储。</p>
 </blockquote>
 <p>下图展示了brokers和bookies是如何交互的</p>
-<p><img src="/docs/assets/broker-bookie.png" alt="Brokers and bookies"></p>
+<p><img src="/docs/assets/broker-bookie.png" alt="Brokers和bookies"></p>
 <h3><a class="anchor" aria-hidden="true" id="ledgers"></a><a href="#ledgers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Ledger是一个只追加的数据结构,并且只有一个写入器,这个写入器负责多个BookKeeper存储节点(就是Bookies)的写入。 Ledger的条目会被复制到多个bookies。 Ledgers本身有着非常简单的语义:</p>
 <ul>
@@ -132,26 +132,26 @@
 <blockquote>
 <p>为了性能和容错,你可以运行任意个Pulsar proxy。</p>
 </blockquote>
-<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 When starting the proxy on a machine, you only need to provide ZooKeeper connection strings for the cluster-specific and instance-wide configuration store clusters. Here's an example:</p>
+<p>架构上来看,Pulsar Proxy从ZooKeeper上面读取他所需要的所有信息。 当启动代理时,你只需要提供用于集群独有和实例范围的配置存储的ZooKeeper连接串。 Here's an example:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar proxy \
   --zookeeper-servers zk-0,zk-1,zk-2 \
   --configuration-store-servers zk-0,zk-1,zk-2
 </code></pre>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-docs"></a><a href="#pulsar-proxy-docs" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>For documentation on using the Pulsar proxy, see the <a href="/docs/zh-CN/next/administration-proxy">Pulsar proxy admin documentation</a>.</p>
+<h4><a class="anchor" aria-hidden="true" id="pulsar-proxy-文档"></a><a href="#pulsar-proxy-文档" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<p>如何使用Pulsar proxy,参考 <a href="/docs/zh-CN/next/administration-proxy">Pulsar proxy 管理指南</a>。</p>
 </blockquote>
-<p>Some important things to know about the Pulsar proxy:</p>
+<p>关于Pulsar proxy有一些比较重要的注意点:</p>
 <ul>
-<li>Connecting clients don't need to provide <em>any</em> specific configuration to use the Pulsar proxy. You won't need to update the client configuration for existing applications beyond updating the IP used for the service URL (for example if you're running a load balancer over the Pulsar proxy).</li>
-<li><a href="/docs/zh-CN/next/security-tls-transport">TLS encryption</a> and <a href="/docs/zh-CN/next/security-tls-authentication">authentication</a> is supported by the Pulsar proxy</li>
+<li>连接客户端不需要为使用Pulsar proxy提供<em>任何</em>特定配置。 除了更新用于服务URL的IP之外,你不需要为现有的应用更新客户端配置(例如你在Pulsar proxy上层架设运行了负载均衡器)。</li>
+<li>Pulsar proxy支持<a href="/docs/zh-CN/next/security-tls-transport">TLS 加密</a> 和 <a href="/docs/zh-CN/next/security-tls-authentication">认证</a>。</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="service-discovery"></a><a href="#service-discovery" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p><a href="/docs/zh-CN/next/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the <a href="/docs/zh-CN/next/deploy-bare-metal#service-discovery-setup">Deploying a Pulsar instance</a> guide.</p>
-<p>You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as <code>http://pulsar.us-west.example.com:8080</code>, the client needs to be redirected to <em>some</em> active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.</p>
-<p>The diagram below illustrates Pulsar service discovery:</p>
+<p><a href="/docs/zh-CN/next/client-libraries">Clients</a> connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar内部提供了服务发现的机制,你可以通过 <a href="/docs/zh-CN/next/deploy-bare-metal#service-discovery-setup">配置Pulsar实例指南</a>设置。</p>
+<p>你也可以用你自己的服务发现系统。 如果你用你自己的系统,只需满足一个需求:当客户端发送一个HTTP请求,例如发到<code>http://pulsar.us-west.example.com:8080</code>,客户端需要被重定向到<em>某些</em>所需的集群中活跃的broker,或者通过DNS,或者通过HTTP和IP重定向,或者其他机制。</p>
+<p>下面这张图展示了Pulsar服务发现机制:</p>
 <p><img src="/docs/assets/pulsar-service-discovery.png" alt="alt-text"></p>
-<p>In this diagram, the Pulsar cluster is addressable via a single DNS name: <code>pulsar-cluster.acme.com</code>. A <a href="/docs/zh-CN/next/client-libraries-python">Python client</a>, for example, could access this Pulsar cluster like this:</p>
+<p>图中,Pulsar集群可以通过一个DNS名称寻址:<code>pulsar-cluster.acme.com</code>。 例如<a href="/docs/zh-CN/next/client-libraries-python">Python客户端</a>,可以像这样访问这个Pulsar集群:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Client
 
 client = Client(<span class="hljs-string">'pulsar://pulsar-cluster.acme.com:6650'</span>)
diff --git a/content/docs/zh-CN/next/concepts-architecture.html b/content/docs/zh-CN/next/concepts-architecture.html
index 08b2ef1..dba9477 100644
--- a/content/docs/zh-CN/next/concepts-architecture.html
+++ b/content/docs/zh-CN/next/concepts-architecture.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar concepts and architecture · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;id: concepts-architecture&lt;/p&gt;
-"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar concepts and architecture · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;id: concepts-architecture&lt;/p&gt;
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar概念和架构 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;id: 概念架构&lt;/p&gt;
+"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar概念和架构 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;id: 概念架构&lt;/p&gt;
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -20,9 +20,9 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
-title: Pulsar concepts and architecture
-sidebar_label: Concepts and architecture</p>
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
+title: Pulsar概念和架构
+sidebar_label: 概念和架构</p>
 <hr>
 </span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/next/concepts-architecture/index.html b/content/docs/zh-CN/next/concepts-architecture/index.html
index 08b2ef1..dba9477 100644
--- a/content/docs/zh-CN/next/concepts-architecture/index.html
+++ b/content/docs/zh-CN/next/concepts-architecture/index.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar concepts and architecture · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;id: concepts-architecture&lt;/p&gt;
-"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar concepts and architecture · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;id: concepts-architecture&lt;/p&gt;
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar概念和架构 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;id: 概念架构&lt;/p&gt;
+"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar概念和架构 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;id: 概念架构&lt;/p&gt;
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -20,9 +20,9 @@
             languagesDropDown.className = "hide";
           }
         });
-      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
-title: Pulsar concepts and architecture
-sidebar_label: Concepts and architecture</p>
+      </script></span><li class="navSearchWrapper reactNavSearchWrapper"><input type="text" id="search_input_react" placeholder="Search" title="Search"/></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Tran [...]
+title: Pulsar概念和架构
+sidebar_label: 概念和架构</p>
 <hr>
 </span></div></article></div><div class="docs-prevnext"></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/next/deploy-bare-metal.html b/content/docs/zh-CN/next/deploy-bare-metal.html
index 0f71c33..daddcb2 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal.html
@@ -70,7 +70,7 @@
 <blockquote>
 <p>If you already have an existing zookeeper cluster and would like to reuse it, you don't need to prepare the machines for running ZooKeeper.</p>
 </blockquote>
-<p>To run Pulsar on bare metal, you will need:</p>
+<p>To run Pulsar on bare metal, you are recommended to have:</p>
 <ul>
 <li>At least 6 Linux machines or VMs
 <ul>
@@ -79,6 +79,9 @@
 </ul></li>
 <li>A single <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> name covering all of the Pulsar broker hosts</li>
 </ul>
+<blockquote>
+<p>However if you don't have enough machines, or are trying out Pulsar in cluster mode (and expand the cluster later), you can even deploy Pulsar in one node, where it will run zookeeper, bookie and broker in same machine.</p>
+</blockquote>
 <p>Each machine in your cluster will need to have <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a> or higher installed.</p>
 <p>Here's a diagram showing the basic setup:</p>
 <p><img src="/docs/assets/pulsar-basic-setup.png" alt="alt-text"></p>
@@ -169,6 +172,9 @@ pulsar-io-twitter-2.2.0.nar
 <span class="hljs-meta">server.2</span>=<span class="hljs-string">zk2.us-west.example.com:2888:3888</span>
 <span class="hljs-meta">server.3</span>=<span class="hljs-string">zk3.us-west.example.com:2888:3888</span>
 </code></pre>
+<blockquote>
+<p>If you have only one machine to deploy Pulsar, you just need to add one server entry in the configuration file.</p>
+</blockquote>
 <p>On each host, you need to specify the ID of the node in each node's <code>myid</code> file, which is in each server's <code>data/zookeeper</code> folder by default (this can be changed via the <a href="/docs/zh-CN/next/reference-configuration#zookeeper-dataDir"><code>dataDir</code></a> parameter).</p>
 <blockquote>
 <p>See the <a href="https://zookeeper.apache.org/doc/r3.4.10/zookeeperAdmin.html#sc_zkMulitServerSetup">Multi-server setup guide</a> in the ZooKeeper documentation for detailed info on <code>myid</code> and more.</p>
@@ -249,30 +255,51 @@ $ bin/pulsar-daemon start bookie
 <p>You also need to specify the cluster name (matching the name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="enabling-pulsar-functions-optional"></a><a href="#enabling-pulsar-functions-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>If you want to enable <a href="functions-overview.md">Pulsar Functions</a>, you can follow the instructions as below:</p>
-<ol>
-<li><p>Edit <code>conf/broker.conf</code> to enable function worker, by setting <code>functionsWorkerEnabled</code> to <code>true</code>.</p>
-<pre><code class="hljs css language-conf"><span class="hljs-attr">functionsWorkerEnabled</span>=<span class="hljs-literal">true</span>
-</code></pre></li>
-</ol>
-<ol start="2">
-<li><p>Edit <code>conf/functions_worker.yml</code> and set <code>pulsarFunctionsCluster</code> to the cluster name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>.</p>
-<pre><code class="hljs css language-conf">pulsarFunctionsCluster: pulsar-cluster<span class="hljs-number">-1</span>
-</code></pre></li>
-</ol>
-<h3><a class="anchor" aria-hidden="true" id="starting-brokers"></a><a href="#starting-brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>You can then provide any other configuration changes that you'd like in the <a href="reference-configuration.md#broker"><code>conf/broker.conf</code></a> file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.</p>
-<p>You can start a broker in the foreground using the <a href="reference-cli-tools.md#pulsar-broker"><code>pulsar broker</code></a> command:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar broker
-</code></pre>
-<p>You can start a broker in the background using the <a href="reference-cli-tools.md#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<blockquote>
+<p>If you deploy Pulsar in a one-node cluster, you should update the replication settings in <code>conf/broker.conf</code> to <code>1</code></p>
+<pre><code class="hljs css language-properties"></code></pre>
+</blockquote>
+<h1><a class="anchor" aria-hidden="true" id="number-of-bookies-to-use-when-creating-a-ledger"></a><a href="#number-of-bookies-to-use-when-creating-a-ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9 [...]
+<p>managedLedgerDefaultEnsembleSize=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-copies-to-store-for-each-message"></a><a href="#number-of-copies-to-store-for-each-message" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>managedLedgerDefaultWriteQuorum=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-guaranteed-copies-acks-to-wait-before-write-is-complete"></a><a href="#number-of-guaranteed-copies-acks-to-wait-before-write-is-complete" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4  [...]
+<p>managedLedgerDefaultAckQuorum=1</p>
+<pre><code class="hljs">
+<span class="hljs-section">### Enabling Pulsar Functions (optional)</span>
+
+If you want to enable [<span class="hljs-string">Pulsar Functions</span>](<span class="hljs-link">/docs/zh-CN/next/functions-overview</span>), you can follow the instructions as below:
+
+<span class="hljs-bullet">1. </span>Edit <span class="hljs-code">`conf/broker.conf`</span> to enable function worker, by setting <span class="hljs-code">`functionsWorkerEnabled`</span> to <span class="hljs-code">`true`</span>.
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      functionsWorkerEnabled=true</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-bullet">2. </span>Edit <span class="hljs-code">`conf/functions_worker.yml`</span> and set <span class="hljs-code">`pulsarFunctionsCluster`</span> to the cluster name that you provided when [<span class="hljs-string">initializing the cluster's metadata</span>](<span class="hljs-link">#initializing-cluster-metadata</span>).
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      pulsarFunctionsCluster: pulsar-cluster-1</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-section">### Starting Brokers</span>
+
+You can then provide any other configuration changes that you'd like in the [<span class="hljs-string">`conf/broker.conf`</span>](<span class="hljs-link">/docs/zh-CN/next/reference-configuration#broker</span>) file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.
+
+You can start a broker in the foreground using the [<span class="hljs-string">`pulsar broker`</span>](<span class="hljs-link">/docs/zh-CN/next/reference-cli-tools#pulsar-broker</span>) command:
+
+<span class="hljs-code">```bash
+$ bin/pulsar broker
+</span></code></pre>
+<p>You can start a broker in the background using the <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-daemon start broker
 </code></pre>
 <p>Once you've succesfully started up all the brokers you intend to use, your Pulsar cluster should be ready to go!</p>
 <h2><a class="anchor" aria-hidden="true" id="connecting-to-the-running-cluster"></a><a href="#connecting-to-the-running-cluster" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="reference-cli-tools.md#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
-<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="reference-configuration.md#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
+<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
+<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="/docs/zh-CN/next/reference-configuration#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">http://us-west.example.com:8080/</span>
 <span class="hljs-attr">brokerServiceurl</span>=<span class="hljs-string">pulsar://us-west.example.com:6650/</span>
 </code></pre>
@@ -300,13 +327,13 @@ $ bin/pulsar-daemon start bookie
   --namespace default \
   --name exclamation
 </code></pre>
-<p>Check if the function is running as expected by <a href="functions-deploying.md#triggering-pulsar-functions">triggering</a> the function.</p>
+<p>Check if the function is running as expected by <a href="/docs/zh-CN/next/functions-deploying#triggering-pulsar-functions">triggering</a> the function.</p>
 <pre><code class="hljs css language-bash">bin/pulsar-admin <span class="hljs-built_in">functions</span> trigger --name exclamation --trigger-value <span class="hljs-string">"hello world"</span>
 </code></pre>
 <p>You will see output as below:</p>
 <pre><code class="hljs css language-shell">hello world!
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/zh-CN/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href=" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/zh-CN/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href=" [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/deploy-bare-metal/index.html b/content/docs/zh-CN/next/deploy-bare-metal/index.html
index 0f71c33..daddcb2 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal/index.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal/index.html
@@ -70,7 +70,7 @@
 <blockquote>
 <p>If you already have an existing zookeeper cluster and would like to reuse it, you don't need to prepare the machines for running ZooKeeper.</p>
 </blockquote>
-<p>To run Pulsar on bare metal, you will need:</p>
+<p>To run Pulsar on bare metal, you are recommended to have:</p>
 <ul>
 <li>At least 6 Linux machines or VMs
 <ul>
@@ -79,6 +79,9 @@
 </ul></li>
 <li>A single <a href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> name covering all of the Pulsar broker hosts</li>
 </ul>
+<blockquote>
+<p>However if you don't have enough machines, or are trying out Pulsar in cluster mode (and expand the cluster later), you can even deploy Pulsar in one node, where it will run zookeeper, bookie and broker in same machine.</p>
+</blockquote>
 <p>Each machine in your cluster will need to have <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java 8</a> or higher installed.</p>
 <p>Here's a diagram showing the basic setup:</p>
 <p><img src="/docs/assets/pulsar-basic-setup.png" alt="alt-text"></p>
@@ -169,6 +172,9 @@ pulsar-io-twitter-2.2.0.nar
 <span class="hljs-meta">server.2</span>=<span class="hljs-string">zk2.us-west.example.com:2888:3888</span>
 <span class="hljs-meta">server.3</span>=<span class="hljs-string">zk3.us-west.example.com:2888:3888</span>
 </code></pre>
+<blockquote>
+<p>If you have only one machine to deploy Pulsar, you just need to add one server entry in the configuration file.</p>
+</blockquote>
 <p>On each host, you need to specify the ID of the node in each node's <code>myid</code> file, which is in each server's <code>data/zookeeper</code> folder by default (this can be changed via the <a href="/docs/zh-CN/next/reference-configuration#zookeeper-dataDir"><code>dataDir</code></a> parameter).</p>
 <blockquote>
 <p>See the <a href="https://zookeeper.apache.org/doc/r3.4.10/zookeeperAdmin.html#sc_zkMulitServerSetup">Multi-server setup guide</a> in the ZooKeeper documentation for detailed info on <code>myid</code> and more.</p>
@@ -249,30 +255,51 @@ $ bin/pulsar-daemon start bookie
 <p>You also need to specify the cluster name (matching the name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">clusterName</span>=<span class="hljs-string">pulsar-cluster-1</span>
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="enabling-pulsar-functions-optional"></a><a href="#enabling-pulsar-functions-optional" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>If you want to enable <a href="functions-overview.md">Pulsar Functions</a>, you can follow the instructions as below:</p>
-<ol>
-<li><p>Edit <code>conf/broker.conf</code> to enable function worker, by setting <code>functionsWorkerEnabled</code> to <code>true</code>.</p>
-<pre><code class="hljs css language-conf"><span class="hljs-attr">functionsWorkerEnabled</span>=<span class="hljs-literal">true</span>
-</code></pre></li>
-</ol>
-<ol start="2">
-<li><p>Edit <code>conf/functions_worker.yml</code> and set <code>pulsarFunctionsCluster</code> to the cluster name that you provided when <a href="#initializing-cluster-metadata">initializing the cluster's metadata</a>.</p>
-<pre><code class="hljs css language-conf">pulsarFunctionsCluster: pulsar-cluster<span class="hljs-number">-1</span>
-</code></pre></li>
-</ol>
-<h3><a class="anchor" aria-hidden="true" id="starting-brokers"></a><a href="#starting-brokers" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>You can then provide any other configuration changes that you'd like in the <a href="reference-configuration.md#broker"><code>conf/broker.conf</code></a> file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.</p>
-<p>You can start a broker in the foreground using the <a href="reference-cli-tools.md#pulsar-broker"><code>pulsar broker</code></a> command:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar broker
-</code></pre>
-<p>You can start a broker in the background using the <a href="reference-cli-tools.md#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
+<blockquote>
+<p>If you deploy Pulsar in a one-node cluster, you should update the replication settings in <code>conf/broker.conf</code> to <code>1</code></p>
+<pre><code class="hljs css language-properties"></code></pre>
+</blockquote>
+<h1><a class="anchor" aria-hidden="true" id="number-of-bookies-to-use-when-creating-a-ledger"></a><a href="#number-of-bookies-to-use-when-creating-a-ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9 [...]
+<p>managedLedgerDefaultEnsembleSize=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-copies-to-store-for-each-message"></a><a href="#number-of-copies-to-store-for-each-message" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c [...]
+<p>managedLedgerDefaultWriteQuorum=1</p>
+<h1><a class="anchor" aria-hidden="true" id="number-of-guaranteed-copies-acks-to-wait-before-write-is-complete"></a><a href="#number-of-guaranteed-copies-acks-to-wait-before-write-is-complete" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4  [...]
+<p>managedLedgerDefaultAckQuorum=1</p>
+<pre><code class="hljs">
+<span class="hljs-section">### Enabling Pulsar Functions (optional)</span>
+
+If you want to enable [<span class="hljs-string">Pulsar Functions</span>](<span class="hljs-link">/docs/zh-CN/next/functions-overview</span>), you can follow the instructions as below:
+
+<span class="hljs-bullet">1. </span>Edit <span class="hljs-code">`conf/broker.conf`</span> to enable function worker, by setting <span class="hljs-code">`functionsWorkerEnabled`</span> to <span class="hljs-code">`true`</span>.
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      functionsWorkerEnabled=true</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-bullet">2. </span>Edit <span class="hljs-code">`conf/functions_worker.yml`</span> and set <span class="hljs-code">`pulsarFunctionsCluster`</span> to the cluster name that you provided when [<span class="hljs-string">initializing the cluster's metadata</span>](<span class="hljs-link">#initializing-cluster-metadata</span>).
+  
+<span class="hljs-code">      ```conf</span>
+<span class="hljs-code">      pulsarFunctionsCluster: pulsar-cluster-1</span>
+<span class="hljs-code">      ```</span>
+<span class="hljs-code">      </span>
+
+<span class="hljs-section">### Starting Brokers</span>
+
+You can then provide any other configuration changes that you'd like in the [<span class="hljs-string">`conf/broker.conf`</span>](<span class="hljs-link">/docs/zh-CN/next/reference-configuration#broker</span>) file. Once you've decided on a configuration, you can start up the brokers for your Pulsar cluster. Like ZooKeeper and BookKeeper, brokers can be started either in the foreground or in the background, using nohup.
+
+You can start a broker in the foreground using the [<span class="hljs-string">`pulsar broker`</span>](<span class="hljs-link">/docs/zh-CN/next/reference-cli-tools#pulsar-broker</span>) command:
+
+<span class="hljs-code">```bash
+$ bin/pulsar broker
+</span></code></pre>
+<p>You can start a broker in the background using the <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-daemon"><code>pulsar-daemon</code></a> CLI tool:</p>
 <pre><code class="hljs css language-bash">$ bin/pulsar-daemon start broker
 </code></pre>
 <p>Once you've succesfully started up all the brokers you intend to use, your Pulsar cluster should be ready to go!</p>
 <h2><a class="anchor" aria-hidden="true" id="connecting-to-the-running-cluster"></a><a href="#connecting-to-the-running-cluster" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S1 [...]
-<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="reference-cli-tools.md#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
-<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="reference-configuration.md#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
+<p>Once your Pulsar cluster is up and running, you should be able to connect with it using Pulsar clients. One such client is the <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> tool, which is included with the Pulsar binary package. The <code>pulsar-client</code> tool can publish messages to and consume messages from Pulsar topics and thus provides a simple way to make sure that your cluster is runnning properly.</p>
+<p>To use the <code>pulsar-client</code> tool, first modify the client configuration file in <a href="/docs/zh-CN/next/reference-configuration#client"><code>conf/client.conf</code></a> in your binary package. You'll need to change the values for <code>webServiceUrl</code> and <code>brokerServiceUrl</code>, substituting <code>localhost</code> (which is the default), with the DNS name that you've assigned to your broker/bookie hosts. Here's an example:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">http://us-west.example.com:8080/</span>
 <span class="hljs-attr">brokerServiceurl</span>=<span class="hljs-string">pulsar://us-west.example.com:6650/</span>
 </code></pre>
@@ -300,13 +327,13 @@ $ bin/pulsar-daemon start bookie
   --namespace default \
   --name exclamation
 </code></pre>
-<p>Check if the function is running as expected by <a href="functions-deploying.md#triggering-pulsar-functions">triggering</a> the function.</p>
+<p>Check if the function is running as expected by <a href="/docs/zh-CN/next/functions-deploying#triggering-pulsar-functions">triggering</a> the function.</p>
 <pre><code class="hljs css language-bash">bin/pulsar-admin <span class="hljs-built_in">functions</span> trigger --name exclamation --trigger-value <span class="hljs-string">"hello world"</span>
 </code></pre>
 <p>You will see output as below:</p>
 <pre><code class="hljs css language-shell">hello world!
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/zh-CN/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href=" [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/deploy-kubernetes"><span class="arrow-prev">← </span><span>Kubernetes</span></a><a class="docs-next button" href="/docs/zh-CN/next/deploy-bare-metal-multi-cluster"><span>Bare metal multi-cluster</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#preparation">Preparation</a><ul class="toc-headings"><li><a href=" [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/functions-api.html b/content/docs/zh-CN/next/functions-api.html
index 015ae72..09a5500 100644
--- a/content/docs/zh-CN/next/functions-api.html
+++ b/content/docs/zh-CN/next/functions-api.html
@@ -81,17 +81,17 @@
 <li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="部署示例"></a><a href="#部署示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
-<pre><code class="bash">$ bin/pulsar-admin functions localrun \
-  --py sanitizer.py \          # The Python file with the function's code
-  --classname sanitizer \      # The class or function holding the processing logic
-  --tenant public \            # The function's tenant (derived from the topic name by default)
-  --namespace default \        # The function's namespace (derived from the topic name by default)
-  --name sanitizer-function \  # The name of the function (the class name by default)
-  --inputs dirty-strings-in \  # The input topic(s) for the function
-  --output clean-strings-out \ # The output topic for the function
-  --log-topic sanitizer-logs   # The topic to which all functions logs are published
-`</pre> 
+<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是<a href="/docs/zh-CN/next/pulsar-admin#functions"><code>functions</code></a>命令。 如下的示例命令,它将在 <a href="/docs/zh-CN/next/functions-deploying#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
+  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
+  --classname sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
+  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
+  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
+  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
+  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
+  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
+  --<span class="hljs-built_in">log</span>-topic sanitizer-logs   <span class="hljs-comment"># The topic to which all functions logs are published</span>
+</code></pre>
 <p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/next/functions-deploying">部署Pulsar Functions</a> 文档。</p>
 <h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
@@ -101,14 +101,14 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
-<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">提供开发语言自身接口不提供的一系列功能的特定Pulsar类库。</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
 </tbody>
 </table>
-<p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
+<p>例如, 在 python 中, 语言自带函数没有外部依赖,它会向所有传入的字符串添加一个感叹号,并将结果字符串发布到主题:</p>
 <pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">process</span><span class="hljs-params">(input)</span>:</span>
     <span class="hljs-keyword">return</span> <span class="hljs-string">"{}!"</span>.format(input)
 </code></pre>
-<p>This function, however, would use the Pulsar Functions <a href="#python-sdk-functions">SDK for Python</a>:</p>
+<p>然而,在这个函数里你会看到Pulsar Function为Python提供的<a href="#python-sdk-functions">SDK</a>:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Function
 
 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DisplayFunctionName</span><span class="hljs-params">(Function)</span>:</span>
@@ -116,15 +116,15 @@
         function_name = context.function_name()
         <span class="hljs-keyword">return</span> <span class="hljs-string">"The function processing this message has the name {0}"</span>.format(function_name)
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="functions-messages-and-message-types"></a><a href="#functions-messages-and-message-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>Pulsar Functions can take byte arrays as inputs and spit out byte arrays as output. However in languages that support typed interfaces(just Java at the moment) one can write typed Functions as well. In this scenario, there are two ways one can bind messages to types. * <a href="#Schema-Registry">Schema Registry</a> * <a href="#SerDe">SerDe</a></p>
+<h3><a class="anchor" aria-hidden="true" id="函数-消息和消息类型"></a><a href="#函数-消息和消息类型" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>Pulsar函数可以将字节数据作为输入,并且同样可以输出字节数组。 但是,在支持类型化接口的语言中(目前只有Java),也可以编写类型化函数。 在这种情况下, 有两种方法可以将消息绑定到类型。 * <a href="#Schema-Registry">注册Schema</a> * <a href="#SerDe">SerDe</a></p>
 <h3><a class="anchor" aria-hidden="true" id="schema管理服务"></a><a href="#schema管理服务" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
-<p>Pulsar has a built in <a href="concepts-schema-registry">Schema Registry</a> and comes bundled with a variety of popular schema types(avro, json and protobuf). Pulsar Functions can leverage existing schema information from input topics to derive the input type. The same applies for output topic as well.</p>
-<h3><a class="anchor" aria-hidden="true" id="serde"></a><a href="#serde" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>Pulsar内置了 <a href="concepts-schema-registry">Schema注册表</a>,并且捆绑了许多主流的schema类型(avro, json and protobuf)。 Pulsar函数可以利用输入主题中的已有的Schema信息来约束输入类型。 从主题输出也同样如此。</p>
+<h3><a class="anchor" aria-hidden="true" id="序列化和反序列化"></a><a href="#序列化和反序列化" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
 <p>SerDe stands for <strong>Ser</strong>ialization and <strong>De</strong>serialization. All Pulsar Functions use SerDe for message handling. How SerDe works by default depends on the language you're using for a particular function:</p>
 <ul>
-<li>In <a href="#python-serde">Python</a>, the default SerDe is identity, meaning that the type is serialized as whatever type the producer function returns</li>
-<li>In <a href="#java-serde">Java</a>, a number of commonly used types (<code>String</code>s, <code>Integer</code>s, etc.) are supported by default</li>
+<li>在 <a href="#python-serde">Python</a> 中, 默认的 serde 是标识, 这意味着该类型被序列化为生成函数返回的任何类型。</li>
+<li>在<a href="#java-serde">Java</a>里,许多常用的类型(<code>String</code>,<code>Integer</code>, 等等) 都默认支持。</li>
 </ul>
 <p>In both languages, however, you can write your own custom SerDe logic for more complex, application-specific types. See the docs for <a href="#java-serde">Java</a> and <a href="#python-serde">Python</a> for language-specific instructions.</p>
 <h3><a class="anchor" aria-hidden="true" id="context"></a><a href="#context" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -640,7 +640,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/functions-api/index.html b/content/docs/zh-CN/next/functions-api/index.html
index 015ae72..09a5500 100644
--- a/content/docs/zh-CN/next/functions-api/index.html
+++ b/content/docs/zh-CN/next/functions-api/index.html
@@ -81,17 +81,17 @@
 <li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="部署示例"></a><a href="#部署示例" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
-<pre><code class="bash">$ bin/pulsar-admin functions localrun \
-  --py sanitizer.py \          # The Python file with the function's code
-  --classname sanitizer \      # The class or function holding the processing logic
-  --tenant public \            # The function's tenant (derived from the topic name by default)
-  --namespace default \        # The function's namespace (derived from the topic name by default)
-  --name sanitizer-function \  # The name of the function (the class name by default)
-  --inputs dirty-strings-in \  # The input topic(s) for the function
-  --output clean-strings-out \ # The output topic for the function
-  --log-topic sanitizer-logs   # The topic to which all functions logs are published
-`</pre> 
+<p>部署Pulsar Function可以使用<a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是<a href="/docs/zh-CN/next/pulsar-admin#functions"><code>functions</code></a>命令。 如下的示例命令,它将在 <a href="/docs/zh-CN/next/functions-deploying#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p>
+<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
+  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
+  --classname sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
+  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
+  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
+  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
+  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
+  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
+  --<span class="hljs-built_in">log</span>-topic sanitizer-logs   <span class="hljs-comment"># The topic to which all functions logs are published</span>
+</code></pre>
 <p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/next/functions-deploying">部署Pulsar Functions</a> 文档。</p>
 <h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
@@ -101,14 +101,14 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
-<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">提供开发语言自身接口不提供的一系列功能的特定Pulsar类库。</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
 </tbody>
 </table>
-<p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
+<p>例如, 在 python 中, 语言自带函数没有外部依赖,它会向所有传入的字符串添加一个感叹号,并将结果字符串发布到主题:</p>
 <pre><code class="hljs css language-python"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">process</span><span class="hljs-params">(input)</span>:</span>
     <span class="hljs-keyword">return</span> <span class="hljs-string">"{}!"</span>.format(input)
 </code></pre>
-<p>This function, however, would use the Pulsar Functions <a href="#python-sdk-functions">SDK for Python</a>:</p>
+<p>然而,在这个函数里你会看到Pulsar Function为Python提供的<a href="#python-sdk-functions">SDK</a>:</p>
 <pre><code class="hljs css language-python"><span class="hljs-keyword">from</span> pulsar <span class="hljs-keyword">import</span> Function
 
 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DisplayFunctionName</span><span class="hljs-params">(Function)</span>:</span>
@@ -116,15 +116,15 @@
         function_name = context.function_name()
         <span class="hljs-keyword">return</span> <span class="hljs-string">"The function processing this message has the name {0}"</span>.format(function_name)
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="functions-messages-and-message-types"></a><a href="#functions-messages-and-message-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>Pulsar Functions can take byte arrays as inputs and spit out byte arrays as output. However in languages that support typed interfaces(just Java at the moment) one can write typed Functions as well. In this scenario, there are two ways one can bind messages to types. * <a href="#Schema-Registry">Schema Registry</a> * <a href="#SerDe">SerDe</a></p>
+<h3><a class="anchor" aria-hidden="true" id="函数-消息和消息类型"></a><a href="#函数-消息和消息类型" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>Pulsar函数可以将字节数据作为输入,并且同样可以输出字节数组。 但是,在支持类型化接口的语言中(目前只有Java),也可以编写类型化函数。 在这种情况下, 有两种方法可以将消息绑定到类型。 * <a href="#Schema-Registry">注册Schema</a> * <a href="#SerDe">SerDe</a></p>
 <h3><a class="anchor" aria-hidden="true" id="schema管理服务"></a><a href="#schema管理服务" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
-<p>Pulsar has a built in <a href="concepts-schema-registry">Schema Registry</a> and comes bundled with a variety of popular schema types(avro, json and protobuf). Pulsar Functions can leverage existing schema information from input topics to derive the input type. The same applies for output topic as well.</p>
-<h3><a class="anchor" aria-hidden="true" id="serde"></a><a href="#serde" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>Pulsar内置了 <a href="concepts-schema-registry">Schema注册表</a>,并且捆绑了许多主流的schema类型(avro, json and protobuf)。 Pulsar函数可以利用输入主题中的已有的Schema信息来约束输入类型。 从主题输出也同样如此。</p>
+<h3><a class="anchor" aria-hidden="true" id="序列化和反序列化"></a><a href="#序列化和反序列化" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
 <p>SerDe stands for <strong>Ser</strong>ialization and <strong>De</strong>serialization. All Pulsar Functions use SerDe for message handling. How SerDe works by default depends on the language you're using for a particular function:</p>
 <ul>
-<li>In <a href="#python-serde">Python</a>, the default SerDe is identity, meaning that the type is serialized as whatever type the producer function returns</li>
-<li>In <a href="#java-serde">Java</a>, a number of commonly used types (<code>String</code>s, <code>Integer</code>s, etc.) are supported by default</li>
+<li>在 <a href="#python-serde">Python</a> 中, 默认的 serde 是标识, 这意味着该类型被序列化为生成函数返回的任何类型。</li>
+<li>在<a href="#java-serde">Java</a>里,许多常用的类型(<code>String</code>,<code>Integer</code>, 等等) 都默认支持。</li>
 </ul>
 <p>In both languages, however, you can write your own custom SerDe logic for more complex, application-specific types. See the docs for <a href="#java-serde">Java</a> and <a href="#python-serde">Python</a> for language-specific instructions.</p>
 <h3><a class="anchor" aria-hidden="true" id="context"></a><a href="#context" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
@@ -640,7 +640,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/ja/adaptors/PulsarSpark/index.html b/content/ja/adaptors/PulsarSpark/index.html
index 34dd969..51c3895 100644
--- a/content/ja/adaptors/PulsarSpark/index.html
+++ b/content/ja/adaptors/PulsarSpark/index.html
@@ -762,9 +762,9 @@
           
           
           
-          <li><a href="/ja/adaptors/PulsarSpark/">Spark Streaming Pulsar Receiver</a></li>
           
           
+          <li><a href="/ja/adaptors/PulsarSpark/">Spark Streaming Pulsar Receiver</a></li>
           
           
           
@@ -1008,9 +1008,9 @@
           
           
           
-          <li><a href="/ja/adaptors/PulsarSpark/">Spark Streaming Pulsar Receiver</a></li>
           
           
+          <li><a href="/ja/adaptors/PulsarSpark/">Spark Streaming Pulsar Receiver</a></li>
           
           
           
@@ -1224,6 +1224,8 @@
           
           
           
+          
+          
           <li><a href="/ja/clients/Java/">Pulsar Javaクライアント</a></li>
           
           
@@ -1385,8 +1387,6 @@
           
           
           
-          
-          
         </ul>
       </div>
     </div>
diff --git a/content/ja/adaptors/PulsarStorm/index.html b/content/ja/adaptors/PulsarStorm/index.html
index d24d155..8d8ca73 100644
--- a/content/ja/adaptors/PulsarStorm/index.html
+++ b/content/ja/adaptors/PulsarStorm/index.html
@@ -766,9 +766,9 @@
           
           
           
-          <li><a href="/ja/adaptors/PulsarStorm/">Apache StormのためのPulsarアダプタ</a></li>
           
           
+          <li><a href="/ja/adaptors/PulsarStorm/">Apache StormのためのPulsarアダプタ</a></li>
           
           
           
@@ -978,6 +978,8 @@
           
           
           
+          
+          
           <li><a href="/ja/clients/Java/">Pulsar Javaクライアント</a></li>
           
           
@@ -1139,8 +1141,6 @@
           
           
           
-          
-          
         </ul>
       </div>
     </div>
diff --git a/content/ja/admin/AdminInterface/index.html b/content/ja/admin/AdminInterface/index.html
index 5a8fbe4..9a1d3fa 100644
--- a/content/ja/admin/AdminInterface/index.html
+++ b/content/ja/admin/AdminInterface/index.html
@@ -692,9 +692,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -762,9 +762,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -792,9 +792,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
@@ -950,9 +950,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -1486,6 +1486,8 @@
           
           
           
+          
+          
           <li><a href="/ja/clients/Java/">Pulsar Javaクライアント</a></li>
           
           
@@ -1647,8 +1649,6 @@
           
           
           
-          
-          
         </ul>
       </div>
     </div>
diff --git a/content/ja/admin/Authz/index.html b/content/ja/admin/Authz/index.html
index 910e23f..f31d19b 100644
--- a/content/ja/admin/Authz/index.html
+++ b/content/ja/admin/Authz/index.html
@@ -692,9 +692,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -762,9 +762,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -792,9 +792,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
@@ -1976,6 +1976,8 @@
           
           
           
+          
+          
           <li><a href="/ja/clients/Java/">Pulsar Javaクライアント</a></li>
           
           
@@ -2137,8 +2139,6 @@
           
           
           
-          
-          
         </ul>
       </div>
     </div>
@@ -2212,9 +2212,9 @@
           
           
           
-          <li><a href="/ja/clients/Cpp/">Pulsar C++クライアント</a></li>
           
           
+          <li><a href="/ja/clients/Cpp/">Pulsar C++クライアント</a></li>
           
           
           
diff --git a/content/ja/admin/ClustersBrokers/index.html b/content/ja/admin/ClustersBrokers/index.html
index ad4bdb4..0c37b98 100644
--- a/content/ja/admin/ClustersBrokers/index.html
+++ b/content/ja/admin/ClustersBrokers/index.html
@@ -692,9 +692,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -762,9 +762,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -792,9 +792,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
diff --git a/content/ja/admin/PropertiesNamespaces/index.html b/content/ja/admin/PropertiesNamespaces/index.html
index 807551e..050393b 100644
--- a/content/ja/admin/PropertiesNamespaces/index.html
+++ b/content/ja/admin/PropertiesNamespaces/index.html
@@ -1184,9 +1184,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -1254,9 +1254,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -1284,9 +1284,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
diff --git a/content/ja/advanced/PartitionedTopics/index.html b/content/ja/advanced/PartitionedTopics/index.html
index 4297a12..3ab5407 100644
--- a/content/ja/advanced/PartitionedTopics/index.html
+++ b/content/ja/advanced/PartitionedTopics/index.html
@@ -752,9 +752,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -998,9 +998,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -1184,9 +1184,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -1254,9 +1254,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -1284,9 +1284,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
@@ -1504,9 +1504,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
diff --git a/content/ja/advanced/RetentionExpiry/index.html b/content/ja/advanced/RetentionExpiry/index.html
index fd6137c..eb7d4b0 100644
--- a/content/ja/advanced/RetentionExpiry/index.html
+++ b/content/ja/advanced/RetentionExpiry/index.html
@@ -692,9 +692,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -762,9 +762,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -792,9 +792,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
@@ -1038,9 +1038,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
@@ -1284,9 +1284,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
@@ -1530,9 +1530,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
diff --git a/content/ja/clients/Cpp/index.html b/content/ja/clients/Cpp/index.html
index e6411a1..e51d5eb 100644
--- a/content/ja/clients/Cpp/index.html
+++ b/content/ja/clients/Cpp/index.html
@@ -688,6 +688,8 @@
           
           
           
+          
+          
           <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
@@ -891,8 +893,6 @@
           
           
           
-          
-          
         </ul>
       </div>
     </div>
@@ -966,9 +966,9 @@
           
           
           
-          <li><a href="/ja/clients/Cpp/">Pulsar C++クライアント</a></li>
           
           
+          <li><a href="/ja/clients/Cpp/">Pulsar C++クライアント</a></li>
           
           
           
diff --git a/content/ja/clients/Java/index.html b/content/ja/clients/Java/index.html
index e543182..2a626c7 100644
--- a/content/ja/clients/Java/index.html
+++ b/content/ja/clients/Java/index.html
@@ -688,6 +688,8 @@
           
           
           
+          
+          
           <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
@@ -891,8 +893,6 @@
           
           
           
-          
-          
         </ul>
       </div>
     </div>
@@ -984,6 +984,8 @@
           
           
           
+          
+          
           <li><a href="/ja/clients/Java/">Pulsar Javaクライアント</a></li>
           
           
@@ -1145,8 +1147,6 @@
           
           
           
-          
-          
         </ul>
       </div>
     </div>
diff --git a/content/ja/clients/Python/index.html b/content/ja/clients/Python/index.html
index ed49516..b937ecf 100644
--- a/content/ja/clients/Python/index.html
+++ b/content/ja/clients/Python/index.html
@@ -688,6 +688,8 @@
           
           
           
+          
+          
           <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
@@ -891,8 +893,6 @@
           
           
           
-          
-          
         </ul>
       </div>
     </div>
@@ -1022,9 +1022,9 @@
           
           
           
-          <li><a href="/ja/clients/Python/">Pulsar Pythonクライアント</a></li>
           
           
+          <li><a href="/ja/clients/Python/">Pulsar Pythonクライアント</a></li>
           
           
           
@@ -1044,9 +1044,9 @@
           
           
           
-          <li><a href="/ja/clients/WebSocket/">PulsarにおけるWebSocket API</a></li>
           
           
+          <li><a href="/ja/clients/WebSocket/">PulsarにおけるWebSocket API</a></li>
           
           
           
diff --git a/content/ja/clients/WebSocket/index.html b/content/ja/clients/WebSocket/index.html
index b7b7730..ee0d865 100644
--- a/content/ja/clients/WebSocket/index.html
+++ b/content/ja/clients/WebSocket/index.html
@@ -790,9 +790,9 @@
           
           
           
-          <li><a href="/ja/clients/WebSocket/">PulsarにおけるWebSocket API</a></li>
           
           
+          <li><a href="/ja/clients/WebSocket/">PulsarにおけるWebSocket API</a></li>
           
           
           
@@ -1036,9 +1036,9 @@
           
           
           
-          <li><a href="/ja/clients/WebSocket/">PulsarにおけるWebSocket API</a></li>
           
           
+          <li><a href="/ja/clients/WebSocket/">PulsarにおけるWebSocket API</a></li>
           
           
           
@@ -1262,9 +1262,9 @@
           
           
           
-          <li><a href="/ja/clients/Python/">Pulsar Pythonクライアント</a></li>
           
           
+          <li><a href="/ja/clients/Python/">Pulsar Pythonクライアント</a></li>
           
           
           
@@ -1284,9 +1284,9 @@
           
           
           
-          <li><a href="/ja/clients/WebSocket/">PulsarにおけるWebSocket API</a></li>
           
           
+          <li><a href="/ja/clients/WebSocket/">PulsarにおけるWebSocket API</a></li>
           
           
           
diff --git a/content/ja/deployment/InstanceSetup/index.html b/content/ja/deployment/InstanceSetup/index.html
index 6499654..d12999b 100644
--- a/content/ja/deployment/InstanceSetup/index.html
+++ b/content/ja/deployment/InstanceSetup/index.html
@@ -692,9 +692,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -762,9 +762,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -792,9 +792,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
diff --git a/content/ja/deployment/Kubernetes/index.html b/content/ja/deployment/Kubernetes/index.html
index dd736d4..4dd17d9 100644
--- a/content/ja/deployment/Kubernetes/index.html
+++ b/content/ja/deployment/Kubernetes/index.html
@@ -734,9 +734,9 @@
           
           
           
-          <li><a href="/ja/deployment/Kubernetes/">Kubernetes上でのPulsarのデプロイ</a></li>
           
           
+          <li><a href="/ja/deployment/Kubernetes/">Kubernetes上でのPulsarのデプロイ</a></li>
           
           
           
@@ -980,9 +980,9 @@
           
           
           
-          <li><a href="/ja/deployment/Kubernetes/">Kubernetes上でのPulsarのデプロイ</a></li>
           
           
+          <li><a href="/ja/deployment/Kubernetes/">Kubernetes上でのPulsarのデプロイ</a></li>
           
           
           
diff --git a/content/ja/getting-started/ConceptsAndArchitecture/index.html b/content/ja/getting-started/ConceptsAndArchitecture/index.html
index 6c57f6a..0efaab5 100644
--- a/content/ja/getting-started/ConceptsAndArchitecture/index.html
+++ b/content/ja/getting-started/ConceptsAndArchitecture/index.html
@@ -704,9 +704,9 @@
           
           
           
-          <li><a href="/ja/getting-started/ConceptsAndArchitecture/">Pulsarのコンセプトとアーキテクチャ</a></li>
           
           
+          <li><a href="/ja/getting-started/ConceptsAndArchitecture/">Pulsarのコンセプトとアーキテクチャ</a></li>
           
           
           
diff --git a/content/ja/getting-started/LocalCluster/index.html b/content/ja/getting-started/LocalCluster/index.html
index f3a8dca..bcf9413 100644
--- a/content/ja/getting-started/LocalCluster/index.html
+++ b/content/ja/getting-started/LocalCluster/index.html
@@ -740,9 +740,9 @@
           
           
           
-          <li><a href="/ja/getting-started/LocalCluster/">ローカルスタンドアローンクラスタのセットアップ</a></li>
           
           
+          <li><a href="/ja/getting-started/LocalCluster/">ローカルスタンドアローンクラスタのセットアップ</a></li>
           
           
           
@@ -986,9 +986,9 @@
           
           
           
-          <li><a href="/ja/getting-started/LocalCluster/">ローカルスタンドアローンクラスタのセットアップ</a></li>
           
           
+          <li><a href="/ja/getting-started/LocalCluster/">ローカルスタンドアローンクラスタのセットアップ</a></li>
           
           
           
diff --git a/content/ja/project/BinaryProtocol/index.html b/content/ja/project/BinaryProtocol/index.html
index 642f8fd..f595218 100644
--- a/content/ja/project/BinaryProtocol/index.html
+++ b/content/ja/project/BinaryProtocol/index.html
@@ -684,9 +684,9 @@
           
           
           
-          <li><a href="/ja/project/BinaryProtocol/">Pulsarのバイナリプロトコルの仕様</a></li>
           
           
+          <li><a href="/ja/project/BinaryProtocol/">Pulsarのバイナリプロトコルの仕様</a></li>
           
           
           
@@ -930,9 +930,9 @@
           
           
           
-          <li><a href="/ja/project/BinaryProtocol/">Pulsarのバイナリプロトコルの仕様</a></li>
           
           
+          <li><a href="/ja/project/BinaryProtocol/">Pulsarのバイナリプロトコルの仕様</a></li>
           
           
           
diff --git a/content/ja/project/SimulationTools/index.html b/content/ja/project/SimulationTools/index.html
index e5a28bb..b9b8152 100644
--- a/content/ja/project/SimulationTools/index.html
+++ b/content/ja/project/SimulationTools/index.html
@@ -782,9 +782,9 @@
           
           
           
-          <li><a href="/ja/project/SimulationTools/">シミュレーションツール</a></li>
           
           
+          <li><a href="/ja/project/SimulationTools/">シミュレーションツール</a></li>
           
           
           
diff --git a/content/ja/reference/CliTools/index.html b/content/ja/reference/CliTools/index.html
index eb25626..97c8e05 100644
--- a/content/ja/reference/CliTools/index.html
+++ b/content/ja/reference/CliTools/index.html
@@ -692,9 +692,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -762,9 +762,9 @@
           
           
           
-          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
+          <li><a href="/ja/advanced/PartitionedTopics/">パーティションドトピック</a></li>
           
           
           
@@ -792,9 +792,9 @@
           
           
           
-          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
+          <li><a href="/ja/advanced/RetentionExpiry/">メッセージの保存と有効期限</a></li>
           
           
           
@@ -950,9 +950,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -1196,6 +1196,8 @@
           
           
           
+          
+          
           <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
@@ -1399,8 +1401,6 @@
           
           
           
-          
-          
         </ul>
       </div>
     </div>
@@ -1448,9 +1448,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -1694,9 +1694,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
@@ -1940,9 +1940,9 @@
           
           
           
-          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
+          <li><a href="/ja/reference/CliTools/">Pulsarコマンドラインツール</a></li>
           
           
           
diff --git a/content/swagger/swagger.json b/content/swagger/swagger.json
index 0332290..6cbeff1 100644
--- a/content/swagger/swagger.json
+++ b/content/swagger/swagger.json
@@ -6882,25 +6882,34 @@
           "type" : "number",
           "format" : "double"
         },
-        "cpu" : {
+        "bandwidthIn" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "memory" : {
+        "bandwidthOut" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "directMemory" : {
+        "memory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthIn" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "loadReportType" : {
+          "type" : "string"
         },
-        "bandwidthOut" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "underLoaded" : {
+          "type" : "boolean"
+        },
+        "overLoaded" : {
+          "type" : "boolean"
         },
         "lastUpdate" : {
           "type" : "integer",
           "format" : "int64"
         },
+        "cpu" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "directMemory" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
@@ -6908,15 +6917,6 @@
         "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
         }
       }
     },