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/10/28 09:27:01 UTC

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

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 54aec93  Updated site at revision dc397b0
54aec93 is described below

commit 54aec93bb92ac0f79bdd0252a5ff1a41a3ee65f0
Author: jenkins <bu...@apache.org>
AuthorDate: Sun Oct 28 09:26:52 2018 +0000

    Updated site at revision dc397b0
---
 content/contact.html                               |  2 +-
 content/contact/index.html                         |  2 +-
 .../concepts-architecture-overview.html            |  2 +-
 .../concepts-architecture-overview/index.html      |  2 +-
 .../concepts-architecture-overview.html            |  2 +-
 .../concepts-architecture-overview/index.html      |  2 +-
 .../docs/en/concepts-architecture-overview.html    |  2 +-
 .../en/concepts-architecture-overview/index.html   |  2 +-
 .../en/next/concepts-architecture-overview.html    |  2 +-
 .../next/concepts-architecture-overview/index.html |  2 +-
 .../concepts-architecture-overview.html            |  2 +-
 .../concepts-architecture-overview/index.html      |  2 +-
 .../concepts-architecture-overview.html            |  2 +-
 .../concepts-architecture-overview/index.html      |  2 +-
 .../docs/fr/concepts-architecture-overview.html    |  2 +-
 .../fr/concepts-architecture-overview/index.html   |  2 +-
 .../fr/next/concepts-architecture-overview.html    |  2 +-
 .../next/concepts-architecture-overview/index.html |  2 +-
 .../concepts-architecture-overview.html            |  2 +-
 .../concepts-architecture-overview/index.html      |  2 +-
 .../concepts-architecture-overview.html            |  2 +-
 .../concepts-architecture-overview/index.html      |  2 +-
 .../docs/ja/concepts-architecture-overview.html    |  2 +-
 .../ja/concepts-architecture-overview/index.html   |  2 +-
 .../ja/next/concepts-architecture-overview.html    |  2 +-
 .../next/concepts-architecture-overview/index.html |  2 +-
 .../docs/latest/adaptors/PulsarSpark/index.html    |  2 +-
 .../docs/latest/adaptors/PulsarStorm/index.html    |  2 +-
 content/docs/latest/admin-api/overview/index.html  |  8 ++--
 content/docs/latest/clients/Java/index.html        |  2 +-
 .../latest/cookbooks/PartitionedTopics/index.html  |  2 +-
 .../latest/cookbooks/RetentionExpiry/index.html    |  2 +-
 .../docs/latest/cookbooks/compaction/index.html    |  2 +-
 .../cookbooks/message-deduplication/index.html     |  2 +-
 .../docs/latest/cookbooks/message-queue/index.html |  2 +-
 .../latest/cookbooks/tiered-storage/index.html     |  2 +-
 .../docs/latest/deployment/aws-cluster/index.html  |  2 +-
 content/docs/latest/deployment/cluster/index.html  |  2 +-
 content/docs/latest/deployment/instance/index.html |  2 +-
 .../ConceptsAndArchitecture/index.html             |  2 +-
 content/docs/latest/reference/CliTools/index.html  |  4 +-
 .../docs/latest/security/authorization/index.html  |  4 +-
 .../concepts-architecture-overview.html            |  2 +-
 .../concepts-architecture-overview/index.html      |  2 +-
 .../2.1.0-incubating/concepts-multi-tenancy.html   | 18 ++++----
 .../concepts-multi-tenancy/index.html              | 18 ++++----
 .../2.1.0-incubating/concepts-schema-registry.html | 52 +++++++++++-----------
 .../concepts-schema-registry/index.html            | 52 +++++++++++-----------
 .../concepts-architecture-overview.html            |  2 +-
 .../concepts-architecture-overview/index.html      |  2 +-
 .../2.1.1-incubating/concepts-multi-tenancy.html   | 18 ++++----
 .../concepts-multi-tenancy/index.html              | 18 ++++----
 .../2.1.1-incubating/concepts-schema-registry.html | 52 +++++++++++-----------
 .../concepts-schema-registry/index.html            | 52 +++++++++++-----------
 .../docs/zh-CN/concepts-architecture-overview.html |  2 +-
 .../concepts-architecture-overview/index.html      |  2 +-
 content/docs/zh-CN/concepts-multi-tenancy.html     | 18 ++++----
 .../docs/zh-CN/concepts-multi-tenancy/index.html   | 18 ++++----
 content/docs/zh-CN/concepts-schema-registry.html   | 52 +++++++++++-----------
 .../docs/zh-CN/concepts-schema-registry/index.html | 52 +++++++++++-----------
 .../zh-CN/next/concepts-architecture-overview.html |  2 +-
 .../next/concepts-architecture-overview/index.html |  2 +-
 .../docs/zh-CN/next/concepts-multi-tenancy.html    | 18 ++++----
 .../zh-CN/next/concepts-multi-tenancy/index.html   | 18 ++++----
 .../docs/zh-CN/next/concepts-schema-registry.html  | 52 +++++++++++-----------
 .../zh-CN/next/concepts-schema-registry/index.html | 52 +++++++++++-----------
 content/en/contact.html                            |  2 +-
 content/en/contact/index.html                      |  2 +-
 content/fr/contact.html                            |  2 +-
 content/fr/contact/index.html                      |  2 +-
 content/ja/contact.html                            |  2 +-
 content/ja/contact/index.html                      |  2 +-
 content/swagger/swagger.json                       | 52 +++++++++++-----------
 content/zh-CN/contact.html                         |  2 +-
 content/zh-CN/contact/index.html                   |  2 +-
 75 files changed, 369 insertions(+), 369 deletions(-)

diff --git a/content/contact.html b/content/contact.html
index 3cb5552..e4a8b07 100644
--- a/content/contact.html
+++ b/content/contact.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/contact/index.html b/content/contact/index.html
index 3cb5552..e4a8b07 100644
--- a/content/contact/index.html
+++ b/content/contact/index.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/2.1.0-incubating/concepts-architecture-overview.html b/content/docs/en/2.1.0-incubating/concepts-architecture-overview.html
index 3b88f3a..a769a80 100644
--- a/content/docs/en/2.1.0-incubating/concepts-architecture-overview.html
+++ b/content/docs/en/2.1.0-incubating/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/en/2.1.0-incubating/concepts-architecture-overview/index.html b/content/docs/en/2.1.0-incubating/concepts-architecture-overview/index.html
index 3b88f3a..a769a80 100644
--- a/content/docs/en/2.1.0-incubating/concepts-architecture-overview/index.html
+++ b/content/docs/en/2.1.0-incubating/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/en/2.1.1-incubating/concepts-architecture-overview.html b/content/docs/en/2.1.1-incubating/concepts-architecture-overview.html
index 59df393..0c8f635 100644
--- a/content/docs/en/2.1.1-incubating/concepts-architecture-overview.html
+++ b/content/docs/en/2.1.1-incubating/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/en/2.1.1-incubating/concepts-architecture-overview/index.html b/content/docs/en/2.1.1-incubating/concepts-architecture-overview/index.html
index 59df393..0c8f635 100644
--- a/content/docs/en/2.1.1-incubating/concepts-architecture-overview/index.html
+++ b/content/docs/en/2.1.1-incubating/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/en/concepts-architecture-overview.html b/content/docs/en/concepts-architecture-overview.html
index 8fde38c..6fb44c7 100644
--- a/content/docs/en/concepts-architecture-overview.html
+++ b/content/docs/en/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/en/concepts-architecture-overview/index.html b/content/docs/en/concepts-architecture-overview/index.html
index 8fde38c..6fb44c7 100644
--- a/content/docs/en/concepts-architecture-overview/index.html
+++ b/content/docs/en/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/en/next/concepts-architecture-overview.html b/content/docs/en/next/concepts-architecture-overview.html
index d4f1e48..aec1870 100644
--- a/content/docs/en/next/concepts-architecture-overview.html
+++ b/content/docs/en/next/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/en/next/concepts-architecture-overview/index.html b/content/docs/en/next/concepts-architecture-overview/index.html
index d4f1e48..aec1870 100644
--- a/content/docs/en/next/concepts-architecture-overview/index.html
+++ b/content/docs/en/next/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/fr/2.1.0-incubating/concepts-architecture-overview.html b/content/docs/fr/2.1.0-incubating/concepts-architecture-overview.html
index bf9f7c1..8a704f7 100644
--- a/content/docs/fr/2.1.0-incubating/concepts-architecture-overview.html
+++ b/content/docs/fr/2.1.0-incubating/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/fr/2.1.0-incubating/concepts-architecture-overview/index.html b/content/docs/fr/2.1.0-incubating/concepts-architecture-overview/index.html
index bf9f7c1..8a704f7 100644
--- a/content/docs/fr/2.1.0-incubating/concepts-architecture-overview/index.html
+++ b/content/docs/fr/2.1.0-incubating/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/fr/2.1.1-incubating/concepts-architecture-overview.html b/content/docs/fr/2.1.1-incubating/concepts-architecture-overview.html
index 777e6fb..5cc581c 100644
--- a/content/docs/fr/2.1.1-incubating/concepts-architecture-overview.html
+++ b/content/docs/fr/2.1.1-incubating/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/fr/2.1.1-incubating/concepts-architecture-overview/index.html b/content/docs/fr/2.1.1-incubating/concepts-architecture-overview/index.html
index 777e6fb..5cc581c 100644
--- a/content/docs/fr/2.1.1-incubating/concepts-architecture-overview/index.html
+++ b/content/docs/fr/2.1.1-incubating/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/fr/concepts-architecture-overview.html b/content/docs/fr/concepts-architecture-overview.html
index d48dbfa..4b1cf2c 100644
--- a/content/docs/fr/concepts-architecture-overview.html
+++ b/content/docs/fr/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/fr/concepts-architecture-overview/index.html b/content/docs/fr/concepts-architecture-overview/index.html
index d48dbfa..4b1cf2c 100644
--- a/content/docs/fr/concepts-architecture-overview/index.html
+++ b/content/docs/fr/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/fr/next/concepts-architecture-overview.html b/content/docs/fr/next/concepts-architecture-overview.html
index 872b17f..a55ed16 100644
--- a/content/docs/fr/next/concepts-architecture-overview.html
+++ b/content/docs/fr/next/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/fr/next/concepts-architecture-overview/index.html b/content/docs/fr/next/concepts-architecture-overview/index.html
index 872b17f..a55ed16 100644
--- a/content/docs/fr/next/concepts-architecture-overview/index.html
+++ b/content/docs/fr/next/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/ja/2.1.0-incubating/concepts-architecture-overview.html b/content/docs/ja/2.1.0-incubating/concepts-architecture-overview.html
index 422e6e8..2f6ffc2 100644
--- a/content/docs/ja/2.1.0-incubating/concepts-architecture-overview.html
+++ b/content/docs/ja/2.1.0-incubating/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/ja/2.1.0-incubating/concepts-architecture-overview/index.html b/content/docs/ja/2.1.0-incubating/concepts-architecture-overview/index.html
index 422e6e8..2f6ffc2 100644
--- a/content/docs/ja/2.1.0-incubating/concepts-architecture-overview/index.html
+++ b/content/docs/ja/2.1.0-incubating/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/ja/2.1.1-incubating/concepts-architecture-overview.html b/content/docs/ja/2.1.1-incubating/concepts-architecture-overview.html
index b355b0b..1bd9a33 100644
--- a/content/docs/ja/2.1.1-incubating/concepts-architecture-overview.html
+++ b/content/docs/ja/2.1.1-incubating/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/ja/2.1.1-incubating/concepts-architecture-overview/index.html b/content/docs/ja/2.1.1-incubating/concepts-architecture-overview/index.html
index b355b0b..1bd9a33 100644
--- a/content/docs/ja/2.1.1-incubating/concepts-architecture-overview/index.html
+++ b/content/docs/ja/2.1.1-incubating/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/ja/concepts-architecture-overview.html b/content/docs/ja/concepts-architecture-overview.html
index d2a0b35..a14d780 100644
--- a/content/docs/ja/concepts-architecture-overview.html
+++ b/content/docs/ja/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/ja/concepts-architecture-overview/index.html b/content/docs/ja/concepts-architecture-overview/index.html
index d2a0b35..a14d780 100644
--- a/content/docs/ja/concepts-architecture-overview/index.html
+++ b/content/docs/ja/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/ja/next/concepts-architecture-overview.html b/content/docs/ja/next/concepts-architecture-overview.html
index 76cbc50..89907d2 100644
--- a/content/docs/ja/next/concepts-architecture-overview.html
+++ b/content/docs/ja/next/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/ja/next/concepts-architecture-overview/index.html b/content/docs/ja/next/concepts-architecture-overview/index.html
index 76cbc50..89907d2 100644
--- a/content/docs/ja/next/concepts-architecture-overview/index.html
+++ b/content/docs/ja/next/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>In a Pulsar cluster:</p>
 <ul>
 <li>One or more brokers handles and load balances incoming messages from producers, dispatches messages to consumers, communicates with the Pulsar configuration store to handle various coordination tasks, stores messages in BookKeeper instances (aka bookies), relies on a cluster-specific ZooKeeper cluster for certain tasks, and more.</li>
-<li>A BookKeeper cluster consisting of one more or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>A ZooKeeper cluster specific to that cluster handles</li>
 </ul>
 <p>The diagram below provides an illustration of a Pulsar cluster:</p>
diff --git a/content/docs/latest/adaptors/PulsarSpark/index.html b/content/docs/latest/adaptors/PulsarSpark/index.html
index 4f01d80..c00dd49 100644
--- a/content/docs/latest/adaptors/PulsarSpark/index.html
+++ b/content/docs/latest/adaptors/PulsarSpark/index.html
@@ -1671,9 +1671,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 8a623ea..a100055 100644
--- a/content/docs/latest/adaptors/PulsarStorm/index.html
+++ b/content/docs/latest/adaptors/PulsarStorm/index.html
@@ -1425,9 +1425,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 178ba17..994ad01 100644
--- a/content/docs/latest/admin-api/overview/index.html
+++ b/content/docs/latest/admin-api/overview/index.html
@@ -1187,9 +1187,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>
           
           
           
@@ -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>
           
           
           
@@ -1683,9 +1683,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>
           
           
           
@@ -1939,9 +1939,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/Java/index.html b/content/docs/latest/clients/Java/index.html
index 4aa13e9..8ce7177 100644
--- a/content/docs/latest/clients/Java/index.html
+++ b/content/docs/latest/clients/Java/index.html
@@ -1435,9 +1435,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/cookbooks/PartitionedTopics/index.html b/content/docs/latest/cookbooks/PartitionedTopics/index.html
index bf6bedd..25ce2c6 100644
--- a/content/docs/latest/cookbooks/PartitionedTopics/index.html
+++ b/content/docs/latest/cookbooks/PartitionedTopics/index.html
@@ -1679,9 +1679,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/cookbooks/RetentionExpiry/index.html b/content/docs/latest/cookbooks/RetentionExpiry/index.html
index 9c9b5ab..0a51438 100644
--- a/content/docs/latest/cookbooks/RetentionExpiry/index.html
+++ b/content/docs/latest/cookbooks/RetentionExpiry/index.html
@@ -1187,9 +1187,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/cookbooks/compaction/index.html b/content/docs/latest/cookbooks/compaction/index.html
index fd833c0..fd7475c 100644
--- a/content/docs/latest/cookbooks/compaction/index.html
+++ b/content/docs/latest/cookbooks/compaction/index.html
@@ -1187,9 +1187,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/cookbooks/message-deduplication/index.html b/content/docs/latest/cookbooks/message-deduplication/index.html
index 6089b86..03df0bf 100644
--- a/content/docs/latest/cookbooks/message-deduplication/index.html
+++ b/content/docs/latest/cookbooks/message-deduplication/index.html
@@ -1187,9 +1187,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/cookbooks/message-queue/index.html b/content/docs/latest/cookbooks/message-queue/index.html
index c32cc29..3655ec9 100644
--- a/content/docs/latest/cookbooks/message-queue/index.html
+++ b/content/docs/latest/cookbooks/message-queue/index.html
@@ -1435,9 +1435,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/cookbooks/tiered-storage/index.html b/content/docs/latest/cookbooks/tiered-storage/index.html
index 130f354..92718d6 100644
--- a/content/docs/latest/cookbooks/tiered-storage/index.html
+++ b/content/docs/latest/cookbooks/tiered-storage/index.html
@@ -1187,9 +1187,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/aws-cluster/index.html b/content/docs/latest/deployment/aws-cluster/index.html
index dcef93b..31cfc51 100644
--- a/content/docs/latest/deployment/aws-cluster/index.html
+++ b/content/docs/latest/deployment/aws-cluster/index.html
@@ -1187,9 +1187,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 3f0b8e4..0a12601 100644
--- a/content/docs/latest/deployment/cluster/index.html
+++ b/content/docs/latest/deployment/cluster/index.html
@@ -1187,9 +1187,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 444d0ca..e4d8219 100644
--- a/content/docs/latest/deployment/instance/index.html
+++ b/content/docs/latest/deployment/instance/index.html
@@ -1187,9 +1187,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 c4bf12b..51203a8 100644
--- a/content/docs/latest/getting-started/ConceptsAndArchitecture/index.html
+++ b/content/docs/latest/getting-started/ConceptsAndArchitecture/index.html
@@ -2267,7 +2267,7 @@
 
 <ul>
   <li>One or more <span class="popover-term" tabindex="0" title="What is a broker?" data-placement="top" data-content="A stateless component of Pulsar clusters that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a dispatcher that handles all message transers. Pulsar clusters typically consist of multiple brokers." data-toggle="popover" data-trigger="focus">brokers</span> handles and load balances incoming messages from <span cl [...]
-  <li>A <span class="popover-term" tabindex="0" title="What is BookKeeper?" data-placement="top" data-content="Apache BookKeeper is a persistent log storage system that Pulsar uses to store message data." data-toggle="popover" data-trigger="focus">BookKeeper</span> cluster consisting of one more or more <span class="popover-term" tabindex="0" title="What is a bookie?" data-placement="top" data-content="Bookie is just a nickname for an individual BookKeeper server." data-toggle="popover"  [...]
+  <li>A <span class="popover-term" tabindex="0" title="What is BookKeeper?" data-placement="top" data-content="Apache BookKeeper is a persistent log storage system that Pulsar uses to store message data." data-toggle="popover" data-trigger="focus">BookKeeper</span> cluster consisting of one or more <span class="popover-term" tabindex="0" title="What is a bookie?" data-placement="top" data-content="Bookie is just a nickname for an individual BookKeeper server." data-toggle="popover" data- [...]
   <li>A <span class="popover-term" tabindex="0" title="What is ZooKeeper?" data-placement="top" data-content="ZooKeeper is a service that Pulsar uses for coordination-related tasks.&lt;br /&gt;&lt;br /&gt;A Pulsar instance relies on both a local ZooKeeper for cluster-specific tasks and a ZooKeeper configuration store for instance-wide tasks." data-toggle="popover" data-trigger="focus">ZooKeeper</span> cluster specific to that cluster handles</li>
 </ul>
 
diff --git a/content/docs/latest/reference/CliTools/index.html b/content/docs/latest/reference/CliTools/index.html
index 8086f0f..cc20bbd 100644
--- a/content/docs/latest/reference/CliTools/index.html
+++ b/content/docs/latest/reference/CliTools/index.html
@@ -1187,9 +1187,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>
           
           
           
@@ -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>
           
           
           
diff --git a/content/docs/latest/security/authorization/index.html b/content/docs/latest/security/authorization/index.html
index 3e80e88..755417d 100644
--- a/content/docs/latest/security/authorization/index.html
+++ b/content/docs/latest/security/authorization/index.html
@@ -1187,9 +1187,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>
           
           
           
@@ -2433,9 +2433,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/zh-CN/2.1.0-incubating/concepts-architecture-overview.html b/content/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview.html
index ffcd41c..faf395e 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
@@ -49,7 +49,7 @@
 <p>在Pulsar集群</p>
 <ul>
 <li>一个或者多个brokers负责处理和负载均衡从生产者源源不断发送出的消息,并将他们发送给消费者。它与配置存储交互来处理相应的任务,它将消息存储在BookKeeper实例中(aka bookies)。它依赖ZooKeeper集群处理特定的任务,等等。</li>
-<li>一个BookKeeper集群由一个或者多个bookies组成,bookies负责消息的<a href="#persistent-storage">持久存储</a>。</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>一个ZooKeeper集群专门用于这个集群的操作。</li>
 </ul>
 <p>下图是Pulsar集群的一个说明:</p>
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 ffcd41c..faf395e 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
@@ -49,7 +49,7 @@
 <p>在Pulsar集群</p>
 <ul>
 <li>一个或者多个brokers负责处理和负载均衡从生产者源源不断发送出的消息,并将他们发送给消费者。它与配置存储交互来处理相应的任务,它将消息存储在BookKeeper实例中(aka bookies)。它依赖ZooKeeper集群处理特定的任务,等等。</li>
-<li>一个BookKeeper集群由一个或者多个bookies组成,bookies负责消息的<a href="#persistent-storage">持久存储</a>。</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>一个ZooKeeper集群专门用于这个集群的操作。</li>
 </ul>
 <p>下图是Pulsar集群的一个说明:</p>
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy.html b/content/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy.html
index 5faa91a..790035a 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy.html
@@ -46,23 +46,23 @@
               }
             });
         </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">多租户</h1></header><article><div><span><p>Pulsar从底层就是作为多租户系统来创建的。 为了支持多租户,Pulsar有着租户的概念, 租户可以被跨集群传播,每个租户都可以使用他们自己的<a href="/docs/zh-CN/2.1.0-incubating/security-overview">认证和 [...]
-<p>Pulsar多租户的属性在topic的URL上可以明显的被反映到。URL有着这样的结构:</p>
+<p>Pulsar多租户的天性,在topic的URL映射上充分显现,结构如下:</p>
 <pre><code class="hljs css language-http">persistent://tenant/namespace/topic
 </code></pre>
-<p>As you can see, the tenant is the most basic unit of categorization for topics (more fundamental than the namespace and topic name).</p>
+<p>正如您所看到的, 租户是topic的最基本的分类单元 (比namespace和topic名称更基本)。</p>
 <h2><a class="anchor" aria-hidden="true" id="tenants"></a><a href="#tenants" 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>To each tenant in a Pulsar instance you can assign:</p>
+<p>对于Pulsar实例中的每个租户,你可以分配给他:</p>
 <ul>
-<li>An <a href="/docs/zh-CN/2.1.0-incubating/security-authorization">authorization</a> scheme</li>
-<li>The set of <a href="/docs/zh-CN/2.1.0-incubating/reference-terminology#cluster">clusters</a> to which the tenant's configuration applies</li>
+<li><a href="/docs/zh-CN/2.1.0-incubating/security-authorization">授权</a>scheme</li>
+<li>租户配置适用的<a href="/docs/zh-CN/2.1.0-incubating/reference-terminology#cluster">cluster</a>集合</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="namespaces"></a><a href="#namespaces" 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>Tenants and namespaces are two key concepts of Pulsar to support multi-tenancy.</p>
+<p>租户和namespace是Pulsar支持多租户的两个关键概念。</p>
 <ul>
-<li>Pulsar is provisioned for specified tenants with appropriate capacity allocated to the tenant.</li>
-<li>A namespace is the administrative unit nomenclature within a tenant. The configuration policies set on a namespace apply to all the topics created in that namespace. A tenant may create multiple namespaces via self-administration using the REST API and the <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI tool. 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
+<li>Pulsar为指定租户配置了适当的容量分配。</li>
+<li>Namespace是租户中管理单元的命名。 命名空间上设置的配置策略,适用于该命名空间中创建的所有主题。 租户可以通过自我管理,使用 REST API 和 <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI 工具, 创建多个命名空间。 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
 </ul>
-<p>Names for topics in the same namespace will look like this:</p>
+<p>同一命名空间中主题的名称如下所示:</p>
 <pre><code class="hljs css language-http">persistent://tenant/app1/topic-1
 
 persistent://tenant/app1/topic-2
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy/index.html b/content/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy/index.html
index 5faa91a..790035a 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy/index.html
@@ -46,23 +46,23 @@
               }
             });
         </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">多租户</h1></header><article><div><span><p>Pulsar从底层就是作为多租户系统来创建的。 为了支持多租户,Pulsar有着租户的概念, 租户可以被跨集群传播,每个租户都可以使用他们自己的<a href="/docs/zh-CN/2.1.0-incubating/security-overview">认证和 [...]
-<p>Pulsar多租户的属性在topic的URL上可以明显的被反映到。URL有着这样的结构:</p>
+<p>Pulsar多租户的天性,在topic的URL映射上充分显现,结构如下:</p>
 <pre><code class="hljs css language-http">persistent://tenant/namespace/topic
 </code></pre>
-<p>As you can see, the tenant is the most basic unit of categorization for topics (more fundamental than the namespace and topic name).</p>
+<p>正如您所看到的, 租户是topic的最基本的分类单元 (比namespace和topic名称更基本)。</p>
 <h2><a class="anchor" aria-hidden="true" id="tenants"></a><a href="#tenants" 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>To each tenant in a Pulsar instance you can assign:</p>
+<p>对于Pulsar实例中的每个租户,你可以分配给他:</p>
 <ul>
-<li>An <a href="/docs/zh-CN/2.1.0-incubating/security-authorization">authorization</a> scheme</li>
-<li>The set of <a href="/docs/zh-CN/2.1.0-incubating/reference-terminology#cluster">clusters</a> to which the tenant's configuration applies</li>
+<li><a href="/docs/zh-CN/2.1.0-incubating/security-authorization">授权</a>scheme</li>
+<li>租户配置适用的<a href="/docs/zh-CN/2.1.0-incubating/reference-terminology#cluster">cluster</a>集合</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="namespaces"></a><a href="#namespaces" 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>Tenants and namespaces are two key concepts of Pulsar to support multi-tenancy.</p>
+<p>租户和namespace是Pulsar支持多租户的两个关键概念。</p>
 <ul>
-<li>Pulsar is provisioned for specified tenants with appropriate capacity allocated to the tenant.</li>
-<li>A namespace is the administrative unit nomenclature within a tenant. The configuration policies set on a namespace apply to all the topics created in that namespace. A tenant may create multiple namespaces via self-administration using the REST API and the <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI tool. 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
+<li>Pulsar为指定租户配置了适当的容量分配。</li>
+<li>Namespace是租户中管理单元的命名。 命名空间上设置的配置策略,适用于该命名空间中创建的所有主题。 租户可以通过自我管理,使用 REST API 和 <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI 工具, 创建多个命名空间。 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
 </ul>
-<p>Names for topics in the same namespace will look like this:</p>
+<p>同一命名空间中主题的名称如下所示:</p>
 <pre><code class="hljs css language-http">persistent://tenant/app1/topic-1
 
 persistent://tenant/app1/topic-2
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-schema-registry.html b/content/docs/zh-CN/2.1.0-incubating/concepts-schema-registry.html
index f84d2ce..c274439 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-schema-registry.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-schema-registry.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema管理服务 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need some kind of mechanism for coordinating types at the topic level lest a wide var [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema管理服务 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch [...]
               (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),
               m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
@@ -45,37 +45,37 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema管理服务</h1></header><article><div><span><p>Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need so [...]
+        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema管理服务</h1></header><article><div><span><p>对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:</p>
 <ol>
-<li>A &quot;client-side&quot; approach in which message producers and consumers are responsible for not only serializing and deserializing messages (which consist of raw bytes) but also &quot;knowing&quot; which types are being transmitted via which topics. If a producer is sending temperature sensor data on the topic <code>topic-1</code>, consumers of that topic will run into trouble if they attempt to parse that data as, say, moisture sensor readings.</li>
-<li>A &quot;server-side&quot; approach in which producers and consumers inform the system which data types can be transmitted via the topic. With this approach, the messaging system enforces type safety and ensures that producers and consumers remain synced.</li>
+<li>&quot;客户端&quot; 方法, 消息生产者和消费者不仅负责序列化和反序列处理消息 (包括原始字节), 而且还 &quot;知道&quot; 哪些类型是通过哪些topic传输的。 如果生产者往主题 <code>topic-1</code>发送温度感应数据,而这个topic的consumer按照读取湿度感应的方式来转换数据,将会遇到问题。</li>
+<li>&quot;服务器端&quot; 方法, 生产者和消费者告知系统哪些数据类型可以通过topic传输。 通过这种方法,消息系统强制执行类型安全, 并确保生产者和消费者保持同步。</li>
 </ol>
-<p>Both approaches are available in Pulsar, and you're free to adopt one or the other or to mix and match on a per-topic basis.</p>
+<p>这两种方法都被Pulsar支持,你可以在topic的基础上,自由选择采用哪一种,或者混用。</p>
 <ol>
-<li>For the &quot;client-side&quot; approach, producers and consumers can send and receive messages consisting of raw byte arrays and leave all type safety enforcement to the application on an &quot;out-of-band&quot; basis.</li>
-<li>For the &quot;server-side&quot; approach, Pulsar has a built-in <strong>schema registry</strong> that enables clients to upload data schemas on a per-topic basis. Those schemas dictate which data types are recognized as valid for that topic.</li>
+<li>&quot;客户端&quot; 方法中, 生产者和消费者可以发送和接收由原始字节数组组成的消息, 并保留所有的类型安全在应用中,以“带外”基础上强制执行。</li>
+<li>&quot;服务器端&quot; 方法中,Pulsar有一个内置的 <strong>schema registry</strong>,它使客户端能够根据每个topic载入数据schema。 这些schema显示了,topic可以识别哪些数据类型为有效。</li>
 </ol>
 <blockquote>
-<p>The Pulsar schema registry is currently available only for the <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-java">Java client</a>.</p>
+<p>Pulsar的schema注册当前仅能在 <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-java">Java 客户端</a>使用。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="basic-architecture"></a><a href="#basic-architecture" 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- [...]
-<p>Schemas are automatically uploaded when you create a typed Producer with a Schema. Additionally, Schemas can be manually uploaded to, fetched from, and updated via Pulsar's <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
- API.</p>
+<h2><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>当你使用Schema创建带类型的producer时,schema将会被自动上传。 此外,可以通过Pulsar的 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
+ API 手动上载、提取和更新schema。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="other-schema-registry-backends"></a><a href="#other-schema-registry-backends" 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 1 [...]
-<p>Out of the box, Pulsar uses the <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log storage system for schema storage. You can, however, use different backends if you wish. Documentation for custom schema storage logic is coming soon.</p>
+<h4><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-.8 [...]
+<p>开箱即用,Pulsar使用 <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log存储系统来保存schema。 不过你也可以按照你的需要使用不同的后端。 客制化的schema存储逻辑文档即将推出。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="how-schemas-work"></a><a href="#how-schemas-work" 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>Pulsar schemas are applied and enforced <em>at the topic level</em> (schemas cannot be applied at the namespace or tenant level). Producers and consumers upload schemas to Pulsar brokers.</p>
-<p>Pulsar schemas are fairly simple data structures that consist of:</p>
+<h2><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. [...]
+<p>Pulsar schema应用于<em>主题层面</em>(schema无法应用于namespace和tenant层面),并且被强制执行,producer和consumer上传schema到Pulsar broker。</p>
+<p>Pulsar schema是非常简单的数据结构,它的构成如下:</p>
 <ul>
-<li>A <strong>name</strong>. In Pulsar, a schema's name is the topic to which the schema is applied.</li>
-<li>A <strong>payload</strong>, which is a binary representation of the schema</li>
-<li>A schema <a href="#supported-schema-formats"><strong>type</strong></a></li>
-<li>User-defined <strong>properties</strong> as a string/string map. Usage of properties is wholly application specific. Possible properties might be the Git hash associated with a schema, an environment like <code>dev</code> or <code>prod</code>, etc.</li>
+<li><strong>name</strong>。Pulsar中, schema的名称是schema应用于的topic。</li>
+<li>** payload **, 它是schema的二进制表示形式。</li>
+<li>Schema<a href="#supported-schema-formats"><strong>类型</strong></a></li>
+<li>用户定义的字符串/字符串映射map,** properties ** 。 Properties如何使用,完全由程序指定。 Properties可能是关联到schema的Git hash,例如<code>dev</code>或者<code>prod</code>等环境信息。</li>
 </ul>
-<h2><a class="anchor" aria-hidden="true" id="schema-versions"></a><a href="#schema-versions" 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>In order to illustrate how schema versioning works, let's walk through an example. Imagine that the Pulsar <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-java">Java client</a> created using the code below attempts to connect to Pulsar and begin sending messages:</p>
+<h2><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.64  [...]
+<p>我们通过一个例子,来讲解schema版本如何工作。 假设使用以下代码创建Pulsar <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-java">Java 客户端</a>,尝试连接到Pulsar,并开始发送消息:</p>
 <pre><code class="hljs css language-java">PulsarClient client = PulsarClient.builder()
         .serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>)
         .build();
@@ -85,13 +85,13 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
         .sendTimeout(<span class="hljs-number">3</span>, TimeUnit.SECONDS)
         .create();
 </code></pre>
-<p>The table below lists the possible scenarios when this connection attempt occurs and what will happen in light of each scenario:</p>
+<p>下表列出了尝试连接时可能出现的场景, 以及每种场景下发生了什么:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Scenario</th><th style="text-align:left">What happens</th></tr>
+<tr><th style="text-align:left">场景</th><th style="text-align:left">发生了什么</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">No schema exists for the topic</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
+<tr><td style="text-align:left">该Topic不存在schema</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using the same schema that's already stored</td><td style="text-align:left">The schema is transmitted to the Pulsar broker. The broker determines that the schema is compatible. The broker attempts to store the schema in <a href="/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview#persistent-storage">BookKeeper</a> but then determines that it's already stored, so it's then used to tag produced messages. [...]
 <tr><td style="text-align:left">A schema already exists; the producer connects using a new schema that is compatible</td><td style="text-align:left">The producer transmits the schema to the broker. The broker determines that the schema is compatible and stores the new schema as the current version (with a new version number).</td></tr>
 </tbody>
@@ -117,7 +117,7 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="managing-schemas"></a><a href="#managing-schemas" 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 use Pulsar's <a href="/docs/zh-CN/2.1.0-incubating/admin-api-schemas">admin tools</a> for managing schemas for topics.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#basic-architecture">Basic architecture</a></li><li><a href="#how [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#基础架构">基础架构</a></li><li><a href="#schema是如何工作的">Schema是如何工作的</a>< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-schema-registry/index.html b/content/docs/zh-CN/2.1.0-incubating/concepts-schema-registry/index.html
index f84d2ce..c274439 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-schema-registry/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-schema-registry/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema管理服务 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need some kind of mechanism for coordinating types at the topic level lest a wide var [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema管理服务 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch [...]
               (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),
               m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
@@ -45,37 +45,37 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema管理服务</h1></header><article><div><span><p>Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need so [...]
+        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema管理服务</h1></header><article><div><span><p>对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:</p>
 <ol>
-<li>A &quot;client-side&quot; approach in which message producers and consumers are responsible for not only serializing and deserializing messages (which consist of raw bytes) but also &quot;knowing&quot; which types are being transmitted via which topics. If a producer is sending temperature sensor data on the topic <code>topic-1</code>, consumers of that topic will run into trouble if they attempt to parse that data as, say, moisture sensor readings.</li>
-<li>A &quot;server-side&quot; approach in which producers and consumers inform the system which data types can be transmitted via the topic. With this approach, the messaging system enforces type safety and ensures that producers and consumers remain synced.</li>
+<li>&quot;客户端&quot; 方法, 消息生产者和消费者不仅负责序列化和反序列处理消息 (包括原始字节), 而且还 &quot;知道&quot; 哪些类型是通过哪些topic传输的。 如果生产者往主题 <code>topic-1</code>发送温度感应数据,而这个topic的consumer按照读取湿度感应的方式来转换数据,将会遇到问题。</li>
+<li>&quot;服务器端&quot; 方法, 生产者和消费者告知系统哪些数据类型可以通过topic传输。 通过这种方法,消息系统强制执行类型安全, 并确保生产者和消费者保持同步。</li>
 </ol>
-<p>Both approaches are available in Pulsar, and you're free to adopt one or the other or to mix and match on a per-topic basis.</p>
+<p>这两种方法都被Pulsar支持,你可以在topic的基础上,自由选择采用哪一种,或者混用。</p>
 <ol>
-<li>For the &quot;client-side&quot; approach, producers and consumers can send and receive messages consisting of raw byte arrays and leave all type safety enforcement to the application on an &quot;out-of-band&quot; basis.</li>
-<li>For the &quot;server-side&quot; approach, Pulsar has a built-in <strong>schema registry</strong> that enables clients to upload data schemas on a per-topic basis. Those schemas dictate which data types are recognized as valid for that topic.</li>
+<li>&quot;客户端&quot; 方法中, 生产者和消费者可以发送和接收由原始字节数组组成的消息, 并保留所有的类型安全在应用中,以“带外”基础上强制执行。</li>
+<li>&quot;服务器端&quot; 方法中,Pulsar有一个内置的 <strong>schema registry</strong>,它使客户端能够根据每个topic载入数据schema。 这些schema显示了,topic可以识别哪些数据类型为有效。</li>
 </ol>
 <blockquote>
-<p>The Pulsar schema registry is currently available only for the <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-java">Java client</a>.</p>
+<p>Pulsar的schema注册当前仅能在 <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-java">Java 客户端</a>使用。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="basic-architecture"></a><a href="#basic-architecture" 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- [...]
-<p>Schemas are automatically uploaded when you create a typed Producer with a Schema. Additionally, Schemas can be manually uploaded to, fetched from, and updated via Pulsar's <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
- API.</p>
+<h2><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>当你使用Schema创建带类型的producer时,schema将会被自动上传。 此外,可以通过Pulsar的 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
+ API 手动上载、提取和更新schema。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="other-schema-registry-backends"></a><a href="#other-schema-registry-backends" 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 1 [...]
-<p>Out of the box, Pulsar uses the <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log storage system for schema storage. You can, however, use different backends if you wish. Documentation for custom schema storage logic is coming soon.</p>
+<h4><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-.8 [...]
+<p>开箱即用,Pulsar使用 <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log存储系统来保存schema。 不过你也可以按照你的需要使用不同的后端。 客制化的schema存储逻辑文档即将推出。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="how-schemas-work"></a><a href="#how-schemas-work" 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>Pulsar schemas are applied and enforced <em>at the topic level</em> (schemas cannot be applied at the namespace or tenant level). Producers and consumers upload schemas to Pulsar brokers.</p>
-<p>Pulsar schemas are fairly simple data structures that consist of:</p>
+<h2><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. [...]
+<p>Pulsar schema应用于<em>主题层面</em>(schema无法应用于namespace和tenant层面),并且被强制执行,producer和consumer上传schema到Pulsar broker。</p>
+<p>Pulsar schema是非常简单的数据结构,它的构成如下:</p>
 <ul>
-<li>A <strong>name</strong>. In Pulsar, a schema's name is the topic to which the schema is applied.</li>
-<li>A <strong>payload</strong>, which is a binary representation of the schema</li>
-<li>A schema <a href="#supported-schema-formats"><strong>type</strong></a></li>
-<li>User-defined <strong>properties</strong> as a string/string map. Usage of properties is wholly application specific. Possible properties might be the Git hash associated with a schema, an environment like <code>dev</code> or <code>prod</code>, etc.</li>
+<li><strong>name</strong>。Pulsar中, schema的名称是schema应用于的topic。</li>
+<li>** payload **, 它是schema的二进制表示形式。</li>
+<li>Schema<a href="#supported-schema-formats"><strong>类型</strong></a></li>
+<li>用户定义的字符串/字符串映射map,** properties ** 。 Properties如何使用,完全由程序指定。 Properties可能是关联到schema的Git hash,例如<code>dev</code>或者<code>prod</code>等环境信息。</li>
 </ul>
-<h2><a class="anchor" aria-hidden="true" id="schema-versions"></a><a href="#schema-versions" 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>In order to illustrate how schema versioning works, let's walk through an example. Imagine that the Pulsar <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-java">Java client</a> created using the code below attempts to connect to Pulsar and begin sending messages:</p>
+<h2><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.64  [...]
+<p>我们通过一个例子,来讲解schema版本如何工作。 假设使用以下代码创建Pulsar <a href="/docs/zh-CN/2.1.0-incubating/client-libraries-java">Java 客户端</a>,尝试连接到Pulsar,并开始发送消息:</p>
 <pre><code class="hljs css language-java">PulsarClient client = PulsarClient.builder()
         .serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>)
         .build();
@@ -85,13 +85,13 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
         .sendTimeout(<span class="hljs-number">3</span>, TimeUnit.SECONDS)
         .create();
 </code></pre>
-<p>The table below lists the possible scenarios when this connection attempt occurs and what will happen in light of each scenario:</p>
+<p>下表列出了尝试连接时可能出现的场景, 以及每种场景下发生了什么:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Scenario</th><th style="text-align:left">What happens</th></tr>
+<tr><th style="text-align:left">场景</th><th style="text-align:left">发生了什么</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">No schema exists for the topic</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
+<tr><td style="text-align:left">该Topic不存在schema</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using the same schema that's already stored</td><td style="text-align:left">The schema is transmitted to the Pulsar broker. The broker determines that the schema is compatible. The broker attempts to store the schema in <a href="/docs/zh-CN/2.1.0-incubating/concepts-architecture-overview#persistent-storage">BookKeeper</a> but then determines that it's already stored, so it's then used to tag produced messages. [...]
 <tr><td style="text-align:left">A schema already exists; the producer connects using a new schema that is compatible</td><td style="text-align:left">The producer transmits the schema to the broker. The broker determines that the schema is compatible and stores the new schema as the current version (with a new version number).</td></tr>
 </tbody>
@@ -117,7 +117,7 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="managing-schemas"></a><a href="#managing-schemas" 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 use Pulsar's <a href="/docs/zh-CN/2.1.0-incubating/admin-api-schemas">admin tools</a> for managing schemas for topics.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#basic-architecture">Basic architecture</a></li><li><a href="#how [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#基础架构">基础架构</a></li><li><a href="#schema是如何工作的">Schema是如何工作的</a>< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<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 8c03093..a985fdc 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
@@ -49,7 +49,7 @@
 <p>在Pulsar集群</p>
 <ul>
 <li>一个或者多个brokers负责处理和负载均衡从生产者源源不断发送出的消息,并将他们发送给消费者。它与配置存储交互来处理相应的任务,它将消息存储在BookKeeper实例中(aka bookies)。它依赖ZooKeeper集群处理特定的任务,等等。</li>
-<li>一个BookKeeper集群由一个或者多个bookies组成,bookies负责消息的<a href="#persistent-storage">持久存储</a>。</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>一个ZooKeeper集群专门用于这个集群的操作。</li>
 </ul>
 <p>下图是Pulsar集群的一个说明:</p>
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 8c03093..a985fdc 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
@@ -49,7 +49,7 @@
 <p>在Pulsar集群</p>
 <ul>
 <li>一个或者多个brokers负责处理和负载均衡从生产者源源不断发送出的消息,并将他们发送给消费者。它与配置存储交互来处理相应的任务,它将消息存储在BookKeeper实例中(aka bookies)。它依赖ZooKeeper集群处理特定的任务,等等。</li>
-<li>一个BookKeeper集群由一个或者多个bookies组成,bookies负责消息的<a href="#persistent-storage">持久存储</a>。</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>一个ZooKeeper集群专门用于这个集群的操作。</li>
 </ul>
 <p>下图是Pulsar集群的一个说明:</p>
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy.html b/content/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy.html
index c449525..10c81cd 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy.html
@@ -46,23 +46,23 @@
               }
             });
         </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Multi Tenancy</h1></header><article><div><span><p>Pulsar从底层就是作为多租户系统来创建的。 为了支持多租户,Pulsar有着租户的概念, 租户可以被跨集群传播,每个租户都可以使用他们自己的<a href="/docs/zh-CN/2.1.1-incubating/security-ove [...]
-<p>Pulsar多租户的属性在topic的URL上可以明显的被反映到。URL有着这样的结构:</p>
+<p>Pulsar多租户的天性,在topic的URL映射上充分显现,结构如下:</p>
 <pre><code class="hljs css language-http">persistent://tenant/namespace/topic
 </code></pre>
-<p>As you can see, the tenant is the most basic unit of categorization for topics (more fundamental than the namespace and topic name).</p>
+<p>正如您所看到的, 租户是topic的最基本的分类单元 (比namespace和topic名称更基本)。</p>
 <h2><a class="anchor" aria-hidden="true" id="tenants"></a><a href="#tenants" 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>To each tenant in a Pulsar instance you can assign:</p>
+<p>对于Pulsar实例中的每个租户,你可以分配给他:</p>
 <ul>
-<li>An <a href="/docs/zh-CN/2.1.1-incubating/security-authorization">authorization</a> scheme</li>
-<li>The set of <a href="/docs/zh-CN/2.1.1-incubating/reference-terminology#cluster">clusters</a> to which the tenant's configuration applies</li>
+<li><a href="/docs/zh-CN/2.1.1-incubating/security-authorization">授权</a>scheme</li>
+<li>租户配置适用的<a href="/docs/zh-CN/2.1.1-incubating/reference-terminology#cluster">cluster</a>集合</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="namespaces"></a><a href="#namespaces" 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>Tenants and namespaces are two key concepts of Pulsar to support multi-tenancy.</p>
+<p>租户和namespace是Pulsar支持多租户的两个关键概念。</p>
 <ul>
-<li>Pulsar is provisioned for specified tenants with appropriate capacity allocated to the tenant.</li>
-<li>A namespace is the administrative unit nomenclature within a tenant. The configuration policies set on a namespace apply to all the topics created in that namespace. A tenant may create multiple namespaces via self-administration using the REST API and the <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI tool. 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
+<li>Pulsar为指定租户配置了适当的容量分配。</li>
+<li>Namespace是租户中管理单元的命名。 命名空间上设置的配置策略,适用于该命名空间中创建的所有主题。 租户可以通过自我管理,使用 REST API 和 <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI 工具, 创建多个命名空间。 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
 </ul>
-<p>Names for topics in the same namespace will look like this:</p>
+<p>同一命名空间中主题的名称如下所示:</p>
 <pre><code class="hljs css language-http">persistent://tenant/app1/topic-1
 
 persistent://tenant/app1/topic-2
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy/index.html b/content/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy/index.html
index c449525..10c81cd 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy/index.html
@@ -46,23 +46,23 @@
               }
             });
         </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Multi Tenancy</h1></header><article><div><span><p>Pulsar从底层就是作为多租户系统来创建的。 为了支持多租户,Pulsar有着租户的概念, 租户可以被跨集群传播,每个租户都可以使用他们自己的<a href="/docs/zh-CN/2.1.1-incubating/security-ove [...]
-<p>Pulsar多租户的属性在topic的URL上可以明显的被反映到。URL有着这样的结构:</p>
+<p>Pulsar多租户的天性,在topic的URL映射上充分显现,结构如下:</p>
 <pre><code class="hljs css language-http">persistent://tenant/namespace/topic
 </code></pre>
-<p>As you can see, the tenant is the most basic unit of categorization for topics (more fundamental than the namespace and topic name).</p>
+<p>正如您所看到的, 租户是topic的最基本的分类单元 (比namespace和topic名称更基本)。</p>
 <h2><a class="anchor" aria-hidden="true" id="tenants"></a><a href="#tenants" 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>To each tenant in a Pulsar instance you can assign:</p>
+<p>对于Pulsar实例中的每个租户,你可以分配给他:</p>
 <ul>
-<li>An <a href="/docs/zh-CN/2.1.1-incubating/security-authorization">authorization</a> scheme</li>
-<li>The set of <a href="/docs/zh-CN/2.1.1-incubating/reference-terminology#cluster">clusters</a> to which the tenant's configuration applies</li>
+<li><a href="/docs/zh-CN/2.1.1-incubating/security-authorization">授权</a>scheme</li>
+<li>租户配置适用的<a href="/docs/zh-CN/2.1.1-incubating/reference-terminology#cluster">cluster</a>集合</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="namespaces"></a><a href="#namespaces" 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>Tenants and namespaces are two key concepts of Pulsar to support multi-tenancy.</p>
+<p>租户和namespace是Pulsar支持多租户的两个关键概念。</p>
 <ul>
-<li>Pulsar is provisioned for specified tenants with appropriate capacity allocated to the tenant.</li>
-<li>A namespace is the administrative unit nomenclature within a tenant. The configuration policies set on a namespace apply to all the topics created in that namespace. A tenant may create multiple namespaces via self-administration using the REST API and the <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI tool. 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
+<li>Pulsar为指定租户配置了适当的容量分配。</li>
+<li>Namespace是租户中管理单元的命名。 命名空间上设置的配置策略,适用于该命名空间中创建的所有主题。 租户可以通过自我管理,使用 REST API 和 <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI 工具, 创建多个命名空间。 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
 </ul>
-<p>Names for topics in the same namespace will look like this:</p>
+<p>同一命名空间中主题的名称如下所示:</p>
 <pre><code class="hljs css language-http">persistent://tenant/app1/topic-1
 
 persistent://tenant/app1/topic-2
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-schema-registry.html b/content/docs/zh-CN/2.1.1-incubating/concepts-schema-registry.html
index 6c11483..191ab6d 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-schema-registry.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-schema-registry.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema Registry · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need some kind of mechanism for coordinating types at the topic level lest a wid [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema Registry · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:"/><meta name="docsearch:version" content="2.1.1-incubating"/><meta name="docs [...]
               (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),
               m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
@@ -45,37 +45,37 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema Registry</h1></header><article><div><span><p>Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers ne [...]
+        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema Registry</h1></header><article><div><span><p>对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:</p>
 <ol>
-<li>A &quot;client-side&quot; approach in which message producers and consumers are responsible for not only serializing and deserializing messages (which consist of raw bytes) but also &quot;knowing&quot; which types are being transmitted via which topics. If a producer is sending temperature sensor data on the topic <code>topic-1</code>, consumers of that topic will run into trouble if they attempt to parse that data as, say, moisture sensor readings.</li>
-<li>A &quot;server-side&quot; approach in which producers and consumers inform the system which data types can be transmitted via the topic. With this approach, the messaging system enforces type safety and ensures that producers and consumers remain synced.</li>
+<li>&quot;客户端&quot; 方法, 消息生产者和消费者不仅负责序列化和反序列处理消息 (包括原始字节), 而且还 &quot;知道&quot; 哪些类型是通过哪些topic传输的。 如果生产者往主题 <code>topic-1</code>发送温度感应数据,而这个topic的consumer按照读取湿度感应的方式来转换数据,将会遇到问题。</li>
+<li>&quot;服务器端&quot; 方法, 生产者和消费者告知系统哪些数据类型可以通过topic传输。 通过这种方法,消息系统强制执行类型安全, 并确保生产者和消费者保持同步。</li>
 </ol>
-<p>Both approaches are available in Pulsar, and you're free to adopt one or the other or to mix and match on a per-topic basis.</p>
+<p>这两种方法都被Pulsar支持,你可以在topic的基础上,自由选择采用哪一种,或者混用。</p>
 <ol>
-<li>For the &quot;client-side&quot; approach, producers and consumers can send and receive messages consisting of raw byte arrays and leave all type safety enforcement to the application on an &quot;out-of-band&quot; basis.</li>
-<li>For the &quot;server-side&quot; approach, Pulsar has a built-in <strong>schema registry</strong> that enables clients to upload data schemas on a per-topic basis. Those schemas dictate which data types are recognized as valid for that topic.</li>
+<li>&quot;客户端&quot; 方法中, 生产者和消费者可以发送和接收由原始字节数组组成的消息, 并保留所有的类型安全在应用中,以“带外”基础上强制执行。</li>
+<li>&quot;服务器端&quot; 方法中,Pulsar有一个内置的 <strong>schema registry</strong>,它使客户端能够根据每个topic载入数据schema。 这些schema显示了,topic可以识别哪些数据类型为有效。</li>
 </ol>
 <blockquote>
-<p>The Pulsar schema registry is currently available only for the <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-java">Java client</a>.</p>
+<p>Pulsar的schema注册当前仅能在 <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-java">Java 客户端</a>使用。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="basic-architecture"></a><a href="#basic-architecture" 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- [...]
-<p>Schemas are automatically uploaded when you create a typed Producer with a Schema. Additionally, Schemas can be manually uploaded to, fetched from, and updated via Pulsar's <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
- API.</p>
+<h2><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>当你使用Schema创建带类型的producer时,schema将会被自动上传。 此外,可以通过Pulsar的 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
+ API 手动上载、提取和更新schema。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="other-schema-registry-backends"></a><a href="#other-schema-registry-backends" 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 1 [...]
-<p>Out of the box, Pulsar uses the <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log storage system for schema storage. You can, however, use different backends if you wish. Documentation for custom schema storage logic is coming soon.</p>
+<h4><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-.8 [...]
+<p>开箱即用,Pulsar使用 <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log存储系统来保存schema。 不过你也可以按照你的需要使用不同的后端。 客制化的schema存储逻辑文档即将推出。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="how-schemas-work"></a><a href="#how-schemas-work" 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>Pulsar schemas are applied and enforced <em>at the topic level</em> (schemas cannot be applied at the namespace or tenant level). Producers and consumers upload schemas to Pulsar brokers.</p>
-<p>Pulsar schemas are fairly simple data structures that consist of:</p>
+<h2><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. [...]
+<p>Pulsar schema应用于<em>主题层面</em>(schema无法应用于namespace和tenant层面),并且被强制执行,producer和consumer上传schema到Pulsar broker。</p>
+<p>Pulsar schema是非常简单的数据结构,它的构成如下:</p>
 <ul>
-<li>A <strong>name</strong>. In Pulsar, a schema's name is the topic to which the schema is applied.</li>
-<li>A <strong>payload</strong>, which is a binary representation of the schema</li>
-<li>A schema <a href="#supported-schema-formats"><strong>type</strong></a></li>
-<li>User-defined <strong>properties</strong> as a string/string map. Usage of properties is wholly application specific. Possible properties might be the Git hash associated with a schema, an environment like <code>dev</code> or <code>prod</code>, etc.</li>
+<li><strong>name</strong>。Pulsar中, schema的名称是schema应用于的topic。</li>
+<li>** payload **, 它是schema的二进制表示形式。</li>
+<li>Schema<a href="#supported-schema-formats"><strong>类型</strong></a></li>
+<li>用户定义的字符串/字符串映射map,** properties ** 。 Properties如何使用,完全由程序指定。 Properties可能是关联到schema的Git hash,例如<code>dev</code>或者<code>prod</code>等环境信息。</li>
 </ul>
-<h2><a class="anchor" aria-hidden="true" id="schema-versions"></a><a href="#schema-versions" 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>In order to illustrate how schema versioning works, let's walk through an example. Imagine that the Pulsar <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-java">Java client</a> created using the code below attempts to connect to Pulsar and begin sending messages:</p>
+<h2><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.64  [...]
+<p>我们通过一个例子,来讲解schema版本如何工作。 假设使用以下代码创建Pulsar <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-java">Java 客户端</a>,尝试连接到Pulsar,并开始发送消息:</p>
 <pre><code class="hljs css language-java">PulsarClient client = PulsarClient.builder()
         .serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>)
         .build();
@@ -85,13 +85,13 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
         .sendTimeout(<span class="hljs-number">3</span>, TimeUnit.SECONDS)
         .create();
 </code></pre>
-<p>The table below lists the possible scenarios when this connection attempt occurs and what will happen in light of each scenario:</p>
+<p>下表列出了尝试连接时可能出现的场景, 以及每种场景下发生了什么:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Scenario</th><th style="text-align:left">What happens</th></tr>
+<tr><th style="text-align:left">场景</th><th style="text-align:left">发生了什么</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">No schema exists for the topic</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
+<tr><td style="text-align:left">该Topic不存在schema</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using the same schema that's already stored</td><td style="text-align:left">The schema is transmitted to the Pulsar broker. The broker determines that the schema is compatible. The broker attempts to store the schema in <a href="/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview#persistent-storage">BookKeeper</a> but then determines that it's already stored, so it's then used to tag produced messages. [...]
 <tr><td style="text-align:left">A schema already exists; the producer connects using a new schema that is compatible</td><td style="text-align:left">The producer transmits the schema to the broker. The broker determines that the schema is compatible and stores the new schema as the current version (with a new version number).</td></tr>
 </tbody>
@@ -117,7 +117,7 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="managing-schemas"></a><a href="#managing-schemas" 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 use Pulsar's <a href="/docs/zh-CN/2.1.1-incubating/admin-api-schemas">admin tools</a> for managing schemas for topics.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#basic-architecture">Basic architecture</a></li><li><a href="#how [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#基础架构">基础架构</a></li><li><a href="#schema是如何工作的">Schema是如何工作的</a>< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-schema-registry/index.html b/content/docs/zh-CN/2.1.1-incubating/concepts-schema-registry/index.html
index 6c11483..191ab6d 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-schema-registry/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-schema-registry/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema Registry · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need some kind of mechanism for coordinating types at the topic level lest a wid [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema Registry · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:"/><meta name="docsearch:version" content="2.1.1-incubating"/><meta name="docs [...]
               (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),
               m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
@@ -45,37 +45,37 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema Registry</h1></header><article><div><span><p>Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers ne [...]
+        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema Registry</h1></header><article><div><span><p>对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:</p>
 <ol>
-<li>A &quot;client-side&quot; approach in which message producers and consumers are responsible for not only serializing and deserializing messages (which consist of raw bytes) but also &quot;knowing&quot; which types are being transmitted via which topics. If a producer is sending temperature sensor data on the topic <code>topic-1</code>, consumers of that topic will run into trouble if they attempt to parse that data as, say, moisture sensor readings.</li>
-<li>A &quot;server-side&quot; approach in which producers and consumers inform the system which data types can be transmitted via the topic. With this approach, the messaging system enforces type safety and ensures that producers and consumers remain synced.</li>
+<li>&quot;客户端&quot; 方法, 消息生产者和消费者不仅负责序列化和反序列处理消息 (包括原始字节), 而且还 &quot;知道&quot; 哪些类型是通过哪些topic传输的。 如果生产者往主题 <code>topic-1</code>发送温度感应数据,而这个topic的consumer按照读取湿度感应的方式来转换数据,将会遇到问题。</li>
+<li>&quot;服务器端&quot; 方法, 生产者和消费者告知系统哪些数据类型可以通过topic传输。 通过这种方法,消息系统强制执行类型安全, 并确保生产者和消费者保持同步。</li>
 </ol>
-<p>Both approaches are available in Pulsar, and you're free to adopt one or the other or to mix and match on a per-topic basis.</p>
+<p>这两种方法都被Pulsar支持,你可以在topic的基础上,自由选择采用哪一种,或者混用。</p>
 <ol>
-<li>For the &quot;client-side&quot; approach, producers and consumers can send and receive messages consisting of raw byte arrays and leave all type safety enforcement to the application on an &quot;out-of-band&quot; basis.</li>
-<li>For the &quot;server-side&quot; approach, Pulsar has a built-in <strong>schema registry</strong> that enables clients to upload data schemas on a per-topic basis. Those schemas dictate which data types are recognized as valid for that topic.</li>
+<li>&quot;客户端&quot; 方法中, 生产者和消费者可以发送和接收由原始字节数组组成的消息, 并保留所有的类型安全在应用中,以“带外”基础上强制执行。</li>
+<li>&quot;服务器端&quot; 方法中,Pulsar有一个内置的 <strong>schema registry</strong>,它使客户端能够根据每个topic载入数据schema。 这些schema显示了,topic可以识别哪些数据类型为有效。</li>
 </ol>
 <blockquote>
-<p>The Pulsar schema registry is currently available only for the <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-java">Java client</a>.</p>
+<p>Pulsar的schema注册当前仅能在 <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-java">Java 客户端</a>使用。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="basic-architecture"></a><a href="#basic-architecture" 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- [...]
-<p>Schemas are automatically uploaded when you create a typed Producer with a Schema. Additionally, Schemas can be manually uploaded to, fetched from, and updated via Pulsar's <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
- API.</p>
+<h2><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>当你使用Schema创建带类型的producer时,schema将会被自动上传。 此外,可以通过Pulsar的 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
+ API 手动上载、提取和更新schema。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="other-schema-registry-backends"></a><a href="#other-schema-registry-backends" 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 1 [...]
-<p>Out of the box, Pulsar uses the <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log storage system for schema storage. You can, however, use different backends if you wish. Documentation for custom schema storage logic is coming soon.</p>
+<h4><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-.8 [...]
+<p>开箱即用,Pulsar使用 <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log存储系统来保存schema。 不过你也可以按照你的需要使用不同的后端。 客制化的schema存储逻辑文档即将推出。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="how-schemas-work"></a><a href="#how-schemas-work" 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>Pulsar schemas are applied and enforced <em>at the topic level</em> (schemas cannot be applied at the namespace or tenant level). Producers and consumers upload schemas to Pulsar brokers.</p>
-<p>Pulsar schemas are fairly simple data structures that consist of:</p>
+<h2><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. [...]
+<p>Pulsar schema应用于<em>主题层面</em>(schema无法应用于namespace和tenant层面),并且被强制执行,producer和consumer上传schema到Pulsar broker。</p>
+<p>Pulsar schema是非常简单的数据结构,它的构成如下:</p>
 <ul>
-<li>A <strong>name</strong>. In Pulsar, a schema's name is the topic to which the schema is applied.</li>
-<li>A <strong>payload</strong>, which is a binary representation of the schema</li>
-<li>A schema <a href="#supported-schema-formats"><strong>type</strong></a></li>
-<li>User-defined <strong>properties</strong> as a string/string map. Usage of properties is wholly application specific. Possible properties might be the Git hash associated with a schema, an environment like <code>dev</code> or <code>prod</code>, etc.</li>
+<li><strong>name</strong>。Pulsar中, schema的名称是schema应用于的topic。</li>
+<li>** payload **, 它是schema的二进制表示形式。</li>
+<li>Schema<a href="#supported-schema-formats"><strong>类型</strong></a></li>
+<li>用户定义的字符串/字符串映射map,** properties ** 。 Properties如何使用,完全由程序指定。 Properties可能是关联到schema的Git hash,例如<code>dev</code>或者<code>prod</code>等环境信息。</li>
 </ul>
-<h2><a class="anchor" aria-hidden="true" id="schema-versions"></a><a href="#schema-versions" 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>In order to illustrate how schema versioning works, let's walk through an example. Imagine that the Pulsar <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-java">Java client</a> created using the code below attempts to connect to Pulsar and begin sending messages:</p>
+<h2><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.64  [...]
+<p>我们通过一个例子,来讲解schema版本如何工作。 假设使用以下代码创建Pulsar <a href="/docs/zh-CN/2.1.1-incubating/client-libraries-java">Java 客户端</a>,尝试连接到Pulsar,并开始发送消息:</p>
 <pre><code class="hljs css language-java">PulsarClient client = PulsarClient.builder()
         .serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>)
         .build();
@@ -85,13 +85,13 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
         .sendTimeout(<span class="hljs-number">3</span>, TimeUnit.SECONDS)
         .create();
 </code></pre>
-<p>The table below lists the possible scenarios when this connection attempt occurs and what will happen in light of each scenario:</p>
+<p>下表列出了尝试连接时可能出现的场景, 以及每种场景下发生了什么:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Scenario</th><th style="text-align:left">What happens</th></tr>
+<tr><th style="text-align:left">场景</th><th style="text-align:left">发生了什么</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">No schema exists for the topic</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
+<tr><td style="text-align:left">该Topic不存在schema</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using the same schema that's already stored</td><td style="text-align:left">The schema is transmitted to the Pulsar broker. The broker determines that the schema is compatible. The broker attempts to store the schema in <a href="/docs/zh-CN/2.1.1-incubating/concepts-architecture-overview#persistent-storage">BookKeeper</a> but then determines that it's already stored, so it's then used to tag produced messages. [...]
 <tr><td style="text-align:left">A schema already exists; the producer connects using a new schema that is compatible</td><td style="text-align:left">The producer transmits the schema to the broker. The broker determines that the schema is compatible and stores the new schema as the current version (with a new version number).</td></tr>
 </tbody>
@@ -117,7 +117,7 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="managing-schemas"></a><a href="#managing-schemas" 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 use Pulsar's <a href="/docs/zh-CN/2.1.1-incubating/admin-api-schemas">admin tools</a> for managing schemas for topics.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#basic-architecture">Basic architecture</a></li><li><a href="#how [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#基础架构">基础架构</a></li><li><a href="#schema是如何工作的">Schema是如何工作的</a>< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/concepts-architecture-overview.html b/content/docs/zh-CN/concepts-architecture-overview.html
index 89b6730..bfb9367 100644
--- a/content/docs/zh-CN/concepts-architecture-overview.html
+++ b/content/docs/zh-CN/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>在Pulsar集群</p>
 <ul>
 <li>一个或者多个brokers负责处理和负载均衡从生产者源源不断发送出的消息,并将他们发送给消费者。它与配置存储交互来处理相应的任务,它将消息存储在BookKeeper实例中(aka bookies)。它依赖ZooKeeper集群处理特定的任务,等等。</li>
-<li>一个BookKeeper集群由一个或者多个bookies组成,bookies负责消息的<a href="#persistent-storage">持久存储</a>。</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>一个ZooKeeper集群专门用于这个集群的操作。</li>
 </ul>
 <p>下图是Pulsar集群的一个说明:</p>
diff --git a/content/docs/zh-CN/concepts-architecture-overview/index.html b/content/docs/zh-CN/concepts-architecture-overview/index.html
index 89b6730..bfb9367 100644
--- a/content/docs/zh-CN/concepts-architecture-overview/index.html
+++ b/content/docs/zh-CN/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>在Pulsar集群</p>
 <ul>
 <li>一个或者多个brokers负责处理和负载均衡从生产者源源不断发送出的消息,并将他们发送给消费者。它与配置存储交互来处理相应的任务,它将消息存储在BookKeeper实例中(aka bookies)。它依赖ZooKeeper集群处理特定的任务,等等。</li>
-<li>一个BookKeeper集群由一个或者多个bookies组成,bookies负责消息的<a href="#persistent-storage">持久存储</a>。</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>一个ZooKeeper集群专门用于这个集群的操作。</li>
 </ul>
 <p>下图是Pulsar集群的一个说明:</p>
diff --git a/content/docs/zh-CN/concepts-multi-tenancy.html b/content/docs/zh-CN/concepts-multi-tenancy.html
index 54b43a3..330f042 100644
--- a/content/docs/zh-CN/concepts-multi-tenancy.html
+++ b/content/docs/zh-CN/concepts-multi-tenancy.html
@@ -46,23 +46,23 @@
               }
             });
         </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Multi Tenancy</h1></header><article><div><span><p>Pulsar从底层就是作为多租户系统来创建的。 为了支持多租户,Pulsar有着租户的概念, 租户可以被跨集群传播,每个租户都可以使用他们自己的<a href="/docs/zh-CN/security-overview">认证和鉴权</a>s [...]
-<p>Pulsar多租户的属性在topic的URL上可以明显的被反映到。URL有着这样的结构:</p>
+<p>Pulsar多租户的天性,在topic的URL映射上充分显现,结构如下:</p>
 <pre><code class="hljs css language-http">persistent://tenant/namespace/topic
 </code></pre>
-<p>As you can see, the tenant is the most basic unit of categorization for topics (more fundamental than the namespace and topic name).</p>
+<p>正如您所看到的, 租户是topic的最基本的分类单元 (比namespace和topic名称更基本)。</p>
 <h2><a class="anchor" aria-hidden="true" id="tenants"></a><a href="#tenants" 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>To each tenant in a Pulsar instance you can assign:</p>
+<p>对于Pulsar实例中的每个租户,你可以分配给他:</p>
 <ul>
-<li>An <a href="/docs/zh-CN/security-authorization">authorization</a> scheme</li>
-<li>The set of <a href="/docs/zh-CN/reference-terminology#cluster">clusters</a> to which the tenant's configuration applies</li>
+<li><a href="/docs/zh-CN/security-authorization">授权</a>scheme</li>
+<li>租户配置适用的<a href="/docs/zh-CN/reference-terminology#cluster">cluster</a>集合</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="namespaces"></a><a href="#namespaces" 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>Tenants and namespaces are two key concepts of Pulsar to support multi-tenancy.</p>
+<p>租户和namespace是Pulsar支持多租户的两个关键概念。</p>
 <ul>
-<li>Pulsar is provisioned for specified tenants with appropriate capacity allocated to the tenant.</li>
-<li>A namespace is the administrative unit nomenclature within a tenant. The configuration policies set on a namespace apply to all the topics created in that namespace. A tenant may create multiple namespaces via self-administration using the REST API and the <a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> CLI tool. 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
+<li>Pulsar为指定租户配置了适当的容量分配。</li>
+<li>Namespace是租户中管理单元的命名。 命名空间上设置的配置策略,适用于该命名空间中创建的所有主题。 租户可以通过自我管理,使用 REST API 和 <a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> CLI 工具, 创建多个命名空间。 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
 </ul>
-<p>Names for topics in the same namespace will look like this:</p>
+<p>同一命名空间中主题的名称如下所示:</p>
 <pre><code class="hljs css language-http">persistent://tenant/app1/topic-1
 
 persistent://tenant/app1/topic-2
diff --git a/content/docs/zh-CN/concepts-multi-tenancy/index.html b/content/docs/zh-CN/concepts-multi-tenancy/index.html
index 54b43a3..330f042 100644
--- a/content/docs/zh-CN/concepts-multi-tenancy/index.html
+++ b/content/docs/zh-CN/concepts-multi-tenancy/index.html
@@ -46,23 +46,23 @@
               }
             });
         </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Multi Tenancy</h1></header><article><div><span><p>Pulsar从底层就是作为多租户系统来创建的。 为了支持多租户,Pulsar有着租户的概念, 租户可以被跨集群传播,每个租户都可以使用他们自己的<a href="/docs/zh-CN/security-overview">认证和鉴权</a>s [...]
-<p>Pulsar多租户的属性在topic的URL上可以明显的被反映到。URL有着这样的结构:</p>
+<p>Pulsar多租户的天性,在topic的URL映射上充分显现,结构如下:</p>
 <pre><code class="hljs css language-http">persistent://tenant/namespace/topic
 </code></pre>
-<p>As you can see, the tenant is the most basic unit of categorization for topics (more fundamental than the namespace and topic name).</p>
+<p>正如您所看到的, 租户是topic的最基本的分类单元 (比namespace和topic名称更基本)。</p>
 <h2><a class="anchor" aria-hidden="true" id="tenants"></a><a href="#tenants" 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>To each tenant in a Pulsar instance you can assign:</p>
+<p>对于Pulsar实例中的每个租户,你可以分配给他:</p>
 <ul>
-<li>An <a href="/docs/zh-CN/security-authorization">authorization</a> scheme</li>
-<li>The set of <a href="/docs/zh-CN/reference-terminology#cluster">clusters</a> to which the tenant's configuration applies</li>
+<li><a href="/docs/zh-CN/security-authorization">授权</a>scheme</li>
+<li>租户配置适用的<a href="/docs/zh-CN/reference-terminology#cluster">cluster</a>集合</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="namespaces"></a><a href="#namespaces" 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>Tenants and namespaces are two key concepts of Pulsar to support multi-tenancy.</p>
+<p>租户和namespace是Pulsar支持多租户的两个关键概念。</p>
 <ul>
-<li>Pulsar is provisioned for specified tenants with appropriate capacity allocated to the tenant.</li>
-<li>A namespace is the administrative unit nomenclature within a tenant. The configuration policies set on a namespace apply to all the topics created in that namespace. A tenant may create multiple namespaces via self-administration using the REST API and the <a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> CLI tool. 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
+<li>Pulsar为指定租户配置了适当的容量分配。</li>
+<li>Namespace是租户中管理单元的命名。 命名空间上设置的配置策略,适用于该命名空间中创建的所有主题。 租户可以通过自我管理,使用 REST API 和 <a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> CLI 工具, 创建多个命名空间。 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
 </ul>
-<p>Names for topics in the same namespace will look like this:</p>
+<p>同一命名空间中主题的名称如下所示:</p>
 <pre><code class="hljs css language-http">persistent://tenant/app1/topic-1
 
 persistent://tenant/app1/topic-2
diff --git a/content/docs/zh-CN/concepts-schema-registry.html b/content/docs/zh-CN/concepts-schema-registry.html
index bb91467..5acd6bc 100644
--- a/content/docs/zh-CN/concepts-schema-registry.html
+++ b/content/docs/zh-CN/concepts-schema-registry.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema Registry · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need some kind of mechanism for coordinating types at the topic level lest a wid [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema Registry · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:"/><meta name="docsearch:version" content="2.2.0"/><meta name="docsearch:langu [...]
               (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),
               m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
@@ -45,37 +45,37 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema Registry</h1></header><article><div><span><p>Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers ne [...]
+        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema Registry</h1></header><article><div><span><p>对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:</p>
 <ol>
-<li>A &quot;client-side&quot; approach in which message producers and consumers are responsible for not only serializing and deserializing messages (which consist of raw bytes) but also &quot;knowing&quot; which types are being transmitted via which topics. If a producer is sending temperature sensor data on the topic <code>topic-1</code>, consumers of that topic will run into trouble if they attempt to parse that data as, say, moisture sensor readings.</li>
-<li>A &quot;server-side&quot; approach in which producers and consumers inform the system which data types can be transmitted via the topic. With this approach, the messaging system enforces type safety and ensures that producers and consumers remain synced.</li>
+<li>&quot;客户端&quot; 方法, 消息生产者和消费者不仅负责序列化和反序列处理消息 (包括原始字节), 而且还 &quot;知道&quot; 哪些类型是通过哪些topic传输的。 如果生产者往主题 <code>topic-1</code>发送温度感应数据,而这个topic的consumer按照读取湿度感应的方式来转换数据,将会遇到问题。</li>
+<li>&quot;服务器端&quot; 方法, 生产者和消费者告知系统哪些数据类型可以通过topic传输。 通过这种方法,消息系统强制执行类型安全, 并确保生产者和消费者保持同步。</li>
 </ol>
-<p>Both approaches are available in Pulsar, and you're free to adopt one or the other or to mix and match on a per-topic basis.</p>
+<p>这两种方法都被Pulsar支持,你可以在topic的基础上,自由选择采用哪一种,或者混用。</p>
 <ol>
-<li>For the &quot;client-side&quot; approach, producers and consumers can send and receive messages consisting of raw byte arrays and leave all type safety enforcement to the application on an &quot;out-of-band&quot; basis.</li>
-<li>For the &quot;server-side&quot; approach, Pulsar has a built-in <strong>schema registry</strong> that enables clients to upload data schemas on a per-topic basis. Those schemas dictate which data types are recognized as valid for that topic.</li>
+<li>&quot;客户端&quot; 方法中, 生产者和消费者可以发送和接收由原始字节数组组成的消息, 并保留所有的类型安全在应用中,以“带外”基础上强制执行。</li>
+<li>&quot;服务器端&quot; 方法中,Pulsar有一个内置的 <strong>schema registry</strong>,它使客户端能够根据每个topic载入数据schema。 这些schema显示了,topic可以识别哪些数据类型为有效。</li>
 </ol>
 <blockquote>
-<p>The Pulsar schema registry is currently available only for the <a href="/docs/zh-CN/client-libraries-java">Java client</a>.</p>
+<p>Pulsar的schema注册当前仅能在 <a href="/docs/zh-CN/client-libraries-java">Java 客户端</a>使用。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="basic-architecture"></a><a href="#basic-architecture" 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- [...]
-<p>Schemas are automatically uploaded when you create a typed Producer with a Schema. Additionally, Schemas can be manually uploaded to, fetched from, and updated via Pulsar's <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
- API.</p>
+<h2><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>当你使用Schema创建带类型的producer时,schema将会被自动上传。 此外,可以通过Pulsar的 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
+ API 手动上载、提取和更新schema。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="other-schema-registry-backends"></a><a href="#other-schema-registry-backends" 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 1 [...]
-<p>Out of the box, Pulsar uses the <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log storage system for schema storage. You can, however, use different backends if you wish. Documentation for custom schema storage logic is coming soon.</p>
+<h4><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-.8 [...]
+<p>开箱即用,Pulsar使用 <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log存储系统来保存schema。 不过你也可以按照你的需要使用不同的后端。 客制化的schema存储逻辑文档即将推出。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="how-schemas-work"></a><a href="#how-schemas-work" 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>Pulsar schemas are applied and enforced <em>at the topic level</em> (schemas cannot be applied at the namespace or tenant level). Producers and consumers upload schemas to Pulsar brokers.</p>
-<p>Pulsar schemas are fairly simple data structures that consist of:</p>
+<h2><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. [...]
+<p>Pulsar schema应用于<em>主题层面</em>(schema无法应用于namespace和tenant层面),并且被强制执行,producer和consumer上传schema到Pulsar broker。</p>
+<p>Pulsar schema是非常简单的数据结构,它的构成如下:</p>
 <ul>
-<li>A <strong>name</strong>. In Pulsar, a schema's name is the topic to which the schema is applied.</li>
-<li>A <strong>payload</strong>, which is a binary representation of the schema</li>
-<li>A schema <a href="#supported-schema-formats"><strong>type</strong></a></li>
-<li>User-defined <strong>properties</strong> as a string/string map. Usage of properties is wholly application specific. Possible properties might be the Git hash associated with a schema, an environment like <code>dev</code> or <code>prod</code>, etc.</li>
+<li><strong>name</strong>。Pulsar中, schema的名称是schema应用于的topic。</li>
+<li>** payload **, 它是schema的二进制表示形式。</li>
+<li>Schema<a href="#supported-schema-formats"><strong>类型</strong></a></li>
+<li>用户定义的字符串/字符串映射map,** properties ** 。 Properties如何使用,完全由程序指定。 Properties可能是关联到schema的Git hash,例如<code>dev</code>或者<code>prod</code>等环境信息。</li>
 </ul>
-<h2><a class="anchor" aria-hidden="true" id="schema-versions"></a><a href="#schema-versions" 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>In order to illustrate how schema versioning works, let's walk through an example. Imagine that the Pulsar <a href="/docs/zh-CN/client-libraries-java">Java client</a> created using the code below attempts to connect to Pulsar and begin sending messages:</p>
+<h2><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.64  [...]
+<p>我们通过一个例子,来讲解schema版本如何工作。 假设使用以下代码创建Pulsar <a href="/docs/zh-CN/client-libraries-java">Java 客户端</a>,尝试连接到Pulsar,并开始发送消息:</p>
 <pre><code class="hljs css language-java">PulsarClient client = PulsarClient.builder()
         .serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>)
         .build();
@@ -85,13 +85,13 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
         .sendTimeout(<span class="hljs-number">3</span>, TimeUnit.SECONDS)
         .create();
 </code></pre>
-<p>The table below lists the possible scenarios when this connection attempt occurs and what will happen in light of each scenario:</p>
+<p>下表列出了尝试连接时可能出现的场景, 以及每种场景下发生了什么:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Scenario</th><th style="text-align:left">What happens</th></tr>
+<tr><th style="text-align:left">场景</th><th style="text-align:left">发生了什么</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">No schema exists for the topic</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
+<tr><td style="text-align:left">该Topic不存在schema</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using the same schema that's already stored</td><td style="text-align:left">The schema is transmitted to the Pulsar broker. The broker determines that the schema is compatible. The broker attempts to store the schema in <a href="/docs/zh-CN/concepts-architecture-overview#persistent-storage">BookKeeper</a> but then determines that it's already stored, so it's then used to tag produced messages.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using a new schema that is compatible</td><td style="text-align:left">The producer transmits the schema to the broker. The broker determines that the schema is compatible and stores the new schema as the current version (with a new version number).</td></tr>
 </tbody>
@@ -117,7 +117,7 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="managing-schemas"></a><a href="#managing-schemas" 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 use Pulsar's <a href="/docs/zh-CN/admin-api-schemas">admin tools</a> for managing schemas for topics.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#basic-architecture">Basic architecture</a></li><li><a href="#how-schemas-work">How schemas work</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#基础架构">基础架构</a></li><li><a href="#schema是如何工作的">Schema是如何工作的</a></li><li><a href="#schema版本">Schema [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/concepts-schema-registry/index.html b/content/docs/zh-CN/concepts-schema-registry/index.html
index bb91467..5acd6bc 100644
--- a/content/docs/zh-CN/concepts-schema-registry/index.html
+++ b/content/docs/zh-CN/concepts-schema-registry/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema Registry · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need some kind of mechanism for coordinating types at the topic level lest a wid [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema Registry · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:"/><meta name="docsearch:version" content="2.2.0"/><meta name="docsearch:langu [...]
               (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),
               m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
@@ -45,37 +45,37 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema Registry</h1></header><article><div><span><p>Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers ne [...]
+        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema Registry</h1></header><article><div><span><p>对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:</p>
 <ol>
-<li>A &quot;client-side&quot; approach in which message producers and consumers are responsible for not only serializing and deserializing messages (which consist of raw bytes) but also &quot;knowing&quot; which types are being transmitted via which topics. If a producer is sending temperature sensor data on the topic <code>topic-1</code>, consumers of that topic will run into trouble if they attempt to parse that data as, say, moisture sensor readings.</li>
-<li>A &quot;server-side&quot; approach in which producers and consumers inform the system which data types can be transmitted via the topic. With this approach, the messaging system enforces type safety and ensures that producers and consumers remain synced.</li>
+<li>&quot;客户端&quot; 方法, 消息生产者和消费者不仅负责序列化和反序列处理消息 (包括原始字节), 而且还 &quot;知道&quot; 哪些类型是通过哪些topic传输的。 如果生产者往主题 <code>topic-1</code>发送温度感应数据,而这个topic的consumer按照读取湿度感应的方式来转换数据,将会遇到问题。</li>
+<li>&quot;服务器端&quot; 方法, 生产者和消费者告知系统哪些数据类型可以通过topic传输。 通过这种方法,消息系统强制执行类型安全, 并确保生产者和消费者保持同步。</li>
 </ol>
-<p>Both approaches are available in Pulsar, and you're free to adopt one or the other or to mix and match on a per-topic basis.</p>
+<p>这两种方法都被Pulsar支持,你可以在topic的基础上,自由选择采用哪一种,或者混用。</p>
 <ol>
-<li>For the &quot;client-side&quot; approach, producers and consumers can send and receive messages consisting of raw byte arrays and leave all type safety enforcement to the application on an &quot;out-of-band&quot; basis.</li>
-<li>For the &quot;server-side&quot; approach, Pulsar has a built-in <strong>schema registry</strong> that enables clients to upload data schemas on a per-topic basis. Those schemas dictate which data types are recognized as valid for that topic.</li>
+<li>&quot;客户端&quot; 方法中, 生产者和消费者可以发送和接收由原始字节数组组成的消息, 并保留所有的类型安全在应用中,以“带外”基础上强制执行。</li>
+<li>&quot;服务器端&quot; 方法中,Pulsar有一个内置的 <strong>schema registry</strong>,它使客户端能够根据每个topic载入数据schema。 这些schema显示了,topic可以识别哪些数据类型为有效。</li>
 </ol>
 <blockquote>
-<p>The Pulsar schema registry is currently available only for the <a href="/docs/zh-CN/client-libraries-java">Java client</a>.</p>
+<p>Pulsar的schema注册当前仅能在 <a href="/docs/zh-CN/client-libraries-java">Java 客户端</a>使用。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="basic-architecture"></a><a href="#basic-architecture" 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- [...]
-<p>Schemas are automatically uploaded when you create a typed Producer with a Schema. Additionally, Schemas can be manually uploaded to, fetched from, and updated via Pulsar's <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
- API.</p>
+<h2><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>当你使用Schema创建带类型的producer时,schema将会被自动上传。 此外,可以通过Pulsar的 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
+ API 手动上载、提取和更新schema。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="other-schema-registry-backends"></a><a href="#other-schema-registry-backends" 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 1 [...]
-<p>Out of the box, Pulsar uses the <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log storage system for schema storage. You can, however, use different backends if you wish. Documentation for custom schema storage logic is coming soon.</p>
+<h4><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-.8 [...]
+<p>开箱即用,Pulsar使用 <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log存储系统来保存schema。 不过你也可以按照你的需要使用不同的后端。 客制化的schema存储逻辑文档即将推出。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="how-schemas-work"></a><a href="#how-schemas-work" 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>Pulsar schemas are applied and enforced <em>at the topic level</em> (schemas cannot be applied at the namespace or tenant level). Producers and consumers upload schemas to Pulsar brokers.</p>
-<p>Pulsar schemas are fairly simple data structures that consist of:</p>
+<h2><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. [...]
+<p>Pulsar schema应用于<em>主题层面</em>(schema无法应用于namespace和tenant层面),并且被强制执行,producer和consumer上传schema到Pulsar broker。</p>
+<p>Pulsar schema是非常简单的数据结构,它的构成如下:</p>
 <ul>
-<li>A <strong>name</strong>. In Pulsar, a schema's name is the topic to which the schema is applied.</li>
-<li>A <strong>payload</strong>, which is a binary representation of the schema</li>
-<li>A schema <a href="#supported-schema-formats"><strong>type</strong></a></li>
-<li>User-defined <strong>properties</strong> as a string/string map. Usage of properties is wholly application specific. Possible properties might be the Git hash associated with a schema, an environment like <code>dev</code> or <code>prod</code>, etc.</li>
+<li><strong>name</strong>。Pulsar中, schema的名称是schema应用于的topic。</li>
+<li>** payload **, 它是schema的二进制表示形式。</li>
+<li>Schema<a href="#supported-schema-formats"><strong>类型</strong></a></li>
+<li>用户定义的字符串/字符串映射map,** properties ** 。 Properties如何使用,完全由程序指定。 Properties可能是关联到schema的Git hash,例如<code>dev</code>或者<code>prod</code>等环境信息。</li>
 </ul>
-<h2><a class="anchor" aria-hidden="true" id="schema-versions"></a><a href="#schema-versions" 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>In order to illustrate how schema versioning works, let's walk through an example. Imagine that the Pulsar <a href="/docs/zh-CN/client-libraries-java">Java client</a> created using the code below attempts to connect to Pulsar and begin sending messages:</p>
+<h2><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.64  [...]
+<p>我们通过一个例子,来讲解schema版本如何工作。 假设使用以下代码创建Pulsar <a href="/docs/zh-CN/client-libraries-java">Java 客户端</a>,尝试连接到Pulsar,并开始发送消息:</p>
 <pre><code class="hljs css language-java">PulsarClient client = PulsarClient.builder()
         .serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>)
         .build();
@@ -85,13 +85,13 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
         .sendTimeout(<span class="hljs-number">3</span>, TimeUnit.SECONDS)
         .create();
 </code></pre>
-<p>The table below lists the possible scenarios when this connection attempt occurs and what will happen in light of each scenario:</p>
+<p>下表列出了尝试连接时可能出现的场景, 以及每种场景下发生了什么:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Scenario</th><th style="text-align:left">What happens</th></tr>
+<tr><th style="text-align:left">场景</th><th style="text-align:left">发生了什么</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">No schema exists for the topic</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
+<tr><td style="text-align:left">该Topic不存在schema</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using the same schema that's already stored</td><td style="text-align:left">The schema is transmitted to the Pulsar broker. The broker determines that the schema is compatible. The broker attempts to store the schema in <a href="/docs/zh-CN/concepts-architecture-overview#persistent-storage">BookKeeper</a> but then determines that it's already stored, so it's then used to tag produced messages.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using a new schema that is compatible</td><td style="text-align:left">The producer transmits the schema to the broker. The broker determines that the schema is compatible and stores the new schema as the current version (with a new version number).</td></tr>
 </tbody>
@@ -117,7 +117,7 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="managing-schemas"></a><a href="#managing-schemas" 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 use Pulsar's <a href="/docs/zh-CN/admin-api-schemas">admin tools</a> for managing schemas for topics.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#basic-architecture">Basic architecture</a></li><li><a href="#how-schemas-work">How schemas work</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#基础架构">基础架构</a></li><li><a href="#schema是如何工作的">Schema是如何工作的</a></li><li><a href="#schema版本">Schema [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/concepts-architecture-overview.html b/content/docs/zh-CN/next/concepts-architecture-overview.html
index f762151..da566c1 100644
--- a/content/docs/zh-CN/next/concepts-architecture-overview.html
+++ b/content/docs/zh-CN/next/concepts-architecture-overview.html
@@ -49,7 +49,7 @@
 <p>在Pulsar集群</p>
 <ul>
 <li>一个或者多个brokers负责处理和负载均衡从生产者源源不断发送出的消息,并将他们发送给消费者。它与配置存储交互来处理相应的任务,它将消息存储在BookKeeper实例中(aka bookies)。它依赖ZooKeeper集群处理特定的任务,等等。</li>
-<li>一个BookKeeper集群由一个或者多个bookies组成,bookies负责消息的<a href="#persistent-storage">持久存储</a>。</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>一个ZooKeeper集群专门用于这个集群的操作。</li>
 </ul>
 <p>下图是Pulsar集群的一个说明:</p>
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 f762151..da566c1 100644
--- a/content/docs/zh-CN/next/concepts-architecture-overview/index.html
+++ b/content/docs/zh-CN/next/concepts-architecture-overview/index.html
@@ -49,7 +49,7 @@
 <p>在Pulsar集群</p>
 <ul>
 <li>一个或者多个brokers负责处理和负载均衡从生产者源源不断发送出的消息,并将他们发送给消费者。它与配置存储交互来处理相应的任务,它将消息存储在BookKeeper实例中(aka bookies)。它依赖ZooKeeper集群处理特定的任务,等等。</li>
-<li>一个BookKeeper集群由一个或者多个bookies组成,bookies负责消息的<a href="#persistent-storage">持久存储</a>。</li>
+<li>A BookKeeper cluster consisting of one or more bookies handles <a href="#persistent-storage">persistent storage</a> of messages.</li>
 <li>一个ZooKeeper集群专门用于这个集群的操作。</li>
 </ul>
 <p>下图是Pulsar集群的一个说明:</p>
diff --git a/content/docs/zh-CN/next/concepts-multi-tenancy.html b/content/docs/zh-CN/next/concepts-multi-tenancy.html
index c154730..fdbe3cc 100644
--- a/content/docs/zh-CN/next/concepts-multi-tenancy.html
+++ b/content/docs/zh-CN/next/concepts-multi-tenancy.html
@@ -46,23 +46,23 @@
               }
             });
         </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">多租户</h1></header><article><div><span><p>Pulsar从底层就是作为多租户系统来创建的。 为了支持多租户,Pulsar有着租户的概念, 租户可以被跨集群传播,每个租户都可以使用他们自己的<a href="/docs/zh-CN/next/security-overview">认证和鉴权</a>scheme [...]
-<p>Pulsar多租户的属性在topic的URL上可以明显的被反映到。URL有着这样的结构:</p>
+<p>Pulsar多租户的天性,在topic的URL映射上充分显现,结构如下:</p>
 <pre><code class="hljs css language-http">persistent://tenant/namespace/topic
 </code></pre>
-<p>As you can see, the tenant is the most basic unit of categorization for topics (more fundamental than the namespace and topic name).</p>
+<p>正如您所看到的, 租户是topic的最基本的分类单元 (比namespace和topic名称更基本)。</p>
 <h2><a class="anchor" aria-hidden="true" id="tenants"></a><a href="#tenants" 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>To each tenant in a Pulsar instance you can assign:</p>
+<p>对于Pulsar实例中的每个租户,你可以分配给他:</p>
 <ul>
-<li>An <a href="/docs/zh-CN/next/security-authorization">authorization</a> scheme</li>
-<li>The set of <a href="/docs/zh-CN/next/reference-terminology#cluster">clusters</a> to which the tenant's configuration applies</li>
+<li><a href="/docs/zh-CN/next/security-authorization">授权</a>scheme</li>
+<li>租户配置适用的<a href="/docs/zh-CN/next/reference-terminology#cluster">cluster</a>集合</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="namespaces"></a><a href="#namespaces" 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>Tenants and namespaces are two key concepts of Pulsar to support multi-tenancy.</p>
+<p>租户和namespace是Pulsar支持多租户的两个关键概念。</p>
 <ul>
-<li>Pulsar is provisioned for specified tenants with appropriate capacity allocated to the tenant.</li>
-<li>A namespace is the administrative unit nomenclature within a tenant. The configuration policies set on a namespace apply to all the topics created in that namespace. A tenant may create multiple namespaces via self-administration using the REST API and the <a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> CLI tool. 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
+<li>Pulsar为指定租户配置了适当的容量分配。</li>
+<li>Namespace是租户中管理单元的命名。 命名空间上设置的配置策略,适用于该命名空间中创建的所有主题。 租户可以通过自我管理,使用 REST API 和 <a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> CLI 工具, 创建多个命名空间。 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
 </ul>
-<p>Names for topics in the same namespace will look like this:</p>
+<p>同一命名空间中主题的名称如下所示:</p>
 <pre><code class="hljs css language-http">persistent://tenant/app1/topic-1
 
 persistent://tenant/app1/topic-2
diff --git a/content/docs/zh-CN/next/concepts-multi-tenancy/index.html b/content/docs/zh-CN/next/concepts-multi-tenancy/index.html
index c154730..fdbe3cc 100644
--- a/content/docs/zh-CN/next/concepts-multi-tenancy/index.html
+++ b/content/docs/zh-CN/next/concepts-multi-tenancy/index.html
@@ -46,23 +46,23 @@
               }
             });
         </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">多租户</h1></header><article><div><span><p>Pulsar从底层就是作为多租户系统来创建的。 为了支持多租户,Pulsar有着租户的概念, 租户可以被跨集群传播,每个租户都可以使用他们自己的<a href="/docs/zh-CN/next/security-overview">认证和鉴权</a>scheme [...]
-<p>Pulsar多租户的属性在topic的URL上可以明显的被反映到。URL有着这样的结构:</p>
+<p>Pulsar多租户的天性,在topic的URL映射上充分显现,结构如下:</p>
 <pre><code class="hljs css language-http">persistent://tenant/namespace/topic
 </code></pre>
-<p>As you can see, the tenant is the most basic unit of categorization for topics (more fundamental than the namespace and topic name).</p>
+<p>正如您所看到的, 租户是topic的最基本的分类单元 (比namespace和topic名称更基本)。</p>
 <h2><a class="anchor" aria-hidden="true" id="tenants"></a><a href="#tenants" 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>To each tenant in a Pulsar instance you can assign:</p>
+<p>对于Pulsar实例中的每个租户,你可以分配给他:</p>
 <ul>
-<li>An <a href="/docs/zh-CN/next/security-authorization">authorization</a> scheme</li>
-<li>The set of <a href="/docs/zh-CN/next/reference-terminology#cluster">clusters</a> to which the tenant's configuration applies</li>
+<li><a href="/docs/zh-CN/next/security-authorization">授权</a>scheme</li>
+<li>租户配置适用的<a href="/docs/zh-CN/next/reference-terminology#cluster">cluster</a>集合</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="namespaces"></a><a href="#namespaces" 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>Tenants and namespaces are two key concepts of Pulsar to support multi-tenancy.</p>
+<p>租户和namespace是Pulsar支持多租户的两个关键概念。</p>
 <ul>
-<li>Pulsar is provisioned for specified tenants with appropriate capacity allocated to the tenant.</li>
-<li>A namespace is the administrative unit nomenclature within a tenant. The configuration policies set on a namespace apply to all the topics created in that namespace. A tenant may create multiple namespaces via self-administration using the REST API and the <a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> CLI tool. 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
+<li>Pulsar为指定租户配置了适当的容量分配。</li>
+<li>Namespace是租户中管理单元的命名。 命名空间上设置的配置策略,适用于该命名空间中创建的所有主题。 租户可以通过自我管理,使用 REST API 和 <a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> CLI 工具, 创建多个命名空间。 例如,一个对接多个应用的租户,可以为每个应用创建不同的namespace。</li>
 </ul>
-<p>Names for topics in the same namespace will look like this:</p>
+<p>同一命名空间中主题的名称如下所示:</p>
 <pre><code class="hljs css language-http">persistent://tenant/app1/topic-1
 
 persistent://tenant/app1/topic-2
diff --git a/content/docs/zh-CN/next/concepts-schema-registry.html b/content/docs/zh-CN/next/concepts-schema-registry.html
index 7ac27a2..d645763 100644
--- a/content/docs/zh-CN/next/concepts-schema-registry.html
+++ b/content/docs/zh-CN/next/concepts-schema-registry.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema管理服务 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need some kind of mechanism for coordinating types at the topic level lest a wide var [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema管理服务 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" c [...]
               (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),
               m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
@@ -45,37 +45,37 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema管理服务</h1></header><article><div><span><p>Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need so [...]
+        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema管理服务</h1></header><article><div><span><p>对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:</p>
 <ol>
-<li>A &quot;client-side&quot; approach in which message producers and consumers are responsible for not only serializing and deserializing messages (which consist of raw bytes) but also &quot;knowing&quot; which types are being transmitted via which topics. If a producer is sending temperature sensor data on the topic <code>topic-1</code>, consumers of that topic will run into trouble if they attempt to parse that data as, say, moisture sensor readings.</li>
-<li>A &quot;server-side&quot; approach in which producers and consumers inform the system which data types can be transmitted via the topic. With this approach, the messaging system enforces type safety and ensures that producers and consumers remain synced.</li>
+<li>&quot;客户端&quot; 方法, 消息生产者和消费者不仅负责序列化和反序列处理消息 (包括原始字节), 而且还 &quot;知道&quot; 哪些类型是通过哪些topic传输的。 如果生产者往主题 <code>topic-1</code>发送温度感应数据,而这个topic的consumer按照读取湿度感应的方式来转换数据,将会遇到问题。</li>
+<li>&quot;服务器端&quot; 方法, 生产者和消费者告知系统哪些数据类型可以通过topic传输。 通过这种方法,消息系统强制执行类型安全, 并确保生产者和消费者保持同步。</li>
 </ol>
-<p>Both approaches are available in Pulsar, and you're free to adopt one or the other or to mix and match on a per-topic basis.</p>
+<p>这两种方法都被Pulsar支持,你可以在topic的基础上,自由选择采用哪一种,或者混用。</p>
 <ol>
-<li>For the &quot;client-side&quot; approach, producers and consumers can send and receive messages consisting of raw byte arrays and leave all type safety enforcement to the application on an &quot;out-of-band&quot; basis.</li>
-<li>For the &quot;server-side&quot; approach, Pulsar has a built-in <strong>schema registry</strong> that enables clients to upload data schemas on a per-topic basis. Those schemas dictate which data types are recognized as valid for that topic.</li>
+<li>&quot;客户端&quot; 方法中, 生产者和消费者可以发送和接收由原始字节数组组成的消息, 并保留所有的类型安全在应用中,以“带外”基础上强制执行。</li>
+<li>&quot;服务器端&quot; 方法中,Pulsar有一个内置的 <strong>schema registry</strong>,它使客户端能够根据每个topic载入数据schema。 这些schema显示了,topic可以识别哪些数据类型为有效。</li>
 </ol>
 <blockquote>
-<p>The Pulsar schema registry is currently available only for the <a href="/docs/zh-CN/next/client-libraries-java">Java client</a>.</p>
+<p>Pulsar的schema注册当前仅能在 <a href="/docs/zh-CN/next/client-libraries-java">Java 客户端</a>使用。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="basic-architecture"></a><a href="#basic-architecture" 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- [...]
-<p>Schemas are automatically uploaded when you create a typed Producer with a Schema. Additionally, Schemas can be manually uploaded to, fetched from, and updated via Pulsar's <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
- API.</p>
+<h2><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>当你使用Schema创建带类型的producer时,schema将会被自动上传。 此外,可以通过Pulsar的 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
+ API 手动上载、提取和更新schema。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="other-schema-registry-backends"></a><a href="#other-schema-registry-backends" 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 1 [...]
-<p>Out of the box, Pulsar uses the <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log storage system for schema storage. You can, however, use different backends if you wish. Documentation for custom schema storage logic is coming soon.</p>
+<h4><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-.8 [...]
+<p>开箱即用,Pulsar使用 <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log存储系统来保存schema。 不过你也可以按照你的需要使用不同的后端。 客制化的schema存储逻辑文档即将推出。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="how-schemas-work"></a><a href="#how-schemas-work" 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>Pulsar schemas are applied and enforced <em>at the topic level</em> (schemas cannot be applied at the namespace or tenant level). Producers and consumers upload schemas to Pulsar brokers.</p>
-<p>Pulsar schemas are fairly simple data structures that consist of:</p>
+<h2><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. [...]
+<p>Pulsar schema应用于<em>主题层面</em>(schema无法应用于namespace和tenant层面),并且被强制执行,producer和consumer上传schema到Pulsar broker。</p>
+<p>Pulsar schema是非常简单的数据结构,它的构成如下:</p>
 <ul>
-<li>A <strong>name</strong>. In Pulsar, a schema's name is the topic to which the schema is applied.</li>
-<li>A <strong>payload</strong>, which is a binary representation of the schema</li>
-<li>A schema <a href="#supported-schema-formats"><strong>type</strong></a></li>
-<li>User-defined <strong>properties</strong> as a string/string map. Usage of properties is wholly application specific. Possible properties might be the Git hash associated with a schema, an environment like <code>dev</code> or <code>prod</code>, etc.</li>
+<li><strong>name</strong>。Pulsar中, schema的名称是schema应用于的topic。</li>
+<li>** payload **, 它是schema的二进制表示形式。</li>
+<li>Schema<a href="#supported-schema-formats"><strong>类型</strong></a></li>
+<li>用户定义的字符串/字符串映射map,** properties ** 。 Properties如何使用,完全由程序指定。 Properties可能是关联到schema的Git hash,例如<code>dev</code>或者<code>prod</code>等环境信息。</li>
 </ul>
-<h2><a class="anchor" aria-hidden="true" id="schema-versions"></a><a href="#schema-versions" 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>In order to illustrate how schema versioning works, let's walk through an example. Imagine that the Pulsar <a href="/docs/zh-CN/next/client-libraries-java">Java client</a> created using the code below attempts to connect to Pulsar and begin sending messages:</p>
+<h2><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.64  [...]
+<p>我们通过一个例子,来讲解schema版本如何工作。 假设使用以下代码创建Pulsar <a href="/docs/zh-CN/next/client-libraries-java">Java 客户端</a>,尝试连接到Pulsar,并开始发送消息:</p>
 <pre><code class="hljs css language-java">PulsarClient client = PulsarClient.builder()
         .serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>)
         .build();
@@ -85,13 +85,13 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
         .sendTimeout(<span class="hljs-number">3</span>, TimeUnit.SECONDS)
         .create();
 </code></pre>
-<p>The table below lists the possible scenarios when this connection attempt occurs and what will happen in light of each scenario:</p>
+<p>下表列出了尝试连接时可能出现的场景, 以及每种场景下发生了什么:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Scenario</th><th style="text-align:left">What happens</th></tr>
+<tr><th style="text-align:left">场景</th><th style="text-align:left">发生了什么</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">No schema exists for the topic</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
+<tr><td style="text-align:left">该Topic不存在schema</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using the same schema that's already stored</td><td style="text-align:left">The schema is transmitted to the Pulsar broker. The broker determines that the schema is compatible. The broker attempts to store the schema in <a href="/docs/zh-CN/next/concepts-architecture-overview#persistent-storage">BookKeeper</a> but then determines that it's already stored, so it's then used to tag produced messages.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using a new schema that is compatible</td><td style="text-align:left">The producer transmits the schema to the broker. The broker determines that the schema is compatible and stores the new schema as the current version (with a new version number).</td></tr>
 </tbody>
@@ -117,7 +117,7 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="managing-schemas"></a><a href="#managing-schemas" 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 use Pulsar's <a href="/docs/zh-CN/next/admin-api-schemas">admin tools</a> for managing schemas for topics.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#basic-architecture">Basic architecture</a></li><li><a href="#how-schemas-work">How schem [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#基础架构">基础架构</a></li><li><a href="#schema是如何工作的">Schema是如何工作的</a></li><li><a href="#schema [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/concepts-schema-registry/index.html b/content/docs/zh-CN/next/concepts-schema-registry/index.html
index 7ac27a2..d645763 100644
--- a/content/docs/zh-CN/next/concepts-schema-registry/index.html
+++ b/content/docs/zh-CN/next/concepts-schema-registry/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema管理服务 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need some kind of mechanism for coordinating types at the topic level lest a wide var [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Schema管理服务 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" c [...]
               (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),
               m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
@@ -45,37 +45,37 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema管理服务</h1></header><article><div><span><p>Type safety is extremely important in any application built around a message bus like Pulsar. Producers and consumers need so [...]
+        </script></nav></div><div class="container mainContainer docMainContainer"><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">Translate</a><h1 class="postHeaderTitle">Schema管理服务</h1></header><article><div><span><p>对于围绕消息总线如pulsar搭建的应用来说,类型安全非常的重要。 生产者和消费者需要某种机制来协调topic层面的类型, 以免出现各种各样的潜在问题 (例如序列化和反序列化问题)。 应用通常采用两种基本方法之一,在消息传递中确保类型安全:</p>
 <ol>
-<li>A &quot;client-side&quot; approach in which message producers and consumers are responsible for not only serializing and deserializing messages (which consist of raw bytes) but also &quot;knowing&quot; which types are being transmitted via which topics. If a producer is sending temperature sensor data on the topic <code>topic-1</code>, consumers of that topic will run into trouble if they attempt to parse that data as, say, moisture sensor readings.</li>
-<li>A &quot;server-side&quot; approach in which producers and consumers inform the system which data types can be transmitted via the topic. With this approach, the messaging system enforces type safety and ensures that producers and consumers remain synced.</li>
+<li>&quot;客户端&quot; 方法, 消息生产者和消费者不仅负责序列化和反序列处理消息 (包括原始字节), 而且还 &quot;知道&quot; 哪些类型是通过哪些topic传输的。 如果生产者往主题 <code>topic-1</code>发送温度感应数据,而这个topic的consumer按照读取湿度感应的方式来转换数据,将会遇到问题。</li>
+<li>&quot;服务器端&quot; 方法, 生产者和消费者告知系统哪些数据类型可以通过topic传输。 通过这种方法,消息系统强制执行类型安全, 并确保生产者和消费者保持同步。</li>
 </ol>
-<p>Both approaches are available in Pulsar, and you're free to adopt one or the other or to mix and match on a per-topic basis.</p>
+<p>这两种方法都被Pulsar支持,你可以在topic的基础上,自由选择采用哪一种,或者混用。</p>
 <ol>
-<li>For the &quot;client-side&quot; approach, producers and consumers can send and receive messages consisting of raw byte arrays and leave all type safety enforcement to the application on an &quot;out-of-band&quot; basis.</li>
-<li>For the &quot;server-side&quot; approach, Pulsar has a built-in <strong>schema registry</strong> that enables clients to upload data schemas on a per-topic basis. Those schemas dictate which data types are recognized as valid for that topic.</li>
+<li>&quot;客户端&quot; 方法中, 生产者和消费者可以发送和接收由原始字节数组组成的消息, 并保留所有的类型安全在应用中,以“带外”基础上强制执行。</li>
+<li>&quot;服务器端&quot; 方法中,Pulsar有一个内置的 <strong>schema registry</strong>,它使客户端能够根据每个topic载入数据schema。 这些schema显示了,topic可以识别哪些数据类型为有效。</li>
 </ol>
 <blockquote>
-<p>The Pulsar schema registry is currently available only for the <a href="/docs/zh-CN/next/client-libraries-java">Java client</a>.</p>
+<p>Pulsar的schema注册当前仅能在 <a href="/docs/zh-CN/next/client-libraries-java">Java 客户端</a>使用。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="basic-architecture"></a><a href="#basic-architecture" 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- [...]
-<p>Schemas are automatically uploaded when you create a typed Producer with a Schema. Additionally, Schemas can be manually uploaded to, fetched from, and updated via Pulsar's <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
- API.</p>
+<h2><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>当你使用Schema创建带类型的producer时,schema将会被自动上传。 此外,可以通过Pulsar的 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#tag/schemas">REST</a>
+ API 手动上载、提取和更新schema。</p>
 <blockquote>
-<h4><a class="anchor" aria-hidden="true" id="other-schema-registry-backends"></a><a href="#other-schema-registry-backends" 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 1 [...]
-<p>Out of the box, Pulsar uses the <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log storage system for schema storage. You can, however, use different backends if you wish. Documentation for custom schema storage logic is coming soon.</p>
+<h4><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-.8 [...]
+<p>开箱即用,Pulsar使用 <a href="concepts-architecture-overview#persistent-storage">Apache BookKeeper</a> log存储系统来保存schema。 不过你也可以按照你的需要使用不同的后端。 客制化的schema存储逻辑文档即将推出。</p>
 </blockquote>
-<h2><a class="anchor" aria-hidden="true" id="how-schemas-work"></a><a href="#how-schemas-work" 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>Pulsar schemas are applied and enforced <em>at the topic level</em> (schemas cannot be applied at the namespace or tenant level). Producers and consumers upload schemas to Pulsar brokers.</p>
-<p>Pulsar schemas are fairly simple data structures that consist of:</p>
+<h2><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. [...]
+<p>Pulsar schema应用于<em>主题层面</em>(schema无法应用于namespace和tenant层面),并且被强制执行,producer和consumer上传schema到Pulsar broker。</p>
+<p>Pulsar schema是非常简单的数据结构,它的构成如下:</p>
 <ul>
-<li>A <strong>name</strong>. In Pulsar, a schema's name is the topic to which the schema is applied.</li>
-<li>A <strong>payload</strong>, which is a binary representation of the schema</li>
-<li>A schema <a href="#supported-schema-formats"><strong>type</strong></a></li>
-<li>User-defined <strong>properties</strong> as a string/string map. Usage of properties is wholly application specific. Possible properties might be the Git hash associated with a schema, an environment like <code>dev</code> or <code>prod</code>, etc.</li>
+<li><strong>name</strong>。Pulsar中, schema的名称是schema应用于的topic。</li>
+<li>** payload **, 它是schema的二进制表示形式。</li>
+<li>Schema<a href="#supported-schema-formats"><strong>类型</strong></a></li>
+<li>用户定义的字符串/字符串映射map,** properties ** 。 Properties如何使用,完全由程序指定。 Properties可能是关联到schema的Git hash,例如<code>dev</code>或者<code>prod</code>等环境信息。</li>
 </ul>
-<h2><a class="anchor" aria-hidden="true" id="schema-versions"></a><a href="#schema-versions" 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>In order to illustrate how schema versioning works, let's walk through an example. Imagine that the Pulsar <a href="/docs/zh-CN/next/client-libraries-java">Java client</a> created using the code below attempts to connect to Pulsar and begin sending messages:</p>
+<h2><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.64  [...]
+<p>我们通过一个例子,来讲解schema版本如何工作。 假设使用以下代码创建Pulsar <a href="/docs/zh-CN/next/client-libraries-java">Java 客户端</a>,尝试连接到Pulsar,并开始发送消息:</p>
 <pre><code class="hljs css language-java">PulsarClient client = PulsarClient.builder()
         .serviceUrl(<span class="hljs-string">"pulsar://localhost:6650"</span>)
         .build();
@@ -85,13 +85,13 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
         .sendTimeout(<span class="hljs-number">3</span>, TimeUnit.SECONDS)
         .create();
 </code></pre>
-<p>The table below lists the possible scenarios when this connection attempt occurs and what will happen in light of each scenario:</p>
+<p>下表列出了尝试连接时可能出现的场景, 以及每种场景下发生了什么:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Scenario</th><th style="text-align:left">What happens</th></tr>
+<tr><th style="text-align:left">场景</th><th style="text-align:left">发生了什么</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">No schema exists for the topic</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
+<tr><td style="text-align:left">该Topic不存在schema</td><td style="text-align:left">The producer is created using the given schema. The schema is transmitted to the broker and stored (since no existing schema is &quot;compatible&quot; with the <code>SensorReading</code> schema). Any consumer created using the same schema/topic can consume messages from the <code>sensor-data</code> topic.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using the same schema that's already stored</td><td style="text-align:left">The schema is transmitted to the Pulsar broker. The broker determines that the schema is compatible. The broker attempts to store the schema in <a href="/docs/zh-CN/next/concepts-architecture-overview#persistent-storage">BookKeeper</a> but then determines that it's already stored, so it's then used to tag produced messages.</td></tr>
 <tr><td style="text-align:left">A schema already exists; the producer connects using a new schema that is compatible</td><td style="text-align:left">The producer transmits the schema to the broker. The broker determines that the schema is compatible and stores the new schema as the current version (with a new version number).</td></tr>
 </tbody>
@@ -117,7 +117,7 @@ Producer&lt;SensorReading&gt; producer = client.newProducer(JSONSchema.of(Sensor
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="managing-schemas"></a><a href="#managing-schemas" 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 use Pulsar's <a href="/docs/zh-CN/next/admin-api-schemas">admin tools</a> for managing schemas for topics.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#basic-architecture">Basic architecture</a></li><li><a href="#how-schemas-work">How schem [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/concepts-tiered-storage"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-overview"><span>下一页</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav docOnPageNav"><ul class="toc-headings"><li><a href="#基础架构">基础架构</a></li><li><a href="#schema是如何工作的">Schema是如何工作的</a></li><li><a href="#schema [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/en/contact.html b/content/en/contact.html
index 3cb5552..e4a8b07 100644
--- a/content/en/contact.html
+++ b/content/en/contact.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/en/contact/index.html b/content/en/contact/index.html
index 3cb5552..e4a8b07 100644
--- a/content/en/contact/index.html
+++ b/content/en/contact/index.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/fr/contact.html b/content/fr/contact.html
index 404e57c..fb0e7be 100644
--- a/content/fr/contact.html
+++ b/content/fr/contact.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/fr/contact/index.html b/content/fr/contact/index.html
index 404e57c..fb0e7be 100644
--- a/content/fr/contact/index.html
+++ b/content/fr/contact/index.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/ja/contact.html b/content/ja/contact.html
index f12be46..e59c57a 100644
--- a/content/ja/contact.html
+++ b/content/ja/contact.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/ja/contact/index.html b/content/ja/contact/index.html
index f12be46..e59c57a 100644
--- a/content/ja/contact/index.html
+++ b/content/ja/contact/index.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>Contact</h1><hr/></header><p>There are many ways to get help from the Apache Pulsar community. The [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/swagger/swagger.json b/content/swagger/swagger.json
index 036023d..04d5871 100644
--- a/content/swagger/swagger.json
+++ b/content/swagger/swagger.json
@@ -6467,10 +6467,10 @@
             "type" : "string"
           }
         },
-        "clientVersion" : {
+        "connectedSince" : {
           "type" : "string"
         },
-        "connectedSince" : {
+        "clientVersion" : {
           "type" : "string"
         },
         "address" : {
@@ -6790,41 +6790,41 @@
           "type" : "number",
           "format" : "double"
         },
-        "bandwidthIn" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "loadReportType" : {
+          "type" : "string"
         },
-        "bandwidthOut" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "underLoaded" : {
+          "type" : "boolean"
         },
-        "memory" : {
-          "$ref" : "#/definitions/ResourceUsage"
+        "overLoaded" : {
+          "type" : "boolean"
         },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
         },
-        "directMemory" : {
+        "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "cpu" : {
+        "bandwidthOut" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
         "lastUpdate" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
-        },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
         "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
+        },
+        "bandwidthIn" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "memory" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "directMemory" : {
+          "$ref" : "#/definitions/ResourceUsage"
         }
       }
     },
@@ -6984,13 +6984,13 @@
           "type" : "number",
           "format" : "double"
         },
-        "clientVersion" : {
+        "connectedSince" : {
           "type" : "string"
         },
         "producerName" : {
           "type" : "string"
         },
-        "connectedSince" : {
+        "clientVersion" : {
           "type" : "string"
         },
         "address" : {
@@ -7692,13 +7692,13 @@
             "type" : "string"
           }
         },
-        "clientVersion" : {
+        "connectedSince" : {
           "type" : "string"
         },
         "producerName" : {
           "type" : "string"
         },
-        "connectedSince" : {
+        "clientVersion" : {
           "type" : "string"
         },
         "address" : {
@@ -7800,11 +7800,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "availableResource" : {
-          "$ref" : "#/definitions/ResourceDescription"
-        },
         "resourceId" : {
           "type" : "string"
+        },
+        "availableResource" : {
+          "$ref" : "#/definitions/ResourceDescription"
         }
       }
     },
diff --git a/content/zh-CN/contact.html b/content/zh-CN/contact.html
index 46283f8..894844a 100644
--- a/content/zh-CN/contact.html
+++ b/content/zh-CN/contact.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>联系方式</h1><hr/></header><p>这里有很多方法可以从Apache Pulsar社区获得帮助。邮件列表是所有Pulsar提交者所在的主要场所。Bug和功能请求可以在开发邮件列表中 [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>联系方式</h1><hr/></header><p>这里有很多方法可以从Apache Pulsar社区获得帮助。邮件列表是所有Pulsar提交者所在的主要场所。Bug和功能请求可以在开发邮件列表中 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/zh-CN/contact/index.html b/content/zh-CN/contact/index.html
index 46283f8..894844a 100644
--- a/content/zh-CN/contact/index.html
+++ b/content/zh-CN/contact/index.html
@@ -18,7 +18,7 @@
             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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>联系方式</h1><hr/></header><p>这里有很多方法可以从Apache Pulsar社区获得帮助。邮件列表是所有Pulsar提交者所在的主要场所。Bug和功能请求可以在开发邮件列表中 [...]
+      </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 documentContainer postContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1>联系方式</h1><hr/></header><p>这里有很多方法可以从Apache Pulsar社区获得帮助。邮件列表是所有Pulsar提交者所在的主要场所。Bug和功能请求可以在开发邮件列表中 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +