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

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

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 a376959  Updated site at revision 20fbb5d
a376959 is described below

commit a3769591aed204f3f0604b320f0eed6d0c5d2474
Author: jenkins <bu...@apache.org>
AuthorDate: Mon Dec 10 09:04:06 2018 +0000

    Updated site at revision 20fbb5d
---
 .../admin-api-persistent-topics.html               | 20 +++++------
 .../admin-api-persistent-topics/index.html         | 20 +++++------
 .../2.1.0-incubating/concepts-authentication.html  |  6 ++--
 .../concepts-authentication/index.html             |  6 ++--
 .../docs/zh-CN/2.1.0-incubating/functions-api.html | 42 +++++++++++-----------
 .../2.1.0-incubating/functions-api/index.html      | 42 +++++++++++-----------
 .../admin-api-persistent-topics.html               | 20 +++++------
 .../admin-api-persistent-topics/index.html         | 20 +++++------
 .../2.1.1-incubating/concepts-authentication.html  |  6 ++--
 .../concepts-authentication/index.html             |  6 ++--
 .../docs/zh-CN/2.1.1-incubating/functions-api.html | 42 +++++++++++-----------
 .../2.1.1-incubating/functions-api/index.html      | 42 +++++++++++-----------
 .../docs/zh-CN/admin-api-persistent-topics.html    | 20 +++++------
 .../zh-CN/admin-api-persistent-topics/index.html   | 20 +++++------
 content/docs/zh-CN/concepts-authentication.html    |  6 ++--
 .../docs/zh-CN/concepts-authentication/index.html  |  6 ++--
 content/docs/zh-CN/functions-api.html              | 42 +++++++++++-----------
 content/docs/zh-CN/functions-api/index.html        | 42 +++++++++++-----------
 .../zh-CN/next/admin-api-persistent-topics.html    | 20 +++++------
 .../next/admin-api-persistent-topics/index.html    | 20 +++++------
 .../docs/zh-CN/next/concepts-authentication.html   |  6 ++--
 .../zh-CN/next/concepts-authentication/index.html  |  6 ++--
 content/docs/zh-CN/next/functions-api.html         | 42 +++++++++++-----------
 content/docs/zh-CN/next/functions-api/index.html   | 42 +++++++++++-----------
 content/swagger/swagger.json                       | 32 ++++++++---------
 25 files changed, 288 insertions(+), 288 deletions(-)

diff --git a/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics.html b/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics.html
index 22bbc6c..4997a34 100644
--- a/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics.html
+++ b/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics.html
@@ -231,16 +231,16 @@ admin.persistentTopics().getStats(topic);
 <h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>It shows detailed statistics of a topic.</p>
 <ul>
-<li><p><strong>entriesAddedCounter</strong>: Messages published since this broker loaded this topic</p></li>
-<li><p><strong>numberOfEntries</strong>: Total number of messages being tracked</p></li>
-<li><p><strong>totalSize</strong>: Total storage size in bytes of all messages</p></li>
-<li><p><strong>currentLedgerEntries</strong>: Count of messages written to the ledger currently open for writing</p></li>
-<li><p><strong>currentLedgerSize</strong>: Size in bytes of messages written to ledger currently open for writing</p></li>
-<li><p><strong>lastLedgerCreatedTimestamp</strong>: time when last ledger was created</p></li>
-<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> time when last ledger was failed</p></li>
-<li><p><strong>waitingCursorsCount</strong>: How many cursors are &quot;caught up&quot; and waiting for a new message to be published</p></li>
-<li><p><strong>pendingAddEntriesCount</strong>: How many messages have (asynchronous) write requests we are waiting on completion</p></li>
-<li><p><strong>lastConfirmedEntry</strong>: The ledgerid:entryid of the last message successfully written. If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
+<li><p>** entriesAddedCounter **:从broker加载此topic以来发布的消息</p></li>
+<li><p><strong>numberOfEntries</strong>:被记录下来的消息总数</p></li>
+<li><p><strong>totalSize</strong>:所有消息以byte计算的存储总量</p></li>
+<li><p><strong>currentLedgerEntries</strong>:当前开放写的ledger中,写入的消息数量</p></li>
+<li><p><strong>currentLedgerSize</strong>:当前开放写的ledger,写入消息的byte数量</p></li>
+<li><p><strong>lastLedgerCreatedTimestamp</strong>:最后一个ledger创建的时间</p></li>
+<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
+<li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
+<li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
 <li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
 <li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
diff --git a/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics/index.html b/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics/index.html
index 22bbc6c..4997a34 100644
--- a/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/admin-api-persistent-topics/index.html
@@ -231,16 +231,16 @@ admin.persistentTopics().getStats(topic);
 <h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>It shows detailed statistics of a topic.</p>
 <ul>
-<li><p><strong>entriesAddedCounter</strong>: Messages published since this broker loaded this topic</p></li>
-<li><p><strong>numberOfEntries</strong>: Total number of messages being tracked</p></li>
-<li><p><strong>totalSize</strong>: Total storage size in bytes of all messages</p></li>
-<li><p><strong>currentLedgerEntries</strong>: Count of messages written to the ledger currently open for writing</p></li>
-<li><p><strong>currentLedgerSize</strong>: Size in bytes of messages written to ledger currently open for writing</p></li>
-<li><p><strong>lastLedgerCreatedTimestamp</strong>: time when last ledger was created</p></li>
-<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> time when last ledger was failed</p></li>
-<li><p><strong>waitingCursorsCount</strong>: How many cursors are &quot;caught up&quot; and waiting for a new message to be published</p></li>
-<li><p><strong>pendingAddEntriesCount</strong>: How many messages have (asynchronous) write requests we are waiting on completion</p></li>
-<li><p><strong>lastConfirmedEntry</strong>: The ledgerid:entryid of the last message successfully written. If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
+<li><p>** entriesAddedCounter **:从broker加载此topic以来发布的消息</p></li>
+<li><p><strong>numberOfEntries</strong>:被记录下来的消息总数</p></li>
+<li><p><strong>totalSize</strong>:所有消息以byte计算的存储总量</p></li>
+<li><p><strong>currentLedgerEntries</strong>:当前开放写的ledger中,写入的消息数量</p></li>
+<li><p><strong>currentLedgerSize</strong>:当前开放写的ledger,写入消息的byte数量</p></li>
+<li><p><strong>lastLedgerCreatedTimestamp</strong>:最后一个ledger创建的时间</p></li>
+<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
+<li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
+<li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
 <li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
 <li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-authentication.html b/content/docs/zh-CN/2.1.0-incubating/concepts-authentication.html
index 4a11f78..433aaf9 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-authentication.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-authentication.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>认证和授权 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.0-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
-"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="认证和授权 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.0-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant& [...]
+<!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="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.0-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="认证和授权 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.0-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant& [...]
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -47,7 +47,7 @@
                 };
               }
             });
-        </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>Pulsar支持可插入的 <a href="/docs/zh-CN/2.1.0-incubating/security-overview">认证</a>机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant</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">认证和授权</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/2.1.0-incubating/security-overview">认证</a>机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy"><span class="arrow-prev">← </span><span>多租户</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/concepts-topic-compaction"><span>消息压缩</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Sof [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
diff --git a/content/docs/zh-CN/2.1.0-incubating/concepts-authentication/index.html b/content/docs/zh-CN/2.1.0-incubating/concepts-authentication/index.html
index 4a11f78..433aaf9 100644
--- a/content/docs/zh-CN/2.1.0-incubating/concepts-authentication/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/concepts-authentication/index.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>认证和授权 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.0-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
-"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="认证和授权 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.0-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant& [...]
+<!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="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.0-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+"/><meta name="docsearch:version" content="2.1.0-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="认证和授权 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.0-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant& [...]
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -47,7 +47,7 @@
                 };
               }
             });
-        </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>Pulsar支持可插入的 <a href="/docs/zh-CN/2.1.0-incubating/security-overview">认证</a>机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant</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">认证和授权</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/2.1.0-incubating/security-overview">认证</a>机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/concepts-multi-tenancy"><span class="arrow-prev">← </span><span>多租户</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/concepts-topic-compaction"><span>消息压缩</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Sof [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
diff --git a/content/docs/zh-CN/2.1.0-incubating/functions-api.html b/content/docs/zh-CN/2.1.0-incubating/functions-api.html
index be98ec8..60121e8 100644
--- a/content/docs/zh-CN/2.1.0-incubating/functions-api.html
+++ b/content/docs/zh-CN/2.1.0-incubating/functions-api.html
@@ -77,31 +77,31 @@
 </code></pre>
 <p>关于Pulsar Function的一些注意事项:</p>
 <ul>
-<li>There is no client, producer, or consumer object involved. All message &quot;plumbing&quot; is already taken care of for you, enabling you to worry only about processing logic.</li>
-<li>No topics, subscription types, tenants, or namespaces are specified in the function logic itself. Instead, topics are specified upon <a href="#example-deployment">deployment</a>. This means that you can use and re-use Pulsar Functions across topics, tenants, and namespaces without needing to hard-code those attributes.</li>
+<li>没有客户端,生产者和消费者对象参与其中。所有的消息“plumbing”已经创建好了,你只需要关注处理的逻辑。</li>
+<li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
-<h3><a class="anchor" aria-hidden="true" id="example-deployment"></a><a href="#example-deployment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>Deploying Pulsar Functions is handled by the <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI tool, in particular the <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin#functions"><code>functions</code></a> command. Here's an example command that would run our <a href="#example-function">sanitizer</a> function from above in <a href="/docs/zh-CN/2.1.0-incubating/functions-deploying#local-run-mode">local run</a> mode:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
-  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
-  --className sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
-  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
-  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
-  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
-  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
-  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
-  --logTopic sanitizer-logs    <span class="hljs-comment"># The topic to which all functions logs are published</span>
-</code></pre>
-<p>For instructions on running functions in your Pulsar cluster, see the <a href="/docs/zh-CN/2.1.0-incubating/functions-deploying">Deploying Pulsar Functions</a> guide.</p>
-<h3><a class="anchor" aria-hidden="true" id="available-apis"></a><a href="#available-apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p>In both Java and Python, you have two options for writing Pulsar Functions:</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>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
+<pre><code class="bash">$ bin/pulsar-admin functions localrun \
+  --py sanitizer.py \          # The Python file with the function's code
+  --className sanitizer \      # The class or function holding the processing logic
+  --tenant public \            # The function's tenant (derived from the topic name by default)
+  --namespace default \        # The function's namespace (derived from the topic name by default)
+  --name sanitizer-function \  # The name of the function (the class name by default)
+  --inputs dirty-strings-in \  # The input topic(s) for the function
+  --output clean-strings-out \ # The output topic for the function
+  --logTopic sanitizer-logs    # The topic to which all functions logs are published
+`</pre> 
+<p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/2.1.0-incubating/functions-deploying">部署Pulsar Functions</a> 文档。</p>
+<h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">Use cases</th></tr>
+<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">使用场景</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">Language-native interface</td><td style="text-align:left">No Pulsar-specific libraries or special dependencies required (only core libraries from Java/Python)</td><td style="text-align:left">Functions that don't require access to the function's <a href="#context">context</a></td></tr>
-<tr><td style="text-align:left">Pulsar Function SDK for Java/Python</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
 </tbody>
 </table>
 <p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
@@ -639,7 +639,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a h [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a h [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/functions-api/index.html b/content/docs/zh-CN/2.1.0-incubating/functions-api/index.html
index be98ec8..60121e8 100644
--- a/content/docs/zh-CN/2.1.0-incubating/functions-api/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/functions-api/index.html
@@ -77,31 +77,31 @@
 </code></pre>
 <p>关于Pulsar Function的一些注意事项:</p>
 <ul>
-<li>There is no client, producer, or consumer object involved. All message &quot;plumbing&quot; is already taken care of for you, enabling you to worry only about processing logic.</li>
-<li>No topics, subscription types, tenants, or namespaces are specified in the function logic itself. Instead, topics are specified upon <a href="#example-deployment">deployment</a>. This means that you can use and re-use Pulsar Functions across topics, tenants, and namespaces without needing to hard-code those attributes.</li>
+<li>没有客户端,生产者和消费者对象参与其中。所有的消息“plumbing”已经创建好了,你只需要关注处理的逻辑。</li>
+<li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
-<h3><a class="anchor" aria-hidden="true" id="example-deployment"></a><a href="#example-deployment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>Deploying Pulsar Functions is handled by the <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI tool, in particular the <a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin#functions"><code>functions</code></a> command. Here's an example command that would run our <a href="#example-function">sanitizer</a> function from above in <a href="/docs/zh-CN/2.1.0-incubating/functions-deploying#local-run-mode">local run</a> mode:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
-  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
-  --className sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
-  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
-  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
-  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
-  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
-  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
-  --logTopic sanitizer-logs    <span class="hljs-comment"># The topic to which all functions logs are published</span>
-</code></pre>
-<p>For instructions on running functions in your Pulsar cluster, see the <a href="/docs/zh-CN/2.1.0-incubating/functions-deploying">Deploying Pulsar Functions</a> guide.</p>
-<h3><a class="anchor" aria-hidden="true" id="available-apis"></a><a href="#available-apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p>In both Java and Python, you have two options for writing Pulsar Functions:</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>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.0-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
+<pre><code class="bash">$ bin/pulsar-admin functions localrun \
+  --py sanitizer.py \          # The Python file with the function's code
+  --className sanitizer \      # The class or function holding the processing logic
+  --tenant public \            # The function's tenant (derived from the topic name by default)
+  --namespace default \        # The function's namespace (derived from the topic name by default)
+  --name sanitizer-function \  # The name of the function (the class name by default)
+  --inputs dirty-strings-in \  # The input topic(s) for the function
+  --output clean-strings-out \ # The output topic for the function
+  --logTopic sanitizer-logs    # The topic to which all functions logs are published
+`</pre> 
+<p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/2.1.0-incubating/functions-deploying">部署Pulsar Functions</a> 文档。</p>
+<h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">Use cases</th></tr>
+<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">使用场景</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">Language-native interface</td><td style="text-align:left">No Pulsar-specific libraries or special dependencies required (only core libraries from Java/Python)</td><td style="text-align:left">Functions that don't require access to the function's <a href="#context">context</a></td></tr>
-<tr><td style="text-align:left">Pulsar Function SDK for Java/Python</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
 </tbody>
 </table>
 <p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
@@ -639,7 +639,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a h [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a h [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics.html b/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics.html
index ba86928..dcc90b8 100644
--- a/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics.html
+++ b/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics.html
@@ -231,16 +231,16 @@ admin.persistentTopics().getStats(topic);
 <h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>It shows detailed statistics of a topic.</p>
 <ul>
-<li><p><strong>entriesAddedCounter</strong>: Messages published since this broker loaded this topic</p></li>
-<li><p><strong>numberOfEntries</strong>: Total number of messages being tracked</p></li>
-<li><p><strong>totalSize</strong>: Total storage size in bytes of all messages</p></li>
-<li><p><strong>currentLedgerEntries</strong>: Count of messages written to the ledger currently open for writing</p></li>
-<li><p><strong>currentLedgerSize</strong>: Size in bytes of messages written to ledger currently open for writing</p></li>
-<li><p><strong>lastLedgerCreatedTimestamp</strong>: time when last ledger was created</p></li>
-<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> time when last ledger was failed</p></li>
-<li><p><strong>waitingCursorsCount</strong>: How many cursors are &quot;caught up&quot; and waiting for a new message to be published</p></li>
-<li><p><strong>pendingAddEntriesCount</strong>: How many messages have (asynchronous) write requests we are waiting on completion</p></li>
-<li><p><strong>lastConfirmedEntry</strong>: The ledgerid:entryid of the last message successfully written. If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
+<li><p>** entriesAddedCounter **:从broker加载此topic以来发布的消息</p></li>
+<li><p><strong>numberOfEntries</strong>:被记录下来的消息总数</p></li>
+<li><p><strong>totalSize</strong>:所有消息以byte计算的存储总量</p></li>
+<li><p><strong>currentLedgerEntries</strong>:当前开放写的ledger中,写入的消息数量</p></li>
+<li><p><strong>currentLedgerSize</strong>:当前开放写的ledger,写入消息的byte数量</p></li>
+<li><p><strong>lastLedgerCreatedTimestamp</strong>:最后一个ledger创建的时间</p></li>
+<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
+<li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
+<li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
 <li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
 <li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
diff --git a/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics/index.html b/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics/index.html
index ba86928..dcc90b8 100644
--- a/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/admin-api-persistent-topics/index.html
@@ -231,16 +231,16 @@ admin.persistentTopics().getStats(topic);
 <h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>It shows detailed statistics of a topic.</p>
 <ul>
-<li><p><strong>entriesAddedCounter</strong>: Messages published since this broker loaded this topic</p></li>
-<li><p><strong>numberOfEntries</strong>: Total number of messages being tracked</p></li>
-<li><p><strong>totalSize</strong>: Total storage size in bytes of all messages</p></li>
-<li><p><strong>currentLedgerEntries</strong>: Count of messages written to the ledger currently open for writing</p></li>
-<li><p><strong>currentLedgerSize</strong>: Size in bytes of messages written to ledger currently open for writing</p></li>
-<li><p><strong>lastLedgerCreatedTimestamp</strong>: time when last ledger was created</p></li>
-<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> time when last ledger was failed</p></li>
-<li><p><strong>waitingCursorsCount</strong>: How many cursors are &quot;caught up&quot; and waiting for a new message to be published</p></li>
-<li><p><strong>pendingAddEntriesCount</strong>: How many messages have (asynchronous) write requests we are waiting on completion</p></li>
-<li><p><strong>lastConfirmedEntry</strong>: The ledgerid:entryid of the last message successfully written. If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
+<li><p>** entriesAddedCounter **:从broker加载此topic以来发布的消息</p></li>
+<li><p><strong>numberOfEntries</strong>:被记录下来的消息总数</p></li>
+<li><p><strong>totalSize</strong>:所有消息以byte计算的存储总量</p></li>
+<li><p><strong>currentLedgerEntries</strong>:当前开放写的ledger中,写入的消息数量</p></li>
+<li><p><strong>currentLedgerSize</strong>:当前开放写的ledger,写入消息的byte数量</p></li>
+<li><p><strong>lastLedgerCreatedTimestamp</strong>:最后一个ledger创建的时间</p></li>
+<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
+<li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
+<li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
 <li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
 <li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-authentication.html b/content/docs/zh-CN/2.1.1-incubating/concepts-authentication.html
index 35b89de..cd9c328 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-authentication.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-authentication.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.1-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
-"/><meta name="docsearch:version" content="2.1.1-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Authentication and Authorization · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.1-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权 [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.1-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+"/><meta name="docsearch:version" content="2.1.1-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Authentication and Authorization · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.1-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权 [...]
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -47,7 +47,7 @@
                 };
               }
             });
-        </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 and Authorization</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/2.1.1-incubating/security-overview">认证</a>机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant</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">Authentication and Authorization</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/2.1.1-incubating/security-overview">认证</a>机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy"><span class="arrow-prev">← </span><span>多租户</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/concepts-topic-compaction"><span>消息压缩</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Sof [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
diff --git a/content/docs/zh-CN/2.1.1-incubating/concepts-authentication/index.html b/content/docs/zh-CN/2.1.1-incubating/concepts-authentication/index.html
index 35b89de..cd9c328 100644
--- a/content/docs/zh-CN/2.1.1-incubating/concepts-authentication/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/concepts-authentication/index.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.1-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
-"/><meta name="docsearch:version" content="2.1.1-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Authentication and Authorization · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.1-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权 [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.1-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+"/><meta name="docsearch:version" content="2.1.1-incubating"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Authentication and Authorization · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/2.1.1-incubating/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权 [...]
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -47,7 +47,7 @@
                 };
               }
             });
-        </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 and Authorization</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/2.1.1-incubating/security-overview">认证</a>机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant</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">Authentication and Authorization</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/2.1.1-incubating/security-overview">认证</a>机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/concepts-multi-tenancy"><span class="arrow-prev">← </span><span>多租户</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/concepts-topic-compaction"><span>消息压缩</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Sof [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
diff --git a/content/docs/zh-CN/2.1.1-incubating/functions-api.html b/content/docs/zh-CN/2.1.1-incubating/functions-api.html
index 7af8aed..6b51da4 100644
--- a/content/docs/zh-CN/2.1.1-incubating/functions-api.html
+++ b/content/docs/zh-CN/2.1.1-incubating/functions-api.html
@@ -77,31 +77,31 @@
 </code></pre>
 <p>关于Pulsar Function的一些注意事项:</p>
 <ul>
-<li>There is no client, producer, or consumer object involved. All message &quot;plumbing&quot; is already taken care of for you, enabling you to worry only about processing logic.</li>
-<li>No topics, subscription types, tenants, or namespaces are specified in the function logic itself. Instead, topics are specified upon <a href="#example-deployment">deployment</a>. This means that you can use and re-use Pulsar Functions across topics, tenants, and namespaces without needing to hard-code those attributes.</li>
+<li>没有客户端,生产者和消费者对象参与其中。所有的消息“plumbing”已经创建好了,你只需要关注处理的逻辑。</li>
+<li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
-<h3><a class="anchor" aria-hidden="true" id="example-deployment"></a><a href="#example-deployment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>Deploying Pulsar Functions is handled by the <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI tool, in particular the <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin#functions"><code>functions</code></a> command. Here's an example command that would run our <a href="#example-function">sanitizer</a> function from above in <a href="/docs/zh-CN/2.1.1-incubating/functions-deploying#local-run-mode">local run</a> mode:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
-  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
-  --className sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
-  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
-  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
-  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
-  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
-  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
-  --logTopic sanitizer-logs    <span class="hljs-comment"># The topic to which all functions logs are published</span>
-</code></pre>
-<p>For instructions on running functions in your Pulsar cluster, see the <a href="/docs/zh-CN/2.1.1-incubating/functions-deploying">Deploying Pulsar Functions</a> guide.</p>
-<h3><a class="anchor" aria-hidden="true" id="available-apis"></a><a href="#available-apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p>In both Java and Python, you have two options for writing Pulsar Functions:</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>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
+<pre><code class="bash">$ bin/pulsar-admin functions localrun \
+  --py sanitizer.py \          # The Python file with the function's code
+  --className sanitizer \      # The class or function holding the processing logic
+  --tenant public \            # The function's tenant (derived from the topic name by default)
+  --namespace default \        # The function's namespace (derived from the topic name by default)
+  --name sanitizer-function \  # The name of the function (the class name by default)
+  --inputs dirty-strings-in \  # The input topic(s) for the function
+  --output clean-strings-out \ # The output topic for the function
+  --logTopic sanitizer-logs    # The topic to which all functions logs are published
+`</pre> 
+<p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/2.1.1-incubating/functions-deploying">部署Pulsar Functions</a> 文档。</p>
+<h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">Use cases</th></tr>
+<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">使用场景</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">Language-native interface</td><td style="text-align:left">No Pulsar-specific libraries or special dependencies required (only core libraries from Java/Python)</td><td style="text-align:left">Functions that don't require access to the function's <a href="#context">context</a></td></tr>
-<tr><td style="text-align:left">Pulsar Function SDK for Java/Python</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
 </tbody>
 </table>
 <p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
@@ -632,7 +632,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a h [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a h [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/functions-api/index.html b/content/docs/zh-CN/2.1.1-incubating/functions-api/index.html
index 7af8aed..6b51da4 100644
--- a/content/docs/zh-CN/2.1.1-incubating/functions-api/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/functions-api/index.html
@@ -77,31 +77,31 @@
 </code></pre>
 <p>关于Pulsar Function的一些注意事项:</p>
 <ul>
-<li>There is no client, producer, or consumer object involved. All message &quot;plumbing&quot; is already taken care of for you, enabling you to worry only about processing logic.</li>
-<li>No topics, subscription types, tenants, or namespaces are specified in the function logic itself. Instead, topics are specified upon <a href="#example-deployment">deployment</a>. This means that you can use and re-use Pulsar Functions across topics, tenants, and namespaces without needing to hard-code those attributes.</li>
+<li>没有客户端,生产者和消费者对象参与其中。所有的消息“plumbing”已经创建好了,你只需要关注处理的逻辑。</li>
+<li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
-<h3><a class="anchor" aria-hidden="true" id="example-deployment"></a><a href="#example-deployment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>Deploying Pulsar Functions is handled by the <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> CLI tool, in particular the <a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin#functions"><code>functions</code></a> command. Here's an example command that would run our <a href="#example-function">sanitizer</a> function from above in <a href="/docs/zh-CN/2.1.1-incubating/functions-deploying#local-run-mode">local run</a> mode:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
-  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
-  --className sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
-  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
-  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
-  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
-  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
-  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
-  --logTopic sanitizer-logs    <span class="hljs-comment"># The topic to which all functions logs are published</span>
-</code></pre>
-<p>For instructions on running functions in your Pulsar cluster, see the <a href="/docs/zh-CN/2.1.1-incubating/functions-deploying">Deploying Pulsar Functions</a> guide.</p>
-<h3><a class="anchor" aria-hidden="true" id="available-apis"></a><a href="#available-apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p>In both Java and Python, you have two options for writing Pulsar Functions:</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>部署Pulsar Function可以使用<a href="/docs/zh-CN/2.1.1-incubating/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
+<pre><code class="bash">$ bin/pulsar-admin functions localrun \
+  --py sanitizer.py \          # The Python file with the function's code
+  --className sanitizer \      # The class or function holding the processing logic
+  --tenant public \            # The function's tenant (derived from the topic name by default)
+  --namespace default \        # The function's namespace (derived from the topic name by default)
+  --name sanitizer-function \  # The name of the function (the class name by default)
+  --inputs dirty-strings-in \  # The input topic(s) for the function
+  --output clean-strings-out \ # The output topic for the function
+  --logTopic sanitizer-logs    # The topic to which all functions logs are published
+`</pre> 
+<p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/2.1.1-incubating/functions-deploying">部署Pulsar Functions</a> 文档。</p>
+<h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">Use cases</th></tr>
+<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">使用场景</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">Language-native interface</td><td style="text-align:left">No Pulsar-specific libraries or special dependencies required (only core libraries from Java/Python)</td><td style="text-align:left">Functions that don't require access to the function's <a href="#context">context</a></td></tr>
-<tr><td style="text-align:left">Pulsar Function SDK for Java/Python</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
 </tbody>
 </table>
 <p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
@@ -632,7 +632,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a h [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a h [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/admin-api-persistent-topics.html b/content/docs/zh-CN/admin-api-persistent-topics.html
index eb4ef51..db6b410 100644
--- a/content/docs/zh-CN/admin-api-persistent-topics.html
+++ b/content/docs/zh-CN/admin-api-persistent-topics.html
@@ -231,16 +231,16 @@ admin.persistentTopics().getStats(topic);
 <h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>It shows detailed statistics of a topic.</p>
 <ul>
-<li><p><strong>entriesAddedCounter</strong>: Messages published since this broker loaded this topic</p></li>
-<li><p><strong>numberOfEntries</strong>: Total number of messages being tracked</p></li>
-<li><p><strong>totalSize</strong>: Total storage size in bytes of all messages</p></li>
-<li><p><strong>currentLedgerEntries</strong>: Count of messages written to the ledger currently open for writing</p></li>
-<li><p><strong>currentLedgerSize</strong>: Size in bytes of messages written to ledger currently open for writing</p></li>
-<li><p><strong>lastLedgerCreatedTimestamp</strong>: time when last ledger was created</p></li>
-<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> time when last ledger was failed</p></li>
-<li><p><strong>waitingCursorsCount</strong>: How many cursors are &quot;caught up&quot; and waiting for a new message to be published</p></li>
-<li><p><strong>pendingAddEntriesCount</strong>: How many messages have (asynchronous) write requests we are waiting on completion</p></li>
-<li><p><strong>lastConfirmedEntry</strong>: The ledgerid:entryid of the last message successfully written. If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
+<li><p>** entriesAddedCounter **:从broker加载此topic以来发布的消息</p></li>
+<li><p><strong>numberOfEntries</strong>:被记录下来的消息总数</p></li>
+<li><p><strong>totalSize</strong>:所有消息以byte计算的存储总量</p></li>
+<li><p><strong>currentLedgerEntries</strong>:当前开放写的ledger中,写入的消息数量</p></li>
+<li><p><strong>currentLedgerSize</strong>:当前开放写的ledger,写入消息的byte数量</p></li>
+<li><p><strong>lastLedgerCreatedTimestamp</strong>:最后一个ledger创建的时间</p></li>
+<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
+<li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
+<li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
 <li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
 <li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
diff --git a/content/docs/zh-CN/admin-api-persistent-topics/index.html b/content/docs/zh-CN/admin-api-persistent-topics/index.html
index eb4ef51..db6b410 100644
--- a/content/docs/zh-CN/admin-api-persistent-topics/index.html
+++ b/content/docs/zh-CN/admin-api-persistent-topics/index.html
@@ -231,16 +231,16 @@ admin.persistentTopics().getStats(topic);
 <h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>It shows detailed statistics of a topic.</p>
 <ul>
-<li><p><strong>entriesAddedCounter</strong>: Messages published since this broker loaded this topic</p></li>
-<li><p><strong>numberOfEntries</strong>: Total number of messages being tracked</p></li>
-<li><p><strong>totalSize</strong>: Total storage size in bytes of all messages</p></li>
-<li><p><strong>currentLedgerEntries</strong>: Count of messages written to the ledger currently open for writing</p></li>
-<li><p><strong>currentLedgerSize</strong>: Size in bytes of messages written to ledger currently open for writing</p></li>
-<li><p><strong>lastLedgerCreatedTimestamp</strong>: time when last ledger was created</p></li>
-<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> time when last ledger was failed</p></li>
-<li><p><strong>waitingCursorsCount</strong>: How many cursors are &quot;caught up&quot; and waiting for a new message to be published</p></li>
-<li><p><strong>pendingAddEntriesCount</strong>: How many messages have (asynchronous) write requests we are waiting on completion</p></li>
-<li><p><strong>lastConfirmedEntry</strong>: The ledgerid:entryid of the last message successfully written. If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
+<li><p>** entriesAddedCounter **:从broker加载此topic以来发布的消息</p></li>
+<li><p><strong>numberOfEntries</strong>:被记录下来的消息总数</p></li>
+<li><p><strong>totalSize</strong>:所有消息以byte计算的存储总量</p></li>
+<li><p><strong>currentLedgerEntries</strong>:当前开放写的ledger中,写入的消息数量</p></li>
+<li><p><strong>currentLedgerSize</strong>:当前开放写的ledger,写入消息的byte数量</p></li>
+<li><p><strong>lastLedgerCreatedTimestamp</strong>:最后一个ledger创建的时间</p></li>
+<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
+<li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
+<li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
 <li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
 <li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
diff --git a/content/docs/zh-CN/concepts-authentication.html b/content/docs/zh-CN/concepts-authentication.html
index 27d3010..07a6b44 100644
--- a/content/docs/zh-CN/concepts-authentication.html
+++ b/content/docs/zh-CN/concepts-authentication.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
-"/><meta name="docsearch:version" content="2.2.0"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Authentication and Authorization · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&l [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+"/><meta name="docsearch:version" content="2.2.0"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Authentication and Authorization · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&l [...]
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -47,7 +47,7 @@
                 };
               }
             });
-        </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 and Authorization</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/security-overview">认证</a>机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant</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">Authentication and Authorization</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/security-overview">认证</a>机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/concepts-multi-tenancy"><span class="arrow-prev">← </span><span>多租户</span></a><a class="docs-next button" href="/docs/zh-CN/concepts-topic-compaction"><span>消息压缩</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reser [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
diff --git a/content/docs/zh-CN/concepts-authentication/index.html b/content/docs/zh-CN/concepts-authentication/index.html
index 27d3010..07a6b44 100644
--- a/content/docs/zh-CN/concepts-authentication/index.html
+++ b/content/docs/zh-CN/concepts-authentication/index.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
-"/><meta name="docsearch:version" content="2.2.0"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Authentication and Authorization · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&l [...]
+<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Authentication and Authorization · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+"/><meta name="docsearch:version" content="2.2.0"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="Authentication and Authorization · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&l [...]
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -47,7 +47,7 @@
                 };
               }
             });
-        </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 and Authorization</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/security-overview">认证</a>机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant</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">Authentication and Authorization</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/security-overview">认证</a>机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/concepts-multi-tenancy"><span class="arrow-prev">← </span><span>多租户</span></a><a class="docs-next button" href="/docs/zh-CN/concepts-topic-compaction"><span>消息压缩</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Rights Reser [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
diff --git a/content/docs/zh-CN/functions-api.html b/content/docs/zh-CN/functions-api.html
index 46f0a90..c1e7049 100644
--- a/content/docs/zh-CN/functions-api.html
+++ b/content/docs/zh-CN/functions-api.html
@@ -77,31 +77,31 @@
 </code></pre>
 <p>关于Pulsar Function的一些注意事项:</p>
 <ul>
-<li>There is no client, producer, or consumer object involved. All message &quot;plumbing&quot; is already taken care of for you, enabling you to worry only about processing logic.</li>
-<li>No topics, subscription types, tenants, or namespaces are specified in the function logic itself. Instead, topics are specified upon <a href="#example-deployment">deployment</a>. This means that you can use and re-use Pulsar Functions across topics, tenants, and namespaces without needing to hard-code those attributes.</li>
+<li>没有客户端,生产者和消费者对象参与其中。所有的消息“plumbing”已经创建好了,你只需要关注处理的逻辑。</li>
+<li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
-<h3><a class="anchor" aria-hidden="true" id="example-deployment"></a><a href="#example-deployment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>Deploying Pulsar Functions is handled by the <a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> CLI tool, in particular the <a href="/docs/zh-CN/pulsar-admin#functions"><code>functions</code></a> command. Here's an example command that would run our <a href="#example-function">sanitizer</a> function from above in <a href="/docs/zh-CN/functions-deploying#local-run-mode">local run</a> mode:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
-  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
-  --classname sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
-  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
-  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
-  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
-  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
-  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
-  --<span class="hljs-built_in">log</span>-topic sanitizer-logs   <span class="hljs-comment"># The topic to which all functions logs are published</span>
-</code></pre>
-<p>For instructions on running functions in your Pulsar cluster, see the <a href="/docs/zh-CN/functions-deploying">Deploying Pulsar Functions</a> guide.</p>
-<h3><a class="anchor" aria-hidden="true" id="available-apis"></a><a href="#available-apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p>In both Java and Python, you have two options for writing Pulsar Functions:</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>部署Pulsar Function可以使用<a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
+<pre><code class="bash">$ bin/pulsar-admin functions localrun \
+  --py sanitizer.py \          # The Python file with the function's code
+  --classname sanitizer \      # The class or function holding the processing logic
+  --tenant public \            # The function's tenant (derived from the topic name by default)
+  --namespace default \        # The function's namespace (derived from the topic name by default)
+  --name sanitizer-function \  # The name of the function (the class name by default)
+  --inputs dirty-strings-in \  # The input topic(s) for the function
+  --output clean-strings-out \ # The output topic for the function
+  --log-topic sanitizer-logs   # The topic to which all functions logs are published
+`</pre> 
+<p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/functions-deploying">部署Pulsar Functions</a> 文档。</p>
+<h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">Use cases</th></tr>
+<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">使用场景</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">Language-native interface</td><td style="text-align:left">No Pulsar-specific libraries or special dependencies required (only core libraries from Java/Python)</td><td style="text-align:left">Functions that don't require access to the function's <a href="#context">context</a></td></tr>
-<tr><td style="text-align:left">Pulsar Function SDK for Java/Python</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
 </tbody>
 </table>
 <p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
@@ -640,7 +640,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li><li><a hr [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li><li><a hr [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/functions-api/index.html b/content/docs/zh-CN/functions-api/index.html
index 46f0a90..c1e7049 100644
--- a/content/docs/zh-CN/functions-api/index.html
+++ b/content/docs/zh-CN/functions-api/index.html
@@ -77,31 +77,31 @@
 </code></pre>
 <p>关于Pulsar Function的一些注意事项:</p>
 <ul>
-<li>There is no client, producer, or consumer object involved. All message &quot;plumbing&quot; is already taken care of for you, enabling you to worry only about processing logic.</li>
-<li>No topics, subscription types, tenants, or namespaces are specified in the function logic itself. Instead, topics are specified upon <a href="#example-deployment">deployment</a>. This means that you can use and re-use Pulsar Functions across topics, tenants, and namespaces without needing to hard-code those attributes.</li>
+<li>没有客户端,生产者和消费者对象参与其中。所有的消息“plumbing”已经创建好了,你只需要关注处理的逻辑。</li>
+<li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
-<h3><a class="anchor" aria-hidden="true" id="example-deployment"></a><a href="#example-deployment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>Deploying Pulsar Functions is handled by the <a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> CLI tool, in particular the <a href="/docs/zh-CN/pulsar-admin#functions"><code>functions</code></a> command. Here's an example command that would run our <a href="#example-function">sanitizer</a> function from above in <a href="/docs/zh-CN/functions-deploying#local-run-mode">local run</a> mode:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
-  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
-  --classname sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
-  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
-  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
-  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
-  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
-  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
-  --<span class="hljs-built_in">log</span>-topic sanitizer-logs   <span class="hljs-comment"># The topic to which all functions logs are published</span>
-</code></pre>
-<p>For instructions on running functions in your Pulsar cluster, see the <a href="/docs/zh-CN/functions-deploying">Deploying Pulsar Functions</a> guide.</p>
-<h3><a class="anchor" aria-hidden="true" id="available-apis"></a><a href="#available-apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p>In both Java and Python, you have two options for writing Pulsar Functions:</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>部署Pulsar Function可以使用<a href="/docs/zh-CN/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
+<pre><code class="bash">$ bin/pulsar-admin functions localrun \
+  --py sanitizer.py \          # The Python file with the function's code
+  --classname sanitizer \      # The class or function holding the processing logic
+  --tenant public \            # The function's tenant (derived from the topic name by default)
+  --namespace default \        # The function's namespace (derived from the topic name by default)
+  --name sanitizer-function \  # The name of the function (the class name by default)
+  --inputs dirty-strings-in \  # The input topic(s) for the function
+  --output clean-strings-out \ # The output topic for the function
+  --log-topic sanitizer-logs   # The topic to which all functions logs are published
+`</pre> 
+<p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/functions-deploying">部署Pulsar Functions</a> 文档。</p>
+<h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">Use cases</th></tr>
+<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">使用场景</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">Language-native interface</td><td style="text-align:left">No Pulsar-specific libraries or special dependencies required (only core libraries from Java/Python)</td><td style="text-align:left">Functions that don't require access to the function's <a href="#context">context</a></td></tr>
-<tr><td style="text-align:left">Pulsar Function SDK for Java/Python</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
 </tbody>
 </table>
 <p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
@@ -640,7 +640,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li><li><a hr [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li><li><a hr [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/admin-api-persistent-topics.html b/content/docs/zh-CN/next/admin-api-persistent-topics.html
index c10102f..8b83a9c 100644
--- a/content/docs/zh-CN/next/admin-api-persistent-topics.html
+++ b/content/docs/zh-CN/next/admin-api-persistent-topics.html
@@ -231,16 +231,16 @@ admin.persistentTopics().getStats(topic);
 <h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>It shows detailed statistics of a topic.</p>
 <ul>
-<li><p><strong>entriesAddedCounter</strong>: Messages published since this broker loaded this topic</p></li>
-<li><p><strong>numberOfEntries</strong>: Total number of messages being tracked</p></li>
-<li><p><strong>totalSize</strong>: Total storage size in bytes of all messages</p></li>
-<li><p><strong>currentLedgerEntries</strong>: Count of messages written to the ledger currently open for writing</p></li>
-<li><p><strong>currentLedgerSize</strong>: Size in bytes of messages written to ledger currently open for writing</p></li>
-<li><p><strong>lastLedgerCreatedTimestamp</strong>: time when last ledger was created</p></li>
-<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> time when last ledger was failed</p></li>
-<li><p><strong>waitingCursorsCount</strong>: How many cursors are &quot;caught up&quot; and waiting for a new message to be published</p></li>
-<li><p><strong>pendingAddEntriesCount</strong>: How many messages have (asynchronous) write requests we are waiting on completion</p></li>
-<li><p><strong>lastConfirmedEntry</strong>: The ledgerid:entryid of the last message successfully written. If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
+<li><p>** entriesAddedCounter **:从broker加载此topic以来发布的消息</p></li>
+<li><p><strong>numberOfEntries</strong>:被记录下来的消息总数</p></li>
+<li><p><strong>totalSize</strong>:所有消息以byte计算的存储总量</p></li>
+<li><p><strong>currentLedgerEntries</strong>:当前开放写的ledger中,写入的消息数量</p></li>
+<li><p><strong>currentLedgerSize</strong>:当前开放写的ledger,写入消息的byte数量</p></li>
+<li><p><strong>lastLedgerCreatedTimestamp</strong>:最后一个ledger创建的时间</p></li>
+<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
+<li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
+<li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
 <li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
 <li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
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 c10102f..8b83a9c 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
@@ -231,16 +231,16 @@ admin.persistentTopics().getStats(topic);
 <h3><a class="anchor" aria-hidden="true" id="get-internal-stats"></a><a href="#get-internal-stats" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>It shows detailed statistics of a topic.</p>
 <ul>
-<li><p><strong>entriesAddedCounter</strong>: Messages published since this broker loaded this topic</p></li>
-<li><p><strong>numberOfEntries</strong>: Total number of messages being tracked</p></li>
-<li><p><strong>totalSize</strong>: Total storage size in bytes of all messages</p></li>
-<li><p><strong>currentLedgerEntries</strong>: Count of messages written to the ledger currently open for writing</p></li>
-<li><p><strong>currentLedgerSize</strong>: Size in bytes of messages written to ledger currently open for writing</p></li>
-<li><p><strong>lastLedgerCreatedTimestamp</strong>: time when last ledger was created</p></li>
-<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> time when last ledger was failed</p></li>
-<li><p><strong>waitingCursorsCount</strong>: How many cursors are &quot;caught up&quot; and waiting for a new message to be published</p></li>
-<li><p><strong>pendingAddEntriesCount</strong>: How many messages have (asynchronous) write requests we are waiting on completion</p></li>
-<li><p><strong>lastConfirmedEntry</strong>: The ledgerid:entryid of the last message successfully written. If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
+<li><p>** entriesAddedCounter **:从broker加载此topic以来发布的消息</p></li>
+<li><p><strong>numberOfEntries</strong>:被记录下来的消息总数</p></li>
+<li><p><strong>totalSize</strong>:所有消息以byte计算的存储总量</p></li>
+<li><p><strong>currentLedgerEntries</strong>:当前开放写的ledger中,写入的消息数量</p></li>
+<li><p><strong>currentLedgerSize</strong>:当前开放写的ledger,写入消息的byte数量</p></li>
+<li><p><strong>lastLedgerCreatedTimestamp</strong>:最后一个ledger创建的时间</p></li>
+<li><p><strong>lastLedgerCreationFailureTimestamp:</strong> 最后一次ledger创建失败的时间</p></li>
+<li><p><strong>waitingCursorsCount</strong>:被挂起并且等待新消息发布的cursor数量</p></li>
+<li><p><strong>pendingAddEntriesCount</strong>:多少消息已经(异步)写了请求,但是等待完成。</p></li>
+<li><p><strong>lastConfirmedEntry</strong>:最后一条成功写入消息的ledgerid:entryid。 If the entryid is -1, then the ledger has been opened or is currently being opened but has no entries written yet.</p></li>
 <li><p><strong>state</strong>: The state of this ledger for writing. LedgerOpened means we have a ledger open for saving published messages.</p></li>
 <li><p><strong>ledgers</strong>: The ordered list of all ledgers for this topic holding its messages</p></li>
 <li><p><strong>cursors</strong>: The list of all cursors on this topic. There will be one for every subscription you saw in the topic stats.</p></li>
diff --git a/content/docs/zh-CN/next/concepts-authentication.html b/content/docs/zh-CN/next/concepts-authentication.html
index 88cb733..a885467 100644
--- a/content/docs/zh-CN/next/concepts-authentication.html
+++ b/content/docs/zh-CN/next/concepts-authentication.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>认证和授权 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/next/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
-"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="认证和授权 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/next/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+<!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="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/next/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="认证和授权 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/next/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -47,7 +47,7 @@
                 };
               }
             });
-        </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>Pulsar支持可插入的 <a href="/docs/zh-CN/next/security-overview">认证</a>机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant</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">认证和授权</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/next/security-overview">认证</a>机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/concepts-multi-tenancy"><span class="arrow-prev">← </span><span>多租户</span></a><a class="docs-next button" href="/docs/zh-CN/next/concepts-topic-compaction"><span>消息压缩</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Ri [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
diff --git a/content/docs/zh-CN/next/concepts-authentication/index.html b/content/docs/zh-CN/next/concepts-authentication/index.html
index 88cb733..a885467 100644
--- a/content/docs/zh-CN/next/concepts-authentication/index.html
+++ b/content/docs/zh-CN/next/concepts-authentication/index.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>认证和授权 · Apache Pulsar</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/next/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
-"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="认证和授权 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/next/security-overview&quot;&gt;认证&lt;/a&gt;机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+<!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="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/next/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
+"/><meta name="docsearch:version" content="next"/><meta name="docsearch:language" content="zh-CN"/><meta property="og:title" content="认证和授权 · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.incubator.apache.org/index.html"/><meta property="og:description" content="&lt;p&gt;Pulsar支持可插入的 &lt;a href=&quot;/docs/zh-CN/next/security-overview&quot;&gt;认证&lt;/a&gt;机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant&lt;/p&gt;
 "/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.incubator.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.incubator.apache.org/blog/atom.x [...]
               (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
               (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -47,7 +47,7 @@
                 };
               }
             });
-        </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>Pulsar支持可插入的 <a href="/docs/zh-CN/next/security-overview">认证</a>机制,它配置在broker上,并且支持授权,来识别客户端及它能够访问的topic和tenant</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">认证和授权</h1></header><article><div><span><p>Pulsar支持可插入的 <a href="/docs/zh-CN/next/security-overview">认证</a>机制,可在broker上配置,并且支持授权,来识别客户端及它能够访问的topic和tenant</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/concepts-multi-tenancy"><span class="arrow-prev">← </span><span>多租户</span></a><a class="docs-next button" href="/docs/zh-CN/next/concepts-topic-compaction"><span>消息压缩</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2018 The Apache Software Foundation. All Ri [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
diff --git a/content/docs/zh-CN/next/functions-api.html b/content/docs/zh-CN/next/functions-api.html
index e64d100..015ae72 100644
--- a/content/docs/zh-CN/next/functions-api.html
+++ b/content/docs/zh-CN/next/functions-api.html
@@ -77,31 +77,31 @@
 </code></pre>
 <p>关于Pulsar Function的一些注意事项:</p>
 <ul>
-<li>There is no client, producer, or consumer object involved. All message &quot;plumbing&quot; is already taken care of for you, enabling you to worry only about processing logic.</li>
-<li>No topics, subscription types, tenants, or namespaces are specified in the function logic itself. Instead, topics are specified upon <a href="#example-deployment">deployment</a>. This means that you can use and re-use Pulsar Functions across topics, tenants, and namespaces without needing to hard-code those attributes.</li>
+<li>没有客户端,生产者和消费者对象参与其中。所有的消息“plumbing”已经创建好了,你只需要关注处理的逻辑。</li>
+<li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
-<h3><a class="anchor" aria-hidden="true" id="example-deployment"></a><a href="#example-deployment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>Deploying Pulsar Functions is handled by the <a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> CLI tool, in particular the <a href="/docs/zh-CN/next/pulsar-admin#functions"><code>functions</code></a> command. Here's an example command that would run our <a href="#example-function">sanitizer</a> function from above in <a href="/docs/zh-CN/next/functions-deploying#local-run-mode">local run</a> mode:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
-  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
-  --classname sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
-  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
-  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
-  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
-  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
-  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
-  --<span class="hljs-built_in">log</span>-topic sanitizer-logs   <span class="hljs-comment"># The topic to which all functions logs are published</span>
-</code></pre>
-<p>For instructions on running functions in your Pulsar cluster, see the <a href="/docs/zh-CN/next/functions-deploying">Deploying Pulsar Functions</a> guide.</p>
-<h3><a class="anchor" aria-hidden="true" id="available-apis"></a><a href="#available-apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p>In both Java and Python, you have two options for writing Pulsar Functions:</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>部署Pulsar Function可以使用<a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
+<pre><code class="bash">$ bin/pulsar-admin functions localrun \
+  --py sanitizer.py \          # The Python file with the function's code
+  --classname sanitizer \      # The class or function holding the processing logic
+  --tenant public \            # The function's tenant (derived from the topic name by default)
+  --namespace default \        # The function's namespace (derived from the topic name by default)
+  --name sanitizer-function \  # The name of the function (the class name by default)
+  --inputs dirty-strings-in \  # The input topic(s) for the function
+  --output clean-strings-out \ # The output topic for the function
+  --log-topic sanitizer-logs   # The topic to which all functions logs are published
+`</pre> 
+<p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/next/functions-deploying">部署Pulsar Functions</a> 文档。</p>
+<h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">Use cases</th></tr>
+<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">使用场景</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">Language-native interface</td><td style="text-align:left">No Pulsar-specific libraries or special dependencies required (only core libraries from Java/Python)</td><td style="text-align:left">Functions that don't require access to the function's <a href="#context">context</a></td></tr>
-<tr><td style="text-align:left">Pulsar Function SDK for Java/Python</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
 </tbody>
 </table>
 <p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
@@ -640,7 +640,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/next/functions-api/index.html b/content/docs/zh-CN/next/functions-api/index.html
index e64d100..015ae72 100644
--- a/content/docs/zh-CN/next/functions-api/index.html
+++ b/content/docs/zh-CN/next/functions-api/index.html
@@ -77,31 +77,31 @@
 </code></pre>
 <p>关于Pulsar Function的一些注意事项:</p>
 <ul>
-<li>There is no client, producer, or consumer object involved. All message &quot;plumbing&quot; is already taken care of for you, enabling you to worry only about processing logic.</li>
-<li>No topics, subscription types, tenants, or namespaces are specified in the function logic itself. Instead, topics are specified upon <a href="#example-deployment">deployment</a>. This means that you can use and re-use Pulsar Functions across topics, tenants, and namespaces without needing to hard-code those attributes.</li>
+<li>没有客户端,生产者和消费者对象参与其中。所有的消息“plumbing”已经创建好了,你只需要关注处理的逻辑。</li>
+<li>函数逻辑本身并不指定主题,订阅类型,租户或命名空间。 而是在 <a href="#example-deployment">部署</a>中指定主题。 也就是,我们可以跨主题、租户和命名空间来重复使用Pulsar Functions而不用对这些属性强制编码。</li>
 </ul>
-<h3><a class="anchor" aria-hidden="true" id="example-deployment"></a><a href="#example-deployment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-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>Deploying Pulsar Functions is handled by the <a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> CLI tool, in particular the <a href="/docs/zh-CN/next/pulsar-admin#functions"><code>functions</code></a> command. Here's an example command that would run our <a href="#example-function">sanitizer</a> function from above in <a href="/docs/zh-CN/next/functions-deploying#local-run-mode">local run</a> mode:</p>
-<pre><code class="hljs css language-bash">$ bin/pulsar-admin <span class="hljs-built_in">functions</span> localrun \
-  --py sanitizer.py \          <span class="hljs-comment"># The Python file with the function's code</span>
-  --classname sanitizer \      <span class="hljs-comment"># The class or function holding the processing logic</span>
-  --tenant public \            <span class="hljs-comment"># The function's tenant (derived from the topic name by default)</span>
-  --namespace default \        <span class="hljs-comment"># The function's namespace (derived from the topic name by default)</span>
-  --name sanitizer-function \  <span class="hljs-comment"># The name of the function (the class name by default)</span>
-  --inputs dirty-strings-in \  <span class="hljs-comment"># The input topic(s) for the function</span>
-  --output clean-strings-out \ <span class="hljs-comment"># The output topic for the function</span>
-  --<span class="hljs-built_in">log</span>-topic sanitizer-logs   <span class="hljs-comment"># The topic to which all functions logs are published</span>
-</code></pre>
-<p>For instructions on running functions in your Pulsar cluster, see the <a href="/docs/zh-CN/next/functions-deploying">Deploying Pulsar Functions</a> guide.</p>
-<h3><a class="anchor" aria-hidden="true" id="available-apis"></a><a href="#available-apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p>In both Java and Python, you have two options for writing Pulsar Functions:</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>部署Pulsar Function可以使用<a href="/docs/zh-CN/next/pulsar-admin"><code>pulsar-admin</code></a> 命令行工具,特别是&lt;a href =“reference-pulsar- admin.md#functions“&gt; ` functions &lt;/ code&gt; </a>命令。 如下的示例命令,它将在 <a href="functions-deploying.md#local-run-mode">local run</a>模式下运行我们上述的<a href="#example-function"> sanitizer </a>函数:</p></p>
+<pre><code class="bash">$ bin/pulsar-admin functions localrun \
+  --py sanitizer.py \          # The Python file with the function's code
+  --classname sanitizer \      # The class or function holding the processing logic
+  --tenant public \            # The function's tenant (derived from the topic name by default)
+  --namespace default \        # The function's namespace (derived from the topic name by default)
+  --name sanitizer-function \  # The name of the function (the class name by default)
+  --inputs dirty-strings-in \  # The input topic(s) for the function
+  --output clean-strings-out \ # The output topic for the function
+  --log-topic sanitizer-logs   # The topic to which all functions logs are published
+`</pre> 
+<p>有关在Pulsar集群中运行函数的说明,请参阅<a href="/docs/zh-CN/next/functions-deploying">部署Pulsar Functions</a> 文档。</p>
+<h3><a class="anchor" aria-hidden="true" id="可用的apis"></a><a href="#可用的apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>在写Pulsar Functions时,有Java和Python两种语言可供你选择:</p>
 <table>
 <thead>
-<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">Use cases</th></tr>
+<tr><th style="text-align:left">Interface</th><th style="text-align:left">说明:</th><th style="text-align:left">使用场景</th></tr>
 </thead>
 <tbody>
-<tr><td style="text-align:left">Language-native interface</td><td style="text-align:left">No Pulsar-specific libraries or special dependencies required (only core libraries from Java/Python)</td><td style="text-align:left">Functions that don't require access to the function's <a href="#context">context</a></td></tr>
-<tr><td style="text-align:left">Pulsar Function SDK for Java/Python</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
+<tr><td style="text-align:left">语言原生接口</td><td style="text-align:left">不依赖特定Pulsar库或特殊依赖项(仅使用Java/Python自身的核心库)</td><td style="text-align:left">不需要获取函数 <a href="#context">内容</a>的函数。</td></tr>
+<tr><td style="text-align:left">用于Java/Python的Pulsar函数sdk</td><td style="text-align:left">Pulsar-specific libraries that provide a range of functionality not provided by &quot;native&quot; interfaces</td><td style="text-align:left">Functions that require access to the function's <a href="#context">context</a></td></tr>
 </tbody>
 </table>
 <p>In Python, for example, this language-native function, which adds an exclamation point to all incoming strings and publishes the resulting string to a topic, would have no external dependencies:</p>
@@ -640,7 +640,7 @@ String wotd = context.getUserConfigValueOrDefault(<span class="hljs-string">"wor
         <span class="hljs-keyword">if</span> input == <span class="hljs-number">11</span>:
             context.record_metric(<span class="hljs-string">'elevens-count'</span>, <span class="hljs-number">1</span>)
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/next/functions-quickstart"><span class="arrow-prev">← </span><span>Getting started</span></a><a class="docs-next button" href="/docs/zh-CN/next/functions-deploying"><span>Deploying functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#核心编程模型">核心编程模型</a><ul class="toc-headings"><li><a href="#示例函数">示例函数</a></li [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/swagger/swagger.json b/content/swagger/swagger.json
index c83fe3e..0332290 100644
--- a/content/swagger/swagger.json
+++ b/content/swagger/swagger.json
@@ -6882,19 +6882,6 @@
           "type" : "number",
           "format" : "double"
         },
-        "underLoaded" : {
-          "type" : "boolean"
-        },
-        "overLoaded" : {
-          "type" : "boolean"
-        },
-        "loadReportType" : {
-          "type" : "string"
-        },
-        "msgThroughputIn" : {
-          "type" : "number",
-          "format" : "double"
-        },
         "cpu" : {
           "$ref" : "#/definitions/ResourceUsage"
         },
@@ -6914,9 +6901,22 @@
           "type" : "integer",
           "format" : "int64"
         },
+        "msgThroughputIn" : {
+          "type" : "number",
+          "format" : "double"
+        },
         "msgThroughputOut" : {
           "type" : "number",
           "format" : "double"
+        },
+        "overLoaded" : {
+          "type" : "boolean"
+        },
+        "underLoaded" : {
+          "type" : "boolean"
+        },
+        "loadReportType" : {
+          "type" : "string"
         }
       }
     },
@@ -7898,11 +7898,11 @@
     "ResourceUnit" : {
       "type" : "object",
       "properties" : {
-        "availableResource" : {
-          "$ref" : "#/definitions/ResourceDescription"
-        },
         "resourceId" : {
           "type" : "string"
+        },
+        "availableResource" : {
+          "$ref" : "#/definitions/ResourceDescription"
         }
       }
     },