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 2019/08/30 09:16:36 UTC

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

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 a4af056  Updated site at revision bc76613
a4af056 is described below

commit a4af05642b2a1ae225132f40218da973925a907b
Author: jenkins <bu...@apache.org>
AuthorDate: Fri Aug 30 09:16:25 2019 +0000

    Updated site at revision bc76613
---
 content/docs/en/next/security-athenz.html          |  34 +++----
 content/docs/en/next/security-athenz/index.html    |  34 +++----
 content/docs/en/next/security-tls-transport.html   | 104 ++++++++++++---------
 .../docs/en/next/security-tls-transport/index.html | 104 ++++++++++++---------
 content/docs/fr/next/security-athenz.html          |  30 +++---
 content/docs/fr/next/security-athenz/index.html    |  30 +++---
 content/docs/fr/next/security-tls-transport.html   |  94 +++++++++++--------
 .../docs/fr/next/security-tls-transport/index.html |  94 +++++++++++--------
 content/docs/ja/next/security-athenz.html          |  30 +++---
 content/docs/ja/next/security-athenz/index.html    |  30 +++---
 content/docs/ja/next/security-tls-transport.html   |  94 +++++++++++--------
 .../docs/ja/next/security-tls-transport/index.html |  94 +++++++++++--------
 .../2.1.0-incubating/administration-dashboard.html |   2 +-
 .../administration-dashboard/index.html            |   2 +-
 .../zh-CN/2.1.0-incubating/administration-geo.html |   8 +-
 .../2.1.0-incubating/administration-geo/index.html |   8 +-
 .../2.1.0-incubating/administration-zk-bk.html     |   2 +-
 .../administration-zk-bk/index.html                |   2 +-
 .../2.1.1-incubating/administration-dashboard.html |   2 +-
 .../administration-dashboard/index.html            |   2 +-
 .../zh-CN/2.1.1-incubating/administration-geo.html |   8 +-
 .../2.1.1-incubating/administration-geo/index.html |   8 +-
 .../2.1.1-incubating/administration-zk-bk.html     |   2 +-
 .../administration-zk-bk/index.html                |   2 +-
 .../docs/zh-CN/2.2.0/administration-dashboard.html |   2 +-
 .../2.2.0/administration-dashboard/index.html      |   2 +-
 content/docs/zh-CN/2.2.0/administration-geo.html   |   8 +-
 .../docs/zh-CN/2.2.0/administration-geo/index.html |   8 +-
 content/docs/zh-CN/2.2.0/administration-zk-bk.html |   2 +-
 .../zh-CN/2.2.0/administration-zk-bk/index.html    |   2 +-
 .../docs/zh-CN/2.2.1/administration-dashboard.html |   2 +-
 .../2.2.1/administration-dashboard/index.html      |   2 +-
 content/docs/zh-CN/2.2.1/administration-geo.html   |   8 +-
 .../docs/zh-CN/2.2.1/administration-geo/index.html |   8 +-
 content/docs/zh-CN/2.2.1/administration-zk-bk.html |   2 +-
 .../zh-CN/2.2.1/administration-zk-bk/index.html    |   2 +-
 .../docs/zh-CN/2.3.0/administration-dashboard.html |   2 +-
 .../2.3.0/administration-dashboard/index.html      |   2 +-
 content/docs/zh-CN/2.3.0/administration-geo.html   |   8 +-
 .../docs/zh-CN/2.3.0/administration-geo/index.html |   8 +-
 content/docs/zh-CN/2.3.0/administration-zk-bk.html |   2 +-
 .../zh-CN/2.3.0/administration-zk-bk/index.html    |   2 +-
 .../docs/zh-CN/2.3.1/administration-dashboard.html |   2 +-
 .../2.3.1/administration-dashboard/index.html      |   2 +-
 content/docs/zh-CN/2.3.1/administration-geo.html   |   8 +-
 .../docs/zh-CN/2.3.1/administration-geo/index.html |   8 +-
 content/docs/zh-CN/2.3.1/administration-zk-bk.html |   2 +-
 .../zh-CN/2.3.1/administration-zk-bk/index.html    |   2 +-
 .../docs/zh-CN/2.3.2/administration-dashboard.html |   2 +-
 .../2.3.2/administration-dashboard/index.html      |   2 +-
 content/docs/zh-CN/2.3.2/administration-geo.html   |  18 ++--
 .../docs/zh-CN/2.3.2/administration-geo/index.html |  18 ++--
 content/docs/zh-CN/2.3.2/administration-zk-bk.html |   2 +-
 .../zh-CN/2.3.2/administration-zk-bk/index.html    |   2 +-
 content/docs/zh-CN/administration-dashboard.html   |   2 +-
 .../docs/zh-CN/administration-dashboard/index.html |   2 +-
 content/docs/zh-CN/administration-geo.html         |  18 ++--
 content/docs/zh-CN/administration-geo/index.html   |  18 ++--
 content/docs/zh-CN/administration-zk-bk.html       |   2 +-
 content/docs/zh-CN/administration-zk-bk/index.html |   2 +-
 content/docs/zh-CN/next/adaptors-kafka.html        |   2 +-
 content/docs/zh-CN/next/adaptors-kafka/index.html  |   2 +-
 content/docs/zh-CN/next/adaptors-spark.html        |   2 +-
 content/docs/zh-CN/next/adaptors-spark/index.html  |   2 +-
 content/docs/zh-CN/next/adaptors-storm.html        |   2 +-
 content/docs/zh-CN/next/adaptors-storm/index.html  |   2 +-
 content/docs/zh-CN/next/admin-api-brokers.html     |   2 +-
 .../docs/zh-CN/next/admin-api-brokers/index.html   |   2 +-
 content/docs/zh-CN/next/admin-api-clusters.html    |   2 +-
 .../docs/zh-CN/next/admin-api-clusters/index.html  |   2 +-
 content/docs/zh-CN/next/admin-api-namespaces.html  |   2 +-
 .../zh-CN/next/admin-api-namespaces/index.html     |   2 +-
 .../next/admin-api-non-persistent-topics.html      |   2 +-
 .../admin-api-non-persistent-topics/index.html     |   2 +-
 content/docs/zh-CN/next/admin-api-overview.html    |   2 +-
 .../docs/zh-CN/next/admin-api-overview/index.html  |   2 +-
 .../zh-CN/next/admin-api-partitioned-topics.html   |   2 +-
 .../next/admin-api-partitioned-topics/index.html   |   2 +-
 content/docs/zh-CN/next/admin-api-permissions.html |   2 +-
 .../zh-CN/next/admin-api-permissions/index.html    |   2 +-
 .../zh-CN/next/admin-api-persistent-topics.html    |   2 +-
 .../next/admin-api-persistent-topics/index.html    |   2 +-
 content/docs/zh-CN/next/admin-api-tenants.html     |   2 +-
 .../docs/zh-CN/next/admin-api-tenants/index.html   |   2 +-
 .../docs/zh-CN/next/administration-dashboard.html  |   4 +-
 .../zh-CN/next/administration-dashboard/index.html |   4 +-
 content/docs/zh-CN/next/administration-geo.html    |  24 ++---
 .../docs/zh-CN/next/administration-geo/index.html  |  24 ++---
 .../zh-CN/next/administration-load-balance.html    |   2 +-
 .../next/administration-load-balance/index.html    |   2 +-
 content/docs/zh-CN/next/administration-proxy.html  |   2 +-
 .../zh-CN/next/administration-proxy/index.html     |   2 +-
 content/docs/zh-CN/next/administration-stats.html  |   2 +-
 .../zh-CN/next/administration-stats/index.html     |   2 +-
 .../docs/zh-CN/next/administration-upgrade.html    |   2 +-
 .../zh-CN/next/administration-upgrade/index.html   |   2 +-
 content/docs/zh-CN/next/administration-zk-bk.html  |   4 +-
 .../zh-CN/next/administration-zk-bk/index.html     |   4 +-
 content/docs/zh-CN/next/client-libraries-cpp.html  |   2 +-
 .../zh-CN/next/client-libraries-cpp/index.html     |   2 +-
 content/docs/zh-CN/next/client-libraries-go.html   |   2 +-
 .../docs/zh-CN/next/client-libraries-go/index.html |   2 +-
 content/docs/zh-CN/next/client-libraries-java.html |   2 +-
 .../zh-CN/next/client-libraries-java/index.html    |   2 +-
 .../docs/zh-CN/next/client-libraries-python.html   |   2 +-
 .../zh-CN/next/client-libraries-python/index.html  |   2 +-
 .../zh-CN/next/client-libraries-websocket.html     |   2 +-
 .../next/client-libraries-websocket/index.html     |   2 +-
 content/docs/zh-CN/next/client-libraries.html      |   2 +-
 .../docs/zh-CN/next/client-libraries/index.html    |   2 +-
 .../zh-CN/next/concepts-architecture-overview.html |   2 +-
 .../next/concepts-architecture-overview/index.html |   2 +-
 .../docs/zh-CN/next/concepts-authentication.html   |   2 +-
 .../zh-CN/next/concepts-authentication/index.html  |   2 +-
 content/docs/zh-CN/next/concepts-clients.html      |   2 +-
 .../docs/zh-CN/next/concepts-clients/index.html    |   2 +-
 content/docs/zh-CN/next/concepts-messaging.html    |   2 +-
 .../docs/zh-CN/next/concepts-messaging/index.html  |   2 +-
 .../docs/zh-CN/next/concepts-multi-tenancy.html    |   2 +-
 .../zh-CN/next/concepts-multi-tenancy/index.html   |   2 +-
 content/docs/zh-CN/next/concepts-overview.html     |   2 +-
 .../docs/zh-CN/next/concepts-overview/index.html   |   2 +-
 content/docs/zh-CN/next/concepts-replication.html  |   2 +-
 .../zh-CN/next/concepts-replication/index.html     |   2 +-
 .../docs/zh-CN/next/concepts-tiered-storage.html   |   2 +-
 .../zh-CN/next/concepts-tiered-storage/index.html  |   2 +-
 .../docs/zh-CN/next/concepts-topic-compaction.html |   2 +-
 .../next/concepts-topic-compaction/index.html      |   2 +-
 .../zh-CN/next/cookbooks-bookkeepermetadata.html   |   2 +-
 .../next/cookbooks-bookkeepermetadata/index.html   |   2 +-
 content/docs/zh-CN/next/cookbooks-compaction.html  |   2 +-
 .../zh-CN/next/cookbooks-compaction/index.html     |   2 +-
 .../docs/zh-CN/next/cookbooks-deduplication.html   |   2 +-
 .../zh-CN/next/cookbooks-deduplication/index.html  |   2 +-
 content/docs/zh-CN/next/cookbooks-encryption.html  |   2 +-
 .../zh-CN/next/cookbooks-encryption/index.html     |   2 +-
 .../docs/zh-CN/next/cookbooks-message-queue.html   |   2 +-
 .../zh-CN/next/cookbooks-message-queue/index.html  |   2 +-
 .../docs/zh-CN/next/cookbooks-non-persistent.html  |   2 +-
 .../zh-CN/next/cookbooks-non-persistent/index.html |   2 +-
 content/docs/zh-CN/next/cookbooks-partitioned.html |   2 +-
 .../zh-CN/next/cookbooks-partitioned/index.html    |   2 +-
 .../zh-CN/next/cookbooks-retention-expiry.html     |   2 +-
 .../next/cookbooks-retention-expiry/index.html     |   2 +-
 .../docs/zh-CN/next/cookbooks-tiered-storage.html  |   2 +-
 .../zh-CN/next/cookbooks-tiered-storage/index.html |   2 +-
 content/docs/zh-CN/next/deploy-aws.html            |   2 +-
 content/docs/zh-CN/next/deploy-aws/index.html      |   2 +-
 .../next/deploy-bare-metal-multi-cluster.html      |   2 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   2 +-
 content/docs/zh-CN/next/deploy-bare-metal.html     |   2 +-
 .../docs/zh-CN/next/deploy-bare-metal/index.html   |   2 +-
 content/docs/zh-CN/next/deploy-dcos.html           |   2 +-
 content/docs/zh-CN/next/deploy-dcos/index.html     |   2 +-
 content/docs/zh-CN/next/deploy-kubernetes.html     |   2 +-
 .../docs/zh-CN/next/deploy-kubernetes/index.html   |   2 +-
 content/docs/zh-CN/next/deploy-monitoring.html     |   2 +-
 .../docs/zh-CN/next/deploy-monitoring/index.html   |   2 +-
 .../docs/zh-CN/next/develop-binary-protocol.html   |   2 +-
 .../zh-CN/next/develop-binary-protocol/index.html  |   2 +-
 content/docs/zh-CN/next/develop-cpp.html           |   2 +-
 content/docs/zh-CN/next/develop-cpp/index.html     |   2 +-
 content/docs/zh-CN/next/develop-load-manager.html  |   2 +-
 .../zh-CN/next/develop-load-manager/index.html     |   2 +-
 content/docs/zh-CN/next/develop-tools.html         |   2 +-
 content/docs/zh-CN/next/develop-tools/index.html   |   2 +-
 content/docs/zh-CN/next/functions-api.html         |   2 +-
 content/docs/zh-CN/next/functions-api/index.html   |   2 +-
 content/docs/zh-CN/next/functions-cli.html         |   2 +-
 content/docs/zh-CN/next/functions-cli/index.html   |   2 +-
 content/docs/zh-CN/next/functions-debug.html       |   2 +-
 content/docs/zh-CN/next/functions-debug/index.html |   2 +-
 content/docs/zh-CN/next/functions-debugging.html   |   2 +-
 .../docs/zh-CN/next/functions-debugging/index.html |   2 +-
 content/docs/zh-CN/next/functions-deploy.html      |   2 +-
 .../docs/zh-CN/next/functions-deploy/index.html    |   2 +-
 content/docs/zh-CN/next/functions-deploying.html   |   2 +-
 .../docs/zh-CN/next/functions-deploying/index.html |   2 +-
 content/docs/zh-CN/next/functions-develop.html     |   2 +-
 .../docs/zh-CN/next/functions-develop/index.html   |   2 +-
 content/docs/zh-CN/next/functions-guarantees.html  |   2 +-
 .../zh-CN/next/functions-guarantees/index.html     |   2 +-
 content/docs/zh-CN/next/functions-metrics.html     |   2 +-
 .../docs/zh-CN/next/functions-metrics/index.html   |   2 +-
 .../docs/zh-CN/next/functions-overview-new.html    |   2 +-
 .../zh-CN/next/functions-overview-new/index.html   |   2 +-
 content/docs/zh-CN/next/functions-overview.html    |   2 +-
 .../docs/zh-CN/next/functions-overview/index.html  |   2 +-
 content/docs/zh-CN/next/functions-quickstart.html  |   2 +-
 .../zh-CN/next/functions-quickstart/index.html     |   2 +-
 content/docs/zh-CN/next/functions-runtime.html     |   2 +-
 .../docs/zh-CN/next/functions-runtime/index.html   |   2 +-
 content/docs/zh-CN/next/functions-state.html       |   2 +-
 content/docs/zh-CN/next/functions-state/index.html |   2 +-
 content/docs/zh-CN/next/functions-worker.html      |   2 +-
 .../docs/zh-CN/next/functions-worker/index.html    |   2 +-
 content/docs/zh-CN/next/io-cdc.html                |   2 +-
 content/docs/zh-CN/next/io-cdc/index.html          |   2 +-
 content/docs/zh-CN/next/io-connectors.html         |   2 +-
 content/docs/zh-CN/next/io-connectors/index.html   |   2 +-
 content/docs/zh-CN/next/io-develop.html            |   2 +-
 content/docs/zh-CN/next/io-develop/index.html      |   2 +-
 content/docs/zh-CN/next/io-managing.html           |   2 +-
 content/docs/zh-CN/next/io-managing/index.html     |   2 +-
 content/docs/zh-CN/next/io-overview.html           |   2 +-
 content/docs/zh-CN/next/io-overview/index.html     |   2 +-
 content/docs/zh-CN/next/io-quickstart.html         |   2 +-
 content/docs/zh-CN/next/io-quickstart/index.html   |   2 +-
 content/docs/zh-CN/next/pulsar-2.0.html            |   2 +-
 content/docs/zh-CN/next/pulsar-2.0/index.html      |   2 +-
 content/docs/zh-CN/next/pulsar-admin.html          |   2 +-
 content/docs/zh-CN/next/pulsar-admin/index.html    |   2 +-
 content/docs/zh-CN/next/reference-cli-tools.html   |   2 +-
 .../docs/zh-CN/next/reference-cli-tools/index.html |   2 +-
 .../docs/zh-CN/next/reference-configuration.html   |   2 +-
 .../zh-CN/next/reference-configuration/index.html  |   2 +-
 .../docs/zh-CN/next/reference-connector-admin.html |   2 +-
 .../next/reference-connector-admin/index.html      |   2 +-
 content/docs/zh-CN/next/reference-metrics.html     |   2 +-
 .../docs/zh-CN/next/reference-metrics/index.html   |   2 +-
 content/docs/zh-CN/next/reference-terminology.html |   2 +-
 .../zh-CN/next/reference-terminology/index.html    |   2 +-
 .../zh-CN/next/schema-evolution-compatibility.html |   2 +-
 .../next/schema-evolution-compatibility/index.html |   2 +-
 content/docs/zh-CN/next/schema-get-started.html    |   2 +-
 .../docs/zh-CN/next/schema-get-started/index.html  |   2 +-
 content/docs/zh-CN/next/schema-manage.html         |   2 +-
 content/docs/zh-CN/next/schema-manage/index.html   |   2 +-
 content/docs/zh-CN/next/schema-understand.html     |   2 +-
 .../docs/zh-CN/next/schema-understand/index.html   |   2 +-
 content/docs/zh-CN/next/security-athenz.html       |  32 +++----
 content/docs/zh-CN/next/security-athenz/index.html |  32 +++----
 .../docs/zh-CN/next/security-authorization.html    |   2 +-
 .../zh-CN/next/security-authorization/index.html   |   2 +-
 content/docs/zh-CN/next/security-encryption.html   |   2 +-
 .../docs/zh-CN/next/security-encryption/index.html |   2 +-
 content/docs/zh-CN/next/security-extending.html    |   2 +-
 .../docs/zh-CN/next/security-extending/index.html  |   2 +-
 content/docs/zh-CN/next/security-kerberos.html     |   2 +-
 .../docs/zh-CN/next/security-kerberos/index.html   |   2 +-
 content/docs/zh-CN/next/security-overview.html     |   2 +-
 .../docs/zh-CN/next/security-overview/index.html   |   2 +-
 .../zh-CN/next/security-tls-authentication.html    |   2 +-
 .../next/security-tls-authentication/index.html    |   2 +-
 .../docs/zh-CN/next/security-tls-transport.html    |  96 ++++++++++---------
 .../zh-CN/next/security-tls-transport/index.html   |  96 ++++++++++---------
 content/docs/zh-CN/next/security-token-admin.html  |   2 +-
 .../zh-CN/next/security-token-admin/index.html     |   2 +-
 content/docs/zh-CN/next/security-token-client.html |   2 +-
 .../zh-CN/next/security-token-client/index.html    |   2 +-
 .../zh-CN/next/sql-deployment-configurations.html  |   2 +-
 .../next/sql-deployment-configurations/index.html  |   2 +-
 content/docs/zh-CN/next/sql-getting-started.html   |   2 +-
 .../docs/zh-CN/next/sql-getting-started/index.html |   2 +-
 content/docs/zh-CN/next/sql-overview.html          |   2 +-
 content/docs/zh-CN/next/sql-overview/index.html    |   2 +-
 content/docs/zh-CN/next/standalone-docker.html     |   2 +-
 .../docs/zh-CN/next/standalone-docker/index.html   |   2 +-
 content/docs/zh-CN/next/standalone.html            |   2 +-
 content/docs/zh-CN/next/standalone/index.html      |   2 +-
 content/swagger/2.5.0-SNAPSHOT/swagger.json        |  52 +++++------
 .../swagger/2.5.0-SNAPSHOT/swaggerfunctions.json   |  40 ++++----
 content/swagger/swagger.json                       |  52 +++++------
 content/swagger/swaggerfunctions.json              |  40 ++++----
 264 files changed, 992 insertions(+), 896 deletions(-)

diff --git a/content/docs/en/next/security-athenz.html b/content/docs/en/next/security-athenz.html
index 29cdf6e..39833d9 100644
--- a/content/docs/en/next/security-athenz.html
+++ b/content/docs/en/next/security-athenz.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, Athenz role tokens (aka *z-tokens*) can be used to establish the identify of the cl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the identify [...]
               (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)
@@ -74,33 +74,33 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/security-athenz.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authoriza [...]
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/security-athenz.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authoriza [...]
 <h2><a class="anchor" aria-hidden="true" id="athenz-authentication-settings"></a><a href="#athenz-authentication-settings" 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>In a <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> there is both an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an  <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
-<p>To begin, you need to set up Athenz service access control. You should create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/en/next/reference-terminology#tenan [...]
+<p>A <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> contains an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
+<p>To begin, you need to set up Athenz service access control. You need to create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/en/next/reference-terminology#tena [...]
 <h3><a class="anchor" aria-hidden="true" id="create-the-tenant-domain-and-service"></a><a href="#create-the-tenant-domain-and-service" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>On the <a href="/docs/en/next/reference-terminology#tenant">tenant</a> side, you need to:</p>
+<p>On the <a href="/docs/en/next/reference-terminology#tenant">tenant</a> side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>shopping</code></li>
 <li>Generate a private/public key pair</li>
 <li>Create a service, such as <code>some_app</code>, on the domain with the public key</li>
 </ol>
-<p>Note that the private key generated in step 2 needs to be specified when the Pulsar client connects to the <a href="/docs/en/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/en/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/en/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
-<p>For more specific steps involving the Athenz UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">this doc</a>.</p>
+<p>Note that you need to specify the private key generated in step 2 when the Pulsar client connects to the <a href="/docs/en/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/en/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/en/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
+<p>For more specific steps involving the Athenz UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">Example Service Access Control Setup</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="create-the-provider-domain-and-add-the-tenant-service-to-some-role-members"></a><a href="#create-the-provider-domain-and-add-the-tenant-service-to-some-role-members" 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. [...]
-<p>On the provider side, you need to:</p>
+<p>On the provider side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>pulsar</code></li>
 <li>Create a role</li>
 <li>Add the tenant service to members of the role</li>
 </ol>
-<p>Note that in step 2 any action and resource can be specified since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
-<p>For more specific steps involving UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">this doc</a>.</p>
+<p>Note that you can specify any action and resource in step 2 since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
+<p>For more specific steps involving UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">Example Service Access Control Setup</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="configure-the-broker-for-athenz"></a><a href="#configure-the-broker-for-athenz" 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 [...]
 <blockquote>
-<h3><a class="anchor" aria-hidden="true" id="tls-encryption-strongly-recommended"></a><a href="#tls-encryption-strongly-recommended" 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 [...]
-<p>Please note that using TLS encryption is strongly recommended when using Athenz as an authentication provider,
-as it can protect role tokens from being intercepted and reused (see also <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">this doc</a>).</p>
+<h3><a class="anchor" aria-hidden="true" id="tls-encryption"></a><a href="#tls-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Note that when you are using Athenz as an authentication provider, you had better use TLS encryption
+as it can protect role tokens from being intercepted and reused. (for more details involving TLS encrption see <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">Architecture - Data Model</a>).</p>
 </blockquote>
 <p>In the <code>conf/broker.conf</code> configuration file in your Pulsar installation, you need to provide the class name of the Athenz authentication provider as well as a comma-separated list of provider domain names.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Add the Athenz auth provider</span>
@@ -115,8 +115,8 @@ as it can protect role tokens from being intercepted and reused (see also <a hre
 <span class="hljs-attr">tlsKeyFilePath</span>=<span class="hljs-string">/path/to/broker-key.pem</span>
 </code></pre>
 <blockquote>
-<p>A full listing of parameters available in the <code>conf/broker.conf</code> file, as well as the default
-values for those parameters, can be found in <a href="/docs/en/next/reference-configuration#broker">Broker Configuration</a>.</p>
+<p>A full listing of parameters is available in the <code>conf/broker.conf</code> file, you can also find the default
+values for those parameters in <a href="/docs/en/next/reference-configuration#broker">Broker Configuration</a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="configure-clients-for-athenz"></a><a href="#configure-clients-for-athenz" 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 [...]
 <p>For more information on Pulsar client authentication using Athenz, see the following language-specific docs:</p>
@@ -125,7 +125,7 @@ values for those parameters, can be found in <a href="/docs/en/next/reference-co
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="configure-cli-tools-for-athenz"></a><a href="#configure-cli-tools-for-athenz" 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><a href="/docs/en/next/reference-cli-tools">Command-line tools</a> like <a href="/docs/en/next/pulsar-admin"><code>pulsar-admin</code></a>, <a href="/docs/en/next/reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="/docs/en/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You’ll need to add the following authentication parameters to that file to use Athenz with Pulsar’s CLI tools:</p>
+<p>You need to add the following authentication parameters to the <code>conf/client.conf</code> config file to use Athenz with CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># URL for the broker</span>
 <span class="hljs-attr">serviceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-comment">
@@ -138,7 +138,7 @@ values for those parameters, can be found in <a href="/docs/en/next/reference-co
 <span class="hljs-attr">tlsAllowInsecureConnection</span>=<span class="hljs-string">false</span>
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/cacert.pem</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/en/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication settings [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/en/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication settings [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/security-athenz/index.html b/content/docs/en/next/security-athenz/index.html
index 29cdf6e..39833d9 100644
--- a/content/docs/en/next/security-athenz/index.html
+++ b/content/docs/en/next/security-athenz/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, Athenz role tokens (aka *z-tokens*) can be used to establish the identify of the cl [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the identify [...]
               (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)
@@ -74,33 +74,33 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/security-athenz.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authoriza [...]
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/security-athenz.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authoriza [...]
 <h2><a class="anchor" aria-hidden="true" id="athenz-authentication-settings"></a><a href="#athenz-authentication-settings" 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>In a <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> there is both an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an  <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
-<p>To begin, you need to set up Athenz service access control. You should create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/en/next/reference-terminology#tenan [...]
+<p>A <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> contains an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
+<p>To begin, you need to set up Athenz service access control. You need to create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/en/next/reference-terminology#tena [...]
 <h3><a class="anchor" aria-hidden="true" id="create-the-tenant-domain-and-service"></a><a href="#create-the-tenant-domain-and-service" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>On the <a href="/docs/en/next/reference-terminology#tenant">tenant</a> side, you need to:</p>
+<p>On the <a href="/docs/en/next/reference-terminology#tenant">tenant</a> side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>shopping</code></li>
 <li>Generate a private/public key pair</li>
 <li>Create a service, such as <code>some_app</code>, on the domain with the public key</li>
 </ol>
-<p>Note that the private key generated in step 2 needs to be specified when the Pulsar client connects to the <a href="/docs/en/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/en/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/en/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
-<p>For more specific steps involving the Athenz UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">this doc</a>.</p>
+<p>Note that you need to specify the private key generated in step 2 when the Pulsar client connects to the <a href="/docs/en/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/en/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/en/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
+<p>For more specific steps involving the Athenz UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">Example Service Access Control Setup</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="create-the-provider-domain-and-add-the-tenant-service-to-some-role-members"></a><a href="#create-the-provider-domain-and-add-the-tenant-service-to-some-role-members" 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. [...]
-<p>On the provider side, you need to:</p>
+<p>On the provider side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>pulsar</code></li>
 <li>Create a role</li>
 <li>Add the tenant service to members of the role</li>
 </ol>
-<p>Note that in step 2 any action and resource can be specified since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
-<p>For more specific steps involving UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">this doc</a>.</p>
+<p>Note that you can specify any action and resource in step 2 since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
+<p>For more specific steps involving UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">Example Service Access Control Setup</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="configure-the-broker-for-athenz"></a><a href="#configure-the-broker-for-athenz" 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 [...]
 <blockquote>
-<h3><a class="anchor" aria-hidden="true" id="tls-encryption-strongly-recommended"></a><a href="#tls-encryption-strongly-recommended" 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 [...]
-<p>Please note that using TLS encryption is strongly recommended when using Athenz as an authentication provider,
-as it can protect role tokens from being intercepted and reused (see also <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">this doc</a>).</p>
+<h3><a class="anchor" aria-hidden="true" id="tls-encryption"></a><a href="#tls-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Note that when you are using Athenz as an authentication provider, you had better use TLS encryption
+as it can protect role tokens from being intercepted and reused. (for more details involving TLS encrption see <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">Architecture - Data Model</a>).</p>
 </blockquote>
 <p>In the <code>conf/broker.conf</code> configuration file in your Pulsar installation, you need to provide the class name of the Athenz authentication provider as well as a comma-separated list of provider domain names.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Add the Athenz auth provider</span>
@@ -115,8 +115,8 @@ as it can protect role tokens from being intercepted and reused (see also <a hre
 <span class="hljs-attr">tlsKeyFilePath</span>=<span class="hljs-string">/path/to/broker-key.pem</span>
 </code></pre>
 <blockquote>
-<p>A full listing of parameters available in the <code>conf/broker.conf</code> file, as well as the default
-values for those parameters, can be found in <a href="/docs/en/next/reference-configuration#broker">Broker Configuration</a>.</p>
+<p>A full listing of parameters is available in the <code>conf/broker.conf</code> file, you can also find the default
+values for those parameters in <a href="/docs/en/next/reference-configuration#broker">Broker Configuration</a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="configure-clients-for-athenz"></a><a href="#configure-clients-for-athenz" 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 [...]
 <p>For more information on Pulsar client authentication using Athenz, see the following language-specific docs:</p>
@@ -125,7 +125,7 @@ values for those parameters, can be found in <a href="/docs/en/next/reference-co
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="configure-cli-tools-for-athenz"></a><a href="#configure-cli-tools-for-athenz" 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><a href="/docs/en/next/reference-cli-tools">Command-line tools</a> like <a href="/docs/en/next/pulsar-admin"><code>pulsar-admin</code></a>, <a href="/docs/en/next/reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="/docs/en/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You’ll need to add the following authentication parameters to that file to use Athenz with Pulsar’s CLI tools:</p>
+<p>You need to add the following authentication parameters to the <code>conf/client.conf</code> config file to use Athenz with CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># URL for the broker</span>
 <span class="hljs-attr">serviceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-comment">
@@ -138,7 +138,7 @@ values for those parameters, can be found in <a href="/docs/en/next/reference-co
 <span class="hljs-attr">tlsAllowInsecureConnection</span>=<span class="hljs-string">false</span>
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/cacert.pem</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/en/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication settings [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/en/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication settings [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/security-tls-transport.html b/content/docs/en/next/security-tls-transport.html
index dcbeeff..db1b722 100644
--- a/content/docs/en/next/security-tls-transport.html
+++ b/content/docs/en/next/security-tls-transport.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS Overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
               (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)
@@ -74,32 +74,36 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/security-tls-transport.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" [...]
-<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text, which means that all data is sent in the clear. TLS can be used to encrypt this traffic so that it cannot be snooped by a man-in-the-middle attacker.</p>
-<p>TLS can be configured for both encryption and authentication. You may configure just TLS transport encryption, which is covered in this guide. TLS authentication is covered <a href="/docs/en/next/security-tls-authentication">elsewhere</a>. Alternatively, you can use <a href="/docs/en/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/security-tls-transport.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" [...]
+<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.</p>
+<p>You can also configure TLS for both encryption and authentication. Use this guide to configure just TLS transport encryption and refer to <a href="/docs/en/next/security-tls-authentication">here</a> for TLS authentication configuration. Alternatively, you can use <a href="/docs/en/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
 <blockquote>
-<p>Note that enabling TLS may have a performance impact due to encryption overhead.</p>
+<p>Note that enabling TLS may impact the performance due to encryption overhead.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="tls-concepts"></a><a href="#tls-concepts" 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>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Encryption is performed using key pairs consisting of a public key and a private key. Messages are encrypted with the public key and can be decrypted with the private key.</p>
+<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Using key pairs consisting of a public key and a private key can perform the encryption. The public key encrpyts the messages and the private key decrypts the messages.</p>
 <p>To use TLS transport encryption, you need two kinds of key pairs, <strong>server key pairs</strong> and a <strong>certificate authority</strong>.</p>
-<p>A third kind of key pair, <strong>client key pairs</strong>, are used for <a href="/docs/en/next/security-tls-authentication">client authentication</a>.</p>
-<p>The <strong>certificate authority</strong> private key should be stored in a very secure location (a fully encrypted, disconnected, air gapped computer). The certificate authority public key, the <strong>trust cert</strong>, can be freely shared.</p>
-<p>For both client and server key pairs, the administrator first generates a private key and a certificate request. Then the certificate authority private key is used to sign the certificate request, generating a certificate. This certificate is the public key for the server/client key pair.</p>
-<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server they are talking to has a key pair that was signed by the certificate authority. A man-in-the-middle attacker would not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
-<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that was signed by the certificate authority. The Common Name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/en/next/security-overview">Overview</a>).</p>
-<h2><a class="anchor" aria-hidden="true" id="creating-tls-certificates"></a><a href="#creating-tls-certificates" 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 [...]
+<p>You can use a third kind of key pair, <strong>client key pairs</strong>, for <a href="/docs/en/next/security-tls-authentication">client authentication</a>.</p>
+<p>You should store the <strong>certificate authority</strong> private key in a very secure location (a fully encrypted, disconnected, air gapped computer). As for the certificate authority public key, the <strong>trust cert</strong>, you can freely shared it.</p>
+<p>For both client and server key pairs, the administrator first generates a private key and a certificate request, then uses the certificate authority private key to sign the certificate request, finally generates a certificate. This certificate is the public key for the server/client key pair.</p>
+<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server has a key pair that the certificate authority signed when the clients are talking to the server. A man-in-the-middle attacker does not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
+<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that the certificate authority signed. The common name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/en/next/security-overview">Overview</a>).</p>
+<h2><a class="anchor" aria-hidden="true" id="create-tls-certificates"></a><a href="#create-tls-certificates" 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 [...]
 <p>Creating TLS certificates for Pulsar involves creating a <a href="#certificate-authority">certificate authority</a> (CA), <a href="#server-certificate">server certificate</a>, and <a href="#client-certificate">client certificate</a>.</p>
-<p>The following guide is an abridged guide to setting up a certificate authority. For a more detailed guide, there are plenty of resource on the internet. We recommend the <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a>.</p>
+<p>Follow the guide below to set up a certificate authority. You can also refer to plenty of resources on the internet for more details. We recommend <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a> for your detailed reference.</p>
 <h3><a class="anchor" aria-hidden="true" id="certificate-authority"></a><a href="#certificate-authority" 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 [...]
-<p>The first step is to create the certificate for the CA. The CA will be used to sign both the broker and client certificates, in order to ensure that each party will trust the others. The CA should be stored in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p>
-<p>Create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the files and directories needed for the CA.</p>
+<ol>
+<li><p>Create the certificate for the CA. You can use CA to sign both the broker and client certificates. This ensures that each party will trust the others. You should store CA in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p></li>
+<li><p>Entering the follwing command to create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the f [...]
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir my-ca
 $ <span class="hljs-built_in">cd</span> my-ca
 $ wget https://raw.githubusercontent.com/apache/pulsar/master/site2/website/static/examples/openssl.cnf
 $ <span class="hljs-built_in">export</span> CA_HOME=$(<span class="hljs-built_in">pwd</span>)
 </code></pre>
-<p>Create the necessary directories, keys and certs.</p>
+<ol start="3">
+<li>Enter the commands below to create the necessary directories, keys and certs.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir certs crl newcerts private
 $ chmod 700 private/
 $ touch index.txt
@@ -111,41 +115,49 @@ $ openssl req -config openssl.cnf -key private/ca.key.pem \
       -out certs/ca.cert.pem
 $ chmod 444 certs/ca.cert.pem
 </code></pre>
-<p>After answering the question prompts, this will store CA-related files in the <code>./my-ca</code> directory. Within that directory:</p>
+<ol start="4">
+<li>After you answer the question prompts, CA-related files are stored in the <code>./my-ca</code> directory. Within that directory:</li>
+</ol>
 <ul>
-<li><code>certs/ca.cert.pem</code> is the public certificate. It is meant to be distributed to all parties involved.</li>
-<li><code>private/ca.key.pem</code> is the private key. This is only needed when signing a new certificate for either broker or clients and it must be safely guarded.</li>
+<li><code>certs/ca.cert.pem</code> is the public certificate. This public certificates is meant to be distributed to all parties involved.</li>
+<li><code>private/ca.key.pem</code> is the private key. You only need it when you are signing a new certificate for either broker or clients and you must safely guard this private key.</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="server-certificate"></a><a href="#server-certificate" 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>Once a CA certificate has been created, you can create certificate requests and sign them with the CA.</p>
-<p>The following commands will ask you a few questions and then create the certificates. When asked for the common name, you should match the hostname of the broker. You could also use a wildcard to match a group of broker hostnames, for example <code>*.broker.usw.example.com</code>. This ensures that the same certificate can be reused on multiple machines.</p>
+<p>Once you have created a CA certificate, you can create certificate requests and sign them with the CA.</p>
+<p>The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, <code>*.broker.usw.example.com</code>. This ensures that multiple machines can reuse the same certificate.</p>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="tips"></a><a href="#tips" 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>Sometimes it is not possible or makes no sense to match the hostname,
-such as when the brokers are created with random hostnames, or you
-plan to connect to the hosts via their IP. In this case, the client
-should be configured to disable TLS hostname verification. For more
-details, see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
+<p>Sometimes matching the hostname is not possible or makes no sense,
+such as when you creat the brokers with random hostnames, or you
+plan to connect to the hosts via their IP. In these cases, you
+should configure the client to disable TLS hostname verification. For more
+details, you can see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
 </blockquote>
-<p>First generate the key.</p>
+<ol>
+<li>Enter the command below to generate the key.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl genrsa -out broker.key.pem 2048
 </code></pre>
-<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so convert it.</p>
+<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so enter the following command to convert it.</p>
 <pre><code class="hljs css language-bash">$ openssl pkcs8 -topk8 -inform PEM -outform PEM \
       -<span class="hljs-keyword">in</span> broker.key.pem -out broker.key-pk8.pem -nocrypt
 </code></pre>
-<p>Generate the certificate request...</p>
+<ol start="2">
+<li>Enter the follwing command to generate the certificate request.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl req -config openssl.cnf \
       -key broker.key.pem -new -sha256 -out broker.csr.pem
 </code></pre>
-<p>... and sign it with the certificate authority.</p>
+<ol start="3">
+<li>Sign it with the certificate authority by entering the command below.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl ca -config openssl.cnf -extensions server_cert \
       -days 1000 -notext -md sha256 \
       -<span class="hljs-keyword">in</span> broker.csr.pem -out broker.cert.pem
 </code></pre>
-<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which can be used along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
+<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which you can use along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
 <h2><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-configuration" 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 [...]
-<p>To configure a Pulsar <a href="/docs/en/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you'll need to make some changes to <code>broker.conf</code>, which is located in the <code>conf</code> directory of your <a href="/docs/en/next/standalone">Pulsar installation</a>.</p>
+<p>To configure a Pulsar <a href="/docs/en/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you need to make some changes to <code>broker.conf</code>, which locates in the <code>conf</code> directory of your <a href="/docs/en/next/standalone">Pulsar installation</a>.</p>
 <p>Add these values to the configuration file (substituting the appropriate certificate paths where necessary):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsEnabled</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -153,23 +165,23 @@ details, see <a href="#hostname-verification">the host verification section in c
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <blockquote>
-<p>A full list of parameters available in the <code>conf/broker.conf</code> file,
-as well as the default values for those parameters, can be found in <a href="/docs/en/next/reference-configuration#broker">Broker Configuration</a></p>
+<p>You can find a full list of parameters available in the <code>conf/broker.conf</code> file,
+as well as the default values for those parameters, in <a href="/docs/en/next/reference-configuration#broker">Broker Configuration</a></p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="tls-protocol-version-and-cipher"></a><a href="#tls-protocol-version-and-cipher" 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 [...]
-<p>The broker (and proxy) can be configured to require specific TLS protocol versions and ciphers for TLS negiotation. This can be used to stop clients from requesting downgraded TLS protocol versions or ciphers which may have weaknesses.</p>
-<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider being used. Pulsar uses OpenSSL if available, but if not defaults back to the JDK implementation.</p>
+<p>You can configure the broker (and proxy) to require specific TLS protocol versions and ciphers for TLS negiotation. You can use the TLS protocol versions and ciphers to stop clients from requesting downgraded TLS protocol versions or ciphers that may have weaknesses.</p>
+<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider that you are using. Pulsar uses OpenSSL if the OpenSSL is available, but if the OpenSSL is not available, Pulsar defaults back to the JDK implementation.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsProtocols</span>=<span class="hljs-string">TLSv1.2,TLSv1.1</span>
 <span class="hljs-attr">tlsCiphers</span>=<span class="hljs-string">TLS_DH_RSA_WITH_AES_256_GCM_SHA384,TLS_DH_RSA_WITH_AES_256_CBC_SHA</span>
 </code></pre>
-<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. A list of supported cipher can be acquired from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
-<p>For JDK 8, a list of supported values can be obtained from the documentation:</p>
+<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. You can acquire a list of supported cipher from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
+<p>For JDK 8, you can obtain a list of supported values from the documentation:</p>
 <ul>
 <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a></li>
 <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="proxy-configuration"></a><a href="#proxy-configuration" 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.2 [...]
-<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy to be able to connect to brokers.</p>
+<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy connecting to brokers.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># For clients connecting to the proxy</span>
 <span class="hljs-attr">tlsEnabledInProxy</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -181,16 +193,16 @@ as well as the default values for those parameters, can be found in <a href="/do
 <span class="hljs-attr">brokerClientTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="client-configuration"></a><a href="#client-configuration" 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 [...]
-<p>When TLS transport encryption is enabled, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
-<p>As the server certificate you generated above doesn't belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
+<p>When you enable the TLS transport encryption, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
+<p>As the server certificate that you generated above does not belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
 <h4><a class="anchor" aria-hidden="true" id="hostname-verification"></a><a href="#hostname-verification" 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 [...]
-<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which it is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
-<p>Moreover, as the administrator has full control of the certificate authority, it is unlikely that a bad actor would be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables it by default, and should always be disabled in production environments. As long as &quot;allowInsecureConnection&quot; is disabled, a man-in-the-middle attack would require that  [...]
+<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which the hostname is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
+<p>Moreover, as the administrator has full control of the certificate authority, a bad actor is unlikely to be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables &quot;allowInsecureConnection&quot; by default, and you should always disable &quot;allowInsecureConnection&quot; in production environments. As long as you disable &quot;allowInsecureConnec [...]
 <p>One scenario where you may want to enable hostname verification is where you have multiple proxy nodes behind a VIP, and the VIP has a DNS record, for example, pulsar.mycompany.com. In this case, you can generate a TLS cert with pulsar.mycompany.com as the &quot;CommonName,&quot; and then enable hostname verification on the client.</p>
-<p>The examples below show hostname verification being disabled for the Java client, though you can be omit this as the client disables it by default. C++/python clients do now allow this to be configured at the moment.</p>
+<p>The examples below show hostname verification being disabled for the Java client, though you can omit this as the client disables the hostname verification by default. C++/python clients do now allow configuring this at the moment.</p>
 <h3><a class="anchor" aria-hidden="true" id="cli-tools"></a><a href="#cli-tools" 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.6 [...]
 <p><a href="/docs/en/next/reference-cli-tools">Command-line tools</a> like <a href="reference-cli-tools#pulsar-admin"><code>pulsar-admin</code></a>, <a href="reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You'll need to add the following parameters to that file to use TLS transport with Pulsar's CLI tools:</p>
+<p>You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-attr">brokerServiceUrl</span>=<span class="hljs-string">pulsar+ssl://broker.example.com:6651/</span>
 <span class="hljs-attr">useTls</span>=<span class="hljs-string">true</span>
@@ -226,7 +238,7 @@ config.setTlsAllowInsecureConnection(<span class="hljs-literal">false</span>); <
 
 pulsar::<span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://broker.example.com:6651/"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-overview"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/en/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS Overview</a></li><li><a href="#tls-concepts">TLS concepts</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-overview"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/en/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS overview</a></li><li><a href="#tls-concepts">TLS concepts</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/en/next/security-tls-transport/index.html b/content/docs/en/next/security-tls-transport/index.html
index dcbeeff..db1b722 100644
--- a/content/docs/en/next/security-tls-transport/index.html
+++ b/content/docs/en/next/security-tls-transport/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS Overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
               (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)
@@ -74,32 +74,36 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/security-tls-transport.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" [...]
-<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text, which means that all data is sent in the clear. TLS can be used to encrypt this traffic so that it cannot be snooped by a man-in-the-middle attacker.</p>
-<p>TLS can be configured for both encryption and authentication. You may configure just TLS transport encryption, which is covered in this guide. TLS authentication is covered <a href="/docs/en/next/security-tls-authentication">elsewhere</a>. Alternatively, you can use <a href="/docs/en/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/incubator-pulsar/edit/master/site2/docs/security-tls-transport.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" [...]
+<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.</p>
+<p>You can also configure TLS for both encryption and authentication. Use this guide to configure just TLS transport encryption and refer to <a href="/docs/en/next/security-tls-authentication">here</a> for TLS authentication configuration. Alternatively, you can use <a href="/docs/en/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
 <blockquote>
-<p>Note that enabling TLS may have a performance impact due to encryption overhead.</p>
+<p>Note that enabling TLS may impact the performance due to encryption overhead.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="tls-concepts"></a><a href="#tls-concepts" 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>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Encryption is performed using key pairs consisting of a public key and a private key. Messages are encrypted with the public key and can be decrypted with the private key.</p>
+<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Using key pairs consisting of a public key and a private key can perform the encryption. The public key encrpyts the messages and the private key decrypts the messages.</p>
 <p>To use TLS transport encryption, you need two kinds of key pairs, <strong>server key pairs</strong> and a <strong>certificate authority</strong>.</p>
-<p>A third kind of key pair, <strong>client key pairs</strong>, are used for <a href="/docs/en/next/security-tls-authentication">client authentication</a>.</p>
-<p>The <strong>certificate authority</strong> private key should be stored in a very secure location (a fully encrypted, disconnected, air gapped computer). The certificate authority public key, the <strong>trust cert</strong>, can be freely shared.</p>
-<p>For both client and server key pairs, the administrator first generates a private key and a certificate request. Then the certificate authority private key is used to sign the certificate request, generating a certificate. This certificate is the public key for the server/client key pair.</p>
-<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server they are talking to has a key pair that was signed by the certificate authority. A man-in-the-middle attacker would not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
-<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that was signed by the certificate authority. The Common Name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/en/next/security-overview">Overview</a>).</p>
-<h2><a class="anchor" aria-hidden="true" id="creating-tls-certificates"></a><a href="#creating-tls-certificates" 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 [...]
+<p>You can use a third kind of key pair, <strong>client key pairs</strong>, for <a href="/docs/en/next/security-tls-authentication">client authentication</a>.</p>
+<p>You should store the <strong>certificate authority</strong> private key in a very secure location (a fully encrypted, disconnected, air gapped computer). As for the certificate authority public key, the <strong>trust cert</strong>, you can freely shared it.</p>
+<p>For both client and server key pairs, the administrator first generates a private key and a certificate request, then uses the certificate authority private key to sign the certificate request, finally generates a certificate. This certificate is the public key for the server/client key pair.</p>
+<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server has a key pair that the certificate authority signed when the clients are talking to the server. A man-in-the-middle attacker does not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
+<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that the certificate authority signed. The common name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/en/next/security-overview">Overview</a>).</p>
+<h2><a class="anchor" aria-hidden="true" id="create-tls-certificates"></a><a href="#create-tls-certificates" 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 [...]
 <p>Creating TLS certificates for Pulsar involves creating a <a href="#certificate-authority">certificate authority</a> (CA), <a href="#server-certificate">server certificate</a>, and <a href="#client-certificate">client certificate</a>.</p>
-<p>The following guide is an abridged guide to setting up a certificate authority. For a more detailed guide, there are plenty of resource on the internet. We recommend the <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a>.</p>
+<p>Follow the guide below to set up a certificate authority. You can also refer to plenty of resources on the internet for more details. We recommend <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a> for your detailed reference.</p>
 <h3><a class="anchor" aria-hidden="true" id="certificate-authority"></a><a href="#certificate-authority" 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 [...]
-<p>The first step is to create the certificate for the CA. The CA will be used to sign both the broker and client certificates, in order to ensure that each party will trust the others. The CA should be stored in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p>
-<p>Create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the files and directories needed for the CA.</p>
+<ol>
+<li><p>Create the certificate for the CA. You can use CA to sign both the broker and client certificates. This ensures that each party will trust the others. You should store CA in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p></li>
+<li><p>Entering the follwing command to create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the f [...]
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir my-ca
 $ <span class="hljs-built_in">cd</span> my-ca
 $ wget https://raw.githubusercontent.com/apache/pulsar/master/site2/website/static/examples/openssl.cnf
 $ <span class="hljs-built_in">export</span> CA_HOME=$(<span class="hljs-built_in">pwd</span>)
 </code></pre>
-<p>Create the necessary directories, keys and certs.</p>
+<ol start="3">
+<li>Enter the commands below to create the necessary directories, keys and certs.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir certs crl newcerts private
 $ chmod 700 private/
 $ touch index.txt
@@ -111,41 +115,49 @@ $ openssl req -config openssl.cnf -key private/ca.key.pem \
       -out certs/ca.cert.pem
 $ chmod 444 certs/ca.cert.pem
 </code></pre>
-<p>After answering the question prompts, this will store CA-related files in the <code>./my-ca</code> directory. Within that directory:</p>
+<ol start="4">
+<li>After you answer the question prompts, CA-related files are stored in the <code>./my-ca</code> directory. Within that directory:</li>
+</ol>
 <ul>
-<li><code>certs/ca.cert.pem</code> is the public certificate. It is meant to be distributed to all parties involved.</li>
-<li><code>private/ca.key.pem</code> is the private key. This is only needed when signing a new certificate for either broker or clients and it must be safely guarded.</li>
+<li><code>certs/ca.cert.pem</code> is the public certificate. This public certificates is meant to be distributed to all parties involved.</li>
+<li><code>private/ca.key.pem</code> is the private key. You only need it when you are signing a new certificate for either broker or clients and you must safely guard this private key.</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="server-certificate"></a><a href="#server-certificate" 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>Once a CA certificate has been created, you can create certificate requests and sign them with the CA.</p>
-<p>The following commands will ask you a few questions and then create the certificates. When asked for the common name, you should match the hostname of the broker. You could also use a wildcard to match a group of broker hostnames, for example <code>*.broker.usw.example.com</code>. This ensures that the same certificate can be reused on multiple machines.</p>
+<p>Once you have created a CA certificate, you can create certificate requests and sign them with the CA.</p>
+<p>The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, <code>*.broker.usw.example.com</code>. This ensures that multiple machines can reuse the same certificate.</p>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="tips"></a><a href="#tips" 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>Sometimes it is not possible or makes no sense to match the hostname,
-such as when the brokers are created with random hostnames, or you
-plan to connect to the hosts via their IP. In this case, the client
-should be configured to disable TLS hostname verification. For more
-details, see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
+<p>Sometimes matching the hostname is not possible or makes no sense,
+such as when you creat the brokers with random hostnames, or you
+plan to connect to the hosts via their IP. In these cases, you
+should configure the client to disable TLS hostname verification. For more
+details, you can see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
 </blockquote>
-<p>First generate the key.</p>
+<ol>
+<li>Enter the command below to generate the key.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl genrsa -out broker.key.pem 2048
 </code></pre>
-<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so convert it.</p>
+<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so enter the following command to convert it.</p>
 <pre><code class="hljs css language-bash">$ openssl pkcs8 -topk8 -inform PEM -outform PEM \
       -<span class="hljs-keyword">in</span> broker.key.pem -out broker.key-pk8.pem -nocrypt
 </code></pre>
-<p>Generate the certificate request...</p>
+<ol start="2">
+<li>Enter the follwing command to generate the certificate request.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl req -config openssl.cnf \
       -key broker.key.pem -new -sha256 -out broker.csr.pem
 </code></pre>
-<p>... and sign it with the certificate authority.</p>
+<ol start="3">
+<li>Sign it with the certificate authority by entering the command below.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl ca -config openssl.cnf -extensions server_cert \
       -days 1000 -notext -md sha256 \
       -<span class="hljs-keyword">in</span> broker.csr.pem -out broker.cert.pem
 </code></pre>
-<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which can be used along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
+<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which you can use along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
 <h2><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-configuration" 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 [...]
-<p>To configure a Pulsar <a href="/docs/en/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you'll need to make some changes to <code>broker.conf</code>, which is located in the <code>conf</code> directory of your <a href="/docs/en/next/standalone">Pulsar installation</a>.</p>
+<p>To configure a Pulsar <a href="/docs/en/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you need to make some changes to <code>broker.conf</code>, which locates in the <code>conf</code> directory of your <a href="/docs/en/next/standalone">Pulsar installation</a>.</p>
 <p>Add these values to the configuration file (substituting the appropriate certificate paths where necessary):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsEnabled</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -153,23 +165,23 @@ details, see <a href="#hostname-verification">the host verification section in c
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <blockquote>
-<p>A full list of parameters available in the <code>conf/broker.conf</code> file,
-as well as the default values for those parameters, can be found in <a href="/docs/en/next/reference-configuration#broker">Broker Configuration</a></p>
+<p>You can find a full list of parameters available in the <code>conf/broker.conf</code> file,
+as well as the default values for those parameters, in <a href="/docs/en/next/reference-configuration#broker">Broker Configuration</a></p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="tls-protocol-version-and-cipher"></a><a href="#tls-protocol-version-and-cipher" 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 [...]
-<p>The broker (and proxy) can be configured to require specific TLS protocol versions and ciphers for TLS negiotation. This can be used to stop clients from requesting downgraded TLS protocol versions or ciphers which may have weaknesses.</p>
-<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider being used. Pulsar uses OpenSSL if available, but if not defaults back to the JDK implementation.</p>
+<p>You can configure the broker (and proxy) to require specific TLS protocol versions and ciphers for TLS negiotation. You can use the TLS protocol versions and ciphers to stop clients from requesting downgraded TLS protocol versions or ciphers that may have weaknesses.</p>
+<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider that you are using. Pulsar uses OpenSSL if the OpenSSL is available, but if the OpenSSL is not available, Pulsar defaults back to the JDK implementation.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsProtocols</span>=<span class="hljs-string">TLSv1.2,TLSv1.1</span>
 <span class="hljs-attr">tlsCiphers</span>=<span class="hljs-string">TLS_DH_RSA_WITH_AES_256_GCM_SHA384,TLS_DH_RSA_WITH_AES_256_CBC_SHA</span>
 </code></pre>
-<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. A list of supported cipher can be acquired from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
-<p>For JDK 8, a list of supported values can be obtained from the documentation:</p>
+<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. You can acquire a list of supported cipher from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
+<p>For JDK 8, you can obtain a list of supported values from the documentation:</p>
 <ul>
 <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a></li>
 <li><a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="proxy-configuration"></a><a href="#proxy-configuration" 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.2 [...]
-<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy to be able to connect to brokers.</p>
+<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy connecting to brokers.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># For clients connecting to the proxy</span>
 <span class="hljs-attr">tlsEnabledInProxy</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -181,16 +193,16 @@ as well as the default values for those parameters, can be found in <a href="/do
 <span class="hljs-attr">brokerClientTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="client-configuration"></a><a href="#client-configuration" 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 [...]
-<p>When TLS transport encryption is enabled, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
-<p>As the server certificate you generated above doesn't belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
+<p>When you enable the TLS transport encryption, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
+<p>As the server certificate that you generated above does not belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
 <h4><a class="anchor" aria-hidden="true" id="hostname-verification"></a><a href="#hostname-verification" 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 [...]
-<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which it is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
-<p>Moreover, as the administrator has full control of the certificate authority, it is unlikely that a bad actor would be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables it by default, and should always be disabled in production environments. As long as &quot;allowInsecureConnection&quot; is disabled, a man-in-the-middle attack would require that  [...]
+<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which the hostname is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
+<p>Moreover, as the administrator has full control of the certificate authority, a bad actor is unlikely to be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables &quot;allowInsecureConnection&quot; by default, and you should always disable &quot;allowInsecureConnection&quot; in production environments. As long as you disable &quot;allowInsecureConnec [...]
 <p>One scenario where you may want to enable hostname verification is where you have multiple proxy nodes behind a VIP, and the VIP has a DNS record, for example, pulsar.mycompany.com. In this case, you can generate a TLS cert with pulsar.mycompany.com as the &quot;CommonName,&quot; and then enable hostname verification on the client.</p>
-<p>The examples below show hostname verification being disabled for the Java client, though you can be omit this as the client disables it by default. C++/python clients do now allow this to be configured at the moment.</p>
+<p>The examples below show hostname verification being disabled for the Java client, though you can omit this as the client disables the hostname verification by default. C++/python clients do now allow configuring this at the moment.</p>
 <h3><a class="anchor" aria-hidden="true" id="cli-tools"></a><a href="#cli-tools" 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.6 [...]
 <p><a href="/docs/en/next/reference-cli-tools">Command-line tools</a> like <a href="reference-cli-tools#pulsar-admin"><code>pulsar-admin</code></a>, <a href="reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You'll need to add the following parameters to that file to use TLS transport with Pulsar's CLI tools:</p>
+<p>You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-attr">brokerServiceUrl</span>=<span class="hljs-string">pulsar+ssl://broker.example.com:6651/</span>
 <span class="hljs-attr">useTls</span>=<span class="hljs-string">true</span>
@@ -226,7 +238,7 @@ config.setTlsAllowInsecureConnection(<span class="hljs-literal">false</span>); <
 
 pulsar::<span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://broker.example.com:6651/"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-overview"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/en/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS Overview</a></li><li><a href="#tls-concepts">TLS concepts</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/next/security-overview"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/en/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS overview</a></li><li><a href="#tls-concepts">TLS concepts</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/security-athenz.html b/content/docs/fr/next/security-athenz.html
index 7a72c7b..02290bf 100644
--- a/content/docs/fr/next/security-athenz.html
+++ b/content/docs/fr/next/security-athenz.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="fr"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, Athenz role tokens (aka *z-tokens*) can be used to establish the identify of the cl [...]
+<!DOCTYPE html><html lang="fr"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the identify [...]
               (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)
@@ -74,32 +74,32 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/fr" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authorization system. In Pulsar, Athenz role [...]
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/fr" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authorization system. In Pulsar, you can use [...]
 <h2><a class="anchor" aria-hidden="true" id="athenz-authentication-settings"></a><a href="#athenz-authentication-settings" 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>In a <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> there is both an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
-<p>To begin, you need to set up Athenz service access control. You should create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/fr/next/reference-terminology#tenan [...]
+<p>A <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> contains an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
+<p>To begin, you need to set up Athenz service access control. You need to create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/fr/next/reference-terminology#tena [...]
 <h3><a class="anchor" aria-hidden="true" id="create-the-tenant-domain-and-service"></a><a href="#create-the-tenant-domain-and-service" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>On the <a href="/docs/fr/next/reference-terminology#tenant">tenant</a> side, you need to:</p>
+<p>On the <a href="/docs/fr/next/reference-terminology#tenant">tenant</a> side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>shopping</code></li>
 <li>Generate a private/public key pair</li>
 <li>Create a service, such as <code>some_app</code>, on the domain with the public key</li>
 </ol>
-<p>Note that the private key generated in step 2 needs to be specified when the Pulsar client connects to the <a href="/docs/fr/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/fr/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/fr/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
-<p>For more specific steps involving the Athenz UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">this doc</a>.</p>
+<p>Note that you need to specify the private key generated in step 2 when the Pulsar client connects to the <a href="/docs/fr/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/fr/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/fr/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
+<p>For more specific steps involving the Athenz UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">Example Service Access Control Setup</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="create-the-provider-domain-and-add-the-tenant-service-to-some-role-members"></a><a href="#create-the-provider-domain-and-add-the-tenant-service-to-some-role-members" 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. [...]
-<p>On the provider side, you need to:</p>
+<p>On the provider side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>pulsar</code></li>
 <li>Create a role</li>
 <li>Add the tenant service to members of the role</li>
 </ol>
-<p>Note that in step 2 any action and resource can be specified since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
-<p>For more specific steps involving UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">this doc</a>.</p>
+<p>Note that you can specify any action and resource in step 2 since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
+<p>For more specific steps involving UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">Example Service Access Control Setup</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="configure-the-broker-for-athenz"></a><a href="#configure-the-broker-for-athenz" 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 [...]
 <blockquote>
-<h3><a class="anchor" aria-hidden="true" id="tls-encryption-strongly-recommended"></a><a href="#tls-encryption-strongly-recommended" 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 [...]
-<p>Please note that using TLS encryption is strongly recommended when using Athenz as an authentication provider, as it can protect role tokens from being intercepted and reused (see also <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">this doc</a>).</p>
+<h3><a class="anchor" aria-hidden="true" id="tls-encryption"></a><a href="#tls-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Note that when you are using Athenz as an authentication provider, you had better use TLS encryption as it can protect role tokens from being intercepted and reused. (for more details involving TLS encrption see <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">Architecture - Data Model</a>).</p>
 </blockquote>
 <p>In the <code>conf/broker.conf</code> configuration file in your Pulsar installation, you need to provide the class name of the Athenz authentication provider as well as a comma-separated list of provider domain names.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Add the Athenz auth provider</span>
@@ -114,7 +114,7 @@
 <span class="hljs-attr">tlsKeyFilePath</span>=<span class="hljs-string">/path/to/broker-key.pem</span>
 </code></pre>
 <blockquote>
-<p>A full listing of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/fr/next/reference-configuration#broker">Broker Configuration</a>.</p>
+<p>A full listing of parameters is available in the <code>conf/broker.conf</code> file, you can also find the default values for those parameters in <a href="/docs/fr/next/reference-configuration#broker">Broker Configuration</a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="configure-clients-for-athenz"></a><a href="#configure-clients-for-athenz" 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 [...]
 <p>For more information on Pulsar client authentication using Athenz, see the following language-specific docs:</p>
@@ -123,7 +123,7 @@
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="configure-cli-tools-for-athenz"></a><a href="#configure-cli-tools-for-athenz" 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><a href="/docs/fr/next/reference-cli-tools">Command-line tools</a> like <a href="/docs/fr/next/pulsar-admin"><code>pulsar-admin</code></a>, <a href="/docs/fr/next/reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="/docs/fr/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You’ll need to add the following authentication parameters to that file to use Athenz with Pulsar’s CLI tools:</p>
+<p>You need to add the following authentication parameters to the <code>conf/client.conf</code> config file to use Athenz with CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># URL for the broker</span>
 <span class="hljs-attr">serviceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-comment">
@@ -136,7 +136,7 @@
 <span class="hljs-attr">tlsAllowInsecureConnection</span>=<span class="hljs-string">false</span>
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/cacert.pem</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/fr/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication settings [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/fr/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication settings [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/security-athenz/index.html b/content/docs/fr/next/security-athenz/index.html
index 7a72c7b..02290bf 100644
--- a/content/docs/fr/next/security-athenz/index.html
+++ b/content/docs/fr/next/security-athenz/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="fr"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, Athenz role tokens (aka *z-tokens*) can be used to establish the identify of the cl [...]
+<!DOCTYPE html><html lang="fr"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the identify [...]
               (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)
@@ -74,32 +74,32 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/fr" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authorization system. In Pulsar, Athenz role [...]
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/fr" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authorization system. In Pulsar, you can use [...]
 <h2><a class="anchor" aria-hidden="true" id="athenz-authentication-settings"></a><a href="#athenz-authentication-settings" 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>In a <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> there is both an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
-<p>To begin, you need to set up Athenz service access control. You should create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/fr/next/reference-terminology#tenan [...]
+<p>A <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> contains an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
+<p>To begin, you need to set up Athenz service access control. You need to create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/fr/next/reference-terminology#tena [...]
 <h3><a class="anchor" aria-hidden="true" id="create-the-tenant-domain-and-service"></a><a href="#create-the-tenant-domain-and-service" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>On the <a href="/docs/fr/next/reference-terminology#tenant">tenant</a> side, you need to:</p>
+<p>On the <a href="/docs/fr/next/reference-terminology#tenant">tenant</a> side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>shopping</code></li>
 <li>Generate a private/public key pair</li>
 <li>Create a service, such as <code>some_app</code>, on the domain with the public key</li>
 </ol>
-<p>Note that the private key generated in step 2 needs to be specified when the Pulsar client connects to the <a href="/docs/fr/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/fr/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/fr/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
-<p>For more specific steps involving the Athenz UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">this doc</a>.</p>
+<p>Note that you need to specify the private key generated in step 2 when the Pulsar client connects to the <a href="/docs/fr/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/fr/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/fr/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
+<p>For more specific steps involving the Athenz UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">Example Service Access Control Setup</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="create-the-provider-domain-and-add-the-tenant-service-to-some-role-members"></a><a href="#create-the-provider-domain-and-add-the-tenant-service-to-some-role-members" 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. [...]
-<p>On the provider side, you need to:</p>
+<p>On the provider side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>pulsar</code></li>
 <li>Create a role</li>
 <li>Add the tenant service to members of the role</li>
 </ol>
-<p>Note that in step 2 any action and resource can be specified since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
-<p>For more specific steps involving UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">this doc</a>.</p>
+<p>Note that you can specify any action and resource in step 2 since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
+<p>For more specific steps involving UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">Example Service Access Control Setup</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="configure-the-broker-for-athenz"></a><a href="#configure-the-broker-for-athenz" 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 [...]
 <blockquote>
-<h3><a class="anchor" aria-hidden="true" id="tls-encryption-strongly-recommended"></a><a href="#tls-encryption-strongly-recommended" 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 [...]
-<p>Please note that using TLS encryption is strongly recommended when using Athenz as an authentication provider, as it can protect role tokens from being intercepted and reused (see also <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">this doc</a>).</p>
+<h3><a class="anchor" aria-hidden="true" id="tls-encryption"></a><a href="#tls-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Note that when you are using Athenz as an authentication provider, you had better use TLS encryption as it can protect role tokens from being intercepted and reused. (for more details involving TLS encrption see <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">Architecture - Data Model</a>).</p>
 </blockquote>
 <p>In the <code>conf/broker.conf</code> configuration file in your Pulsar installation, you need to provide the class name of the Athenz authentication provider as well as a comma-separated list of provider domain names.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Add the Athenz auth provider</span>
@@ -114,7 +114,7 @@
 <span class="hljs-attr">tlsKeyFilePath</span>=<span class="hljs-string">/path/to/broker-key.pem</span>
 </code></pre>
 <blockquote>
-<p>A full listing of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/fr/next/reference-configuration#broker">Broker Configuration</a>.</p>
+<p>A full listing of parameters is available in the <code>conf/broker.conf</code> file, you can also find the default values for those parameters in <a href="/docs/fr/next/reference-configuration#broker">Broker Configuration</a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="configure-clients-for-athenz"></a><a href="#configure-clients-for-athenz" 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 [...]
 <p>For more information on Pulsar client authentication using Athenz, see the following language-specific docs:</p>
@@ -123,7 +123,7 @@
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="configure-cli-tools-for-athenz"></a><a href="#configure-cli-tools-for-athenz" 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><a href="/docs/fr/next/reference-cli-tools">Command-line tools</a> like <a href="/docs/fr/next/pulsar-admin"><code>pulsar-admin</code></a>, <a href="/docs/fr/next/reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="/docs/fr/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You’ll need to add the following authentication parameters to that file to use Athenz with Pulsar’s CLI tools:</p>
+<p>You need to add the following authentication parameters to the <code>conf/client.conf</code> config file to use Athenz with CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># URL for the broker</span>
 <span class="hljs-attr">serviceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-comment">
@@ -136,7 +136,7 @@
 <span class="hljs-attr">tlsAllowInsecureConnection</span>=<span class="hljs-string">false</span>
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/cacert.pem</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/fr/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication settings [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/fr/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication settings [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/security-tls-transport.html b/content/docs/fr/next/security-tls-transport.html
index 8d6212f..ecfd04b 100644
--- a/content/docs/fr/next/security-tls-transport.html
+++ b/content/docs/fr/next/security-tls-transport.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="fr"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS Overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="fr"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
+<!DOCTYPE html><html lang="fr"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="fr"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
               (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)
@@ -74,32 +74,36 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/fr" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" aria-hidden="true" class="hash-link"><svg [...]
-<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text, which means that all data is sent in the clear. TLS can be used to encrypt this traffic so that it cannot be snooped by a man-in-the-middle attacker.</p>
-<p>TLS can be configured for both encryption and authentication. You may configure just TLS transport encryption, which is covered in this guide. TLS authentication is covered <a href="/docs/fr/next/security-tls-authentication">elsewhere</a>. Alternatively, you can use <a href="/docs/fr/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/fr" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" aria-hidden="true" class="hash-link"><svg [...]
+<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.</p>
+<p>You can also configure TLS for both encryption and authentication. Use this guide to configure just TLS transport encryption and refer to <a href="/docs/fr/next/security-tls-authentication">here</a> for TLS authentication configuration. Alternatively, you can use <a href="/docs/fr/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
 <blockquote>
-<p>Note that enabling TLS may have a performance impact due to encryption overhead.</p>
+<p>Note that enabling TLS may impact the performance due to encryption overhead.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="tls-concepts"></a><a href="#tls-concepts" 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>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Encryption is performed using key pairs consisting of a public key and a private key. Messages are encrypted with the public key and can be decrypted with the private key.</p>
+<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Using key pairs consisting of a public key and a private key can perform the encryption. The public key encrpyts the messages and the private key decrypts the messages.</p>
 <p>To use TLS transport encryption, you need two kinds of key pairs, <strong>server key pairs</strong> and a <strong>certificate authority</strong>.</p>
-<p>A third kind of key pair, <strong>client key pairs</strong>, are used for <a href="/docs/fr/next/security-tls-authentication">client authentication</a>.</p>
-<p>The <strong>certificate authority</strong> private key should be stored in a very secure location (a fully encrypted, disconnected, air gapped computer). The certificate authority public key, the <strong>trust cert</strong>, can be freely shared.</p>
-<p>For both client and server key pairs, the administrator first generates a private key and a certificate request. Then the certificate authority private key is used to sign the certificate request, generating a certificate. This certificate is the public key for the server/client key pair.</p>
-<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server they are talking to has a key pair that was signed by the certificate authority. A man-in-the-middle attacker would not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
-<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that was signed by the certificate authority. The Common Name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/fr/next/security-overview">Overview</a>).</p>
-<h2><a class="anchor" aria-hidden="true" id="creating-tls-certificates"></a><a href="#creating-tls-certificates" 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 [...]
+<p>You can use a third kind of key pair, <strong>client key pairs</strong>, for <a href="/docs/fr/next/security-tls-authentication">client authentication</a>.</p>
+<p>You should store the <strong>certificate authority</strong> private key in a very secure location (a fully encrypted, disconnected, air gapped computer). As for the certificate authority public key, the <strong>trust cert</strong>, you can freely shared it.</p>
+<p>For both client and server key pairs, the administrator first generates a private key and a certificate request, then uses the certificate authority private key to sign the certificate request, finally generates a certificate. This certificate is the public key for the server/client key pair.</p>
+<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server has a key pair that the certificate authority signed when the clients are talking to the server. A man-in-the-middle attacker does not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
+<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that the certificate authority signed. The common name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/fr/next/security-overview">Overview</a>).</p>
+<h2><a class="anchor" aria-hidden="true" id="create-tls-certificates"></a><a href="#create-tls-certificates" 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 [...]
 <p>Creating TLS certificates for Pulsar involves creating a <a href="#certificate-authority">certificate authority</a> (CA), <a href="#server-certificate">server certificate</a>, and <a href="#client-certificate">client certificate</a>.</p>
-<p>The following guide is an abridged guide to setting up a certificate authority. For a more detailed guide, there are plenty of resource on the internet. We recommend the <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a>.</p>
+<p>Follow the guide below to set up a certificate authority. You can also refer to plenty of resources on the internet for more details. We recommend <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a> for your detailed reference.</p>
 <h3><a class="anchor" aria-hidden="true" id="certificate-authority"></a><a href="#certificate-authority" 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 [...]
-<p>The first step is to create the certificate for the CA. The CA will be used to sign both the broker and client certificates, in order to ensure that each party will trust the others. The CA should be stored in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p>
-<p>Create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the files and directories needed for the CA.</p>
+<ol>
+<li><p>Create the certificate for the CA. You can use CA to sign both the broker and client certificates. This ensures that each party will trust the others. You should store CA in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p></li>
+<li><p>Entering the follwing command to create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the f [...]
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir my-ca
 $ <span class="hljs-built_in">cd</span> my-ca
 $ wget https://raw.githubusercontent.com/apache/pulsar/master/site2/website/static/examples/openssl.cnf
 $ <span class="hljs-built_in">export</span> CA_HOME=$(<span class="hljs-built_in">pwd</span>)
 </code></pre>
-<p>Create the necessary directories, keys and certs.</p>
+<ol>
+<li>Enter the commands below to create the necessary directories, keys and certs.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir certs crl newcerts private
 $ chmod 700 private/
 $ touch index.txt
@@ -111,37 +115,45 @@ $ openssl req -config openssl.cnf -key private/ca.key.pem \
       -out certs/ca.cert.pem
 $ chmod 444 certs/ca.cert.pem
 </code></pre>
-<p>After answering the question prompts, this will store CA-related files in the <code>./my-ca</code> directory. Within that directory:</p>
+<ol>
+<li>After you answer the question prompts, CA-related files are stored in the <code>./my-ca</code> directory. Within that directory:</li>
+</ol>
 <ul>
-<li><code>certs/ca.cert.pem</code> is the public certificate. It is meant to be distributed to all parties involved.</li>
-<li><code>private/ca.key.pem</code> is the private key. This is only needed when signing a new certificate for either broker or clients and it must be safely guarded.</li>
+<li><code>certs/ca.cert.pem</code> is the public certificate. This public certificates is meant to be distributed to all parties involved.</li>
+<li><code>private/ca.key.pem</code> is the private key. You only need it when you are signing a new certificate for either broker or clients and you must safely guard this private key.</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="server-certificate"></a><a href="#server-certificate" 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>Once a CA certificate has been created, you can create certificate requests and sign them with the CA.</p>
-<p>The following commands will ask you a few questions and then create the certificates. When asked for the common name, you should match the hostname of the broker. You could also use a wildcard to match a group of broker hostnames, for example <code>*.broker.usw.example.com</code>. This ensures that the same certificate can be reused on multiple machines.</p>
+<p>Once you have created a CA certificate, you can create certificate requests and sign them with the CA.</p>
+<p>The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, <code>*.broker.usw.example.com</code>. This ensures that multiple machines can reuse the same certificate.</p>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="tips"></a><a href="#tips" 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>Sometimes it is not possible or makes no sense to match the hostname, such as when the brokers are created with random hostnames, or you plan to connect to the hosts via their IP. In this case, the client should be configured to disable TLS hostname verification. For more details, see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
+<p>Sometimes matching the hostname is not possible or makes no sense, such as when you creat the brokers with random hostnames, or you plan to connect to the hosts via their IP. In these cases, you should configure the client to disable TLS hostname verification. For more details, you can see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
 </blockquote>
-<p>First generate the key.</p>
+<ol>
+<li>Enter the command below to generate the key.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl genrsa -out broker.key.pem 2048
 </code></pre>
-<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so convert it.</p>
+<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so enter the following command to convert it.</p>
 <pre><code class="hljs css language-bash">$ openssl pkcs8 -topk8 -inform PEM -outform PEM \
       -<span class="hljs-keyword">in</span> broker.key.pem -out broker.key-pk8.pem -nocrypt
 </code></pre>
-<p>Generate the certificate request...</p>
+<ol>
+<li>Enter the follwing command to generate the certificate request.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl req -config openssl.cnf \
       -key broker.key.pem -new -sha256 -out broker.csr.pem
 </code></pre>
-<p>... and sign it with the certificate authority.</p>
+<ol>
+<li>Sign it with the certificate authority by entering the command below.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl ca -config openssl.cnf -extensions server_cert \
       -days 1000 -notext -md sha256 \
       -<span class="hljs-keyword">in</span> broker.csr.pem -out broker.cert.pem
 </code></pre>
-<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which can be used along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
+<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which you can use along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
 <h2><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-configuration" 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 [...]
-<p>To configure a Pulsar <a href="/docs/fr/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you'll need to make some changes to <code>broker.conf</code>, which is located in the <code>conf</code> directory of your <a href="/docs/fr/next/standalone">Pulsar installation</a>.</p>
+<p>To configure a Pulsar <a href="/docs/fr/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you need to make some changes to <code>broker.conf</code>, which locates in the <code>conf</code> directory of your <a href="/docs/fr/next/standalone">Pulsar installation</a>.</p>
 <p>Add these values to the configuration file (substituting the appropriate certificate paths where necessary):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsEnabled</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -149,18 +161,18 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <blockquote>
-<p>A full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/fr/next/reference-configuration#broker">Broker Configuration</a></p>
+<p>You can find a full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, in <a href="/docs/fr/next/reference-configuration#broker">Broker Configuration</a></p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="tls-protocol-version-and-cipher"></a><a href="#tls-protocol-version-and-cipher" 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 [...]
-<p>The broker (and proxy) can be configured to require specific TLS protocol versions and ciphers for TLS negiotation. This can be used to stop clients from requesting downgraded TLS protocol versions or ciphers which may have weaknesses.</p>
-<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider being used. Pulsar uses OpenSSL if available, but if not defaults back to the JDK implementation.</p>
+<p>You can configure the broker (and proxy) to require specific TLS protocol versions and ciphers for TLS negiotation. You can use the TLS protocol versions and ciphers to stop clients from requesting downgraded TLS protocol versions or ciphers that may have weaknesses.</p>
+<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider that you are using. Pulsar uses OpenSSL if the OpenSSL is available, but if the OpenSSL is not available, Pulsar defaults back to the JDK implementation.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsProtocols</span>=<span class="hljs-string">TLSv1.2,TLSv1.1</span>
 <span class="hljs-attr">tlsCiphers</span>=<span class="hljs-string">TLS_DH_RSA_WITH_AES_256_GCM_SHA384,TLS_DH_RSA_WITH_AES_256_CBC_SHA</span>
 </code></pre>
-<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. A list of supported cipher can be acquired from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
-<p>For JDK 8, a list of supported values can be obtained from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
+<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. You can acquire a list of supported cipher from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
+<p>For JDK 8, you can obtain a list of supported values from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
 <h2><a class="anchor" aria-hidden="true" id="proxy-configuration"></a><a href="#proxy-configuration" 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.2 [...]
-<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy to be able to connect to brokers.</p>
+<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy connecting to brokers.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># For clients connecting to the proxy</span>
 <span class="hljs-attr">tlsEnabledInProxy</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -172,16 +184,16 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">brokerClientTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="configuration-du-client"></a><a href="#configuration-du-client" 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 [...]
-<p>When TLS transport encryption is enabled, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
-<p>As the server certificate you generated above doesn't belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
+<p>When you enable the TLS transport encryption, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
+<p>As the server certificate that you generated above does not belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
 <h4><a class="anchor" aria-hidden="true" id="hostname-verification"></a><a href="#hostname-verification" 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 [...]
-<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which it is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
-<p>Moreover, as the administrator has full control of the certificate authority, it is unlikely that a bad actor would be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables it by default, and should always be disabled in production environments. As long as &quot;allowInsecureConnection&quot; is disabled, a man-in-the-middle attack would require that  [...]
+<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which the hostname is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
+<p>Moreover, as the administrator has full control of the certificate authority, a bad actor is unlikely to be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables &quot;allowInsecureConnection&quot; by default, and you should always disable &quot;allowInsecureConnection&quot; in production environments. As long as you disable &quot;allowInsecureConnec [...]
 <p>One scenario where you may want to enable hostname verification is where you have multiple proxy nodes behind a VIP, and the VIP has a DNS record, for example, pulsar.mycompany.com. In this case, you can generate a TLS cert with pulsar.mycompany.com as the &quot;CommonName,&quot; and then enable hostname verification on the client.</p>
-<p>The examples below show hostname verification being disabled for the Java client, though you can be omit this as the client disables it by default. C++/python clients do now allow this to be configured at the moment.</p>
+<p>The examples below show hostname verification being disabled for the Java client, though you can omit this as the client disables the hostname verification by default. C++/python clients do now allow configuring this at the moment.</p>
 <h3><a class="anchor" aria-hidden="true" id="cli-tools"></a><a href="#cli-tools" 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.6 [...]
 <p><a href="/docs/fr/next/reference-cli-tools">Command-line tools</a> like <a href="reference-cli-tools#pulsar-admin"><code>pulsar-admin</code></a>, <a href="reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You'll need to add the following parameters to that file to use TLS transport with Pulsar's CLI tools:</p>
+<p>You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-attr">brokerServiceUrl</span>=<span class="hljs-string">pulsar+ssl://broker.example.com:6651/</span>
 <span class="hljs-attr">useTls</span>=<span class="hljs-string">true</span>
@@ -217,7 +229,7 @@ config.setTlsAllowInsecureConnection(<span class="hljs-literal">false</span>); <
 
 pulsar::<span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://broker.example.com:6651/"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/security-overview"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/fr/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS Overview</a></li><li><a href="#tls-concepts">TLS concepts</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/security-overview"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/fr/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS overview</a></li><li><a href="#tls-concepts">TLS concepts</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/fr/next/security-tls-transport/index.html b/content/docs/fr/next/security-tls-transport/index.html
index 8d6212f..ecfd04b 100644
--- a/content/docs/fr/next/security-tls-transport/index.html
+++ b/content/docs/fr/next/security-tls-transport/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="fr"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS Overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="fr"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
+<!DOCTYPE html><html lang="fr"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="fr"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
               (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)
@@ -74,32 +74,36 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/fr" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" aria-hidden="true" class="hash-link"><svg [...]
-<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text, which means that all data is sent in the clear. TLS can be used to encrypt this traffic so that it cannot be snooped by a man-in-the-middle attacker.</p>
-<p>TLS can be configured for both encryption and authentication. You may configure just TLS transport encryption, which is covered in this guide. TLS authentication is covered <a href="/docs/fr/next/security-tls-authentication">elsewhere</a>. Alternatively, you can use <a href="/docs/fr/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/fr" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" aria-hidden="true" class="hash-link"><svg [...]
+<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.</p>
+<p>You can also configure TLS for both encryption and authentication. Use this guide to configure just TLS transport encryption and refer to <a href="/docs/fr/next/security-tls-authentication">here</a> for TLS authentication configuration. Alternatively, you can use <a href="/docs/fr/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
 <blockquote>
-<p>Note that enabling TLS may have a performance impact due to encryption overhead.</p>
+<p>Note that enabling TLS may impact the performance due to encryption overhead.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="tls-concepts"></a><a href="#tls-concepts" 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>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Encryption is performed using key pairs consisting of a public key and a private key. Messages are encrypted with the public key and can be decrypted with the private key.</p>
+<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Using key pairs consisting of a public key and a private key can perform the encryption. The public key encrpyts the messages and the private key decrypts the messages.</p>
 <p>To use TLS transport encryption, you need two kinds of key pairs, <strong>server key pairs</strong> and a <strong>certificate authority</strong>.</p>
-<p>A third kind of key pair, <strong>client key pairs</strong>, are used for <a href="/docs/fr/next/security-tls-authentication">client authentication</a>.</p>
-<p>The <strong>certificate authority</strong> private key should be stored in a very secure location (a fully encrypted, disconnected, air gapped computer). The certificate authority public key, the <strong>trust cert</strong>, can be freely shared.</p>
-<p>For both client and server key pairs, the administrator first generates a private key and a certificate request. Then the certificate authority private key is used to sign the certificate request, generating a certificate. This certificate is the public key for the server/client key pair.</p>
-<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server they are talking to has a key pair that was signed by the certificate authority. A man-in-the-middle attacker would not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
-<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that was signed by the certificate authority. The Common Name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/fr/next/security-overview">Overview</a>).</p>
-<h2><a class="anchor" aria-hidden="true" id="creating-tls-certificates"></a><a href="#creating-tls-certificates" 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 [...]
+<p>You can use a third kind of key pair, <strong>client key pairs</strong>, for <a href="/docs/fr/next/security-tls-authentication">client authentication</a>.</p>
+<p>You should store the <strong>certificate authority</strong> private key in a very secure location (a fully encrypted, disconnected, air gapped computer). As for the certificate authority public key, the <strong>trust cert</strong>, you can freely shared it.</p>
+<p>For both client and server key pairs, the administrator first generates a private key and a certificate request, then uses the certificate authority private key to sign the certificate request, finally generates a certificate. This certificate is the public key for the server/client key pair.</p>
+<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server has a key pair that the certificate authority signed when the clients are talking to the server. A man-in-the-middle attacker does not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
+<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that the certificate authority signed. The common name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/fr/next/security-overview">Overview</a>).</p>
+<h2><a class="anchor" aria-hidden="true" id="create-tls-certificates"></a><a href="#create-tls-certificates" 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 [...]
 <p>Creating TLS certificates for Pulsar involves creating a <a href="#certificate-authority">certificate authority</a> (CA), <a href="#server-certificate">server certificate</a>, and <a href="#client-certificate">client certificate</a>.</p>
-<p>The following guide is an abridged guide to setting up a certificate authority. For a more detailed guide, there are plenty of resource on the internet. We recommend the <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a>.</p>
+<p>Follow the guide below to set up a certificate authority. You can also refer to plenty of resources on the internet for more details. We recommend <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a> for your detailed reference.</p>
 <h3><a class="anchor" aria-hidden="true" id="certificate-authority"></a><a href="#certificate-authority" 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 [...]
-<p>The first step is to create the certificate for the CA. The CA will be used to sign both the broker and client certificates, in order to ensure that each party will trust the others. The CA should be stored in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p>
-<p>Create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the files and directories needed for the CA.</p>
+<ol>
+<li><p>Create the certificate for the CA. You can use CA to sign both the broker and client certificates. This ensures that each party will trust the others. You should store CA in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p></li>
+<li><p>Entering the follwing command to create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the f [...]
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir my-ca
 $ <span class="hljs-built_in">cd</span> my-ca
 $ wget https://raw.githubusercontent.com/apache/pulsar/master/site2/website/static/examples/openssl.cnf
 $ <span class="hljs-built_in">export</span> CA_HOME=$(<span class="hljs-built_in">pwd</span>)
 </code></pre>
-<p>Create the necessary directories, keys and certs.</p>
+<ol>
+<li>Enter the commands below to create the necessary directories, keys and certs.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir certs crl newcerts private
 $ chmod 700 private/
 $ touch index.txt
@@ -111,37 +115,45 @@ $ openssl req -config openssl.cnf -key private/ca.key.pem \
       -out certs/ca.cert.pem
 $ chmod 444 certs/ca.cert.pem
 </code></pre>
-<p>After answering the question prompts, this will store CA-related files in the <code>./my-ca</code> directory. Within that directory:</p>
+<ol>
+<li>After you answer the question prompts, CA-related files are stored in the <code>./my-ca</code> directory. Within that directory:</li>
+</ol>
 <ul>
-<li><code>certs/ca.cert.pem</code> is the public certificate. It is meant to be distributed to all parties involved.</li>
-<li><code>private/ca.key.pem</code> is the private key. This is only needed when signing a new certificate for either broker or clients and it must be safely guarded.</li>
+<li><code>certs/ca.cert.pem</code> is the public certificate. This public certificates is meant to be distributed to all parties involved.</li>
+<li><code>private/ca.key.pem</code> is the private key. You only need it when you are signing a new certificate for either broker or clients and you must safely guard this private key.</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="server-certificate"></a><a href="#server-certificate" 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>Once a CA certificate has been created, you can create certificate requests and sign them with the CA.</p>
-<p>The following commands will ask you a few questions and then create the certificates. When asked for the common name, you should match the hostname of the broker. You could also use a wildcard to match a group of broker hostnames, for example <code>*.broker.usw.example.com</code>. This ensures that the same certificate can be reused on multiple machines.</p>
+<p>Once you have created a CA certificate, you can create certificate requests and sign them with the CA.</p>
+<p>The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, <code>*.broker.usw.example.com</code>. This ensures that multiple machines can reuse the same certificate.</p>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="tips"></a><a href="#tips" 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>Sometimes it is not possible or makes no sense to match the hostname, such as when the brokers are created with random hostnames, or you plan to connect to the hosts via their IP. In this case, the client should be configured to disable TLS hostname verification. For more details, see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
+<p>Sometimes matching the hostname is not possible or makes no sense, such as when you creat the brokers with random hostnames, or you plan to connect to the hosts via their IP. In these cases, you should configure the client to disable TLS hostname verification. For more details, you can see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
 </blockquote>
-<p>First generate the key.</p>
+<ol>
+<li>Enter the command below to generate the key.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl genrsa -out broker.key.pem 2048
 </code></pre>
-<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so convert it.</p>
+<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so enter the following command to convert it.</p>
 <pre><code class="hljs css language-bash">$ openssl pkcs8 -topk8 -inform PEM -outform PEM \
       -<span class="hljs-keyword">in</span> broker.key.pem -out broker.key-pk8.pem -nocrypt
 </code></pre>
-<p>Generate the certificate request...</p>
+<ol>
+<li>Enter the follwing command to generate the certificate request.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl req -config openssl.cnf \
       -key broker.key.pem -new -sha256 -out broker.csr.pem
 </code></pre>
-<p>... and sign it with the certificate authority.</p>
+<ol>
+<li>Sign it with the certificate authority by entering the command below.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl ca -config openssl.cnf -extensions server_cert \
       -days 1000 -notext -md sha256 \
       -<span class="hljs-keyword">in</span> broker.csr.pem -out broker.cert.pem
 </code></pre>
-<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which can be used along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
+<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which you can use along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
 <h2><a class="anchor" aria-hidden="true" id="broker-configuration"></a><a href="#broker-configuration" 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 [...]
-<p>To configure a Pulsar <a href="/docs/fr/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you'll need to make some changes to <code>broker.conf</code>, which is located in the <code>conf</code> directory of your <a href="/docs/fr/next/standalone">Pulsar installation</a>.</p>
+<p>To configure a Pulsar <a href="/docs/fr/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you need to make some changes to <code>broker.conf</code>, which locates in the <code>conf</code> directory of your <a href="/docs/fr/next/standalone">Pulsar installation</a>.</p>
 <p>Add these values to the configuration file (substituting the appropriate certificate paths where necessary):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsEnabled</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -149,18 +161,18 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <blockquote>
-<p>A full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/fr/next/reference-configuration#broker">Broker Configuration</a></p>
+<p>You can find a full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, in <a href="/docs/fr/next/reference-configuration#broker">Broker Configuration</a></p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="tls-protocol-version-and-cipher"></a><a href="#tls-protocol-version-and-cipher" 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 [...]
-<p>The broker (and proxy) can be configured to require specific TLS protocol versions and ciphers for TLS negiotation. This can be used to stop clients from requesting downgraded TLS protocol versions or ciphers which may have weaknesses.</p>
-<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider being used. Pulsar uses OpenSSL if available, but if not defaults back to the JDK implementation.</p>
+<p>You can configure the broker (and proxy) to require specific TLS protocol versions and ciphers for TLS negiotation. You can use the TLS protocol versions and ciphers to stop clients from requesting downgraded TLS protocol versions or ciphers that may have weaknesses.</p>
+<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider that you are using. Pulsar uses OpenSSL if the OpenSSL is available, but if the OpenSSL is not available, Pulsar defaults back to the JDK implementation.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsProtocols</span>=<span class="hljs-string">TLSv1.2,TLSv1.1</span>
 <span class="hljs-attr">tlsCiphers</span>=<span class="hljs-string">TLS_DH_RSA_WITH_AES_256_GCM_SHA384,TLS_DH_RSA_WITH_AES_256_CBC_SHA</span>
 </code></pre>
-<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. A list of supported cipher can be acquired from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
-<p>For JDK 8, a list of supported values can be obtained from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
+<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. You can acquire a list of supported cipher from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
+<p>For JDK 8, you can obtain a list of supported values from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
 <h2><a class="anchor" aria-hidden="true" id="proxy-configuration"></a><a href="#proxy-configuration" 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.2 [...]
-<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy to be able to connect to brokers.</p>
+<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy connecting to brokers.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># For clients connecting to the proxy</span>
 <span class="hljs-attr">tlsEnabledInProxy</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -172,16 +184,16 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">brokerClientTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <h2><a class="anchor" aria-hidden="true" id="configuration-du-client"></a><a href="#configuration-du-client" 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 [...]
-<p>When TLS transport encryption is enabled, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
-<p>As the server certificate you generated above doesn't belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
+<p>When you enable the TLS transport encryption, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
+<p>As the server certificate that you generated above does not belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
 <h4><a class="anchor" aria-hidden="true" id="hostname-verification"></a><a href="#hostname-verification" 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 [...]
-<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which it is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
-<p>Moreover, as the administrator has full control of the certificate authority, it is unlikely that a bad actor would be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables it by default, and should always be disabled in production environments. As long as &quot;allowInsecureConnection&quot; is disabled, a man-in-the-middle attack would require that  [...]
+<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which the hostname is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
+<p>Moreover, as the administrator has full control of the certificate authority, a bad actor is unlikely to be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables &quot;allowInsecureConnection&quot; by default, and you should always disable &quot;allowInsecureConnection&quot; in production environments. As long as you disable &quot;allowInsecureConnec [...]
 <p>One scenario where you may want to enable hostname verification is where you have multiple proxy nodes behind a VIP, and the VIP has a DNS record, for example, pulsar.mycompany.com. In this case, you can generate a TLS cert with pulsar.mycompany.com as the &quot;CommonName,&quot; and then enable hostname verification on the client.</p>
-<p>The examples below show hostname verification being disabled for the Java client, though you can be omit this as the client disables it by default. C++/python clients do now allow this to be configured at the moment.</p>
+<p>The examples below show hostname verification being disabled for the Java client, though you can omit this as the client disables the hostname verification by default. C++/python clients do now allow configuring this at the moment.</p>
 <h3><a class="anchor" aria-hidden="true" id="cli-tools"></a><a href="#cli-tools" 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.6 [...]
 <p><a href="/docs/fr/next/reference-cli-tools">Command-line tools</a> like <a href="reference-cli-tools#pulsar-admin"><code>pulsar-admin</code></a>, <a href="reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You'll need to add the following parameters to that file to use TLS transport with Pulsar's CLI tools:</p>
+<p>You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-attr">brokerServiceUrl</span>=<span class="hljs-string">pulsar+ssl://broker.example.com:6651/</span>
 <span class="hljs-attr">useTls</span>=<span class="hljs-string">true</span>
@@ -217,7 +229,7 @@ config.setTlsAllowInsecureConnection(<span class="hljs-literal">false</span>); <
 
 pulsar::<span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://broker.example.com:6651/"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/security-overview"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/fr/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS Overview</a></li><li><a href="#tls-concepts">TLS concepts</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/fr/next/security-overview"><span class="arrow-prev">← </span><span>Overview</span></a><a class="docs-next button" href="/docs/fr/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS overview</a></li><li><a href="#tls-concepts">TLS concepts</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/security-athenz.html b/content/docs/ja/next/security-athenz.html
index f319bbc..18698ec 100644
--- a/content/docs/ja/next/security-athenz.html
+++ b/content/docs/ja/next/security-athenz.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) はロールベースの認証認可の仕組みです。 In Pulsar, Athenz role tokens (aka *z-tokens*) can be used to establish the identify of the client."/><meta name="docsearch:ver [...]
+<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) はロールベースの認証認可の仕組みです。 In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the identify of the client."/><meta name="doc [...]
               (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)
@@ -74,32 +74,32 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/ja" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> はロールベースの認証認可の仕組みです。 In Pulsar, Athenz role tokens (aka <em>z-tokens</em>) c [...]
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/ja" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> はロールベースの認証認可の仕組みです。 In Pulsar, you can use Athenz role tokens (also known a [...]
 <h2><a class="anchor" aria-hidden="true" id="athenz-認証の設定"></a><a href="#athenz-認証の設定" 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>In a <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> there is both an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
-<p>To begin, you need to set up Athenz service access control. You should create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/ja/next/reference-terminology#tenan [...]
+<p>A <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> contains an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
+<p>To begin, you need to set up Athenz service access control. You need to create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/ja/next/reference-terminology#tena [...]
 <h3><a class="anchor" aria-hidden="true" id="create-the-tenant-domain-and-service"></a><a href="#create-the-tenant-domain-and-service" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>On the <a href="/docs/ja/next/reference-terminology#tenant">tenant</a> side, you need to:</p>
+<p>On the <a href="/docs/ja/next/reference-terminology#tenant">tenant</a> side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>shopping</code></li>
 <li>Generate a private/public key pair</li>
 <li>Create a service, such as <code>some_app</code>, on the domain with the public key</li>
 </ol>
-<p>Note that the private key generated in step 2 needs to be specified when the Pulsar client connects to the <a href="/docs/ja/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/ja/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/ja/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
-<p>For more specific steps involving the Athenz UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">this doc</a>.</p>
+<p>Note that you need to specify the private key generated in step 2 when the Pulsar client connects to the <a href="/docs/ja/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/ja/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/ja/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
+<p>For more specific steps involving the Athenz UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">Example Service Access Control Setup</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="create-the-provider-domain-and-add-the-tenant-service-to-some-role-members"></a><a href="#create-the-provider-domain-and-add-the-tenant-service-to-some-role-members" 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. [...]
-<p>On the provider side, you need to:</p>
+<p>On the provider side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>pulsar</code></li>
 <li>Create a role</li>
 <li>Add the tenant service to members of the role</li>
 </ol>
-<p>Note that in step 2 any action and resource can be specified since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
-<p>For more specific steps involving UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">this doc</a>.</p>
+<p>Note that you can specify any action and resource in step 2 since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
+<p>For more specific steps involving UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">Example Service Access Control Setup</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="configure-the-broker-for-athenz"></a><a href="#configure-the-broker-for-athenz" 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 [...]
 <blockquote>
-<h3><a class="anchor" aria-hidden="true" id="tls-encryption-strongly-recommended"></a><a href="#tls-encryption-strongly-recommended" 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 [...]
-<p>Please note that using TLS encryption is strongly recommended when using Athenz as an authentication provider, as it can protect role tokens from being intercepted and reused (see also <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">this doc</a>).</p>
+<h3><a class="anchor" aria-hidden="true" id="tls-encryption"></a><a href="#tls-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Note that when you are using Athenz as an authentication provider, you had better use TLS encryption as it can protect role tokens from being intercepted and reused. (for more details involving TLS encrption see <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">Architecture - Data Model</a>).</p>
 </blockquote>
 <p>In the <code>conf/broker.conf</code> configuration file in your Pulsar installation, you need to provide the class name of the Athenz authentication provider as well as a comma-separated list of provider domain names.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Add the Athenz auth provider</span>
@@ -114,7 +114,7 @@
 <span class="hljs-attr">tlsKeyFilePath</span>=<span class="hljs-string">/path/to/broker-key.pem</span>
 </code></pre>
 <blockquote>
-<p>A full listing of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/ja/next/reference-configuration#broker">Broker Configuration</a>.</p>
+<p>A full listing of parameters is available in the <code>conf/broker.conf</code> file, you can also find the default values for those parameters in <a href="/docs/ja/next/reference-configuration#broker">Broker Configuration</a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="configure-clients-for-athenz"></a><a href="#configure-clients-for-athenz" 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 [...]
 <p>For more information on Pulsar client authentication using Athenz, see the following language-specific docs:</p>
@@ -123,7 +123,7 @@
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="configure-cli-tools-for-athenz"></a><a href="#configure-cli-tools-for-athenz" 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><a href="/docs/ja/next/reference-cli-tools">Command-line tools</a> like <a href="/docs/ja/next/pulsar-admin"><code>pulsar-admin</code></a>, <a href="/docs/ja/next/reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="/docs/ja/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You’ll need to add the following authentication parameters to that file to use Athenz with Pulsar’s CLI tools:</p>
+<p>You need to add the following authentication parameters to the <code>conf/client.conf</code> config file to use Athenz with CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># URL for the broker</span>
 <span class="hljs-attr">serviceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-comment">
@@ -136,7 +136,7 @@
 <span class="hljs-attr">tlsAllowInsecureConnection</span>=<span class="hljs-string">false</span>
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/cacert.pem</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/ja/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-認証の設定">Athenz 認証の設定</a><ul class="toc-headings"><li><a  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/ja/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-認証の設定">Athenz 認証の設定</a><ul class="toc-headings"><li><a  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/security-athenz/index.html b/content/docs/ja/next/security-athenz/index.html
index f319bbc..18698ec 100644
--- a/content/docs/ja/next/security-athenz/index.html
+++ b/content/docs/ja/next/security-athenz/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) はロールベースの認証認可の仕組みです。 In Pulsar, Athenz role tokens (aka *z-tokens*) can be used to establish the identify of the client."/><meta name="docsearch:ver [...]
+<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) はロールベースの認証認可の仕組みです。 In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the identify of the client."/><meta name="doc [...]
               (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)
@@ -74,32 +74,32 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/ja" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> はロールベースの認証認可の仕組みです。 In Pulsar, Athenz role tokens (aka <em>z-tokens</em>) c [...]
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/ja" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> はロールベースの認証認可の仕組みです。 In Pulsar, you can use Athenz role tokens (also known a [...]
 <h2><a class="anchor" aria-hidden="true" id="athenz-認証の設定"></a><a href="#athenz-認証の設定" 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>In a <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> there is both an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
-<p>To begin, you need to set up Athenz service access control. You should create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/ja/next/reference-terminology#tenan [...]
+<p>A <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> contains an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
+<p>To begin, you need to set up Athenz service access control. You need to create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/ja/next/reference-terminology#tena [...]
 <h3><a class="anchor" aria-hidden="true" id="create-the-tenant-domain-and-service"></a><a href="#create-the-tenant-domain-and-service" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>On the <a href="/docs/ja/next/reference-terminology#tenant">tenant</a> side, you need to:</p>
+<p>On the <a href="/docs/ja/next/reference-terminology#tenant">tenant</a> side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>shopping</code></li>
 <li>Generate a private/public key pair</li>
 <li>Create a service, such as <code>some_app</code>, on the domain with the public key</li>
 </ol>
-<p>Note that the private key generated in step 2 needs to be specified when the Pulsar client connects to the <a href="/docs/ja/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/ja/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/ja/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
-<p>For more specific steps involving the Athenz UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">this doc</a>.</p>
+<p>Note that you need to specify the private key generated in step 2 when the Pulsar client connects to the <a href="/docs/ja/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/ja/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/ja/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
+<p>For more specific steps involving the Athenz UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">Example Service Access Control Setup</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="create-the-provider-domain-and-add-the-tenant-service-to-some-role-members"></a><a href="#create-the-provider-domain-and-add-the-tenant-service-to-some-role-members" 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. [...]
-<p>On the provider side, you need to:</p>
+<p>On the provider side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>pulsar</code></li>
 <li>Create a role</li>
 <li>Add the tenant service to members of the role</li>
 </ol>
-<p>Note that in step 2 any action and resource can be specified since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
-<p>For more specific steps involving UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">this doc</a>.</p>
+<p>Note that you can specify any action and resource in step 2 since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
+<p>For more specific steps involving UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">Example Service Access Control Setup</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="configure-the-broker-for-athenz"></a><a href="#configure-the-broker-for-athenz" 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 [...]
 <blockquote>
-<h3><a class="anchor" aria-hidden="true" id="tls-encryption-strongly-recommended"></a><a href="#tls-encryption-strongly-recommended" 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 [...]
-<p>Please note that using TLS encryption is strongly recommended when using Athenz as an authentication provider, as it can protect role tokens from being intercepted and reused (see also <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">this doc</a>).</p>
+<h3><a class="anchor" aria-hidden="true" id="tls-encryption"></a><a href="#tls-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Note that when you are using Athenz as an authentication provider, you had better use TLS encryption as it can protect role tokens from being intercepted and reused. (for more details involving TLS encrption see <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">Architecture - Data Model</a>).</p>
 </blockquote>
 <p>In the <code>conf/broker.conf</code> configuration file in your Pulsar installation, you need to provide the class name of the Athenz authentication provider as well as a comma-separated list of provider domain names.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Add the Athenz auth provider</span>
@@ -114,7 +114,7 @@
 <span class="hljs-attr">tlsKeyFilePath</span>=<span class="hljs-string">/path/to/broker-key.pem</span>
 </code></pre>
 <blockquote>
-<p>A full listing of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/ja/next/reference-configuration#broker">Broker Configuration</a>.</p>
+<p>A full listing of parameters is available in the <code>conf/broker.conf</code> file, you can also find the default values for those parameters in <a href="/docs/ja/next/reference-configuration#broker">Broker Configuration</a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="configure-clients-for-athenz"></a><a href="#configure-clients-for-athenz" 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 [...]
 <p>For more information on Pulsar client authentication using Athenz, see the following language-specific docs:</p>
@@ -123,7 +123,7 @@
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="configure-cli-tools-for-athenz"></a><a href="#configure-cli-tools-for-athenz" 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><a href="/docs/ja/next/reference-cli-tools">Command-line tools</a> like <a href="/docs/ja/next/pulsar-admin"><code>pulsar-admin</code></a>, <a href="/docs/ja/next/reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="/docs/ja/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You’ll need to add the following authentication parameters to that file to use Athenz with Pulsar’s CLI tools:</p>
+<p>You need to add the following authentication parameters to the <code>conf/client.conf</code> config file to use Athenz with CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># URL for the broker</span>
 <span class="hljs-attr">serviceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-comment">
@@ -136,7 +136,7 @@
 <span class="hljs-attr">tlsAllowInsecureConnection</span>=<span class="hljs-string">false</span>
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/cacert.pem</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/ja/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-認証の設定">Athenz 認証の設定</a><ul class="toc-headings"><li><a  [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/ja/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-認証の設定">Athenz 認証の設定</a><ul class="toc-headings"><li><a  [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/security-tls-transport.html b/content/docs/ja/next/security-tls-transport.html
index 50d0d5d..fe797db 100644
--- a/content/docs/ja/next/security-tls-transport.html
+++ b/content/docs/ja/next/security-tls-transport.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS 概要"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="ja"/><meta property="og:title" content="Transport Encryption using TLS · Apache Pulsar [...]
+<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="ja"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
               (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)
@@ -74,32 +74,36 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/ja" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-概要"></a><a href="#tls-概要" aria-hidden="true" class="hash-link"><svg class="hash [...]
-<p>デフォルトでは Apache Pulsar のクライアントは Apache Pulsar のサービスと平文で通信を行います。これはすべてのデータが読み取れる形で送信されることを意味します。 TLS を使い通信を暗号化することにより、これらを悪意のある中間者によって盗聴されないようにすることが可能です。</p>
-<p>TLS は暗号化と認証のどちらのためにも利用できます。 この章では TLS による通信の暗号化する設定について解説します。 TLS による認証については<a href="/docs/ja/next/security-tls-authentication">別の章</a>で解説されています。 また、TLS による通信の暗号化を行ったうえで、<a href="/docs/ja/next/security-athenz">別の仕組みを使った認証</a>を行うことも可能です。</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/ja" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" aria-hidden="true" class="hash-link"><svg [...]
+<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.</p>
+<p>You can also configure TLS for both encryption and authentication. Use this guide to configure just TLS transport encryption and refer to <a href="/docs/ja/next/security-tls-authentication">here</a> for TLS authentication configuration. また、TLS による通信の暗号化を行ったうえで、<a href="/docs/ja/next/security-athenz">別の仕組みを使った認証</a>を行うことも可能です。</p>
 <blockquote>
-<p>TLS の有効化は暗号化のオーバーヘッドによりパフォーマンスに影響を与える場合があるので気をつけてください。</p>
+<p>Note that enabling TLS may impact the performance due to encryption overhead.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="tls-concepts"></a><a href="#tls-concepts" 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>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Encryption is performed using key pairs consisting of a public key and a private key. Messages are encrypted with the public key and can be decrypted with the private key.</p>
+<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Using key pairs consisting of a public key and a private key can perform the encryption. The public key encrpyts the messages and the private key decrypts the messages.</p>
 <p>To use TLS transport encryption, you need two kinds of key pairs, <strong>server key pairs</strong> and a <strong>certificate authority</strong>.</p>
-<p>A third kind of key pair, <strong>client key pairs</strong>, are used for <a href="/docs/ja/next/security-tls-authentication">client authentication</a>.</p>
-<p>The <strong>certificate authority</strong> private key should be stored in a very secure location (a fully encrypted, disconnected, air gapped computer). The certificate authority public key, the <strong>trust cert</strong>, can be freely shared.</p>
-<p>For both client and server key pairs, the administrator first generates a private key and a certificate request. Then the certificate authority private key is used to sign the certificate request, generating a certificate. This certificate is the public key for the server/client key pair.</p>
-<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server they are talking to has a key pair that was signed by the certificate authority. A man-in-the-middle attacker would not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
-<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that was signed by the certificate authority. The Common Name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/ja/next/security-overview">Overview</a>).</p>
-<h2><a class="anchor" aria-hidden="true" id="tls-証明書の作成"></a><a href="#tls-証明書の作成" 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>You can use a third kind of key pair, <strong>client key pairs</strong>, for <a href="/docs/ja/next/security-tls-authentication">client authentication</a>.</p>
+<p>You should store the <strong>certificate authority</strong> private key in a very secure location (a fully encrypted, disconnected, air gapped computer). As for the certificate authority public key, the <strong>trust cert</strong>, you can freely shared it.</p>
+<p>For both client and server key pairs, the administrator first generates a private key and a certificate request, then uses the certificate authority private key to sign the certificate request, finally generates a certificate. This certificate is the public key for the server/client key pair.</p>
+<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server has a key pair that the certificate authority signed when the clients are talking to the server. A man-in-the-middle attacker does not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
+<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that the certificate authority signed. The common name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/ja/next/security-overview">Overview</a>).</p>
+<h2><a class="anchor" aria-hidden="true" id="create-tls-certificates"></a><a href="#create-tls-certificates" 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 [...]
 <p>Creating TLS certificates for Pulsar involves creating a <a href="#certificate-authority">certificate authority</a> (CA), <a href="#server-certificate">server certificate</a>, and <a href="#client-certificate">client certificate</a>.</p>
-<p>The following guide is an abridged guide to setting up a certificate authority. For a more detailed guide, there are plenty of resource on the internet. We recommend the <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a>.</p>
+<p>Follow the guide below to set up a certificate authority. You can also refer to plenty of resources on the internet for more details. We recommend <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a> for your detailed reference.</p>
 <h3><a class="anchor" aria-hidden="true" id="certificate-authority"></a><a href="#certificate-authority" 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 [...]
-<p>The first step is to create the certificate for the CA. The CA will be used to sign both the broker and client certificates, in order to ensure that each party will trust the others. The CA should be stored in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p>
-<p>Create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the files and directories needed for the CA.</p>
+<ol>
+<li><p>Create the certificate for the CA. You can use CA to sign both the broker and client certificates. This ensures that each party will trust the others. You should store CA in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p></li>
+<li><p>Entering the follwing command to create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the f [...]
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir my-ca
 $ <span class="hljs-built_in">cd</span> my-ca
 $ wget https://raw.githubusercontent.com/apache/pulsar/master/site2/website/static/examples/openssl.cnf
 $ <span class="hljs-built_in">export</span> CA_HOME=$(<span class="hljs-built_in">pwd</span>)
 </code></pre>
-<p>Create the necessary directories, keys and certs.</p>
+<ol>
+<li>Enter the commands below to create the necessary directories, keys and certs.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir certs crl newcerts private
 $ chmod 700 private/
 $ touch index.txt
@@ -111,37 +115,45 @@ $ openssl req -config openssl.cnf -key private/ca.key.pem \
       -out certs/ca.cert.pem
 $ chmod 444 certs/ca.cert.pem
 </code></pre>
-<p>After answering the question prompts, this will store CA-related files in the <code>./my-ca</code> directory. Within that directory:</p>
+<ol>
+<li>After you answer the question prompts, CA-related files are stored in the <code>./my-ca</code> directory. Within that directory:</li>
+</ol>
 <ul>
-<li><code>certs/ca.cert.pem</code> is the public certificate. It is meant to be distributed to all parties involved.</li>
-<li><code>private/ca.key.pem</code> is the private key. This is only needed when signing a new certificate for either broker or clients and it must be safely guarded.</li>
+<li><code>certs/ca.cert.pem</code> is the public certificate. This public certificates is meant to be distributed to all parties involved.</li>
+<li><code>private/ca.key.pem</code> is the private key. You only need it when you are signing a new certificate for either broker or clients and you must safely guard this private key.</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="server-certificate"></a><a href="#server-certificate" 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>Once a CA certificate has been created, you can create certificate requests and sign them with the CA.</p>
-<p>The following commands will ask you a few questions and then create the certificates. When asked for the common name, you should match the hostname of the broker. You could also use a wildcard to match a group of broker hostnames, for example <code>*.broker.usw.example.com</code>. This ensures that the same certificate can be reused on multiple machines.</p>
+<p>Once you have created a CA certificate, you can create certificate requests and sign them with the CA.</p>
+<p>The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, <code>*.broker.usw.example.com</code>. This ensures that multiple machines can reuse the same certificate.</p>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="tips"></a><a href="#tips" 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>Sometimes it is not possible or makes no sense to match the hostname, such as when the brokers are created with random hostnames, or you plan to connect to the hosts via their IP. In this case, the client should be configured to disable TLS hostname verification. For more details, see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
+<p>Sometimes matching the hostname is not possible or makes no sense, such as when you creat the brokers with random hostnames, or you plan to connect to the hosts via their IP. In these cases, you should configure the client to disable TLS hostname verification. For more details, you can see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
 </blockquote>
-<p>まず鍵を生成します。</p>
+<ol>
+<li>Enter the command below to generate the key.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl genrsa -out broker.key.pem 2048
 </code></pre>
-<p>ブローカーは鍵が <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> フォーマットであることを期待しているので、そのように変換します。</p>
+<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so enter the following command to convert it.</p>
 <pre><code class="hljs css language-bash">$ openssl pkcs8 -topk8 -inform PEM -outform PEM \
       -<span class="hljs-keyword">in</span> broker.key.pem -out broker.key-pk8.pem -nocrypt
 </code></pre>
-<p>Generate the certificate request...</p>
+<ol>
+<li>Enter the follwing command to generate the certificate request.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl req -config openssl.cnf \
       -key broker.key.pem -new -sha256 -out broker.csr.pem
 </code></pre>
-<p>... and sign it with the certificate authority.</p>
+<ol>
+<li>Sign it with the certificate authority by entering the command below.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl ca -config openssl.cnf -extensions server_cert \
       -days 1000 -notext -md sha256 \
       -<span class="hljs-keyword">in</span> broker.csr.pem -out broker.cert.pem
 </code></pre>
-<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which can be used along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
+<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which you can use along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</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  [...]
-<p>To configure a Pulsar <a href="/docs/ja/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you'll need to make some changes to <code>broker.conf</code>, which is located in the <code>conf</code> directory of your <a href="/docs/ja/next/standalone">Pulsar installation</a>.</p>
+<p>To configure a Pulsar <a href="/docs/ja/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you need to make some changes to <code>broker.conf</code>, which locates in the <code>conf</code> directory of your <a href="/docs/ja/next/standalone">Pulsar installation</a>.</p>
 <p>Add these values to the configuration file (substituting the appropriate certificate paths where necessary):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsEnabled</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -149,18 +161,18 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <blockquote>
-<p>A full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/ja/next/reference-configuration#broker">Broker Configuration</a></p>
+<p>You can find a full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, in <a href="/docs/ja/next/reference-configuration#broker">Broker Configuration</a></p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="tls-protocol-version-and-cipher"></a><a href="#tls-protocol-version-and-cipher" 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 [...]
-<p>The broker (and proxy) can be configured to require specific TLS protocol versions and ciphers for TLS negiotation. This can be used to stop clients from requesting downgraded TLS protocol versions or ciphers which may have weaknesses.</p>
-<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider being used. Pulsar uses OpenSSL if available, but if not defaults back to the JDK implementation.</p>
+<p>You can configure the broker (and proxy) to require specific TLS protocol versions and ciphers for TLS negiotation. You can use the TLS protocol versions and ciphers to stop clients from requesting downgraded TLS protocol versions or ciphers that may have weaknesses.</p>
+<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider that you are using. Pulsar uses OpenSSL if the OpenSSL is available, but if the OpenSSL is not available, Pulsar defaults back to the JDK implementation.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsProtocols</span>=<span class="hljs-string">TLSv1.2,TLSv1.1</span>
 <span class="hljs-attr">tlsCiphers</span>=<span class="hljs-string">TLS_DH_RSA_WITH_AES_256_GCM_SHA384,TLS_DH_RSA_WITH_AES_256_CBC_SHA</span>
 </code></pre>
-<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. A list of supported cipher can be acquired from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
-<p>For JDK 8, a list of supported values can be obtained from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
+<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. You can acquire a list of supported cipher from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
+<p>For JDK 8, you can obtain a list of supported values from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></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  [...]
-<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy to be able to connect to brokers.</p>
+<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy connecting to brokers.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># For clients connecting to the proxy</span>
 <span class="hljs-attr">tlsEnabledInProxy</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -172,16 +184,16 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">brokerClientTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <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.6 [...]
-<p>When TLS transport encryption is enabled, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
-<p>As the server certificate you generated above doesn't belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
+<p>When you enable the TLS transport encryption, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
+<p>As the server certificate that you generated above does not belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
 <h4><a class="anchor" aria-hidden="true" id="hostname-verification"></a><a href="#hostname-verification" 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 [...]
-<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which it is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
-<p>Moreover, as the administrator has full control of the certificate authority, it is unlikely that a bad actor would be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables it by default, and should always be disabled in production environments. As long as &quot;allowInsecureConnection&quot; is disabled, a man-in-the-middle attack would require that  [...]
+<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which the hostname is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
+<p>Moreover, as the administrator has full control of the certificate authority, a bad actor is unlikely to be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables &quot;allowInsecureConnection&quot; by default, and you should always disable &quot;allowInsecureConnection&quot; in production environments. As long as you disable &quot;allowInsecureConnec [...]
 <p>One scenario where you may want to enable hostname verification is where you have multiple proxy nodes behind a VIP, and the VIP has a DNS record, for example, pulsar.mycompany.com. In this case, you can generate a TLS cert with pulsar.mycompany.com as the &quot;CommonName,&quot; and then enable hostname verification on the client.</p>
-<p>The examples below show hostname verification being disabled for the Java client, though you can be omit this as the client disables it by default. C++/python clients do now allow this to be configured at the moment.</p>
+<p>The examples below show hostname verification being disabled for the Java client, though you can omit this as the client disables the hostname verification by default. C++/python clients do now allow configuring this at the moment.</p>
 <h3><a class="anchor" aria-hidden="true" id="cli-ツール"></a><a href="#cli-ツール" 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><a href="reference-cli-tools#pulsar-admin"><code>pulsar-admin</code></a>、<a href="reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>、<a href="reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> といった<a href="/docs/ja/next/reference-cli-tools">コマンドラインツール</a>は Pulsar をインストールした場所にある <code>conf/client.conf</code> という設定ファイルを使用します。</p>
-<p>Pulsar の CLI ツールで TLS トランスポートを使用するにはそのファイルに次のパラメータを追加する必要がります。</p>
+<p>You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-attr">brokerServiceUrl</span>=<span class="hljs-string">pulsar+ssl://broker.example.com:6651/</span>
 <span class="hljs-attr">useTls</span>=<span class="hljs-string">true</span>
@@ -217,7 +229,7 @@ config.setTlsAllowInsecureConnection(<span class="hljs-literal">false</span>); <
 
 pulsar::<span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://broker.example.com:6651/"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/security-overview"><span class="arrow-prev">← </span><span>概要</span></a><a class="docs-next button" href="/docs/ja/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-概要">TLS 概要</a></li><li><a href="#tls-concepts">TLS concepts</a></li><li><a href= [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/security-overview"><span class="arrow-prev">← </span><span>概要</span></a><a class="docs-next button" href="/docs/ja/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS overview</a></li><li><a href="#tls-concepts">TLS concepts</a></li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/ja/next/security-tls-transport/index.html b/content/docs/ja/next/security-tls-transport/index.html
index 50d0d5d..fe797db 100644
--- a/content/docs/ja/next/security-tls-transport/index.html
+++ b/content/docs/ja/next/security-tls-transport/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS 概要"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="ja"/><meta property="og:title" content="Transport Encryption using TLS · Apache Pulsar [...]
+<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transport Encryption using TLS · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="ja"/><meta property="og:title" content="Transport Encryption using TLS · Apache  [...]
               (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)
@@ -74,32 +74,36 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/ja" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-概要"></a><a href="#tls-概要" aria-hidden="true" class="hash-link"><svg class="hash [...]
-<p>デフォルトでは Apache Pulsar のクライアントは Apache Pulsar のサービスと平文で通信を行います。これはすべてのデータが読み取れる形で送信されることを意味します。 TLS を使い通信を暗号化することにより、これらを悪意のある中間者によって盗聴されないようにすることが可能です。</p>
-<p>TLS は暗号化と認証のどちらのためにも利用できます。 この章では TLS による通信の暗号化する設定について解説します。 TLS による認証については<a href="/docs/ja/next/security-tls-authentication">別の章</a>で解説されています。 また、TLS による通信の暗号化を行ったうえで、<a href="/docs/ja/next/security-athenz">別の仕組みを使った認証</a>を行うことも可能です。</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/ja" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Transport Encryption using TLS</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" aria-hidden="true" class="hash-link"><svg [...]
+<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.</p>
+<p>You can also configure TLS for both encryption and authentication. Use this guide to configure just TLS transport encryption and refer to <a href="/docs/ja/next/security-tls-authentication">here</a> for TLS authentication configuration. また、TLS による通信の暗号化を行ったうえで、<a href="/docs/ja/next/security-athenz">別の仕組みを使った認証</a>を行うことも可能です。</p>
 <blockquote>
-<p>TLS の有効化は暗号化のオーバーヘッドによりパフォーマンスに影響を与える場合があるので気をつけてください。</p>
+<p>Note that enabling TLS may impact the performance due to encryption overhead.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="tls-concepts"></a><a href="#tls-concepts" 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>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Encryption is performed using key pairs consisting of a public key and a private key. Messages are encrypted with the public key and can be decrypted with the private key.</p>
+<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Using key pairs consisting of a public key and a private key can perform the encryption. The public key encrpyts the messages and the private key decrypts the messages.</p>
 <p>To use TLS transport encryption, you need two kinds of key pairs, <strong>server key pairs</strong> and a <strong>certificate authority</strong>.</p>
-<p>A third kind of key pair, <strong>client key pairs</strong>, are used for <a href="/docs/ja/next/security-tls-authentication">client authentication</a>.</p>
-<p>The <strong>certificate authority</strong> private key should be stored in a very secure location (a fully encrypted, disconnected, air gapped computer). The certificate authority public key, the <strong>trust cert</strong>, can be freely shared.</p>
-<p>For both client and server key pairs, the administrator first generates a private key and a certificate request. Then the certificate authority private key is used to sign the certificate request, generating a certificate. This certificate is the public key for the server/client key pair.</p>
-<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server they are talking to has a key pair that was signed by the certificate authority. A man-in-the-middle attacker would not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
-<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that was signed by the certificate authority. The Common Name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/ja/next/security-overview">Overview</a>).</p>
-<h2><a class="anchor" aria-hidden="true" id="tls-証明書の作成"></a><a href="#tls-証明書の作成" 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>You can use a third kind of key pair, <strong>client key pairs</strong>, for <a href="/docs/ja/next/security-tls-authentication">client authentication</a>.</p>
+<p>You should store the <strong>certificate authority</strong> private key in a very secure location (a fully encrypted, disconnected, air gapped computer). As for the certificate authority public key, the <strong>trust cert</strong>, you can freely shared it.</p>
+<p>For both client and server key pairs, the administrator first generates a private key and a certificate request, then uses the certificate authority private key to sign the certificate request, finally generates a certificate. This certificate is the public key for the server/client key pair.</p>
+<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server has a key pair that the certificate authority signed when the clients are talking to the server. A man-in-the-middle attacker does not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
+<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that the certificate authority signed. The common name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/ja/next/security-overview">Overview</a>).</p>
+<h2><a class="anchor" aria-hidden="true" id="create-tls-certificates"></a><a href="#create-tls-certificates" 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 [...]
 <p>Creating TLS certificates for Pulsar involves creating a <a href="#certificate-authority">certificate authority</a> (CA), <a href="#server-certificate">server certificate</a>, and <a href="#client-certificate">client certificate</a>.</p>
-<p>The following guide is an abridged guide to setting up a certificate authority. For a more detailed guide, there are plenty of resource on the internet. We recommend the <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a>.</p>
+<p>Follow the guide below to set up a certificate authority. You can also refer to plenty of resources on the internet for more details. We recommend <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a> for your detailed reference.</p>
 <h3><a class="anchor" aria-hidden="true" id="certificate-authority"></a><a href="#certificate-authority" 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 [...]
-<p>The first step is to create the certificate for the CA. The CA will be used to sign both the broker and client certificates, in order to ensure that each party will trust the others. The CA should be stored in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p>
-<p>Create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the files and directories needed for the CA.</p>
+<ol>
+<li><p>Create the certificate for the CA. You can use CA to sign both the broker and client certificates. This ensures that each party will trust the others. You should store CA in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p></li>
+<li><p>Entering the follwing command to create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the f [...]
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir my-ca
 $ <span class="hljs-built_in">cd</span> my-ca
 $ wget https://raw.githubusercontent.com/apache/pulsar/master/site2/website/static/examples/openssl.cnf
 $ <span class="hljs-built_in">export</span> CA_HOME=$(<span class="hljs-built_in">pwd</span>)
 </code></pre>
-<p>Create the necessary directories, keys and certs.</p>
+<ol>
+<li>Enter the commands below to create the necessary directories, keys and certs.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir certs crl newcerts private
 $ chmod 700 private/
 $ touch index.txt
@@ -111,37 +115,45 @@ $ openssl req -config openssl.cnf -key private/ca.key.pem \
       -out certs/ca.cert.pem
 $ chmod 444 certs/ca.cert.pem
 </code></pre>
-<p>After answering the question prompts, this will store CA-related files in the <code>./my-ca</code> directory. Within that directory:</p>
+<ol>
+<li>After you answer the question prompts, CA-related files are stored in the <code>./my-ca</code> directory. Within that directory:</li>
+</ol>
 <ul>
-<li><code>certs/ca.cert.pem</code> is the public certificate. It is meant to be distributed to all parties involved.</li>
-<li><code>private/ca.key.pem</code> is the private key. This is only needed when signing a new certificate for either broker or clients and it must be safely guarded.</li>
+<li><code>certs/ca.cert.pem</code> is the public certificate. This public certificates is meant to be distributed to all parties involved.</li>
+<li><code>private/ca.key.pem</code> is the private key. You only need it when you are signing a new certificate for either broker or clients and you must safely guard this private key.</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="server-certificate"></a><a href="#server-certificate" 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>Once a CA certificate has been created, you can create certificate requests and sign them with the CA.</p>
-<p>The following commands will ask you a few questions and then create the certificates. When asked for the common name, you should match the hostname of the broker. You could also use a wildcard to match a group of broker hostnames, for example <code>*.broker.usw.example.com</code>. This ensures that the same certificate can be reused on multiple machines.</p>
+<p>Once you have created a CA certificate, you can create certificate requests and sign them with the CA.</p>
+<p>The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, <code>*.broker.usw.example.com</code>. This ensures that multiple machines can reuse the same certificate.</p>
 <blockquote>
 <h4><a class="anchor" aria-hidden="true" id="tips"></a><a href="#tips" 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>Sometimes it is not possible or makes no sense to match the hostname, such as when the brokers are created with random hostnames, or you plan to connect to the hosts via their IP. In this case, the client should be configured to disable TLS hostname verification. For more details, see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
+<p>Sometimes matching the hostname is not possible or makes no sense, such as when you creat the brokers with random hostnames, or you plan to connect to the hosts via their IP. In these cases, you should configure the client to disable TLS hostname verification. For more details, you can see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
 </blockquote>
-<p>まず鍵を生成します。</p>
+<ol>
+<li>Enter the command below to generate the key.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl genrsa -out broker.key.pem 2048
 </code></pre>
-<p>ブローカーは鍵が <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> フォーマットであることを期待しているので、そのように変換します。</p>
+<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so enter the following command to convert it.</p>
 <pre><code class="hljs css language-bash">$ openssl pkcs8 -topk8 -inform PEM -outform PEM \
       -<span class="hljs-keyword">in</span> broker.key.pem -out broker.key-pk8.pem -nocrypt
 </code></pre>
-<p>Generate the certificate request...</p>
+<ol>
+<li>Enter the follwing command to generate the certificate request.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl req -config openssl.cnf \
       -key broker.key.pem -new -sha256 -out broker.csr.pem
 </code></pre>
-<p>... and sign it with the certificate authority.</p>
+<ol>
+<li>Sign it with the certificate authority by entering the command below.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl ca -config openssl.cnf -extensions server_cert \
       -days 1000 -notext -md sha256 \
       -<span class="hljs-keyword">in</span> broker.csr.pem -out broker.cert.pem
 </code></pre>
-<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which can be used along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
+<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which you can use along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</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  [...]
-<p>To configure a Pulsar <a href="/docs/ja/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you'll need to make some changes to <code>broker.conf</code>, which is located in the <code>conf</code> directory of your <a href="/docs/ja/next/standalone">Pulsar installation</a>.</p>
+<p>To configure a Pulsar <a href="/docs/ja/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you need to make some changes to <code>broker.conf</code>, which locates in the <code>conf</code> directory of your <a href="/docs/ja/next/standalone">Pulsar installation</a>.</p>
 <p>Add these values to the configuration file (substituting the appropriate certificate paths where necessary):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsEnabled</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -149,18 +161,18 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <blockquote>
-<p>A full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/ja/next/reference-configuration#broker">Broker Configuration</a></p>
+<p>You can find a full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, in <a href="/docs/ja/next/reference-configuration#broker">Broker Configuration</a></p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="tls-protocol-version-and-cipher"></a><a href="#tls-protocol-version-and-cipher" 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 [...]
-<p>The broker (and proxy) can be configured to require specific TLS protocol versions and ciphers for TLS negiotation. This can be used to stop clients from requesting downgraded TLS protocol versions or ciphers which may have weaknesses.</p>
-<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider being used. Pulsar uses OpenSSL if available, but if not defaults back to the JDK implementation.</p>
+<p>You can configure the broker (and proxy) to require specific TLS protocol versions and ciphers for TLS negiotation. You can use the TLS protocol versions and ciphers to stop clients from requesting downgraded TLS protocol versions or ciphers that may have weaknesses.</p>
+<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider that you are using. Pulsar uses OpenSSL if the OpenSSL is available, but if the OpenSSL is not available, Pulsar defaults back to the JDK implementation.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsProtocols</span>=<span class="hljs-string">TLSv1.2,TLSv1.1</span>
 <span class="hljs-attr">tlsCiphers</span>=<span class="hljs-string">TLS_DH_RSA_WITH_AES_256_GCM_SHA384,TLS_DH_RSA_WITH_AES_256_CBC_SHA</span>
 </code></pre>
-<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. A list of supported cipher can be acquired from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
-<p>For JDK 8, a list of supported values can be obtained from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
+<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. You can acquire a list of supported cipher from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
+<p>For JDK 8, you can obtain a list of supported values from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></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  [...]
-<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy to be able to connect to brokers.</p>
+<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy connecting to brokers.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># For clients connecting to the proxy</span>
 <span class="hljs-attr">tlsEnabledInProxy</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -172,16 +184,16 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">brokerClientTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <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.6 [...]
-<p>When TLS transport encryption is enabled, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
-<p>As the server certificate you generated above doesn't belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
+<p>When you enable the TLS transport encryption, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
+<p>As the server certificate that you generated above does not belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
 <h4><a class="anchor" aria-hidden="true" id="hostname-verification"></a><a href="#hostname-verification" 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 [...]
-<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which it is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
-<p>Moreover, as the administrator has full control of the certificate authority, it is unlikely that a bad actor would be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables it by default, and should always be disabled in production environments. As long as &quot;allowInsecureConnection&quot; is disabled, a man-in-the-middle attack would require that  [...]
+<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which the hostname is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
+<p>Moreover, as the administrator has full control of the certificate authority, a bad actor is unlikely to be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables &quot;allowInsecureConnection&quot; by default, and you should always disable &quot;allowInsecureConnection&quot; in production environments. As long as you disable &quot;allowInsecureConnec [...]
 <p>One scenario where you may want to enable hostname verification is where you have multiple proxy nodes behind a VIP, and the VIP has a DNS record, for example, pulsar.mycompany.com. In this case, you can generate a TLS cert with pulsar.mycompany.com as the &quot;CommonName,&quot; and then enable hostname verification on the client.</p>
-<p>The examples below show hostname verification being disabled for the Java client, though you can be omit this as the client disables it by default. C++/python clients do now allow this to be configured at the moment.</p>
+<p>The examples below show hostname verification being disabled for the Java client, though you can omit this as the client disables the hostname verification by default. C++/python clients do now allow configuring this at the moment.</p>
 <h3><a class="anchor" aria-hidden="true" id="cli-ツール"></a><a href="#cli-ツール" 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><a href="reference-cli-tools#pulsar-admin"><code>pulsar-admin</code></a>、<a href="reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>、<a href="reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> といった<a href="/docs/ja/next/reference-cli-tools">コマンドラインツール</a>は Pulsar をインストールした場所にある <code>conf/client.conf</code> という設定ファイルを使用します。</p>
-<p>Pulsar の CLI ツールで TLS トランスポートを使用するにはそのファイルに次のパラメータを追加する必要がります。</p>
+<p>You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-attr">brokerServiceUrl</span>=<span class="hljs-string">pulsar+ssl://broker.example.com:6651/</span>
 <span class="hljs-attr">useTls</span>=<span class="hljs-string">true</span>
@@ -217,7 +229,7 @@ config.setTlsAllowInsecureConnection(<span class="hljs-literal">false</span>); <
 
 pulsar::<span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://broker.example.com:6651/"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/security-overview"><span class="arrow-prev">← </span><span>概要</span></a><a class="docs-next button" href="/docs/ja/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-概要">TLS 概要</a></li><li><a href="#tls-concepts">TLS concepts</a></li><li><a href= [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/ja/next/security-overview"><span class="arrow-prev">← </span><span>概要</span></a><a class="docs-next button" href="/docs/ja/next/security-tls-authentication"><span>Authentication using TLS</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS overview</a></li><li><a href="#tls-concepts">TLS concepts</a></li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/administration-dashboard.html b/content/docs/zh-CN/2.1.0-incubating/administration-dashboard.html
index 43bda77..2a045b1 100644
--- a/content/docs/zh-CN/2.1.0-incubating/administration-dashboard.html
+++ b/content/docs/zh-CN/2.1.0-incubating/administration-dashboard.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.1.0-incubating/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known- [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/administration-dashboard/index.html b/content/docs/zh-CN/2.1.0-incubating/administration-dashboard/index.html
index 43bda77..2a045b1 100644
--- a/content/docs/zh-CN/2.1.0-incubating/administration-dashboard/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/administration-dashboard/index.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.1.0-incubating/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known- [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/administration-geo.html b/content/docs/zh-CN/2.1.0-incubating/administration-geo.html
index 68b57d8..d308b3f 100644
--- a/content/docs/zh-CN/2.1.0-incubating/administration-geo.html
+++ b/content/docs/zh-CN/2.1.0-incubating/administration-geo.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/administration-geo/index.html b/content/docs/zh-CN/2.1.0-incubating/administration-geo/index.html
index 68b57d8..d308b3f 100644
--- a/content/docs/zh-CN/2.1.0-incubating/administration-geo/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/administration-geo/index.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/administration-zk-bk.html b/content/docs/zh-CN/2.1.0-incubating/administration-zk-bk.html
index dc9b8d3..62c3105 100644
--- a/content/docs/zh-CN/2.1.0-incubating/administration-zk-bk.html
+++ b/content/docs/zh-CN/2.1.0-incubating/administration-zk-bk.html
@@ -287,7 +287,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-lo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/administration-zk-bk/index.html b/content/docs/zh-CN/2.1.0-incubating/administration-zk-bk/index.html
index dc9b8d3..62c3105 100644
--- a/content/docs/zh-CN/2.1.0-incubating/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/administration-zk-bk/index.html
@@ -287,7 +287,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-lo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/administration-dashboard.html b/content/docs/zh-CN/2.1.1-incubating/administration-dashboard.html
index d4bbb1d..1bad572 100644
--- a/content/docs/zh-CN/2.1.1-incubating/administration-dashboard.html
+++ b/content/docs/zh-CN/2.1.1-incubating/administration-dashboard.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.1.1-incubating/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known- [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/administration-dashboard/index.html b/content/docs/zh-CN/2.1.1-incubating/administration-dashboard/index.html
index d4bbb1d..1bad572 100644
--- a/content/docs/zh-CN/2.1.1-incubating/administration-dashboard/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/administration-dashboard/index.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.1.1-incubating/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known- [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/administration-geo.html b/content/docs/zh-CN/2.1.1-incubating/administration-geo.html
index 1f980a7..7e89778 100644
--- a/content/docs/zh-CN/2.1.1-incubating/administration-geo.html
+++ b/content/docs/zh-CN/2.1.1-incubating/administration-geo.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/administration-geo/index.html b/content/docs/zh-CN/2.1.1-incubating/administration-geo/index.html
index 1f980a7..7e89778 100644
--- a/content/docs/zh-CN/2.1.1-incubating/administration-geo/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/administration-geo/index.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/administration-zk-bk.html b/content/docs/zh-CN/2.1.1-incubating/administration-zk-bk.html
index be47832..0c05577 100644
--- a/content/docs/zh-CN/2.1.1-incubating/administration-zk-bk.html
+++ b/content/docs/zh-CN/2.1.1-incubating/administration-zk-bk.html
@@ -287,7 +287,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-lo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/administration-zk-bk/index.html b/content/docs/zh-CN/2.1.1-incubating/administration-zk-bk/index.html
index be47832..0c05577 100644
--- a/content/docs/zh-CN/2.1.1-incubating/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/administration-zk-bk/index.html
@@ -287,7 +287,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-lo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/administration-dashboard.html b/content/docs/zh-CN/2.2.0/administration-dashboard.html
index 41c1fdc..866e239 100644
--- a/content/docs/zh-CN/2.2.0/administration-dashboard.html
+++ b/content/docs/zh-CN/2.2.0/administration-dashboard.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.2.0/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/administration-dashboard/index.html b/content/docs/zh-CN/2.2.0/administration-dashboard/index.html
index 41c1fdc..866e239 100644
--- a/content/docs/zh-CN/2.2.0/administration-dashboard/index.html
+++ b/content/docs/zh-CN/2.2.0/administration-dashboard/index.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.2.0/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/administration-geo.html b/content/docs/zh-CN/2.2.0/administration-geo.html
index c25dcc5..9842fb4 100644
--- a/content/docs/zh-CN/2.2.0/administration-geo.html
+++ b/content/docs/zh-CN/2.2.0/administration-geo.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.2.0/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/administration-geo/index.html b/content/docs/zh-CN/2.2.0/administration-geo/index.html
index c25dcc5..9842fb4 100644
--- a/content/docs/zh-CN/2.2.0/administration-geo/index.html
+++ b/content/docs/zh-CN/2.2.0/administration-geo/index.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.2.0/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/administration-zk-bk.html b/content/docs/zh-CN/2.2.0/administration-zk-bk.html
index e5ad617..24a101b 100644
--- a/content/docs/zh-CN/2.2.0/administration-zk-bk.html
+++ b/content/docs/zh-CN/2.2.0/administration-zk-bk.html
@@ -287,7 +287,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/administration-zk-bk/index.html b/content/docs/zh-CN/2.2.0/administration-zk-bk/index.html
index e5ad617..24a101b 100644
--- a/content/docs/zh-CN/2.2.0/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/2.2.0/administration-zk-bk/index.html
@@ -287,7 +287,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/administration-dashboard.html b/content/docs/zh-CN/2.2.1/administration-dashboard.html
index 90bda21..f2d341e 100644
--- a/content/docs/zh-CN/2.2.1/administration-dashboard.html
+++ b/content/docs/zh-CN/2.2.1/administration-dashboard.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.2.1/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/administration-dashboard/index.html b/content/docs/zh-CN/2.2.1/administration-dashboard/index.html
index 90bda21..f2d341e 100644
--- a/content/docs/zh-CN/2.2.1/administration-dashboard/index.html
+++ b/content/docs/zh-CN/2.2.1/administration-dashboard/index.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.2.1/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/administration-geo.html b/content/docs/zh-CN/2.2.1/administration-geo.html
index 8c2c0bf..0b6b376 100644
--- a/content/docs/zh-CN/2.2.1/administration-geo.html
+++ b/content/docs/zh-CN/2.2.1/administration-geo.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.2.1/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/administration-geo/index.html b/content/docs/zh-CN/2.2.1/administration-geo/index.html
index 8c2c0bf..0b6b376 100644
--- a/content/docs/zh-CN/2.2.1/administration-geo/index.html
+++ b/content/docs/zh-CN/2.2.1/administration-geo/index.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.2.1/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/administration-zk-bk.html b/content/docs/zh-CN/2.2.1/administration-zk-bk.html
index a7988b0..507ee80 100644
--- a/content/docs/zh-CN/2.2.1/administration-zk-bk.html
+++ b/content/docs/zh-CN/2.2.1/administration-zk-bk.html
@@ -287,7 +287,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/administration-zk-bk/index.html b/content/docs/zh-CN/2.2.1/administration-zk-bk/index.html
index a7988b0..507ee80 100644
--- a/content/docs/zh-CN/2.2.1/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/2.2.1/administration-zk-bk/index.html
@@ -287,7 +287,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/administration-dashboard.html b/content/docs/zh-CN/2.3.0/administration-dashboard.html
index eac6d2f..6cc8b7f 100644
--- a/content/docs/zh-CN/2.3.0/administration-dashboard.html
+++ b/content/docs/zh-CN/2.3.0/administration-dashboard.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.3.0/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/administration-dashboard/index.html b/content/docs/zh-CN/2.3.0/administration-dashboard/index.html
index eac6d2f..6cc8b7f 100644
--- a/content/docs/zh-CN/2.3.0/administration-dashboard/index.html
+++ b/content/docs/zh-CN/2.3.0/administration-dashboard/index.html
@@ -100,7 +100,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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 <a href="/docs/zh-CN/2.3.0/security-overview#authentication-providers">authentication</a> is not supported at this point. The dashboard's data collector does not pass any authentication-related data and will be denied access if the Pulsar broker requires authentication.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/administration-geo.html b/content/docs/zh-CN/2.3.0/administration-geo.html
index eb9ca6f..9e8959e 100644
--- a/content/docs/zh-CN/2.3.0/administration-geo.html
+++ b/content/docs/zh-CN/2.3.0/administration-geo.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.3.0/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/administration-geo/index.html b/content/docs/zh-CN/2.3.0/administration-geo/index.html
index eb9ca6f..9e8959e 100644
--- a/content/docs/zh-CN/2.3.0/administration-geo/index.html
+++ b/content/docs/zh-CN/2.3.0/administration-geo/index.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.3.0/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/administration-zk-bk.html b/content/docs/zh-CN/2.3.0/administration-zk-bk.html
index bf7acb2..656376d 100644
--- a/content/docs/zh-CN/2.3.0/administration-zk-bk.html
+++ b/content/docs/zh-CN/2.3.0/administration-zk-bk.html
@@ -288,7 +288,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/administration-zk-bk/index.html b/content/docs/zh-CN/2.3.0/administration-zk-bk/index.html
index bf7acb2..656376d 100644
--- a/content/docs/zh-CN/2.3.0/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/2.3.0/administration-zk-bk/index.html
@@ -288,7 +288,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/administration-dashboard.html b/content/docs/zh-CN/2.3.1/administration-dashboard.html
index 97a6336..1b22767 100644
--- a/content/docs/zh-CN/2.3.1/administration-dashboard.html
+++ b/content/docs/zh-CN/2.3.1/administration-dashboard.html
@@ -111,7 +111,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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>Only Pulsar Token <a href="/docs/zh-CN/2.3.1/security-overview#authentication-providers">authentication</a> is supported as of now.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/administration-dashboard/index.html b/content/docs/zh-CN/2.3.1/administration-dashboard/index.html
index 97a6336..1b22767 100644
--- a/content/docs/zh-CN/2.3.1/administration-dashboard/index.html
+++ b/content/docs/zh-CN/2.3.1/administration-dashboard/index.html
@@ -111,7 +111,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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>Only Pulsar Token <a href="/docs/zh-CN/2.3.1/security-overview#authentication-providers">authentication</a> is supported as of now.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/administration-geo.html b/content/docs/zh-CN/2.3.1/administration-geo.html
index 48566c0..6549c83 100644
--- a/content/docs/zh-CN/2.3.1/administration-geo.html
+++ b/content/docs/zh-CN/2.3.1/administration-geo.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.3.1/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/administration-geo/index.html b/content/docs/zh-CN/2.3.1/administration-geo/index.html
index 48566c0..6549c83 100644
--- a/content/docs/zh-CN/2.3.1/administration-geo/index.html
+++ b/content/docs/zh-CN/2.3.1/administration-geo/index.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
 <p>In this diagram, whenever producers <strong>P1</strong>, <strong>P2</strong>, and <strong>P3</strong> publish messages to the topic <strong>T1</strong> on clusters <strong>Cluster-A</strong>, <strong>Cluster-B</strong>, and <strong>Cluster-C</strong>, respectively, those messages are instantly replicated across clusters. Once replicated, consumers <strong>C1</strong> and <strong>C2</strong> can consume those messages from their respective clusters.</p>
 <p>Without geo-replication, consumers <strong>C1</strong> and <strong>C2</strong> wouldn't be able to consume messages published by producer <strong>P3</strong>.</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 [...]
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must do the following to enable geo-replication for a namespace:</p>
 <ul>
@@ -138,7 +138,7 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>Topic-specific statistics for global topics are available via the <a href="/docs/zh-CN/2.3.1/pulsar-admin"><code>pulsar-admin</code></a> tool and <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
  API:</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
@@ -149,7 +149,7 @@ producer.newMessage()
 <p>In Pulsar, a topic is automatically deleted when it's no longer used, that is to say, when no producers or consumers are connected <em>and</em> there are no subscriptions <em>and</em> no more messages are kept for retention. For global topics, each region will use a fault-tolerant mechanism to decide when it's safe to delete the topic locally.</p>
 <p>You can explicitly disable topic garbage collection by setting <code>brokerDeleteInactiveTopicsEnabled</code> to <code>false</code> in your <a href="reference-configuration#broker">broker configuration</a>.</p>
 <p>To delete a global topic, close all producers and consumers on the topic and delete all its local subscriptions in every replication cluster. When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/administration-zk-bk.html b/content/docs/zh-CN/2.3.1/administration-zk-bk.html
index f6ca073..869f05d 100644
--- a/content/docs/zh-CN/2.3.1/administration-zk-bk.html
+++ b/content/docs/zh-CN/2.3.1/administration-zk-bk.html
@@ -288,7 +288,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/administration-zk-bk/index.html b/content/docs/zh-CN/2.3.1/administration-zk-bk/index.html
index f6ca073..869f05d 100644
--- a/content/docs/zh-CN/2.3.1/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/2.3.1/administration-zk-bk/index.html
@@ -288,7 +288,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/administration-dashboard.html b/content/docs/zh-CN/2.3.2/administration-dashboard.html
index fbb1a56..1edb711 100644
--- a/content/docs/zh-CN/2.3.2/administration-dashboard.html
+++ b/content/docs/zh-CN/2.3.2/administration-dashboard.html
@@ -111,7 +111,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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>Only Pulsar Token <a href="/docs/zh-CN/2.3.2/security-overview#authentication-providers">authentication</a> is supported as of now.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/administration-dashboard/index.html b/content/docs/zh-CN/2.3.2/administration-dashboard/index.html
index fbb1a56..1edb711 100644
--- a/content/docs/zh-CN/2.3.2/administration-dashboard/index.html
+++ b/content/docs/zh-CN/2.3.2/administration-dashboard/index.html
@@ -111,7 +111,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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>Only Pulsar Token <a href="/docs/zh-CN/2.3.2/security-overview#authentication-providers">authentication</a> is supported as of now.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues< [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/administration-geo.html b/content/docs/zh-CN/2.3.2/administration-geo.html
index 57e6f9c..f578742 100644
--- a/content/docs/zh-CN/2.3.2/administration-geo.html
+++ b/content/docs/zh-CN/2.3.2/administration-geo.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
-<p>在这个图中,每当<strong>P1</strong>、<strong>P2</strong>和<strong>P3</strong>的生产者分别在<strong>集群A</strong>、<strong>集群B</strong>和<strong>集群C</strong>向</strong>T1</strong> topic发送消息时,这些消息就会进行实时的跨集群复制 一旦复制,<strong>C1</strong>和<strong>C2</strong>的客户就可以从各自的集群中使用这些消息。</p>
-<p>没有进行跨域复制前,<strong>C1</strong>和<strong>C2</strong>消费者不能使用<strong>P3</strong>生产者发布的消息</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 [...]
+<p>在这个图中,每当 <strong>P1</strong>、<strong>P2</strong> 和 <strong>P3</strong> 的生产者分别向<strong>Cluster-A</strong>、<strong>Cluster-B</strong>和<strong>Cluster-C</strong> 中的<strong>T1</strong> topic发送消息时,这些消息很快在不同的集群中复制。 一旦复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者会从各自的集群中消费这些消息。</p>
+<p>如果没有跨地域复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者不能消费 <strong>P3</strong> 生产者发布的消息。</p>
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>Geo-replication must be enabled on a per-tenant basis in Pulsar. Geo-replication can be enabled between clusters only when a tenant has been created that allows access to both clusters.</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must complete the following tasks to enable geo-replication for a namespace:</p>
 <ul>
@@ -121,7 +121,7 @@
 <p>一旦创建了跨域复制名称空间,生产者或消费者在该名称空间中创建的任何topic都将进行跨集群复制。 Typically, each application will use the <code>serviceUrl</code> for the local cluster.</p>
 <h4><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.09 [...]
 <p>By default, messages are replicated to all clusters configured for the namespace. 您可以通过为消息指定复制列表来选择性地限制复制,然后该消息将只复制到复制列表中的子集。</p>
-<p>下面是<a href="/docs/zh-CN/2.3.2/client-libraries-java">Java API</a>的一个示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
+<p>如下是 <a href="/docs/zh-CN/2.3.2/client-libraries-java">Java API</a> 示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
  object:</p>
 <pre><code class="hljs css language-java">List&lt;String&gt; restrictReplicationTo = Arrays.asList(
         <span class="hljs-string">"us-west"</span>,
@@ -137,9 +137,9 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
-<p>特定主题的地跨域复制统计信息可以通过<a href="/docs/zh-CN/2.3.2/pulsar-admin"><code>pulse -admin</code></a>工具和<a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
- API查看</p>
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>特定主题的地跨域复制统计信息可以通过 <a href="/docs/zh-CN/2.3.2/pulsar-admin"><code>pulse -admin</code></a> 工具和 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API 查看</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
 </code></pre>
 <p>每个集群会生成自己的本地统计信息报告,包括传入和传出的复制率和队列容量。</p>
@@ -153,7 +153,7 @@ producer.newMessage()
 </ul>
 <p>可以通过在<a href="/docs/zh-CN/2.3.2/reference-configuration#broker">代理配置</a>中设置<code>brokerDeleteInactiveTopicsEnabled</code>为<code>false</code>来显式禁用主题垃圾收集。</p>
 <p>要删除跨域复制主题,请关闭该主题上的所有生产者和消费者,并删除每个复制集群中的所有本地订阅。 When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/administration-geo/index.html b/content/docs/zh-CN/2.3.2/administration-geo/index.html
index 57e6f9c..f578742 100644
--- a/content/docs/zh-CN/2.3.2/administration-geo/index.html
+++ b/content/docs/zh-CN/2.3.2/administration-geo/index.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
-<p>在这个图中,每当<strong>P1</strong>、<strong>P2</strong>和<strong>P3</strong>的生产者分别在<strong>集群A</strong>、<strong>集群B</strong>和<strong>集群C</strong>向</strong>T1</strong> topic发送消息时,这些消息就会进行实时的跨集群复制 一旦复制,<strong>C1</strong>和<strong>C2</strong>的客户就可以从各自的集群中使用这些消息。</p>
-<p>没有进行跨域复制前,<strong>C1</strong>和<strong>C2</strong>消费者不能使用<strong>P3</strong>生产者发布的消息</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 [...]
+<p>在这个图中,每当 <strong>P1</strong>、<strong>P2</strong> 和 <strong>P3</strong> 的生产者分别向<strong>Cluster-A</strong>、<strong>Cluster-B</strong>和<strong>Cluster-C</strong> 中的<strong>T1</strong> topic发送消息时,这些消息很快在不同的集群中复制。 一旦复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者会从各自的集群中消费这些消息。</p>
+<p>如果没有跨地域复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者不能消费 <strong>P3</strong> 生产者发布的消息。</p>
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>Geo-replication must be enabled on a per-tenant basis in Pulsar. Geo-replication can be enabled between clusters only when a tenant has been created that allows access to both clusters.</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must complete the following tasks to enable geo-replication for a namespace:</p>
 <ul>
@@ -121,7 +121,7 @@
 <p>一旦创建了跨域复制名称空间,生产者或消费者在该名称空间中创建的任何topic都将进行跨集群复制。 Typically, each application will use the <code>serviceUrl</code> for the local cluster.</p>
 <h4><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.09 [...]
 <p>By default, messages are replicated to all clusters configured for the namespace. 您可以通过为消息指定复制列表来选择性地限制复制,然后该消息将只复制到复制列表中的子集。</p>
-<p>下面是<a href="/docs/zh-CN/2.3.2/client-libraries-java">Java API</a>的一个示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
+<p>如下是 <a href="/docs/zh-CN/2.3.2/client-libraries-java">Java API</a> 示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
  object:</p>
 <pre><code class="hljs css language-java">List&lt;String&gt; restrictReplicationTo = Arrays.asList(
         <span class="hljs-string">"us-west"</span>,
@@ -137,9 +137,9 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
-<p>特定主题的地跨域复制统计信息可以通过<a href="/docs/zh-CN/2.3.2/pulsar-admin"><code>pulse -admin</code></a>工具和<a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
- API查看</p>
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>特定主题的地跨域复制统计信息可以通过 <a href="/docs/zh-CN/2.3.2/pulsar-admin"><code>pulse -admin</code></a> 工具和 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API 查看</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
 </code></pre>
 <p>每个集群会生成自己的本地统计信息报告,包括传入和传出的复制率和队列容量。</p>
@@ -153,7 +153,7 @@ producer.newMessage()
 </ul>
 <p>可以通过在<a href="/docs/zh-CN/2.3.2/reference-configuration#broker">代理配置</a>中设置<code>brokerDeleteInactiveTopicsEnabled</code>为<code>false</code>来显式禁用主题垃圾收集。</p>
 <p>要删除跨域复制主题,请关闭该主题上的所有生产者和消费者,并删除每个复制集群中的所有本地订阅。 When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-puls [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/administration-zk-bk.html b/content/docs/zh-CN/2.3.2/administration-zk-bk.html
index 6754c40..6a53579 100644
--- a/content/docs/zh-CN/2.3.2/administration-zk-bk.html
+++ b/content/docs/zh-CN/2.3.2/administration-zk-bk.html
@@ -288,7 +288,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/administration-zk-bk/index.html b/content/docs/zh-CN/2.3.2/administration-zk-bk/index.html
index 6754c40..6a53579 100644
--- a/content/docs/zh-CN/2.3.2/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/2.3.2/administration-zk-bk/index.html
@@ -288,7 +288,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploy [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/administration-dashboard.html b/content/docs/zh-CN/administration-dashboard.html
index 56e98b0..29c8808 100644
--- a/content/docs/zh-CN/administration-dashboard.html
+++ b/content/docs/zh-CN/administration-dashboard.html
@@ -111,7 +111,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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>Only Pulsar Token <a href="/docs/zh-CN/security-overview#authentication-providers">authentication</a> is supported as of now.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</a></li></ul> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</a></li></ul [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/administration-dashboard/index.html b/content/docs/zh-CN/administration-dashboard/index.html
index 56e98b0..29c8808 100644
--- a/content/docs/zh-CN/administration-dashboard/index.html
+++ b/content/docs/zh-CN/administration-dashboard/index.html
@@ -111,7 +111,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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>Only Pulsar Token <a href="/docs/zh-CN/security-overview#authentication-providers">authentication</a> is supported as of now.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</a></li></ul> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</a></li></ul [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/administration-geo.html b/content/docs/zh-CN/administration-geo.html
index 0116182..10406d2 100644
--- a/content/docs/zh-CN/administration-geo.html
+++ b/content/docs/zh-CN/administration-geo.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
-<p>在这个图中,每当<strong>P1</strong>、<strong>P2</strong>和<strong>P3</strong>的生产者分别在<strong>集群A</strong>、<strong>集群B</strong>和<strong>集群C</strong>向</strong>T1</strong> topic发送消息时,这些消息就会进行实时的跨集群复制 一旦复制,<strong>C1</strong>和<strong>C2</strong>的客户就可以从各自的集群中使用这些消息。</p>
-<p>没有进行跨域复制前,<strong>C1</strong>和<strong>C2</strong>消费者不能使用<strong>P3</strong>生产者发布的消息</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 [...]
+<p>在这个图中,每当 <strong>P1</strong>、<strong>P2</strong> 和 <strong>P3</strong> 的生产者分别向<strong>Cluster-A</strong>、<strong>Cluster-B</strong>和<strong>Cluster-C</strong> 中的<strong>T1</strong> topic发送消息时,这些消息很快在不同的集群中复制。 一旦复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者会从各自的集群中消费这些消息。</p>
+<p>如果没有跨地域复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者不能消费 <strong>P3</strong> 生产者发布的消息。</p>
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>Geo-replication must be enabled on a per-tenant basis in Pulsar. Geo-replication can be enabled between clusters only when a tenant has been created that allows access to both clusters.</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must complete the following tasks to enable geo-replication for a namespace:</p>
 <ul>
@@ -121,7 +121,7 @@
 <p>一旦创建了跨域复制名称空间,生产者或消费者在该名称空间中创建的任何topic都将进行跨集群复制。 Typically, each application will use the <code>serviceUrl</code> for the local cluster.</p>
 <h4><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.09 [...]
 <p>By default, messages are replicated to all clusters configured for the namespace. 您可以通过为消息指定复制列表来选择性地限制复制,然后该消息将只复制到复制列表中的子集。</p>
-<p>下面是<a href="/docs/zh-CN/client-libraries-java">Java API</a>的一个示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
+<p>如下是 <a href="/docs/zh-CN/client-libraries-java">Java API</a> 示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
  object:</p>
 <pre><code class="hljs css language-java">List&lt;String&gt; restrictReplicationTo = Arrays.asList(
         <span class="hljs-string">"us-west"</span>,
@@ -137,9 +137,9 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
-<p>特定主题的地跨域复制统计信息可以通过<a href="/docs/zh-CN/pulsar-admin"><code>pulse -admin</code></a>工具和<a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
- API查看</p>
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>特定主题的地跨域复制统计信息可以通过 <a href="/docs/zh-CN/pulsar-admin"><code>pulse -admin</code></a> 工具和 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API 查看</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
 </code></pre>
 <p>每个集群会生成自己的本地统计信息报告,包括传入和传出的复制率和队列容量。</p>
@@ -153,7 +153,7 @@ producer.newMessage()
 </ul>
 <p>可以通过在<a href="/docs/zh-CN/reference-configuration#broker">代理配置</a>中设置<code>brokerDeleteInactiveTopicsEnabled</code>为<code>false</code>来显式禁用主题垃圾收集。</p>
 <p>要删除跨域复制主题,请关闭该主题上的所有生产者和消费者,并删除每个复制集群中的所有本地订阅。 When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性">跨域复制以及脉冲星特 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-pulsar-属性">跨地域复制 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/administration-geo/index.html b/content/docs/zh-CN/administration-geo/index.html
index 0116182..10406d2 100644
--- a/content/docs/zh-CN/administration-geo/index.html
+++ b/content/docs/zh-CN/administration-geo/index.html
@@ -76,11 +76,11 @@
             });
         </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar geo-replication</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
-<p>在这个图中,每当<strong>P1</strong>、<strong>P2</strong>和<strong>P3</strong>的生产者分别在<strong>集群A</strong>、<strong>集群B</strong>和<strong>集群C</strong>向</strong>T1</strong> topic发送消息时,这些消息就会进行实时的跨集群复制 一旦复制,<strong>C1</strong>和<strong>C2</strong>的客户就可以从各自的集群中使用这些消息。</p>
-<p>没有进行跨域复制前,<strong>C1</strong>和<strong>C2</strong>消费者不能使用<strong>P3</strong>生产者发布的消息</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 [...]
+<p>在这个图中,每当 <strong>P1</strong>、<strong>P2</strong> 和 <strong>P3</strong> 的生产者分别向<strong>Cluster-A</strong>、<strong>Cluster-B</strong>和<strong>Cluster-C</strong> 中的<strong>T1</strong> topic发送消息时,这些消息很快在不同的集群中复制。 一旦复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者会从各自的集群中消费这些消息。</p>
+<p>如果没有跨地域复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者不能消费 <strong>P3</strong> 生产者发布的消息。</p>
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>Geo-replication must be enabled on a per-tenant basis in Pulsar. Geo-replication can be enabled between clusters only when a tenant has been created that allows access to both clusters.</p>
 <p>Although geo-replication must be enabled between two clusters, it's actually managed at the namespace level. You must complete the following tasks to enable geo-replication for a namespace:</p>
 <ul>
@@ -121,7 +121,7 @@
 <p>一旦创建了跨域复制名称空间,生产者或消费者在该名称空间中创建的任何topic都将进行跨集群复制。 Typically, each application will use the <code>serviceUrl</code> for the local cluster.</p>
 <h4><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.09 [...]
 <p>By default, messages are replicated to all clusters configured for the namespace. 您可以通过为消息指定复制列表来选择性地限制复制,然后该消息将只复制到复制列表中的子集。</p>
-<p>下面是<a href="/docs/zh-CN/client-libraries-java">Java API</a>的一个示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
+<p>如下是 <a href="/docs/zh-CN/client-libraries-java">Java API</a> 示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
  object:</p>
 <pre><code class="hljs css language-java">List&lt;String&gt; restrictReplicationTo = Arrays.asList(
         <span class="hljs-string">"us-west"</span>,
@@ -137,9 +137,9 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
-<p>特定主题的地跨域复制统计信息可以通过<a href="/docs/zh-CN/pulsar-admin"><code>pulse -admin</code></a>工具和<a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
- API查看</p>
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>特定主题的地跨域复制统计信息可以通过 <a href="/docs/zh-CN/pulsar-admin"><code>pulse -admin</code></a> 工具和 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API 查看</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
 </code></pre>
 <p>每个集群会生成自己的本地统计信息报告,包括传入和传出的复制率和队列容量。</p>
@@ -153,7 +153,7 @@ producer.newMessage()
 </ul>
 <p>可以通过在<a href="/docs/zh-CN/reference-configuration#broker">代理配置</a>中设置<code>brokerDeleteInactiveTopicsEnabled</code>为<code>false</code>来显式禁用主题垃圾收集。</p>
 <p>要删除跨域复制主题,请关闭该主题上的所有生产者和消费者,并删除每个复制集群中的所有本地订阅。 When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性">跨域复制以及脉冲星特 [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-pulsar-属性">跨地域复制 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/administration-zk-bk.html b/content/docs/zh-CN/administration-zk-bk.html
index 5fe4b3b..3eb4bf8 100644
--- a/content/docs/zh-CN/administration-zk-bk.html
+++ b/content/docs/zh-CN/administration-zk-bk.html
@@ -291,7 +291,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploying local Zoo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploying local Zo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/administration-zk-bk/index.html b/content/docs/zh-CN/administration-zk-bk/index.html
index 5fe4b3b..3eb4bf8 100644
--- a/content/docs/zh-CN/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/administration-zk-bk/index.html
@@ -291,7 +291,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploying local Zoo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploying local Zo [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/adaptors-kafka.html b/content/docs/zh-CN/next/adaptors-kafka.html
index e0c8260..7762a8c 100644
--- a/content/docs/zh-CN/next/adaptors-kafka.html
+++ b/content/docs/zh-CN/next/adaptors-kafka.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/adaptors-kafka/index.html b/content/docs/zh-CN/next/adaptors-kafka/index.html
index e0c8260..7762a8c 100644
--- a/content/docs/zh-CN/next/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/next/adaptors-kafka/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/adaptors-spark.html b/content/docs/zh-CN/next/adaptors-spark.html
index 850095b..e78fc4c 100644
--- a/content/docs/zh-CN/next/adaptors-spark.html
+++ b/content/docs/zh-CN/next/adaptors-spark.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/adaptors-spark/index.html b/content/docs/zh-CN/next/adaptors-spark/index.html
index 850095b..e78fc4c 100644
--- a/content/docs/zh-CN/next/adaptors-spark/index.html
+++ b/content/docs/zh-CN/next/adaptors-spark/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/adaptors-storm.html b/content/docs/zh-CN/next/adaptors-storm.html
index ada6959..b84bd50 100644
--- a/content/docs/zh-CN/next/adaptors-storm.html
+++ b/content/docs/zh-CN/next/adaptors-storm.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/adaptors-storm/index.html b/content/docs/zh-CN/next/adaptors-storm/index.html
index ada6959..b84bd50 100644
--- a/content/docs/zh-CN/next/adaptors-storm/index.html
+++ b/content/docs/zh-CN/next/adaptors-storm/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-brokers.html b/content/docs/zh-CN/next/admin-api-brokers.html
index 733592e..08d7cba 100644
--- a/content/docs/zh-CN/next/admin-api-brokers.html
+++ b/content/docs/zh-CN/next/admin-api-brokers.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-brokers/index.html b/content/docs/zh-CN/next/admin-api-brokers/index.html
index 733592e..08d7cba 100644
--- a/content/docs/zh-CN/next/admin-api-brokers/index.html
+++ b/content/docs/zh-CN/next/admin-api-brokers/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-clusters.html b/content/docs/zh-CN/next/admin-api-clusters.html
index f4acb37..4ada0fa 100644
--- a/content/docs/zh-CN/next/admin-api-clusters.html
+++ b/content/docs/zh-CN/next/admin-api-clusters.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-clusters/index.html b/content/docs/zh-CN/next/admin-api-clusters/index.html
index f4acb37..4ada0fa 100644
--- a/content/docs/zh-CN/next/admin-api-clusters/index.html
+++ b/content/docs/zh-CN/next/admin-api-clusters/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-namespaces.html b/content/docs/zh-CN/next/admin-api-namespaces.html
index 37d32e7..a3a4275 100644
--- a/content/docs/zh-CN/next/admin-api-namespaces.html
+++ b/content/docs/zh-CN/next/admin-api-namespaces.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-namespaces/index.html b/content/docs/zh-CN/next/admin-api-namespaces/index.html
index 37d32e7..a3a4275 100644
--- a/content/docs/zh-CN/next/admin-api-namespaces/index.html
+++ b/content/docs/zh-CN/next/admin-api-namespaces/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-non-persistent-topics.html b/content/docs/zh-CN/next/admin-api-non-persistent-topics.html
index ff776f8..a775762 100644
--- a/content/docs/zh-CN/next/admin-api-non-persistent-topics.html
+++ b/content/docs/zh-CN/next/admin-api-non-persistent-topics.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-non-persistent-topics/index.html b/content/docs/zh-CN/next/admin-api-non-persistent-topics/index.html
index ff776f8..a775762 100644
--- a/content/docs/zh-CN/next/admin-api-non-persistent-topics/index.html
+++ b/content/docs/zh-CN/next/admin-api-non-persistent-topics/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-overview.html b/content/docs/zh-CN/next/admin-api-overview.html
index d2f3545..54615ca 100644
--- a/content/docs/zh-CN/next/admin-api-overview.html
+++ b/content/docs/zh-CN/next/admin-api-overview.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-overview/index.html b/content/docs/zh-CN/next/admin-api-overview/index.html
index d2f3545..54615ca 100644
--- a/content/docs/zh-CN/next/admin-api-overview/index.html
+++ b/content/docs/zh-CN/next/admin-api-overview/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-partitioned-topics.html b/content/docs/zh-CN/next/admin-api-partitioned-topics.html
index 3ddead7..24890a1 100644
--- a/content/docs/zh-CN/next/admin-api-partitioned-topics.html
+++ b/content/docs/zh-CN/next/admin-api-partitioned-topics.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-partitioned-topics/index.html b/content/docs/zh-CN/next/admin-api-partitioned-topics/index.html
index 3ddead7..24890a1 100644
--- a/content/docs/zh-CN/next/admin-api-partitioned-topics/index.html
+++ b/content/docs/zh-CN/next/admin-api-partitioned-topics/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-permissions.html b/content/docs/zh-CN/next/admin-api-permissions.html
index 9c87df7..46fdf7c 100644
--- a/content/docs/zh-CN/next/admin-api-permissions.html
+++ b/content/docs/zh-CN/next/admin-api-permissions.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-permissions/index.html b/content/docs/zh-CN/next/admin-api-permissions/index.html
index 9c87df7..46fdf7c 100644
--- a/content/docs/zh-CN/next/admin-api-permissions/index.html
+++ b/content/docs/zh-CN/next/admin-api-permissions/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-persistent-topics.html b/content/docs/zh-CN/next/admin-api-persistent-topics.html
index 7ce0cbe..ed7460d 100644
--- a/content/docs/zh-CN/next/admin-api-persistent-topics.html
+++ b/content/docs/zh-CN/next/admin-api-persistent-topics.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-persistent-topics/index.html b/content/docs/zh-CN/next/admin-api-persistent-topics/index.html
index 7ce0cbe..ed7460d 100644
--- a/content/docs/zh-CN/next/admin-api-persistent-topics/index.html
+++ b/content/docs/zh-CN/next/admin-api-persistent-topics/index.html
@@ -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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-tenants.html b/content/docs/zh-CN/next/admin-api-tenants.html
index 157f2c0..57a9795 100644
--- a/content/docs/zh-CN/next/admin-api-tenants.html
+++ b/content/docs/zh-CN/next/admin-api-tenants.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/admin-api-tenants/index.html b/content/docs/zh-CN/next/admin-api-tenants/index.html
index 157f2c0..57a9795 100644
--- a/content/docs/zh-CN/next/admin-api-tenants/index.html
+++ b/content/docs/zh-CN/next/admin-api-tenants/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/administration-dashboard.html b/content/docs/zh-CN/next/administration-dashboard.html
index 8d86291..6267312 100644
--- a/content/docs/zh-CN/next/administration-dashboard.html
+++ b/content/docs/zh-CN/next/administration-dashboard.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -110,7 +110,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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>Only Pulsar Token <a href="/docs/zh-CN/next/security-overview#authentication-providers">authentication</a> is supported as of now.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</a> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/administration-dashboard/index.html b/content/docs/zh-CN/next/administration-dashboard/index.html
index 8d86291..6267312 100644
--- a/content/docs/zh-CN/next/administration-dashboard/index.html
+++ b/content/docs/zh-CN/next/administration-dashboard/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -110,7 +110,7 @@
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="known-issues"></a><a href="#known-issues" 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>Only Pulsar Token <a href="/docs/zh-CN/next/security-overview#authentication-providers">authentication</a> is supported as of now.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/administration-geo"><span class="arrow-prev">← </span><span>跨域复制</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</a> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/administration-geo"><span class="arrow-prev">← </span><span>跨地域复制</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-stats"><span>Pulsar statistics</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#install">Install</a><ul class="toc-headings"><li><a href="#known-issues">Known issues</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/administration-geo.html b/content/docs/zh-CN/next/administration-geo.html
index e117431..92aca7c 100644
--- a/content/docs/zh-CN/next/administration-geo.html
+++ b/content/docs/zh-CN/next/administration-geo.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>脉冲星的跨域复制 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="*跨域复制* 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="脉冲星的跨域复制 · Apache Pulsar"/><meta prop [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar 的跨地域复制 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="*跨域复制* 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar 的跨地域复制 · Apache Pulsar"/> [...]
               (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)
@@ -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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -74,13 +74,13 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">脉冲星的跨域复制</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar 的跨地域复制</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
-<p>在这个图中,每当<strong>P1</strong>、<strong>P2</strong>和<strong>P3</strong>的生产者分别在<strong>集群A</strong>、<strong>集群B</strong>和<strong>集群C</strong>向</strong>T1</strong> topic发送消息时,这些消息就会进行实时的跨集群复制 一旦复制,<strong>C1</strong>和<strong>C2</strong>的客户就可以从各自的集群中使用这些消息。</p>
-<p>没有进行跨域复制前,<strong>C1</strong>和<strong>C2</strong>消费者不能使用<strong>P3</strong>生产者发布的消息</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 [...]
+<p>在这个图中,每当 <strong>P1</strong>、<strong>P2</strong> 和 <strong>P3</strong> 的生产者分别向<strong>Cluster-A</strong>、<strong>Cluster-B</strong>和<strong>Cluster-C</strong> 中的<strong>T1</strong> topic发送消息时,这些消息很快在不同的集群中复制。 一旦复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者会从各自的集群中消费这些消息。</p>
+<p>如果没有跨地域复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者不能消费 <strong>P3</strong> 生产者发布的消息。</p>
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>虽然必须在两个集群之间启用地理复制,但它实际上是在名称空间级别进行管理的。你必须完成以下任务才能启用名称空间的地理复制:</p>
 <ul>
@@ -121,7 +121,7 @@
 <p>一旦创建了跨域复制名称空间,生产者或消费者在该名称空间中创建的任何topic都将进行跨集群复制。 Typically, each application will use the <code>serviceUrl</code> for the local cluster.</p>
 <h4><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.09 [...]
 <p>By default, messages are replicated to all clusters configured for the namespace. 您可以通过为消息指定复制列表来选择性地限制复制,然后该消息将只复制到复制列表中的子集。</p>
-<p>下面是<a href="/docs/zh-CN/next/client-libraries-java">Java API</a>的一个示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
+<p>如下是 <a href="/docs/zh-CN/next/client-libraries-java">Java API</a> 示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
  object:</p>
 <pre><code class="hljs css language-java">List&lt;String&gt; restrictReplicationTo = Arrays.asList(
         <span class="hljs-string">"us-west"</span>,
@@ -137,9 +137,9 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
-<p>特定主题的地跨域复制统计信息可以通过<a href="/docs/zh-CN/next/pulsar-admin"><code>pulse -admin</code></a>工具和<a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
- API查看</p>
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>特定主题的地跨域复制统计信息可以通过 <a href="/docs/zh-CN/next/pulsar-admin"><code>pulse -admin</code></a> 工具和 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API 查看</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
 </code></pre>
 <p>每个集群会生成自己的本地统计信息报告,包括传入和传出的复制率和队列容量。</p>
@@ -148,7 +148,7 @@ producer.newMessage()
 <p>在脉冲星中,当一个topic满足以下三个条件时会被自动删除,即: -当没有生产者或消费者连接到该主题时; -没有订阅; -不再保留任何信息以供保留。 对于跨域复制topic,每个区域都使用容错机制来决定何时在本地安全删除该主题。</p>
 <p>可以通过在<a href="/docs/zh-CN/next/reference-configuration#broker">代理配置</a>中设置<code>brokerDeleteInactiveTopicsEnabled</code>为<code>false</code>来显式禁用主题垃圾收集。</p>
 <p>要删除跨域复制主题,请关闭该主题上的所有生产者和消费者,并删除每个复制集群中的所有本地订阅。 When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-pulsar [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/administration-geo/index.html b/content/docs/zh-CN/next/administration-geo/index.html
index e117431..92aca7c 100644
--- a/content/docs/zh-CN/next/administration-geo/index.html
+++ b/content/docs/zh-CN/next/administration-geo/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>脉冲星的跨域复制 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="*跨域复制* 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="脉冲星的跨域复制 · Apache Pulsar"/><meta prop [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Pulsar 的跨地域复制 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="*跨域复制* 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Pulsar 的跨地域复制 · Apache Pulsar"/> [...]
               (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)
@@ -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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -74,13 +74,13 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">脉冲星的跨域复制</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Pulsar 的跨地域复制</h1></header><article><div><span><p><em>跨域复制</em> 是指在脉冲星实例中对多个集群中永久存储消息数据的复制。</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>下图说明了脉冲星在不同集群之间的跨域复制过程</p>
+<p>下图说明了 Pulsar 在不同集群之间跨地域复制的过程:</p>
 <p><img src="/docs/assets/geo-replication.png" alt="复制图表"></p>
-<p>在这个图中,每当<strong>P1</strong>、<strong>P2</strong>和<strong>P3</strong>的生产者分别在<strong>集群A</strong>、<strong>集群B</strong>和<strong>集群C</strong>向</strong>T1</strong> topic发送消息时,这些消息就会进行实时的跨集群复制 一旦复制,<strong>C1</strong>和<strong>C2</strong>的客户就可以从各自的集群中使用这些消息。</p>
-<p>没有进行跨域复制前,<strong>C1</strong>和<strong>C2</strong>消费者不能使用<strong>P3</strong>生产者发布的消息</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 [...]
+<p>在这个图中,每当 <strong>P1</strong>、<strong>P2</strong> 和 <strong>P3</strong> 的生产者分别向<strong>Cluster-A</strong>、<strong>Cluster-B</strong>和<strong>Cluster-C</strong> 中的<strong>T1</strong> topic发送消息时,这些消息很快在不同的集群中复制。 一旦复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者会从各自的集群中消费这些消息。</p>
+<p>如果没有跨地域复制,<strong>C1</strong> 和 <strong>C2</strong> 消费者不能消费 <strong>P3</strong> 生产者发布的消息。</p>
+<h2><a class="anchor" aria-hidden="true" id="跨地域复制和-pulsar-属性"></a><a href="#跨地域复制和-pulsar-属性" 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>在脉冲星中,我们限制了需要通过新增租户来激活跨域复制。 只有在创建了允许访问两个集群的租户时,才能在集群之间启用跨域复制。</p>
 <p>虽然必须在两个集群之间启用地理复制,但它实际上是在名称空间级别进行管理的。你必须完成以下任务才能启用名称空间的地理复制:</p>
 <ul>
@@ -121,7 +121,7 @@
 <p>一旦创建了跨域复制名称空间,生产者或消费者在该名称空间中创建的任何topic都将进行跨集群复制。 Typically, each application will use the <code>serviceUrl</code> for the local cluster.</p>
 <h4><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.09 [...]
 <p>By default, messages are replicated to all clusters configured for the namespace. 您可以通过为消息指定复制列表来选择性地限制复制,然后该消息将只复制到复制列表中的子集。</p>
-<p>下面是<a href="/docs/zh-CN/next/client-libraries-java">Java API</a>的一个示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
+<p>如下是 <a href="/docs/zh-CN/next/client-libraries-java">Java API</a> 示例。 Note the use of the <code>setReplicationClusters</code> method when constructing the <a href="https://pulsar.incubator.apache.org/api/client/org/apache/pulsar/client/api/Message">Message</a>
  object:</p>
 <pre><code class="hljs css language-java">List&lt;String&gt; restrictReplicationTo = Arrays.asList(
         <span class="hljs-string">"us-west"</span>,
@@ -137,9 +137,9 @@ producer.newMessage()
         .setReplicationClusters(restrictReplicationTo)
         .send();
 </code></pre>
-<h4><a class="anchor" aria-hidden="true" id="topic统计数据"></a><a href="#topic统计数据" 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.6 [...]
-<p>特定主题的地跨域复制统计信息可以通过<a href="/docs/zh-CN/next/pulsar-admin"><code>pulse -admin</code></a>工具和<a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
- API查看</p>
+<h4><a class="anchor" aria-hidden="true" id="topic-统计数据"></a><a href="#topic-统计数据" 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>特定主题的地跨域复制统计信息可以通过 <a href="/docs/zh-CN/next/pulsar-admin"><code>pulse -admin</code></a> 工具和 <a href="https://pulsar.incubator.apache.org/en/admin-rest-api#/">REST</a>
+ API 查看</p>
 <pre><code class="hljs css language-shell"><span class="hljs-meta">$</span><span class="bash"> bin/pulsar-admin persistent stats persistent://my-tenant/my-namespace/my-topic</span>
 </code></pre>
 <p>每个集群会生成自己的本地统计信息报告,包括传入和传出的复制率和队列容量。</p>
@@ -148,7 +148,7 @@ producer.newMessage()
 <p>在脉冲星中,当一个topic满足以下三个条件时会被自动删除,即: -当没有生产者或消费者连接到该主题时; -没有订阅; -不再保留任何信息以供保留。 对于跨域复制topic,每个区域都使用容错机制来决定何时在本地安全删除该主题。</p>
 <p>可以通过在<a href="/docs/zh-CN/next/reference-configuration#broker">代理配置</a>中设置<code>brokerDeleteInactiveTopicsEnabled</code>为<code>false</code>来显式禁用主题垃圾收集。</p>
 <p>要删除跨域复制主题,请关闭该主题上的所有生产者和消费者,并删除每个复制集群中的所有本地订阅。 When Pulsar determines that no valid subscription for the topic remains across the system, it will garbage collect the topic.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨域复制以及脉冲星特性"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/administration-zk-bk"><span class="arrow-prev">← </span><span class="function-name-prevnext">ZooKeeper and BookKeeper</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-dashboard"><span>仪表盘</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#运作模式">运作模式</a></li><li><a href="#跨地域复制和-pulsar [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/administration-load-balance.html b/content/docs/zh-CN/next/administration-load-balance.html
index daf131b..f6833d1 100644
--- a/content/docs/zh-CN/next/administration-load-balance.html
+++ b/content/docs/zh-CN/next/administration-load-balance.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/administration-load-balance/index.html b/content/docs/zh-CN/next/administration-load-balance/index.html
index daf131b..f6833d1 100644
--- a/content/docs/zh-CN/next/administration-load-balance/index.html
+++ b/content/docs/zh-CN/next/administration-load-balance/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/administration-proxy.html b/content/docs/zh-CN/next/administration-proxy.html
index 793449c..fb12511 100644
--- a/content/docs/zh-CN/next/administration-proxy.html
+++ b/content/docs/zh-CN/next/administration-proxy.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/administration-proxy/index.html b/content/docs/zh-CN/next/administration-proxy/index.html
index 793449c..fb12511 100644
--- a/content/docs/zh-CN/next/administration-proxy/index.html
+++ b/content/docs/zh-CN/next/administration-proxy/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/administration-stats.html b/content/docs/zh-CN/next/administration-stats.html
index 93c2785..6421316 100644
--- a/content/docs/zh-CN/next/administration-stats.html
+++ b/content/docs/zh-CN/next/administration-stats.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/administration-stats/index.html b/content/docs/zh-CN/next/administration-stats/index.html
index 93c2785..6421316 100644
--- a/content/docs/zh-CN/next/administration-stats/index.html
+++ b/content/docs/zh-CN/next/administration-stats/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/administration-upgrade.html b/content/docs/zh-CN/next/administration-upgrade.html
index 57b1cbd..97bac3f 100644
--- a/content/docs/zh-CN/next/administration-upgrade.html
+++ b/content/docs/zh-CN/next/administration-upgrade.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/administration-upgrade/index.html b/content/docs/zh-CN/next/administration-upgrade/index.html
index 57b1cbd..97bac3f 100644
--- a/content/docs/zh-CN/next/administration-upgrade/index.html
+++ b/content/docs/zh-CN/next/administration-upgrade/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/administration-zk-bk.html b/content/docs/zh-CN/next/administration-zk-bk.html
index 01144b3..65d5405 100644
--- a/content/docs/zh-CN/next/administration-zk-bk.html
+++ b/content/docs/zh-CN/next/administration-zk-bk.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -291,7 +291,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploying [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployin [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/administration-zk-bk/index.html b/content/docs/zh-CN/next/administration-zk-bk/index.html
index 01144b3..65d5405 100644
--- a/content/docs/zh-CN/next/administration-zk-bk/index.html
+++ b/content/docs/zh-CN/next/administration-zk-bk/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -291,7 +291,7 @@ admin.namespaces().setPersistence(namespace, policies);
 <p>This diagram illustrates the role of ZooKeeper and BookKeeper in a Pulsar cluster:</p>
 <p><img src="/docs/assets/pulsar-system-architecture.png" alt="ZooKeeper and BookKeeper"></p>
 <p>Each Pulsar cluster consists of one or more message brokers. Each broker relies on an ensemble of bookies.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-geo"><span>跨域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deploying [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/deploy-monitoring"><span class="arrow-prev">← </span><span>Monitoring</span></a><a class="docs-next button" href="/docs/zh-CN/next/administration-geo"><span>跨地域复制</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#zookeeper">ZooKeeper</a><ul class="toc-headings"><li><a href="#deploying-local-zookeeper">Deployin [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/client-libraries-cpp.html b/content/docs/zh-CN/next/client-libraries-cpp.html
index f80c040..ebc8c2e 100644
--- a/content/docs/zh-CN/next/client-libraries-cpp.html
+++ b/content/docs/zh-CN/next/client-libraries-cpp.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries-cpp/index.html b/content/docs/zh-CN/next/client-libraries-cpp/index.html
index f80c040..ebc8c2e 100644
--- a/content/docs/zh-CN/next/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/next/client-libraries-cpp/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries-go.html b/content/docs/zh-CN/next/client-libraries-go.html
index 23fbd28..0098ff4 100644
--- a/content/docs/zh-CN/next/client-libraries-go.html
+++ b/content/docs/zh-CN/next/client-libraries-go.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries-go/index.html b/content/docs/zh-CN/next/client-libraries-go/index.html
index 23fbd28..0098ff4 100644
--- a/content/docs/zh-CN/next/client-libraries-go/index.html
+++ b/content/docs/zh-CN/next/client-libraries-go/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries-java.html b/content/docs/zh-CN/next/client-libraries-java.html
index be21469..36d9235 100644
--- a/content/docs/zh-CN/next/client-libraries-java.html
+++ b/content/docs/zh-CN/next/client-libraries-java.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries-java/index.html b/content/docs/zh-CN/next/client-libraries-java/index.html
index be21469..36d9235 100644
--- a/content/docs/zh-CN/next/client-libraries-java/index.html
+++ b/content/docs/zh-CN/next/client-libraries-java/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries-python.html b/content/docs/zh-CN/next/client-libraries-python.html
index 9b4c655..28062b8 100644
--- a/content/docs/zh-CN/next/client-libraries-python.html
+++ b/content/docs/zh-CN/next/client-libraries-python.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries-python/index.html b/content/docs/zh-CN/next/client-libraries-python/index.html
index 9b4c655..28062b8 100644
--- a/content/docs/zh-CN/next/client-libraries-python/index.html
+++ b/content/docs/zh-CN/next/client-libraries-python/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries-websocket.html b/content/docs/zh-CN/next/client-libraries-websocket.html
index 68f7641..df0a231 100644
--- a/content/docs/zh-CN/next/client-libraries-websocket.html
+++ b/content/docs/zh-CN/next/client-libraries-websocket.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries-websocket/index.html b/content/docs/zh-CN/next/client-libraries-websocket/index.html
index 68f7641..df0a231 100644
--- a/content/docs/zh-CN/next/client-libraries-websocket/index.html
+++ b/content/docs/zh-CN/next/client-libraries-websocket/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries.html b/content/docs/zh-CN/next/client-libraries.html
index 14d9d55..458be97 100644
--- a/content/docs/zh-CN/next/client-libraries.html
+++ b/content/docs/zh-CN/next/client-libraries.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/client-libraries/index.html b/content/docs/zh-CN/next/client-libraries/index.html
index 14d9d55..458be97 100644
--- a/content/docs/zh-CN/next/client-libraries/index.html
+++ b/content/docs/zh-CN/next/client-libraries/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-architecture-overview.html b/content/docs/zh-CN/next/concepts-architecture-overview.html
index 7973e61..8637d91 100644
--- a/content/docs/zh-CN/next/concepts-architecture-overview.html
+++ b/content/docs/zh-CN/next/concepts-architecture-overview.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
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 7973e61..8637d91 100644
--- a/content/docs/zh-CN/next/concepts-architecture-overview/index.html
+++ b/content/docs/zh-CN/next/concepts-architecture-overview/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-authentication.html b/content/docs/zh-CN/next/concepts-authentication.html
index bd4a1ae..345ba0f 100644
--- a/content/docs/zh-CN/next/concepts-authentication.html
+++ b/content/docs/zh-CN/next/concepts-authentication.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-authentication/index.html b/content/docs/zh-CN/next/concepts-authentication/index.html
index bd4a1ae..345ba0f 100644
--- a/content/docs/zh-CN/next/concepts-authentication/index.html
+++ b/content/docs/zh-CN/next/concepts-authentication/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-clients.html b/content/docs/zh-CN/next/concepts-clients.html
index 81ac918..bd256d4 100644
--- a/content/docs/zh-CN/next/concepts-clients.html
+++ b/content/docs/zh-CN/next/concepts-clients.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-clients/index.html b/content/docs/zh-CN/next/concepts-clients/index.html
index 81ac918..bd256d4 100644
--- a/content/docs/zh-CN/next/concepts-clients/index.html
+++ b/content/docs/zh-CN/next/concepts-clients/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-messaging.html b/content/docs/zh-CN/next/concepts-messaging.html
index bbdf299..d582f4b 100644
--- a/content/docs/zh-CN/next/concepts-messaging.html
+++ b/content/docs/zh-CN/next/concepts-messaging.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-messaging/index.html b/content/docs/zh-CN/next/concepts-messaging/index.html
index bbdf299..d582f4b 100644
--- a/content/docs/zh-CN/next/concepts-messaging/index.html
+++ b/content/docs/zh-CN/next/concepts-messaging/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-multi-tenancy.html b/content/docs/zh-CN/next/concepts-multi-tenancy.html
index f4a596f..497dcaa 100644
--- a/content/docs/zh-CN/next/concepts-multi-tenancy.html
+++ b/content/docs/zh-CN/next/concepts-multi-tenancy.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
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 f4a596f..497dcaa 100644
--- a/content/docs/zh-CN/next/concepts-multi-tenancy/index.html
+++ b/content/docs/zh-CN/next/concepts-multi-tenancy/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-overview.html b/content/docs/zh-CN/next/concepts-overview.html
index 4225c48..0bb2a05 100644
--- a/content/docs/zh-CN/next/concepts-overview.html
+++ b/content/docs/zh-CN/next/concepts-overview.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-overview/index.html b/content/docs/zh-CN/next/concepts-overview/index.html
index 4225c48..0bb2a05 100644
--- a/content/docs/zh-CN/next/concepts-overview/index.html
+++ b/content/docs/zh-CN/next/concepts-overview/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-replication.html b/content/docs/zh-CN/next/concepts-replication.html
index 2e83d96..dc971a9 100644
--- a/content/docs/zh-CN/next/concepts-replication.html
+++ b/content/docs/zh-CN/next/concepts-replication.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-replication/index.html b/content/docs/zh-CN/next/concepts-replication/index.html
index 2e83d96..dc971a9 100644
--- a/content/docs/zh-CN/next/concepts-replication/index.html
+++ b/content/docs/zh-CN/next/concepts-replication/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-tiered-storage.html b/content/docs/zh-CN/next/concepts-tiered-storage.html
index 0f74d3d..510923f 100644
--- a/content/docs/zh-CN/next/concepts-tiered-storage.html
+++ b/content/docs/zh-CN/next/concepts-tiered-storage.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-tiered-storage/index.html b/content/docs/zh-CN/next/concepts-tiered-storage/index.html
index 0f74d3d..510923f 100644
--- a/content/docs/zh-CN/next/concepts-tiered-storage/index.html
+++ b/content/docs/zh-CN/next/concepts-tiered-storage/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-topic-compaction.html b/content/docs/zh-CN/next/concepts-topic-compaction.html
index 35a603d..181faed 100644
--- a/content/docs/zh-CN/next/concepts-topic-compaction.html
+++ b/content/docs/zh-CN/next/concepts-topic-compaction.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/concepts-topic-compaction/index.html b/content/docs/zh-CN/next/concepts-topic-compaction/index.html
index 35a603d..181faed 100644
--- a/content/docs/zh-CN/next/concepts-topic-compaction/index.html
+++ b/content/docs/zh-CN/next/concepts-topic-compaction/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-bookkeepermetadata.html b/content/docs/zh-CN/next/cookbooks-bookkeepermetadata.html
index 707ed18..6b84a0f 100644
--- a/content/docs/zh-CN/next/cookbooks-bookkeepermetadata.html
+++ b/content/docs/zh-CN/next/cookbooks-bookkeepermetadata.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-bookkeepermetadata/index.html b/content/docs/zh-CN/next/cookbooks-bookkeepermetadata/index.html
index 707ed18..6b84a0f 100644
--- a/content/docs/zh-CN/next/cookbooks-bookkeepermetadata/index.html
+++ b/content/docs/zh-CN/next/cookbooks-bookkeepermetadata/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-compaction.html b/content/docs/zh-CN/next/cookbooks-compaction.html
index 1a1eeb7..1b17224 100644
--- a/content/docs/zh-CN/next/cookbooks-compaction.html
+++ b/content/docs/zh-CN/next/cookbooks-compaction.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-compaction/index.html b/content/docs/zh-CN/next/cookbooks-compaction/index.html
index 1a1eeb7..1b17224 100644
--- a/content/docs/zh-CN/next/cookbooks-compaction/index.html
+++ b/content/docs/zh-CN/next/cookbooks-compaction/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-deduplication.html b/content/docs/zh-CN/next/cookbooks-deduplication.html
index 62521c9..c9472d7 100644
--- a/content/docs/zh-CN/next/cookbooks-deduplication.html
+++ b/content/docs/zh-CN/next/cookbooks-deduplication.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-deduplication/index.html b/content/docs/zh-CN/next/cookbooks-deduplication/index.html
index 62521c9..c9472d7 100644
--- a/content/docs/zh-CN/next/cookbooks-deduplication/index.html
+++ b/content/docs/zh-CN/next/cookbooks-deduplication/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-encryption.html b/content/docs/zh-CN/next/cookbooks-encryption.html
index 6a8d1ba..a1dbd18 100644
--- a/content/docs/zh-CN/next/cookbooks-encryption.html
+++ b/content/docs/zh-CN/next/cookbooks-encryption.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-encryption/index.html b/content/docs/zh-CN/next/cookbooks-encryption/index.html
index 6a8d1ba..a1dbd18 100644
--- a/content/docs/zh-CN/next/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/next/cookbooks-encryption/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-message-queue.html b/content/docs/zh-CN/next/cookbooks-message-queue.html
index a88b5b9..41e9cf8 100644
--- a/content/docs/zh-CN/next/cookbooks-message-queue.html
+++ b/content/docs/zh-CN/next/cookbooks-message-queue.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-message-queue/index.html b/content/docs/zh-CN/next/cookbooks-message-queue/index.html
index a88b5b9..41e9cf8 100644
--- a/content/docs/zh-CN/next/cookbooks-message-queue/index.html
+++ b/content/docs/zh-CN/next/cookbooks-message-queue/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-non-persistent.html b/content/docs/zh-CN/next/cookbooks-non-persistent.html
index c3f5645..b294d98 100644
--- a/content/docs/zh-CN/next/cookbooks-non-persistent.html
+++ b/content/docs/zh-CN/next/cookbooks-non-persistent.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-non-persistent/index.html b/content/docs/zh-CN/next/cookbooks-non-persistent/index.html
index c3f5645..b294d98 100644
--- a/content/docs/zh-CN/next/cookbooks-non-persistent/index.html
+++ b/content/docs/zh-CN/next/cookbooks-non-persistent/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-partitioned.html b/content/docs/zh-CN/next/cookbooks-partitioned.html
index c89c741..ba3c6b1 100644
--- a/content/docs/zh-CN/next/cookbooks-partitioned.html
+++ b/content/docs/zh-CN/next/cookbooks-partitioned.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-partitioned/index.html b/content/docs/zh-CN/next/cookbooks-partitioned/index.html
index c89c741..ba3c6b1 100644
--- a/content/docs/zh-CN/next/cookbooks-partitioned/index.html
+++ b/content/docs/zh-CN/next/cookbooks-partitioned/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-retention-expiry.html b/content/docs/zh-CN/next/cookbooks-retention-expiry.html
index bd10f94..f446356 100644
--- a/content/docs/zh-CN/next/cookbooks-retention-expiry.html
+++ b/content/docs/zh-CN/next/cookbooks-retention-expiry.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-retention-expiry/index.html b/content/docs/zh-CN/next/cookbooks-retention-expiry/index.html
index bd10f94..f446356 100644
--- a/content/docs/zh-CN/next/cookbooks-retention-expiry/index.html
+++ b/content/docs/zh-CN/next/cookbooks-retention-expiry/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-tiered-storage.html b/content/docs/zh-CN/next/cookbooks-tiered-storage.html
index ea07519..feee0c4 100644
--- a/content/docs/zh-CN/next/cookbooks-tiered-storage.html
+++ b/content/docs/zh-CN/next/cookbooks-tiered-storage.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/cookbooks-tiered-storage/index.html b/content/docs/zh-CN/next/cookbooks-tiered-storage/index.html
index ea07519..feee0c4 100644
--- a/content/docs/zh-CN/next/cookbooks-tiered-storage/index.html
+++ b/content/docs/zh-CN/next/cookbooks-tiered-storage/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-aws.html b/content/docs/zh-CN/next/deploy-aws.html
index e2cd5b6..d1b006e 100644
--- a/content/docs/zh-CN/next/deploy-aws.html
+++ b/content/docs/zh-CN/next/deploy-aws.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-aws/index.html b/content/docs/zh-CN/next/deploy-aws/index.html
index e2cd5b6..d1b006e 100644
--- a/content/docs/zh-CN/next/deploy-aws/index.html
+++ b/content/docs/zh-CN/next/deploy-aws/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster.html b/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster.html
index 71bd46d..6facb5c 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster/index.html b/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster/index.html
index 71bd46d..6facb5c 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster/index.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal-multi-cluster/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-bare-metal.html b/content/docs/zh-CN/next/deploy-bare-metal.html
index 1dd3bed..230e3e1 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-bare-metal/index.html b/content/docs/zh-CN/next/deploy-bare-metal/index.html
index 1dd3bed..230e3e1 100644
--- a/content/docs/zh-CN/next/deploy-bare-metal/index.html
+++ b/content/docs/zh-CN/next/deploy-bare-metal/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-dcos.html b/content/docs/zh-CN/next/deploy-dcos.html
index 3f62e59..08f537e 100644
--- a/content/docs/zh-CN/next/deploy-dcos.html
+++ b/content/docs/zh-CN/next/deploy-dcos.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-dcos/index.html b/content/docs/zh-CN/next/deploy-dcos/index.html
index 3f62e59..08f537e 100644
--- a/content/docs/zh-CN/next/deploy-dcos/index.html
+++ b/content/docs/zh-CN/next/deploy-dcos/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-kubernetes.html b/content/docs/zh-CN/next/deploy-kubernetes.html
index 5c30624..30e2ac1 100644
--- a/content/docs/zh-CN/next/deploy-kubernetes.html
+++ b/content/docs/zh-CN/next/deploy-kubernetes.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-kubernetes/index.html b/content/docs/zh-CN/next/deploy-kubernetes/index.html
index 5c30624..30e2ac1 100644
--- a/content/docs/zh-CN/next/deploy-kubernetes/index.html
+++ b/content/docs/zh-CN/next/deploy-kubernetes/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-monitoring.html b/content/docs/zh-CN/next/deploy-monitoring.html
index 042c93a..7678696 100644
--- a/content/docs/zh-CN/next/deploy-monitoring.html
+++ b/content/docs/zh-CN/next/deploy-monitoring.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/deploy-monitoring/index.html b/content/docs/zh-CN/next/deploy-monitoring/index.html
index 042c93a..7678696 100644
--- a/content/docs/zh-CN/next/deploy-monitoring/index.html
+++ b/content/docs/zh-CN/next/deploy-monitoring/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/develop-binary-protocol.html b/content/docs/zh-CN/next/develop-binary-protocol.html
index 86b67ac..86ff7dd 100644
--- a/content/docs/zh-CN/next/develop-binary-protocol.html
+++ b/content/docs/zh-CN/next/develop-binary-protocol.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/develop-binary-protocol/index.html b/content/docs/zh-CN/next/develop-binary-protocol/index.html
index 86b67ac..86ff7dd 100644
--- a/content/docs/zh-CN/next/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/next/develop-binary-protocol/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/develop-cpp.html b/content/docs/zh-CN/next/develop-cpp.html
index bc19849..6e24154 100644
--- a/content/docs/zh-CN/next/develop-cpp.html
+++ b/content/docs/zh-CN/next/develop-cpp.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/develop-cpp/index.html b/content/docs/zh-CN/next/develop-cpp/index.html
index bc19849..6e24154 100644
--- a/content/docs/zh-CN/next/develop-cpp/index.html
+++ b/content/docs/zh-CN/next/develop-cpp/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/develop-load-manager.html b/content/docs/zh-CN/next/develop-load-manager.html
index d0abd1a..dab6efc 100644
--- a/content/docs/zh-CN/next/develop-load-manager.html
+++ b/content/docs/zh-CN/next/develop-load-manager.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/develop-load-manager/index.html b/content/docs/zh-CN/next/develop-load-manager/index.html
index d0abd1a..dab6efc 100644
--- a/content/docs/zh-CN/next/develop-load-manager/index.html
+++ b/content/docs/zh-CN/next/develop-load-manager/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/develop-tools.html b/content/docs/zh-CN/next/develop-tools.html
index 75847f4..5f4229a 100644
--- a/content/docs/zh-CN/next/develop-tools.html
+++ b/content/docs/zh-CN/next/develop-tools.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/develop-tools/index.html b/content/docs/zh-CN/next/develop-tools/index.html
index 75847f4..5f4229a 100644
--- a/content/docs/zh-CN/next/develop-tools/index.html
+++ b/content/docs/zh-CN/next/develop-tools/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-api.html b/content/docs/zh-CN/next/functions-api.html
index 5964caa..8eba3ce 100644
--- a/content/docs/zh-CN/next/functions-api.html
+++ b/content/docs/zh-CN/next/functions-api.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-api/index.html b/content/docs/zh-CN/next/functions-api/index.html
index 5964caa..8eba3ce 100644
--- a/content/docs/zh-CN/next/functions-api/index.html
+++ b/content/docs/zh-CN/next/functions-api/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-cli.html b/content/docs/zh-CN/next/functions-cli.html
index a9185b1..ea00b49 100644
--- a/content/docs/zh-CN/next/functions-cli.html
+++ b/content/docs/zh-CN/next/functions-cli.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-cli/index.html b/content/docs/zh-CN/next/functions-cli/index.html
index a9185b1..ea00b49 100644
--- a/content/docs/zh-CN/next/functions-cli/index.html
+++ b/content/docs/zh-CN/next/functions-cli/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-debug.html b/content/docs/zh-CN/next/functions-debug.html
index f63f526..71de5a9 100644
--- a/content/docs/zh-CN/next/functions-debug.html
+++ b/content/docs/zh-CN/next/functions-debug.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-debug/index.html b/content/docs/zh-CN/next/functions-debug/index.html
index f63f526..71de5a9 100644
--- a/content/docs/zh-CN/next/functions-debug/index.html
+++ b/content/docs/zh-CN/next/functions-debug/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-debugging.html b/content/docs/zh-CN/next/functions-debugging.html
index 7f756bb..1b5aa8c 100644
--- a/content/docs/zh-CN/next/functions-debugging.html
+++ b/content/docs/zh-CN/next/functions-debugging.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-debugging/index.html b/content/docs/zh-CN/next/functions-debugging/index.html
index 7f756bb..1b5aa8c 100644
--- a/content/docs/zh-CN/next/functions-debugging/index.html
+++ b/content/docs/zh-CN/next/functions-debugging/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-deploy.html b/content/docs/zh-CN/next/functions-deploy.html
index a16fa64..8965c8d 100644
--- a/content/docs/zh-CN/next/functions-deploy.html
+++ b/content/docs/zh-CN/next/functions-deploy.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-deploy/index.html b/content/docs/zh-CN/next/functions-deploy/index.html
index a16fa64..8965c8d 100644
--- a/content/docs/zh-CN/next/functions-deploy/index.html
+++ b/content/docs/zh-CN/next/functions-deploy/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-deploying.html b/content/docs/zh-CN/next/functions-deploying.html
index d510667..e17dc68 100644
--- a/content/docs/zh-CN/next/functions-deploying.html
+++ b/content/docs/zh-CN/next/functions-deploying.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-deploying/index.html b/content/docs/zh-CN/next/functions-deploying/index.html
index d510667..e17dc68 100644
--- a/content/docs/zh-CN/next/functions-deploying/index.html
+++ b/content/docs/zh-CN/next/functions-deploying/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-develop.html b/content/docs/zh-CN/next/functions-develop.html
index 0f5b977..7f0150d 100644
--- a/content/docs/zh-CN/next/functions-develop.html
+++ b/content/docs/zh-CN/next/functions-develop.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-develop/index.html b/content/docs/zh-CN/next/functions-develop/index.html
index 0f5b977..7f0150d 100644
--- a/content/docs/zh-CN/next/functions-develop/index.html
+++ b/content/docs/zh-CN/next/functions-develop/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-guarantees.html b/content/docs/zh-CN/next/functions-guarantees.html
index 2422b07..172cb7a 100644
--- a/content/docs/zh-CN/next/functions-guarantees.html
+++ b/content/docs/zh-CN/next/functions-guarantees.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-guarantees/index.html b/content/docs/zh-CN/next/functions-guarantees/index.html
index 2422b07..172cb7a 100644
--- a/content/docs/zh-CN/next/functions-guarantees/index.html
+++ b/content/docs/zh-CN/next/functions-guarantees/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-metrics.html b/content/docs/zh-CN/next/functions-metrics.html
index e4e172f..28a58e0 100644
--- a/content/docs/zh-CN/next/functions-metrics.html
+++ b/content/docs/zh-CN/next/functions-metrics.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-metrics/index.html b/content/docs/zh-CN/next/functions-metrics/index.html
index e4e172f..28a58e0 100644
--- a/content/docs/zh-CN/next/functions-metrics/index.html
+++ b/content/docs/zh-CN/next/functions-metrics/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-overview-new.html b/content/docs/zh-CN/next/functions-overview-new.html
index 36e41bb..ec57f17 100644
--- a/content/docs/zh-CN/next/functions-overview-new.html
+++ b/content/docs/zh-CN/next/functions-overview-new.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-overview-new/index.html b/content/docs/zh-CN/next/functions-overview-new/index.html
index 36e41bb..ec57f17 100644
--- a/content/docs/zh-CN/next/functions-overview-new/index.html
+++ b/content/docs/zh-CN/next/functions-overview-new/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-overview.html b/content/docs/zh-CN/next/functions-overview.html
index 689edad..a3093d7 100644
--- a/content/docs/zh-CN/next/functions-overview.html
+++ b/content/docs/zh-CN/next/functions-overview.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-overview/index.html b/content/docs/zh-CN/next/functions-overview/index.html
index 689edad..a3093d7 100644
--- a/content/docs/zh-CN/next/functions-overview/index.html
+++ b/content/docs/zh-CN/next/functions-overview/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-quickstart.html b/content/docs/zh-CN/next/functions-quickstart.html
index ee23b18..c21324f 100644
--- a/content/docs/zh-CN/next/functions-quickstart.html
+++ b/content/docs/zh-CN/next/functions-quickstart.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-quickstart/index.html b/content/docs/zh-CN/next/functions-quickstart/index.html
index ee23b18..c21324f 100644
--- a/content/docs/zh-CN/next/functions-quickstart/index.html
+++ b/content/docs/zh-CN/next/functions-quickstart/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-runtime.html b/content/docs/zh-CN/next/functions-runtime.html
index abd5a6a..834636a 100644
--- a/content/docs/zh-CN/next/functions-runtime.html
+++ b/content/docs/zh-CN/next/functions-runtime.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-runtime/index.html b/content/docs/zh-CN/next/functions-runtime/index.html
index abd5a6a..834636a 100644
--- a/content/docs/zh-CN/next/functions-runtime/index.html
+++ b/content/docs/zh-CN/next/functions-runtime/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-state.html b/content/docs/zh-CN/next/functions-state.html
index bb7fd7f..31edc8d 100644
--- a/content/docs/zh-CN/next/functions-state.html
+++ b/content/docs/zh-CN/next/functions-state.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-state/index.html b/content/docs/zh-CN/next/functions-state/index.html
index bb7fd7f..31edc8d 100644
--- a/content/docs/zh-CN/next/functions-state/index.html
+++ b/content/docs/zh-CN/next/functions-state/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-worker.html b/content/docs/zh-CN/next/functions-worker.html
index c8f2096..d6f11c3 100644
--- a/content/docs/zh-CN/next/functions-worker.html
+++ b/content/docs/zh-CN/next/functions-worker.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/functions-worker/index.html b/content/docs/zh-CN/next/functions-worker/index.html
index c8f2096..d6f11c3 100644
--- a/content/docs/zh-CN/next/functions-worker/index.html
+++ b/content/docs/zh-CN/next/functions-worker/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-cdc.html b/content/docs/zh-CN/next/io-cdc.html
index 614c02f..cdea2dc 100644
--- a/content/docs/zh-CN/next/io-cdc.html
+++ b/content/docs/zh-CN/next/io-cdc.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-cdc/index.html b/content/docs/zh-CN/next/io-cdc/index.html
index 614c02f..cdea2dc 100644
--- a/content/docs/zh-CN/next/io-cdc/index.html
+++ b/content/docs/zh-CN/next/io-cdc/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-connectors.html b/content/docs/zh-CN/next/io-connectors.html
index 20b0238..57dbd6f 100644
--- a/content/docs/zh-CN/next/io-connectors.html
+++ b/content/docs/zh-CN/next/io-connectors.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-connectors/index.html b/content/docs/zh-CN/next/io-connectors/index.html
index 20b0238..57dbd6f 100644
--- a/content/docs/zh-CN/next/io-connectors/index.html
+++ b/content/docs/zh-CN/next/io-connectors/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-develop.html b/content/docs/zh-CN/next/io-develop.html
index eb6a914..489da47 100644
--- a/content/docs/zh-CN/next/io-develop.html
+++ b/content/docs/zh-CN/next/io-develop.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-develop/index.html b/content/docs/zh-CN/next/io-develop/index.html
index eb6a914..489da47 100644
--- a/content/docs/zh-CN/next/io-develop/index.html
+++ b/content/docs/zh-CN/next/io-develop/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-managing.html b/content/docs/zh-CN/next/io-managing.html
index ba71cad..44f6f0f 100644
--- a/content/docs/zh-CN/next/io-managing.html
+++ b/content/docs/zh-CN/next/io-managing.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-managing/index.html b/content/docs/zh-CN/next/io-managing/index.html
index ba71cad..44f6f0f 100644
--- a/content/docs/zh-CN/next/io-managing/index.html
+++ b/content/docs/zh-CN/next/io-managing/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-overview.html b/content/docs/zh-CN/next/io-overview.html
index 9340d56..69516a9 100644
--- a/content/docs/zh-CN/next/io-overview.html
+++ b/content/docs/zh-CN/next/io-overview.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-overview/index.html b/content/docs/zh-CN/next/io-overview/index.html
index 9340d56..69516a9 100644
--- a/content/docs/zh-CN/next/io-overview/index.html
+++ b/content/docs/zh-CN/next/io-overview/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-quickstart.html b/content/docs/zh-CN/next/io-quickstart.html
index cc26b47..a9f3b83 100644
--- a/content/docs/zh-CN/next/io-quickstart.html
+++ b/content/docs/zh-CN/next/io-quickstart.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/io-quickstart/index.html b/content/docs/zh-CN/next/io-quickstart/index.html
index cc26b47..a9f3b83 100644
--- a/content/docs/zh-CN/next/io-quickstart/index.html
+++ b/content/docs/zh-CN/next/io-quickstart/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/pulsar-2.0.html b/content/docs/zh-CN/next/pulsar-2.0.html
index 60224c5..137bb55 100644
--- a/content/docs/zh-CN/next/pulsar-2.0.html
+++ b/content/docs/zh-CN/next/pulsar-2.0.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/pulsar-2.0/index.html b/content/docs/zh-CN/next/pulsar-2.0/index.html
index 60224c5..137bb55 100644
--- a/content/docs/zh-CN/next/pulsar-2.0/index.html
+++ b/content/docs/zh-CN/next/pulsar-2.0/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/pulsar-admin.html b/content/docs/zh-CN/next/pulsar-admin.html
index 8f6c71a..2220ca1 100644
--- a/content/docs/zh-CN/next/pulsar-admin.html
+++ b/content/docs/zh-CN/next/pulsar-admin.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/pulsar-admin/index.html b/content/docs/zh-CN/next/pulsar-admin/index.html
index 8f6c71a..2220ca1 100644
--- a/content/docs/zh-CN/next/pulsar-admin/index.html
+++ b/content/docs/zh-CN/next/pulsar-admin/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-cli-tools.html b/content/docs/zh-CN/next/reference-cli-tools.html
index 012c7c3..39a2db1 100644
--- a/content/docs/zh-CN/next/reference-cli-tools.html
+++ b/content/docs/zh-CN/next/reference-cli-tools.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-cli-tools/index.html b/content/docs/zh-CN/next/reference-cli-tools/index.html
index 012c7c3..39a2db1 100644
--- a/content/docs/zh-CN/next/reference-cli-tools/index.html
+++ b/content/docs/zh-CN/next/reference-cli-tools/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-configuration.html b/content/docs/zh-CN/next/reference-configuration.html
index 2676188..ad511f8 100644
--- a/content/docs/zh-CN/next/reference-configuration.html
+++ b/content/docs/zh-CN/next/reference-configuration.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-configuration/index.html b/content/docs/zh-CN/next/reference-configuration/index.html
index 2676188..ad511f8 100644
--- a/content/docs/zh-CN/next/reference-configuration/index.html
+++ b/content/docs/zh-CN/next/reference-configuration/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-connector-admin.html b/content/docs/zh-CN/next/reference-connector-admin.html
index e6d84ab..b48d86d 100644
--- a/content/docs/zh-CN/next/reference-connector-admin.html
+++ b/content/docs/zh-CN/next/reference-connector-admin.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-connector-admin/index.html b/content/docs/zh-CN/next/reference-connector-admin/index.html
index e6d84ab..b48d86d 100644
--- a/content/docs/zh-CN/next/reference-connector-admin/index.html
+++ b/content/docs/zh-CN/next/reference-connector-admin/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-metrics.html b/content/docs/zh-CN/next/reference-metrics.html
index a311d27..f6fa1ca 100644
--- a/content/docs/zh-CN/next/reference-metrics.html
+++ b/content/docs/zh-CN/next/reference-metrics.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-metrics/index.html b/content/docs/zh-CN/next/reference-metrics/index.html
index a311d27..f6fa1ca 100644
--- a/content/docs/zh-CN/next/reference-metrics/index.html
+++ b/content/docs/zh-CN/next/reference-metrics/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-terminology.html b/content/docs/zh-CN/next/reference-terminology.html
index 5a14577..d057d09 100644
--- a/content/docs/zh-CN/next/reference-terminology.html
+++ b/content/docs/zh-CN/next/reference-terminology.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/reference-terminology/index.html b/content/docs/zh-CN/next/reference-terminology/index.html
index 5a14577..d057d09 100644
--- a/content/docs/zh-CN/next/reference-terminology/index.html
+++ b/content/docs/zh-CN/next/reference-terminology/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/schema-evolution-compatibility.html b/content/docs/zh-CN/next/schema-evolution-compatibility.html
index 6cb2253..2b9f6ca 100644
--- a/content/docs/zh-CN/next/schema-evolution-compatibility.html
+++ b/content/docs/zh-CN/next/schema-evolution-compatibility.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/schema-evolution-compatibility/index.html b/content/docs/zh-CN/next/schema-evolution-compatibility/index.html
index 6cb2253..2b9f6ca 100644
--- a/content/docs/zh-CN/next/schema-evolution-compatibility/index.html
+++ b/content/docs/zh-CN/next/schema-evolution-compatibility/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/schema-get-started.html b/content/docs/zh-CN/next/schema-get-started.html
index 914d3b1..f44850b 100644
--- a/content/docs/zh-CN/next/schema-get-started.html
+++ b/content/docs/zh-CN/next/schema-get-started.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/schema-get-started/index.html b/content/docs/zh-CN/next/schema-get-started/index.html
index 914d3b1..f44850b 100644
--- a/content/docs/zh-CN/next/schema-get-started/index.html
+++ b/content/docs/zh-CN/next/schema-get-started/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/schema-manage.html b/content/docs/zh-CN/next/schema-manage.html
index 1e46893..d56a57e 100644
--- a/content/docs/zh-CN/next/schema-manage.html
+++ b/content/docs/zh-CN/next/schema-manage.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/schema-manage/index.html b/content/docs/zh-CN/next/schema-manage/index.html
index 1e46893..d56a57e 100644
--- a/content/docs/zh-CN/next/schema-manage/index.html
+++ b/content/docs/zh-CN/next/schema-manage/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/schema-understand.html b/content/docs/zh-CN/next/schema-understand.html
index 0862ae2..86cc9cf 100644
--- a/content/docs/zh-CN/next/schema-understand.html
+++ b/content/docs/zh-CN/next/schema-understand.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/schema-understand/index.html b/content/docs/zh-CN/next/schema-understand/index.html
index 0862ae2..86cc9cf 100644
--- a/content/docs/zh-CN/next/schema-understand/index.html
+++ b/content/docs/zh-CN/next/schema-understand/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-athenz.html b/content/docs/zh-CN/next/security-athenz.html
index c0df9aa..610b7fc 100644
--- a/content/docs/zh-CN/next/security-athenz.html
+++ b/content/docs/zh-CN/next/security-athenz.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>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, Athenz role tokens (aka *z-tokens*) can be used to establish the identify of the [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the ident [...]
               (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)
@@ -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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -74,32 +74,32 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authorization system. In Pulsar, Athenz r [...]
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authorization system. In Pulsar, you can  [...]
 <h2><a class="anchor" aria-hidden="true" id="athenz-authentication-settings"></a><a href="#athenz-authentication-settings" 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>In a <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> there is both an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
-<p>To begin, you need to set up Athenz service access control. You should create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/zh-CN/next/reference-terminology#te [...]
+<p>A <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> contains an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
+<p>To begin, you need to set up Athenz service access control. You need to create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/zh-CN/next/reference-terminology#t [...]
 <h3><a class="anchor" aria-hidden="true" id="create-the-tenant-domain-and-service"></a><a href="#create-the-tenant-domain-and-service" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>On the <a href="/docs/zh-CN/next/reference-terminology#tenant">tenant</a> side, you need to:</p>
+<p>On the <a href="/docs/zh-CN/next/reference-terminology#tenant">tenant</a> side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>shopping</code></li>
 <li>Generate a private/public key pair</li>
 <li>Create a service, such as <code>some_app</code>, on the domain with the public key</li>
 </ol>
-<p>Note that the private key generated in step 2 needs to be specified when the Pulsar client connects to the <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/zh-CN/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/zh-CN/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
-<p>For more specific steps involving the Athenz UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">this doc</a>.</p>
+<p>Note that you need to specify the private key generated in step 2 when the Pulsar client connects to the <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/zh-CN/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/zh-CN/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
+<p>For more specific steps involving the Athenz UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">Example Service Access Control Setup</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="create-the-provider-domain-and-add-the-tenant-service-to-some-role-members"></a><a href="#create-the-provider-domain-and-add-the-tenant-service-to-some-role-members" 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. [...]
-<p>On the provider side, you need to:</p>
+<p>On the provider side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>pulsar</code></li>
 <li>Create a role</li>
 <li>Add the tenant service to members of the role</li>
 </ol>
-<p>Note that in step 2 any action and resource can be specified since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
-<p>For more specific steps involving UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">this doc</a>.</p>
+<p>Note that you can specify any action and resource in step 2 since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
+<p>For more specific steps involving UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">Example Service Access Control Setup</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="configure-the-broker-for-athenz"></a><a href="#configure-the-broker-for-athenz" 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 [...]
 <blockquote>
-<h3><a class="anchor" aria-hidden="true" id="tls-encryption-strongly-recommended"></a><a href="#tls-encryption-strongly-recommended" 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 [...]
-<p>Please note that using TLS encryption is strongly recommended when using Athenz as an authentication provider, as it can protect role tokens from being intercepted and reused (see also <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">this doc</a>).</p>
+<h3><a class="anchor" aria-hidden="true" id="tls-encryption"></a><a href="#tls-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Note that when you are using Athenz as an authentication provider, you had better use TLS encryption as it can protect role tokens from being intercepted and reused. (for more details involving TLS encrption see <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">Architecture - Data Model</a>).</p>
 </blockquote>
 <p>In the <code>conf/broker.conf</code> configuration file in your Pulsar installation, you need to provide the class name of the Athenz authentication provider as well as a comma-separated list of provider domain names.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Add the Athenz auth provider</span>
@@ -114,7 +114,7 @@
 <span class="hljs-attr">tlsKeyFilePath</span>=<span class="hljs-string">/path/to/broker-key.pem</span>
 </code></pre>
 <blockquote>
-<p>A full listing of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/zh-CN/next/reference-configuration#broker">Broker Configuration</a>.</p>
+<p>A full listing of parameters is available in the <code>conf/broker.conf</code> file, you can also find the default values for those parameters in <a href="/docs/zh-CN/next/reference-configuration#broker">Broker Configuration</a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="configure-clients-for-athenz"></a><a href="#configure-clients-for-athenz" 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 [...]
 <p>For more information on Pulsar client authentication using Athenz, see the following language-specific docs:</p>
@@ -123,7 +123,7 @@
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="configure-cli-tools-for-athenz"></a><a href="#configure-cli-tools-for-athenz" 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><a href="/docs/zh-CN/next/reference-cli-tools">Command-line tools</a> like <a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a>, <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You’ll need to add the following authentication parameters to that file to use Athenz with Pulsar’s CLI tools:</p>
+<p>You need to add the following authentication parameters to the <code>conf/client.conf</code> config file to use Athenz with CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># URL for the broker</span>
 <span class="hljs-attr">serviceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-comment">
@@ -136,7 +136,7 @@
 <span class="hljs-attr">tlsAllowInsecureConnection</span>=<span class="hljs-string">false</span>
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/cacert.pem</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/zh-CN/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication se [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/zh-CN/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication se [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/security-athenz/index.html b/content/docs/zh-CN/next/security-athenz/index.html
index c0df9aa..610b7fc 100644
--- a/content/docs/zh-CN/next/security-athenz/index.html
+++ b/content/docs/zh-CN/next/security-athenz/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>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, Athenz role tokens (aka *z-tokens*) can be used to establish the identify of the [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication using Athenz · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="[Athenz](https://github.com/yahoo/athenz) is a role-based authentication/authorization system. In Pulsar, you can use Athenz role tokens (also known as *z-tokens*) to establish the ident [...]
               (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)
@@ -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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -74,32 +74,32 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authorization system. In Pulsar, Athenz r [...]
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">Authentication using Athenz</h1></header><article><div><span><p><a href="https://github.com/yahoo/athenz">Athenz</a> is a role-based authentication/authorization system. In Pulsar, you can  [...]
 <h2><a class="anchor" aria-hidden="true" id="athenz-authentication-settings"></a><a href="#athenz-authentication-settings" 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>In a <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> there is both an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
-<p>To begin, you need to set up Athenz service access control. You should create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/zh-CN/next/reference-terminology#te [...]
+<p>A <a href="https://github.com/yahoo/athenz/blob/master/docs/dev_decentralized_access.md">decentralized Athenz system</a> contains an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zms.md">authori<strong>Z</strong>ation <strong>M</strong>anagement <strong>S</strong>ystem</a> (ZMS) server and an <a href="https://github.com/yahoo/athenz/blob/master/docs/setup_zts.md">authori<strong>Z</strong>ation <strong>T</strong>oken <strong>S</strong>ystem</a> (ZTS) server.</p>
+<p>To begin, you need to set up Athenz service access control. You need to create domains for the <em>provider</em> (which provides some resources to other services with some authentication/authorization policies) and the <em>tenant</em> (which is provisioned to access some resources in a provider). In this case, the provider corresponds to the Pulsar service itself and the tenant corresponds to each application using Pulsar (typically, a <a href="/docs/zh-CN/next/reference-terminology#t [...]
 <h3><a class="anchor" aria-hidden="true" id="create-the-tenant-domain-and-service"></a><a href="#create-the-tenant-domain-and-service" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 [...]
-<p>On the <a href="/docs/zh-CN/next/reference-terminology#tenant">tenant</a> side, you need to:</p>
+<p>On the <a href="/docs/zh-CN/next/reference-terminology#tenant">tenant</a> side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>shopping</code></li>
 <li>Generate a private/public key pair</li>
 <li>Create a service, such as <code>some_app</code>, on the domain with the public key</li>
 </ol>
-<p>Note that the private key generated in step 2 needs to be specified when the Pulsar client connects to the <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/zh-CN/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/zh-CN/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
-<p>For more specific steps involving the Athenz UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">this doc</a>.</p>
+<p>Note that you need to specify the private key generated in step 2 when the Pulsar client connects to the <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> (see client configuration examples for <a href="/docs/zh-CN/next/client-libraries-java#tls-authentication">Java</a> and <a href="/docs/zh-CN/next/client-libraries-cpp#tls-authentication">C++</a>).</p>
+<p>For more specific steps involving the Athenz UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#client-tenant-domain">Example Service Access Control Setup</a>.</p>
 <h3><a class="anchor" aria-hidden="true" id="create-the-provider-domain-and-add-the-tenant-service-to-some-role-members"></a><a href="#create-the-provider-domain-and-add-the-tenant-service-to-some-role-members" 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. [...]
-<p>On the provider side, you need to:</p>
+<p>On the provider side, you need to do the follwing things:</p>
 <ol>
 <li>Create a domain, such as <code>pulsar</code></li>
 <li>Create a role</li>
 <li>Add the tenant service to members of the role</li>
 </ol>
-<p>Note that in step 2 any action and resource can be specified since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
-<p>For more specific steps involving UI, please refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">this doc</a>.</p>
+<p>Note that you can specify any action and resource in step 2 since they are not used on Pulsar. In other words, Pulsar uses the Athenz role token only for authentication, <em>not</em> for authorization.</p>
+<p>For more specific steps involving UI, refer to <a href="https://github.com/yahoo/athenz/blob/master/docs/example_service_athenz_setup.md#server-provider-domain">Example Service Access Control Setup</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="configure-the-broker-for-athenz"></a><a href="#configure-the-broker-for-athenz" 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 [...]
 <blockquote>
-<h3><a class="anchor" aria-hidden="true" id="tls-encryption-strongly-recommended"></a><a href="#tls-encryption-strongly-recommended" 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 [...]
-<p>Please note that using TLS encryption is strongly recommended when using Athenz as an authentication provider, as it can protect role tokens from being intercepted and reused (see also <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">this doc</a>).</p>
+<h3><a class="anchor" aria-hidden="true" id="tls-encryption"></a><a href="#tls-encryption" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Note that when you are using Athenz as an authentication provider, you had better use TLS encryption as it can protect role tokens from being intercepted and reused. (for more details involving TLS encrption see <a href="https://github.com/yahoo/athenz/blob/master/docs/data_model.md">Architecture - Data Model</a>).</p>
 </blockquote>
 <p>In the <code>conf/broker.conf</code> configuration file in your Pulsar installation, you need to provide the class name of the Athenz authentication provider as well as a comma-separated list of provider domain names.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># Add the Athenz auth provider</span>
@@ -114,7 +114,7 @@
 <span class="hljs-attr">tlsKeyFilePath</span>=<span class="hljs-string">/path/to/broker-key.pem</span>
 </code></pre>
 <blockquote>
-<p>A full listing of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/zh-CN/next/reference-configuration#broker">Broker Configuration</a>.</p>
+<p>A full listing of parameters is available in the <code>conf/broker.conf</code> file, you can also find the default values for those parameters in <a href="/docs/zh-CN/next/reference-configuration#broker">Broker Configuration</a>.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="configure-clients-for-athenz"></a><a href="#configure-clients-for-athenz" 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 [...]
 <p>For more information on Pulsar client authentication using Athenz, see the following language-specific docs:</p>
@@ -123,7 +123,7 @@
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="configure-cli-tools-for-athenz"></a><a href="#configure-cli-tools-for-athenz" 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><a href="/docs/zh-CN/next/reference-cli-tools">Command-line tools</a> like <a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a>, <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="/docs/zh-CN/next/reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You’ll need to add the following authentication parameters to that file to use Athenz with Pulsar’s CLI tools:</p>
+<p>You need to add the following authentication parameters to the <code>conf/client.conf</code> config file to use Athenz with CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># URL for the broker</span>
 <span class="hljs-attr">serviceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-comment">
@@ -136,7 +136,7 @@
 <span class="hljs-attr">tlsAllowInsecureConnection</span>=<span class="hljs-string">false</span>
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/cacert.pem</span>
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/zh-CN/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication se [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/security-token-admin"><span class="arrow-prev">← </span><span>Token authentication admin</span></a><a class="docs-next button" href="/docs/zh-CN/next/security-kerberos"><span>Authentication using Kerberos</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#athenz-authentication-settings">Athenz authentication se [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/security-authorization.html b/content/docs/zh-CN/next/security-authorization.html
index b8d0a14..53667a9 100644
--- a/content/docs/zh-CN/next/security-authorization.html
+++ b/content/docs/zh-CN/next/security-authorization.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-authorization/index.html b/content/docs/zh-CN/next/security-authorization/index.html
index b8d0a14..53667a9 100644
--- a/content/docs/zh-CN/next/security-authorization/index.html
+++ b/content/docs/zh-CN/next/security-authorization/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-encryption.html b/content/docs/zh-CN/next/security-encryption.html
index 9af7dad..f4ddf73 100644
--- a/content/docs/zh-CN/next/security-encryption.html
+++ b/content/docs/zh-CN/next/security-encryption.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-encryption/index.html b/content/docs/zh-CN/next/security-encryption/index.html
index 9af7dad..f4ddf73 100644
--- a/content/docs/zh-CN/next/security-encryption/index.html
+++ b/content/docs/zh-CN/next/security-encryption/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-extending.html b/content/docs/zh-CN/next/security-extending.html
index 6b78501..90ba605 100644
--- a/content/docs/zh-CN/next/security-extending.html
+++ b/content/docs/zh-CN/next/security-extending.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-extending/index.html b/content/docs/zh-CN/next/security-extending/index.html
index 6b78501..90ba605 100644
--- a/content/docs/zh-CN/next/security-extending/index.html
+++ b/content/docs/zh-CN/next/security-extending/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-kerberos.html b/content/docs/zh-CN/next/security-kerberos.html
index aaf3e54..967e5b6 100644
--- a/content/docs/zh-CN/next/security-kerberos.html
+++ b/content/docs/zh-CN/next/security-kerberos.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-kerberos/index.html b/content/docs/zh-CN/next/security-kerberos/index.html
index aaf3e54..967e5b6 100644
--- a/content/docs/zh-CN/next/security-kerberos/index.html
+++ b/content/docs/zh-CN/next/security-kerberos/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-overview.html b/content/docs/zh-CN/next/security-overview.html
index bed2973..257af14 100644
--- a/content/docs/zh-CN/next/security-overview.html
+++ b/content/docs/zh-CN/next/security-overview.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-overview/index.html b/content/docs/zh-CN/next/security-overview/index.html
index bed2973..257af14 100644
--- a/content/docs/zh-CN/next/security-overview/index.html
+++ b/content/docs/zh-CN/next/security-overview/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-tls-authentication.html b/content/docs/zh-CN/next/security-tls-authentication.html
index 2d59b34..8ab6250 100644
--- a/content/docs/zh-CN/next/security-tls-authentication.html
+++ b/content/docs/zh-CN/next/security-tls-authentication.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-tls-authentication/index.html b/content/docs/zh-CN/next/security-tls-authentication/index.html
index 2d59b34..8ab6250 100644
--- a/content/docs/zh-CN/next/security-tls-authentication/index.html
+++ b/content/docs/zh-CN/next/security-tls-authentication/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-tls-transport.html b/content/docs/zh-CN/next/security-tls-transport.html
index d1f2d64..d3e605e 100644
--- a/content/docs/zh-CN/next/security-tls-transport.html
+++ b/content/docs/zh-CN/next/security-tls-transport.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>使用TLS进行传输加密 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS 概述"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="使用TLS进行传输加密 · Apache Pulsar"/><meta property="og:type" cont [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>使用TLS进行传输加密 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="使用TLS进行传输加密 · Apache Pulsar"/><meta property="og:type [...]
               (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)
@@ -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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -74,32 +74,36 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">使用TLS进行传输加密</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-概述"></a><a href="#tls-概述" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria [...]
-<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text, which means that all data is sent in the clear. TLS can be used to encrypt this traffic so that it cannot be snooped by a man-in-the-middle attacker.</p>
-<p>TLS can be configured for both encryption and authentication. You may configure just TLS transport encryption, which is covered in this guide. TLS authentication is covered <a href="/docs/zh-CN/next/security-tls-authentication">elsewhere</a>. Alternatively, you can use <a href="/docs/zh-CN/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">使用TLS进行传输加密</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" aria-hidden="true" class="hash-link"><svg class="hash-lin [...]
+<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.</p>
+<p>You can also configure TLS for both encryption and authentication. Use this guide to configure just TLS transport encryption and refer to <a href="/docs/zh-CN/next/security-tls-authentication">here</a> for TLS authentication configuration. Alternatively, you can use <a href="/docs/zh-CN/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
 <blockquote>
-<p>Note that enabling TLS may have a performance impact due to encryption overhead.</p>
+<p>Note that enabling TLS may impact the performance due to encryption overhead.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="tls-概念"></a><a href="#tls-概念" 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. [...]
-<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Encryption is performed using key pairs consisting of a public key and a private key. Messages are encrypted with the public key and can be decrypted with the private key.</p>
+<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Using key pairs consisting of a public key and a private key can perform the encryption. The public key encrpyts the messages and the private key decrypts the messages.</p>
 <p>To use TLS transport encryption, you need two kinds of key pairs, <strong>server key pairs</strong> and a <strong>certificate authority</strong>.</p>
-<p>A third kind of key pair, <strong>client key pairs</strong>, are used for <a href="/docs/zh-CN/next/security-tls-authentication">client authentication</a>.</p>
-<p>The <strong>certificate authority</strong> private key should be stored in a very secure location (a fully encrypted, disconnected, air gapped computer). The certificate authority public key, the <strong>trust cert</strong>, can be freely shared.</p>
-<p>For both client and server key pairs, the administrator first generates a private key and a certificate request. Then the certificate authority private key is used to sign the certificate request, generating a certificate. This certificate is the public key for the server/client key pair.</p>
-<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server they are talking to has a key pair that was signed by the certificate authority. A man-in-the-middle attacker would not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
-<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that was signed by the certificate authority. The Common Name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/zh-CN/next/security-overview">Overview</a>).</p>
-<h2><a class="anchor" aria-hidden="true" id="创建tls证书"></a><a href="#创建tls证书" 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>You can use a third kind of key pair, <strong>client key pairs</strong>, for <a href="/docs/zh-CN/next/security-tls-authentication">client authentication</a>.</p>
+<p>You should store the <strong>certificate authority</strong> private key in a very secure location (a fully encrypted, disconnected, air gapped computer). As for the certificate authority public key, the <strong>trust cert</strong>, you can freely shared it.</p>
+<p>For both client and server key pairs, the administrator first generates a private key and a certificate request, then uses the certificate authority private key to sign the certificate request, finally generates a certificate. This certificate is the public key for the server/client key pair.</p>
+<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server has a key pair that the certificate authority signed when the clients are talking to the server. A man-in-the-middle attacker does not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
+<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that the certificate authority signed. The common name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/zh-CN/next/security-overview">Overview</a>).</p>
+<h2><a class="anchor" aria-hidden="true" id="create-tls-certificates"></a><a href="#create-tls-certificates" 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 [...]
 <p>Creating TLS certificates for Pulsar involves creating a <a href="#certificate-authority">certificate authority</a> (CA), <a href="#server-certificate">server certificate</a>, and <a href="#client-certificate">client certificate</a>.</p>
-<p>The following guide is an abridged guide to setting up a certificate authority. For a more detailed guide, there are plenty of resource on the internet. We recommend the <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a>.</p>
+<p>Follow the guide below to set up a certificate authority. You can also refer to plenty of resources on the internet for more details. We recommend <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a> for your detailed reference.</p>
 <h3><a class="anchor" aria-hidden="true" id="证书颁授"></a><a href="#证书颁授" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>The first step is to create the certificate for the CA. The CA will be used to sign both the broker and client certificates, in order to ensure that each party will trust the others. The CA should be stored in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p>
-<p>Create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the files and directories needed for the CA.</p>
+<ol>
+<li><p>Create the certificate for the CA. You can use CA to sign both the broker and client certificates. This ensures that each party will trust the others. You should store CA in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p></li>
+<li><p>Entering the follwing command to create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the f [...]
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir my-ca
 $ <span class="hljs-built_in">cd</span> my-ca
 $ wget https://raw.githubusercontent.com/apache/pulsar/master/site2/website/static/examples/openssl.cnf
 $ <span class="hljs-built_in">export</span> CA_HOME=$(<span class="hljs-built_in">pwd</span>)
 </code></pre>
-<p>Create the necessary directories, keys and certs.</p>
+<ol>
+<li>Enter the commands below to create the necessary directories, keys and certs.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir certs crl newcerts private
 $ chmod 700 private/
 $ touch index.txt
@@ -111,37 +115,45 @@ $ openssl req -config openssl.cnf -key private/ca.key.pem \
       -out certs/ca.cert.pem
 $ chmod 444 certs/ca.cert.pem
 </code></pre>
-<p>After answering the question prompts, this will store CA-related files in the <code>./my-ca</code> directory. Within that directory:</p>
+<ol>
+<li>After you answer the question prompts, CA-related files are stored in the <code>./my-ca</code> directory. Within that directory:</li>
+</ol>
 <ul>
-<li><code>certs/ca.cert.pem</code> is the public certificate. It is meant to be distributed to all parties involved.</li>
-<li><code>private/ca.key.pem</code> is the private key. This is only needed when signing a new certificate for either broker or clients and it must be safely guarded.</li>
+<li><code>certs/ca.cert.pem</code> is the public certificate. This public certificates is meant to be distributed to all parties involved.</li>
+<li><code>private/ca.key.pem</code> is the private key. You only need it when you are signing a new certificate for either broker or clients and you must safely guard this private key.</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="服务器端证书"></a><a href="#服务器端证书" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
-<p>Once a CA certificate has been created, you can create certificate requests and sign them with the CA.</p>
-<p>The following commands will ask you a few questions and then create the certificates. When asked for the common name, you should match the hostname of the broker. You could also use a wildcard to match a group of broker hostnames, for example <code>*.broker.usw.example.com</code>. This ensures that the same certificate can be reused on multiple machines.</p>
+<p>Once you have created a CA certificate, you can create certificate requests and sign them with the CA.</p>
+<p>The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, <code>*.broker.usw.example.com</code>. This ensures that multiple machines can reuse the same certificate.</p>
 <blockquote>
 <h4><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.25c [...]
-<p>Sometimes it is not possible or makes no sense to match the hostname, such as when the brokers are created with random hostnames, or you plan to connect to the hosts via their IP. In this case, the client should be configured to disable TLS hostname verification. For more details, see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
+<p>Sometimes matching the hostname is not possible or makes no sense, such as when you creat the brokers with random hostnames, or you plan to connect to the hosts via their IP. In these cases, you should configure the client to disable TLS hostname verification. For more details, you can see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
 </blockquote>
-<p>First generate the key.</p>
+<ol>
+<li>Enter the command below to generate the key.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl genrsa -out broker.key.pem 2048
 </code></pre>
-<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so convert it.</p>
+<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so enter the following command to convert it.</p>
 <pre><code class="hljs css language-bash">$ openssl pkcs8 -topk8 -inform PEM -outform PEM \
       -<span class="hljs-keyword">in</span> broker.key.pem -out broker.key-pk8.pem -nocrypt
 </code></pre>
-<p>Generate the certificate request...</p>
+<ol>
+<li>Enter the follwing command to generate the certificate request.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl req -config openssl.cnf \
       -key broker.key.pem -new -sha256 -out broker.csr.pem
 </code></pre>
-<p>... and sign it with the certificate authority.</p>
+<ol>
+<li>Sign it with the certificate authority by entering the command below.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl ca -config openssl.cnf -extensions server_cert \
       -days 1000 -notext -md sha256 \
       -<span class="hljs-keyword">in</span> broker.csr.pem -out broker.cert.pem
 </code></pre>
-<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which can be used along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
+<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which you can use along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
 <h2><a class="anchor" aria-hidden="true" id="broker配置"></a><a href="#broker配置" 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>To configure a Pulsar <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you'll need to make some changes to <code>broker.conf</code>, which is located in the <code>conf</code> directory of your <a href="/docs/zh-CN/next/standalone">Pulsar installation</a>.</p>
+<p>To configure a Pulsar <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you need to make some changes to <code>broker.conf</code>, which locates in the <code>conf</code> directory of your <a href="/docs/zh-CN/next/standalone">Pulsar installation</a>.</p>
 <p>Add these values to the configuration file (substituting the appropriate certificate paths where necessary):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsEnabled</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -149,18 +161,18 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <blockquote>
-<p>A full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/zh-CN/next/reference-configuration#broker">Broker Configuration</a></p>
+<p>You can find a full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, in <a href="/docs/zh-CN/next/reference-configuration#broker">Broker Configuration</a></p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="tls-protocol-version-and-cipher"></a><a href="#tls-protocol-version-and-cipher" 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 [...]
-<p>The broker (and proxy) can be configured to require specific TLS protocol versions and ciphers for TLS negiotation. This can be used to stop clients from requesting downgraded TLS protocol versions or ciphers which may have weaknesses.</p>
-<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider being used. Pulsar uses OpenSSL if available, but if not defaults back to the JDK implementation.</p>
+<p>You can configure the broker (and proxy) to require specific TLS protocol versions and ciphers for TLS negiotation. You can use the TLS protocol versions and ciphers to stop clients from requesting downgraded TLS protocol versions or ciphers that may have weaknesses.</p>
+<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider that you are using. Pulsar uses OpenSSL if the OpenSSL is available, but if the OpenSSL is not available, Pulsar defaults back to the JDK implementation.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsProtocols</span>=<span class="hljs-string">TLSv1.2,TLSv1.1</span>
 <span class="hljs-attr">tlsCiphers</span>=<span class="hljs-string">TLS_DH_RSA_WITH_AES_256_GCM_SHA384,TLS_DH_RSA_WITH_AES_256_CBC_SHA</span>
 </code></pre>
-<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. A list of supported cipher can be acquired from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
-<p>For JDK 8, a list of supported values can be obtained from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
+<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. You can acquire a list of supported cipher from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
+<p>For JDK 8, you can obtain a list of supported values from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
 <h2><a class="anchor" aria-hidden="true" id="proxy配置"></a><a href="#proxy配置" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy to be able to connect to brokers.</p>
+<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy connecting to brokers.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># For clients connecting to the proxy</span>
 <span class="hljs-attr">tlsEnabledInProxy</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -172,16 +184,16 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">brokerClientTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <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.09 [...]
-<p>When TLS transport encryption is enabled, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
-<p>As the server certificate you generated above doesn't belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
+<p>When you enable the TLS transport encryption, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
+<p>As the server certificate that you generated above does not belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
 <h4><a class="anchor" aria-hidden="true" id="hostname-verification"></a><a href="#hostname-verification" 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 [...]
-<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which it is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
-<p>Moreover, as the administrator has full control of the certificate authority, it is unlikely that a bad actor would be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables it by default, and should always be disabled in production environments. As long as &quot;allowInsecureConnection&quot; is disabled, a man-in-the-middle attack would require that  [...]
+<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which the hostname is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
+<p>Moreover, as the administrator has full control of the certificate authority, a bad actor is unlikely to be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables &quot;allowInsecureConnection&quot; by default, and you should always disable &quot;allowInsecureConnection&quot; in production environments. As long as you disable &quot;allowInsecureConnec [...]
 <p>One scenario where you may want to enable hostname verification is where you have multiple proxy nodes behind a VIP, and the VIP has a DNS record, for example, pulsar.mycompany.com. In this case, you can generate a TLS cert with pulsar.mycompany.com as the &quot;CommonName,&quot; and then enable hostname verification on the client.</p>
-<p>The examples below show hostname verification being disabled for the Java client, though you can be omit this as the client disables it by default. C++/python clients do now allow this to be configured at the moment.</p>
+<p>The examples below show hostname verification being disabled for the Java client, though you can omit this as the client disables the hostname verification by default. C++/python clients do now allow configuring this at the moment.</p>
 <h3><a class="anchor" aria-hidden="true" id="命令行工具"></a><a href="#命令行工具" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p><a href="/docs/zh-CN/next/reference-cli-tools">Command-line tools</a> like <a href="reference-cli-tools#pulsar-admin"><code>pulsar-admin</code></a>, <a href="reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You'll need to add the following parameters to that file to use TLS transport with Pulsar's CLI tools:</p>
+<p>You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-attr">brokerServiceUrl</span>=<span class="hljs-string">pulsar+ssl://broker.example.com:6651/</span>
 <span class="hljs-attr">useTls</span>=<span class="hljs-string">true</span>
@@ -217,7 +229,7 @@ config.setTlsAllowInsecureConnection(<span class="hljs-literal">false</span>); <
 
 pulsar::<span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://broker.example.com:6651/"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/security-overview"><span class="arrow-prev">← </span><span>概述</span></a><a class="docs-next button" href="/docs/zh-CN/next/security-tls-authentication"><span>使用TLS进行认证</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-概述">TLS 概述</a></li><li><a href="#tls-概念">TLS 概念</a></li><li><a href="#创建tls证书">创建TLS证书</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/security-overview"><span class="arrow-prev">← </span><span>概述</span></a><a class="docs-next button" href="/docs/zh-CN/next/security-tls-authentication"><span>使用TLS进行认证</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS overview</a></li><li><a href="#tls-概念">TLS 概念</a></li><li><a href="#create- [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/security-tls-transport/index.html b/content/docs/zh-CN/next/security-tls-transport/index.html
index d1f2d64..d3e605e 100644
--- a/content/docs/zh-CN/next/security-tls-transport/index.html
+++ b/content/docs/zh-CN/next/security-tls-transport/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>使用TLS进行传输加密 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS 概述"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="使用TLS进行传输加密 · Apache Pulsar"/><meta property="og:type" cont [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>使用TLS进行传输加密 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="## TLS overview"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="使用TLS进行传输加密 · Apache Pulsar"/><meta property="og:type [...]
               (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)
@@ -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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -74,32 +74,36 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">使用TLS进行传输加密</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-概述"></a><a href="#tls-概述" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria [...]
-<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text, which means that all data is sent in the clear. TLS can be used to encrypt this traffic so that it cannot be snooped by a man-in-the-middle attacker.</p>
-<p>TLS can be configured for both encryption and authentication. You may configure just TLS transport encryption, which is covered in this guide. TLS authentication is covered <a href="/docs/zh-CN/next/security-tls-authentication">elsewhere</a>. Alternatively, you can use <a href="/docs/zh-CN/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://crowdin.com/project/apache-pulsar/zh-CN" target="_blank" rel="noreferrer noopener">Translate</a><h1 class="postHeaderTitle">使用TLS进行传输加密</h1></header><article><div><span><h2><a class="anchor" aria-hidden="true" id="tls-overview"></a><a href="#tls-overview" aria-hidden="true" class="hash-link"><svg class="hash-lin [...]
+<p>By default, Apache Pulsar clients communicate with the Apache Pulsar service in plain text. This means that all data is sent in the clear. You can use TLS to encrypt this traffic to protect the traffic from the snooping of a man-in-the-middle attacker.</p>
+<p>You can also configure TLS for both encryption and authentication. Use this guide to configure just TLS transport encryption and refer to <a href="/docs/zh-CN/next/security-tls-authentication">here</a> for TLS authentication configuration. Alternatively, you can use <a href="/docs/zh-CN/next/security-athenz">another authentication mechanism</a> on top of TLS transport encryption.</p>
 <blockquote>
-<p>Note that enabling TLS may have a performance impact due to encryption overhead.</p>
+<p>Note that enabling TLS may impact the performance due to encryption overhead.</p>
 </blockquote>
 <h2><a class="anchor" aria-hidden="true" id="tls-概念"></a><a href="#tls-概念" 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. [...]
-<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Encryption is performed using key pairs consisting of a public key and a private key. Messages are encrypted with the public key and can be decrypted with the private key.</p>
+<p>TLS is a form of <a href="https://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a>. Using key pairs consisting of a public key and a private key can perform the encryption. The public key encrpyts the messages and the private key decrypts the messages.</p>
 <p>To use TLS transport encryption, you need two kinds of key pairs, <strong>server key pairs</strong> and a <strong>certificate authority</strong>.</p>
-<p>A third kind of key pair, <strong>client key pairs</strong>, are used for <a href="/docs/zh-CN/next/security-tls-authentication">client authentication</a>.</p>
-<p>The <strong>certificate authority</strong> private key should be stored in a very secure location (a fully encrypted, disconnected, air gapped computer). The certificate authority public key, the <strong>trust cert</strong>, can be freely shared.</p>
-<p>For both client and server key pairs, the administrator first generates a private key and a certificate request. Then the certificate authority private key is used to sign the certificate request, generating a certificate. This certificate is the public key for the server/client key pair.</p>
-<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server they are talking to has a key pair that was signed by the certificate authority. A man-in-the-middle attacker would not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
-<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that was signed by the certificate authority. The Common Name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/zh-CN/next/security-overview">Overview</a>).</p>
-<h2><a class="anchor" aria-hidden="true" id="创建tls证书"></a><a href="#创建tls证书" 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>You can use a third kind of key pair, <strong>client key pairs</strong>, for <a href="/docs/zh-CN/next/security-tls-authentication">client authentication</a>.</p>
+<p>You should store the <strong>certificate authority</strong> private key in a very secure location (a fully encrypted, disconnected, air gapped computer). As for the certificate authority public key, the <strong>trust cert</strong>, you can freely shared it.</p>
+<p>For both client and server key pairs, the administrator first generates a private key and a certificate request, then uses the certificate authority private key to sign the certificate request, finally generates a certificate. This certificate is the public key for the server/client key pair.</p>
+<p>For TLS transport encryption, the clients can use the <strong>trust cert</strong> to verify that the server has a key pair that the certificate authority signed when the clients are talking to the server. A man-in-the-middle attacker does not have access to the certificate authority, so they couldn't create a server with such a key pair.</p>
+<p>For TLS authentication, the server uses the <strong>trust cert</strong> to verify that the client has a key pair that the certificate authority signed. The common name of the <strong>client cert</strong> is then used as the client's role token (see <a href="/docs/zh-CN/next/security-overview">Overview</a>).</p>
+<h2><a class="anchor" aria-hidden="true" id="create-tls-certificates"></a><a href="#create-tls-certificates" 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 [...]
 <p>Creating TLS certificates for Pulsar involves creating a <a href="#certificate-authority">certificate authority</a> (CA), <a href="#server-certificate">server certificate</a>, and <a href="#client-certificate">client certificate</a>.</p>
-<p>The following guide is an abridged guide to setting up a certificate authority. For a more detailed guide, there are plenty of resource on the internet. We recommend the <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a>.</p>
+<p>Follow the guide below to set up a certificate authority. You can also refer to plenty of resources on the internet for more details. We recommend <a href="https://jamielinux.com/docs/openssl-certificate-authority/index.html">this guide</a> for your detailed reference.</p>
 <h3><a class="anchor" aria-hidden="true" id="证书颁授"></a><a href="#证书颁授" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
-<p>The first step is to create the certificate for the CA. The CA will be used to sign both the broker and client certificates, in order to ensure that each party will trust the others. The CA should be stored in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p>
-<p>Create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the files and directories needed for the CA.</p>
+<ol>
+<li><p>Create the certificate for the CA. You can use CA to sign both the broker and client certificates. This ensures that each party will trust the others. You should store CA in a very secure location (ideally completely disconnected from networks, air gapped, and fully encrypted).</p></li>
+<li><p>Entering the follwing command to create a directory for your CA, and place <a href="https://github.com/apache/pulsar/tree/master/site2/website/static/examples/openssl.cnf">this openssl configuration file</a> in the directory. You may want to modify the default answers for company name and department in the configuration file. Export the location of the CA directory to the environment variable, CA_HOME. The configuration file uses this environment variable to find the rest of the f [...]
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir my-ca
 $ <span class="hljs-built_in">cd</span> my-ca
 $ wget https://raw.githubusercontent.com/apache/pulsar/master/site2/website/static/examples/openssl.cnf
 $ <span class="hljs-built_in">export</span> CA_HOME=$(<span class="hljs-built_in">pwd</span>)
 </code></pre>
-<p>Create the necessary directories, keys and certs.</p>
+<ol>
+<li>Enter the commands below to create the necessary directories, keys and certs.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ mkdir certs crl newcerts private
 $ chmod 700 private/
 $ touch index.txt
@@ -111,37 +115,45 @@ $ openssl req -config openssl.cnf -key private/ca.key.pem \
       -out certs/ca.cert.pem
 $ chmod 444 certs/ca.cert.pem
 </code></pre>
-<p>After answering the question prompts, this will store CA-related files in the <code>./my-ca</code> directory. Within that directory:</p>
+<ol>
+<li>After you answer the question prompts, CA-related files are stored in the <code>./my-ca</code> directory. Within that directory:</li>
+</ol>
 <ul>
-<li><code>certs/ca.cert.pem</code> is the public certificate. It is meant to be distributed to all parties involved.</li>
-<li><code>private/ca.key.pem</code> is the private key. This is only needed when signing a new certificate for either broker or clients and it must be safely guarded.</li>
+<li><code>certs/ca.cert.pem</code> is the public certificate. This public certificates is meant to be distributed to all parties involved.</li>
+<li><code>private/ca.key.pem</code> is the private key. You only need it when you are signing a new certificate for either broker or clients and you must safely guard this private key.</li>
 </ul>
 <h3><a class="anchor" aria-hidden="true" id="服务器端证书"></a><a href="#服务器端证书" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
-<p>Once a CA certificate has been created, you can create certificate requests and sign them with the CA.</p>
-<p>The following commands will ask you a few questions and then create the certificates. When asked for the common name, you should match the hostname of the broker. You could also use a wildcard to match a group of broker hostnames, for example <code>*.broker.usw.example.com</code>. This ensures that the same certificate can be reused on multiple machines.</p>
+<p>Once you have created a CA certificate, you can create certificate requests and sign them with the CA.</p>
+<p>The following commands ask you a few questions and then create the certificates. When you are asked for the common name, you should match the hostname of the broker. You can also use a wildcard to match a group of broker hostnames, for example, <code>*.broker.usw.example.com</code>. This ensures that multiple machines can reuse the same certificate.</p>
 <blockquote>
 <h4><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.25c [...]
-<p>Sometimes it is not possible or makes no sense to match the hostname, such as when the brokers are created with random hostnames, or you plan to connect to the hosts via their IP. In this case, the client should be configured to disable TLS hostname verification. For more details, see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
+<p>Sometimes matching the hostname is not possible or makes no sense, such as when you creat the brokers with random hostnames, or you plan to connect to the hosts via their IP. In these cases, you should configure the client to disable TLS hostname verification. For more details, you can see <a href="#hostname-verification">the host verification section in client configuration</a>.</p>
 </blockquote>
-<p>First generate the key.</p>
+<ol>
+<li>Enter the command below to generate the key.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl genrsa -out broker.key.pem 2048
 </code></pre>
-<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so convert it.</p>
+<p>The broker expects the key to be in <a href="https://en.wikipedia.org/wiki/PKCS_8">PKCS 8</a> format, so enter the following command to convert it.</p>
 <pre><code class="hljs css language-bash">$ openssl pkcs8 -topk8 -inform PEM -outform PEM \
       -<span class="hljs-keyword">in</span> broker.key.pem -out broker.key-pk8.pem -nocrypt
 </code></pre>
-<p>Generate the certificate request...</p>
+<ol>
+<li>Enter the follwing command to generate the certificate request.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl req -config openssl.cnf \
       -key broker.key.pem -new -sha256 -out broker.csr.pem
 </code></pre>
-<p>... and sign it with the certificate authority.</p>
+<ol>
+<li>Sign it with the certificate authority by entering the command below.</li>
+</ol>
 <pre><code class="hljs css language-bash">$ openssl ca -config openssl.cnf -extensions server_cert \
       -days 1000 -notext -md sha256 \
       -<span class="hljs-keyword">in</span> broker.csr.pem -out broker.cert.pem
 </code></pre>
-<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which can be used along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
+<p>At this point, you have a cert, <code>broker.cert.pem</code>, and a key, <code>broker.key-pk8.pem</code>, which you can use along with <code>ca.cert.pem</code> to configure TLS transport encryption for your broker and proxy nodes.</p>
 <h2><a class="anchor" aria-hidden="true" id="broker配置"></a><a href="#broker配置" 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>To configure a Pulsar <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you'll need to make some changes to <code>broker.conf</code>, which is located in the <code>conf</code> directory of your <a href="/docs/zh-CN/next/standalone">Pulsar installation</a>.</p>
+<p>To configure a Pulsar <a href="/docs/zh-CN/next/reference-terminology#broker">broker</a> to use TLS transport encryption, you need to make some changes to <code>broker.conf</code>, which locates in the <code>conf</code> directory of your <a href="/docs/zh-CN/next/standalone">Pulsar installation</a>.</p>
 <p>Add these values to the configuration file (substituting the appropriate certificate paths where necessary):</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsEnabled</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -149,18 +161,18 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">tlsTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <blockquote>
-<p>A full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, can be found in <a href="/docs/zh-CN/next/reference-configuration#broker">Broker Configuration</a></p>
+<p>You can find a full list of parameters available in the <code>conf/broker.conf</code> file, as well as the default values for those parameters, in <a href="/docs/zh-CN/next/reference-configuration#broker">Broker Configuration</a></p>
 </blockquote>
 <h3><a class="anchor" aria-hidden="true" id="tls-protocol-version-and-cipher"></a><a href="#tls-protocol-version-and-cipher" 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 [...]
-<p>The broker (and proxy) can be configured to require specific TLS protocol versions and ciphers for TLS negiotation. This can be used to stop clients from requesting downgraded TLS protocol versions or ciphers which may have weaknesses.</p>
-<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider being used. Pulsar uses OpenSSL if available, but if not defaults back to the JDK implementation.</p>
+<p>You can configure the broker (and proxy) to require specific TLS protocol versions and ciphers for TLS negiotation. You can use the TLS protocol versions and ciphers to stop clients from requesting downgraded TLS protocol versions or ciphers that may have weaknesses.</p>
+<p>Both the TLS protocol versions and cipher properties can take multiple values, separated by commas. The possible values for protocol version and ciphers depend on the TLS provider that you are using. Pulsar uses OpenSSL if the OpenSSL is available, but if the OpenSSL is not available, Pulsar defaults back to the JDK implementation.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">tlsProtocols</span>=<span class="hljs-string">TLSv1.2,TLSv1.1</span>
 <span class="hljs-attr">tlsCiphers</span>=<span class="hljs-string">TLS_DH_RSA_WITH_AES_256_GCM_SHA384,TLS_DH_RSA_WITH_AES_256_CBC_SHA</span>
 </code></pre>
-<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. A list of supported cipher can be acquired from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
-<p>For JDK 8, a list of supported values can be obtained from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
+<p>OpenSSL currently supports <code>SSL2</code>, <code>SSL3</code>, <code>TLSv1</code>, <code>TLSv1.1</code> and <code>TLSv1.2</code> for the protocol version. You can acquire a list of supported cipher from the openssl ciphers command, i.e. <code>openssl ciphers -tls_v2</code>.</p>
+<p>For JDK 8, you can obtain a list of supported values from the documentation: - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext">TLS protocol</a> - <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#ciphersuites">Ciphers</a></p>
 <h2><a class="anchor" aria-hidden="true" id="proxy配置"></a><a href="#proxy配置" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy to be able to connect to brokers.</p>
+<p>Proxies need to configure TLS in two directions, for clients connecting to the proxy, and for the proxy connecting to brokers.</p>
 <pre><code class="hljs css language-properties"><span class="hljs-comment"># For clients connecting to the proxy</span>
 <span class="hljs-attr">tlsEnabledInProxy</span>=<span class="hljs-string">true</span>
 <span class="hljs-attr">tlsCertificateFilePath</span>=<span class="hljs-string">/path/to/broker.cert.pem</span>
@@ -172,16 +184,16 @@ $ chmod 444 certs/ca.cert.pem
 <span class="hljs-attr">brokerClientTrustCertsFilePath</span>=<span class="hljs-string">/path/to/ca.cert.pem</span>
 </code></pre>
 <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.09 [...]
-<p>When TLS transport encryption is enabled, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
-<p>As the server certificate you generated above doesn't belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
+<p>When you enable the TLS transport encryption, you need to configure the client to use <code>https://</code> and port 8443 for the web service URL, and <code>pulsar+ssl://</code> and port 6651 for the broker service URL.</p>
+<p>As the server certificate that you generated above does not belong to any of the default trust chains, you also need to either specify the path the <strong>trust cert</strong> (recommended), or tell the client to allow untrusted server certs.</p>
 <h4><a class="anchor" aria-hidden="true" id="hostname-verification"></a><a href="#hostname-verification" 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 [...]
-<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which it is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
-<p>Moreover, as the administrator has full control of the certificate authority, it is unlikely that a bad actor would be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables it by default, and should always be disabled in production environments. As long as &quot;allowInsecureConnection&quot; is disabled, a man-in-the-middle attack would require that  [...]
+<p>Hostname verification is a TLS security feature whereby a client can refuse to connect to a server if the &quot;CommonName&quot; does not match the hostname to which the hostname is connecting. By default, Pulsar clients disable hostname verification, as it requires that each broker has a DNS record and a unique cert.</p>
+<p>Moreover, as the administrator has full control of the certificate authority, a bad actor is unlikely to be able to pull off a man-in-the-middle attack. &quot;allowInsecureConnection&quot; allows the client to connect to servers whose cert has not been signed by an approved CA. The client disables &quot;allowInsecureConnection&quot; by default, and you should always disable &quot;allowInsecureConnection&quot; in production environments. As long as you disable &quot;allowInsecureConnec [...]
 <p>One scenario where you may want to enable hostname verification is where you have multiple proxy nodes behind a VIP, and the VIP has a DNS record, for example, pulsar.mycompany.com. In this case, you can generate a TLS cert with pulsar.mycompany.com as the &quot;CommonName,&quot; and then enable hostname verification on the client.</p>
-<p>The examples below show hostname verification being disabled for the Java client, though you can be omit this as the client disables it by default. C++/python clients do now allow this to be configured at the moment.</p>
+<p>The examples below show hostname verification being disabled for the Java client, though you can omit this as the client disables the hostname verification by default. C++/python clients do now allow configuring this at the moment.</p>
 <h3><a class="anchor" aria-hidden="true" id="命令行工具"></a><a href="#命令行工具" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p><a href="/docs/zh-CN/next/reference-cli-tools">Command-line tools</a> like <a href="reference-cli-tools#pulsar-admin"><code>pulsar-admin</code></a>, <a href="reference-cli-tools#pulsar-perf"><code>pulsar-perf</code></a>, and <a href="reference-cli-tools#pulsar-client"><code>pulsar-client</code></a> use the <code>conf/client.conf</code> config file in a Pulsar installation.</p>
-<p>You'll need to add the following parameters to that file to use TLS transport with Pulsar's CLI tools:</p>
+<p>You need to add the following parameters to that file to use TLS transport with the CLI tools of Pulsar:</p>
 <pre><code class="hljs css language-properties"><span class="hljs-attr">webServiceUrl</span>=<span class="hljs-string">https://broker.example.com:8443/</span>
 <span class="hljs-attr">brokerServiceUrl</span>=<span class="hljs-string">pulsar+ssl://broker.example.com:6651/</span>
 <span class="hljs-attr">useTls</span>=<span class="hljs-string">true</span>
@@ -217,7 +229,7 @@ config.setTlsAllowInsecureConnection(<span class="hljs-literal">false</span>); <
 
 pulsar::<span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://broker.example.com:6651/"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/security-overview"><span class="arrow-prev">← </span><span>概述</span></a><a class="docs-next button" href="/docs/zh-CN/next/security-tls-authentication"><span>使用TLS进行认证</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-概述">TLS 概述</a></li><li><a href="#tls-概念">TLS 概念</a></li><li><a href="#创建tls证书">创建TLS证书</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/security-overview"><span class="arrow-prev">← </span><span>概述</span></a><a class="docs-next button" href="/docs/zh-CN/next/security-tls-authentication"><span>使用TLS进行认证</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#tls-overview">TLS overview</a></li><li><a href="#tls-概念">TLS 概念</a></li><li><a href="#create- [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/security-token-admin.html b/content/docs/zh-CN/next/security-token-admin.html
index 70ebe06..0325733 100644
--- a/content/docs/zh-CN/next/security-token-admin.html
+++ b/content/docs/zh-CN/next/security-token-admin.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-token-admin/index.html b/content/docs/zh-CN/next/security-token-admin/index.html
index 70ebe06..0325733 100644
--- a/content/docs/zh-CN/next/security-token-admin/index.html
+++ b/content/docs/zh-CN/next/security-token-admin/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-token-client.html b/content/docs/zh-CN/next/security-token-client.html
index 940698d..f823535 100644
--- a/content/docs/zh-CN/next/security-token-client.html
+++ b/content/docs/zh-CN/next/security-token-client.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/security-token-client/index.html b/content/docs/zh-CN/next/security-token-client/index.html
index 940698d..f823535 100644
--- a/content/docs/zh-CN/next/security-token-client/index.html
+++ b/content/docs/zh-CN/next/security-token-client/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/sql-deployment-configurations.html b/content/docs/zh-CN/next/sql-deployment-configurations.html
index 25b9b2b..85067d4 100644
--- a/content/docs/zh-CN/next/sql-deployment-configurations.html
+++ b/content/docs/zh-CN/next/sql-deployment-configurations.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/sql-deployment-configurations/index.html b/content/docs/zh-CN/next/sql-deployment-configurations/index.html
index 25b9b2b..85067d4 100644
--- a/content/docs/zh-CN/next/sql-deployment-configurations/index.html
+++ b/content/docs/zh-CN/next/sql-deployment-configurations/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/sql-getting-started.html b/content/docs/zh-CN/next/sql-getting-started.html
index bb5e83c..43b0eff 100644
--- a/content/docs/zh-CN/next/sql-getting-started.html
+++ b/content/docs/zh-CN/next/sql-getting-started.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/sql-getting-started/index.html b/content/docs/zh-CN/next/sql-getting-started/index.html
index bb5e83c..43b0eff 100644
--- a/content/docs/zh-CN/next/sql-getting-started/index.html
+++ b/content/docs/zh-CN/next/sql-getting-started/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/sql-overview.html b/content/docs/zh-CN/next/sql-overview.html
index 44b7da4..8f96a10 100644
--- a/content/docs/zh-CN/next/sql-overview.html
+++ b/content/docs/zh-CN/next/sql-overview.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/sql-overview/index.html b/content/docs/zh-CN/next/sql-overview/index.html
index 44b7da4..8f96a10 100644
--- a/content/docs/zh-CN/next/sql-overview/index.html
+++ b/content/docs/zh-CN/next/sql-overview/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/standalone-docker.html b/content/docs/zh-CN/next/standalone-docker.html
index bedb837..f043706 100644
--- a/content/docs/zh-CN/next/standalone-docker.html
+++ b/content/docs/zh-CN/next/standalone-docker.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/standalone-docker/index.html b/content/docs/zh-CN/next/standalone-docker/index.html
index bedb837..f043706 100644
--- a/content/docs/zh-CN/next/standalone-docker/index.html
+++ b/content/docs/zh-CN/next/standalone-docker/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/standalone.html b/content/docs/zh-CN/next/standalone.html
index c2884af..da0a96f 100644
--- a/content/docs/zh-CN/next/standalone.html
+++ b/content/docs/zh-CN/next/standalone.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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/docs/zh-CN/next/standalone/index.html b/content/docs/zh-CN/next/standalone/index.html
index c2884af..da0a96f 100644
--- a/content/docs/zh-CN/next/standalone/index.html
+++ b/content/docs/zh-CN/next/standalone/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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
+      </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="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/content/swagger/2.5.0-SNAPSHOT/swagger.json b/content/swagger/2.5.0-SNAPSHOT/swagger.json
index 9b17c53..094e049 100644
--- a/content/swagger/2.5.0-SNAPSHOT/swagger.json
+++ b/content/swagger/2.5.0-SNAPSHOT/swagger.json
@@ -8866,6 +8866,21 @@
           "type" : "number",
           "format" : "double"
         },
+        "underLoaded" : {
+          "type" : "boolean"
+        },
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
+        },
+        "memory" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "bandwidthOut" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
@@ -8877,30 +8892,15 @@
         "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "memory" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
         "directMemory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthIn" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
-        "bandwidthOut" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
         "lastUpdate" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
+        "bandwidthIn" : {
+          "$ref" : "#/definitions/ResourceUsage"
         }
       }
     },
@@ -9068,15 +9068,15 @@
           "type" : "number",
           "format" : "double"
         },
-        "producerName" : {
-          "type" : "string"
-        },
         "connectedSince" : {
           "type" : "string"
         },
         "clientVersion" : {
           "type" : "string"
         },
+        "producerName" : {
+          "type" : "string"
+        },
         "address" : {
           "type" : "string"
         }
@@ -9739,15 +9739,15 @@
             "type" : "string"
           }
         },
-        "producerName" : {
-          "type" : "string"
-        },
         "connectedSince" : {
           "type" : "string"
         },
         "clientVersion" : {
           "type" : "string"
         },
+        "producerName" : {
+          "type" : "string"
+        },
         "address" : {
           "type" : "string"
         }
@@ -9847,11 +9847,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "availableResource" : {
-          "$ref" : "#/definitions/ResourceDescription"
-        },
         "resourceId" : {
           "type" : "string"
+        },
+        "availableResource" : {
+          "$ref" : "#/definitions/ResourceDescription"
         }
       }
     },
diff --git a/content/swagger/2.5.0-SNAPSHOT/swaggerfunctions.json b/content/swagger/2.5.0-SNAPSHOT/swaggerfunctions.json
index 494d891..3f0f4f9 100644
--- a/content/swagger/2.5.0-SNAPSHOT/swaggerfunctions.json
+++ b/content/swagger/2.5.0-SNAPSHOT/swaggerfunctions.json
@@ -1359,20 +1359,21 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "topicName" : {
-          "type" : "string"
-        },
-        "producerName" : {
-          "type" : "string"
-        },
-        "replicatedFrom" : {
-          "type" : "string"
+        "messageId" : {
+          "$ref" : "#/definitions/MessageId"
         },
         "sequenceId" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "keyBytes" : {
+        "encryptionCtx" : {
+          "$ref" : "#/definitions/EncryptionContext"
+        },
+        "redeliveryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "schemaVersion" : {
           "type" : "array",
           "items" : {
             "type" : "string",
@@ -1386,23 +1387,22 @@
             "format" : "byte"
           }
         },
-        "encryptionCtx" : {
-          "$ref" : "#/definitions/EncryptionContext"
-        },
-        "messageId" : {
-          "$ref" : "#/definitions/MessageId"
-        },
-        "redeliveryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "schemaVersion" : {
+        "keyBytes" : {
           "type" : "array",
           "items" : {
             "type" : "string",
             "format" : "byte"
           }
         },
+        "topicName" : {
+          "type" : "string"
+        },
+        "replicatedFrom" : {
+          "type" : "string"
+        },
+        "producerName" : {
+          "type" : "string"
+        },
         "data" : {
           "type" : "array",
           "items" : {
diff --git a/content/swagger/swagger.json b/content/swagger/swagger.json
index 9b17c53..094e049 100644
--- a/content/swagger/swagger.json
+++ b/content/swagger/swagger.json
@@ -8866,6 +8866,21 @@
           "type" : "number",
           "format" : "double"
         },
+        "underLoaded" : {
+          "type" : "boolean"
+        },
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
+        },
+        "memory" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
+        "bandwidthOut" : {
+          "$ref" : "#/definitions/ResourceUsage"
+        },
         "msgThroughputIn" : {
           "type" : "number",
           "format" : "double"
@@ -8877,30 +8892,15 @@
         "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "memory" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
         "directMemory" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
-        "bandwidthIn" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
-        "bandwidthOut" : {
-          "$ref" : "#/definitions/ResourceUsage"
-        },
         "lastUpdate" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
+        "bandwidthIn" : {
+          "$ref" : "#/definitions/ResourceUsage"
         }
       }
     },
@@ -9068,15 +9068,15 @@
           "type" : "number",
           "format" : "double"
         },
-        "producerName" : {
-          "type" : "string"
-        },
         "connectedSince" : {
           "type" : "string"
         },
         "clientVersion" : {
           "type" : "string"
         },
+        "producerName" : {
+          "type" : "string"
+        },
         "address" : {
           "type" : "string"
         }
@@ -9739,15 +9739,15 @@
             "type" : "string"
           }
         },
-        "producerName" : {
-          "type" : "string"
-        },
         "connectedSince" : {
           "type" : "string"
         },
         "clientVersion" : {
           "type" : "string"
         },
+        "producerName" : {
+          "type" : "string"
+        },
         "address" : {
           "type" : "string"
         }
@@ -9847,11 +9847,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "availableResource" : {
-          "$ref" : "#/definitions/ResourceDescription"
-        },
         "resourceId" : {
           "type" : "string"
+        },
+        "availableResource" : {
+          "$ref" : "#/definitions/ResourceDescription"
         }
       }
     },
diff --git a/content/swagger/swaggerfunctions.json b/content/swagger/swaggerfunctions.json
index 494d891..3f0f4f9 100644
--- a/content/swagger/swaggerfunctions.json
+++ b/content/swagger/swaggerfunctions.json
@@ -1359,20 +1359,21 @@
           "type" : "integer",
           "format" : "int64"
         },
-        "topicName" : {
-          "type" : "string"
-        },
-        "producerName" : {
-          "type" : "string"
-        },
-        "replicatedFrom" : {
-          "type" : "string"
+        "messageId" : {
+          "$ref" : "#/definitions/MessageId"
         },
         "sequenceId" : {
           "type" : "integer",
           "format" : "int64"
         },
-        "keyBytes" : {
+        "encryptionCtx" : {
+          "$ref" : "#/definitions/EncryptionContext"
+        },
+        "redeliveryCount" : {
+          "type" : "integer",
+          "format" : "int32"
+        },
+        "schemaVersion" : {
           "type" : "array",
           "items" : {
             "type" : "string",
@@ -1386,23 +1387,22 @@
             "format" : "byte"
           }
         },
-        "encryptionCtx" : {
-          "$ref" : "#/definitions/EncryptionContext"
-        },
-        "messageId" : {
-          "$ref" : "#/definitions/MessageId"
-        },
-        "redeliveryCount" : {
-          "type" : "integer",
-          "format" : "int32"
-        },
-        "schemaVersion" : {
+        "keyBytes" : {
           "type" : "array",
           "items" : {
             "type" : "string",
             "format" : "byte"
           }
         },
+        "topicName" : {
+          "type" : "string"
+        },
+        "replicatedFrom" : {
+          "type" : "string"
+        },
+        "producerName" : {
+          "type" : "string"
+        },
         "data" : {
           "type" : "array",
           "items" : {