You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by pe...@apache.org on 2021/03/25 16:11:23 UTC

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

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

penghui 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 c147b1b  Updated site at revision e4b4627
c147b1b is described below

commit c147b1b07d8e16f49d55bca4128f538cd32d3117
Author: Pulsar Site Updater <de...@pulsar.incubator.apache.org>
AuthorDate: Thu Mar 25 16:10:27 2021 +0000

    Updated site at revision e4b4627
---
 .../client/2.8.0-SNAPSHOT/allclasses-frame.html    |   2 +-
 .../client/2.8.0-SNAPSHOT/allclasses-noframe.html  |   2 +-
 .../api/client/2.8.0-SNAPSHOT/constant-values.html |   2 +-
 .../api/client/2.8.0-SNAPSHOT/deprecated-list.html |   2 +-
 content/api/client/2.8.0-SNAPSHOT/help-doc.html    |   2 +-
 content/api/client/2.8.0-SNAPSHOT/index-all.html   |   2 +-
 content/api/client/2.8.0-SNAPSHOT/index.html       |   2 +-
 .../apache/pulsar/client/api/Authentication.html   |   2 +-
 .../client/api/AuthenticationDataProvider.html     |   2 +-
 .../pulsar/client/api/AuthenticationFactory.html   |   2 +-
 .../pulsar/client/api/BatchMessageContainer.html   |   2 +-
 .../client/api/BatchReceivePolicy.Builder.html     |   2 +-
 .../pulsar/client/api/BatchReceivePolicy.html      |   2 +-
 .../apache/pulsar/client/api/BatcherBuilder.html   |   2 +-
 .../apache/pulsar/client/api/ClientBuilder.html    |   2 +-
 .../apache/pulsar/client/api/CompressionType.html  |   2 +-
 .../org/apache/pulsar/client/api/Consumer.html     |   2 +-
 .../apache/pulsar/client/api/ConsumerBuilder.html  |   2 +-
 .../client/api/ConsumerCryptoFailureAction.html    |   2 +-
 .../pulsar/client/api/ConsumerEventListener.html   |   2 +-
 .../pulsar/client/api/ConsumerInterceptor.html     |   2 +-
 .../apache/pulsar/client/api/ConsumerStats.html    |   2 +-
 .../apache/pulsar/client/api/CryptoKeyReader.html  |   2 +-
 .../apache/pulsar/client/api/DeadLetterPolicy.html |   2 +-
 .../api/EncodedAuthenticationParameterSupport.html |   2 +-
 .../pulsar/client/api/EncryptionKeyInfo.html       |   2 +-
 .../apache/pulsar/client/api/HashingScheme.html    |   2 +-
 .../apache/pulsar/client/api/KeySharedMode.html    |   2 +-
 .../KeySharedPolicy.KeySharedPolicyAutoSplit.html  |   2 +-
 .../api/KeySharedPolicy.KeySharedPolicySticky.html |   2 +-
 .../apache/pulsar/client/api/KeySharedPolicy.html  |   2 +-
 .../apache/pulsar/client/api/KeyStoreParams.html   |   2 +-
 .../org/apache/pulsar/client/api/Message.html      |   2 +-
 .../apache/pulsar/client/api/MessageCrypto.html    |   2 +-
 .../org/apache/pulsar/client/api/MessageId.html    |   2 +-
 .../apache/pulsar/client/api/MessageListener.html  |   2 +-
 .../apache/pulsar/client/api/MessageRouter.html    |   2 +-
 .../pulsar/client/api/MessageRoutingMode.html      |   2 +-
 .../org/apache/pulsar/client/api/Messages.html     |   2 +-
 .../org/apache/pulsar/client/api/Producer.html     |   2 +-
 .../pulsar/client/api/ProducerAccessMode.html      |   2 +-
 .../apache/pulsar/client/api/ProducerBuilder.html  |   2 +-
 .../client/api/ProducerCryptoFailureAction.html    |   2 +-
 .../pulsar/client/api/ProducerInterceptor.html     |   2 +-
 .../apache/pulsar/client/api/ProducerStats.html    |   2 +-
 .../apache/pulsar/client/api/ProxyProtocol.html    |   2 +-
 .../org/apache/pulsar/client/api/PulsarClient.html |   2 +-
 ...lsarClientException.AlreadyClosedException.html |   2 +-
 ...sarClientException.AuthenticationException.html |   2 +-
 ...lsarClientException.AuthorizationException.html |   2 +-
 ...sarClientException.BrokerMetadataException.html |   2 +-
 ...ClientException.BrokerPersistenceException.html |   2 +-
 .../PulsarClientException.ChecksumException.html   |   2 +-
 .../PulsarClientException.ConnectException.html    |   2 +-
 ...sarClientException.ConsumerAssignException.html |   2 +-
 ...ulsarClientException.ConsumerBusyException.html |   2 +-
 .../api/PulsarClientException.CryptoException.html |   2 +-
 ...ception.GettingAuthenticationDataException.html |   2 +-
 ...lientException.IncompatibleSchemaException.html |   2 +-
 ...entException.InvalidConfigurationException.html |   2 +-
 ...sarClientException.InvalidMessageException.html |   2 +-
 .../PulsarClientException.InvalidServiceURL.html   |   2 +-
 ...rClientException.InvalidTopicNameException.html |   2 +-
 .../api/PulsarClientException.LookupException.html |   2 +-
 ...sarClientException.MemoryBufferIsFullError.html |   2 +-
 ...lientException.MessageAcknowledgeException.html |   2 +-
 .../PulsarClientException.NotAllowedException.html |   2 +-
 ...ulsarClientException.NotConnectedException.html |   2 +-
 .../PulsarClientException.NotFoundException.html   |   2 +-
 ...ulsarClientException.NotSupportedException.html |   2 +-
 ...xception.ProducerBlockedQuotaExceededError.html |   2 +-
 ...tion.ProducerBlockedQuotaExceededException.html |   2 +-
 ...ulsarClientException.ProducerBusyException.html |   2 +-
 ...sarClientException.ProducerFencedException.html |   2 +-
 ...arClientException.ProducerQueueIsFullError.html |   2 +-
 .../PulsarClientException.TimeoutException.html    |   2 +-
 ...arClientException.TooManyRequestsException.html |   2 +-
 ...ClientException.TopicDoesNotExistException.html |   2 +-
 ...arClientException.TopicTerminatedException.html |   2 +-
 ...ientException.TransactionConflictException.html |   2 +-
 ...ception.UnsupportedAuthenticationException.html |   2 +-
 .../pulsar/client/api/PulsarClientException.html   |   2 +-
 .../org/apache/pulsar/client/api/Range.html        |   2 +-
 .../org/apache/pulsar/client/api/Reader.html       |   2 +-
 .../apache/pulsar/client/api/ReaderBuilder.html    |   2 +-
 .../apache/pulsar/client/api/ReaderListener.html   |   2 +-
 .../pulsar/client/api/RegexSubscriptionMode.html   |   2 +-
 .../org/apache/pulsar/client/api/Schema.html       |   2 +-
 .../client/api/SchemaSerializationException.html   |   2 +-
 .../pulsar/client/api/ServiceUrlProvider.html      |   2 +-
 .../org/apache/pulsar/client/api/SizeUnit.html     |   2 +-
 .../client/api/SubscriptionInitialPosition.html    |   2 +-
 .../apache/pulsar/client/api/SubscriptionMode.html |   2 +-
 .../apache/pulsar/client/api/SubscriptionType.html |   2 +-
 .../apache/pulsar/client/api/TopicMetadata.html    |   2 +-
 .../pulsar/client/api/TypedMessageBuilder.html     |   2 +-
 .../client/api/class-use/Authentication.html       |   2 +-
 .../api/class-use/AuthenticationDataProvider.html  |   2 +-
 .../api/class-use/AuthenticationFactory.html       |   2 +-
 .../api/class-use/BatchMessageContainer.html       |   2 +-
 .../api/class-use/BatchReceivePolicy.Builder.html  |   2 +-
 .../client/api/class-use/BatchReceivePolicy.html   |   2 +-
 .../client/api/class-use/BatcherBuilder.html       |   2 +-
 .../pulsar/client/api/class-use/ClientBuilder.html |   2 +-
 .../client/api/class-use/CompressionType.html      |   2 +-
 .../pulsar/client/api/class-use/Consumer.html      |   2 +-
 .../client/api/class-use/ConsumerBuilder.html      |   2 +-
 .../api/class-use/ConsumerCryptoFailureAction.html |   2 +-
 .../api/class-use/ConsumerEventListener.html       |   2 +-
 .../client/api/class-use/ConsumerInterceptor.html  |   2 +-
 .../pulsar/client/api/class-use/ConsumerStats.html |   2 +-
 .../client/api/class-use/CryptoKeyReader.html      |   2 +-
 .../client/api/class-use/DeadLetterPolicy.html     |   2 +-
 .../EncodedAuthenticationParameterSupport.html     |   2 +-
 .../client/api/class-use/EncryptionKeyInfo.html    |   2 +-
 .../pulsar/client/api/class-use/HashingScheme.html |   2 +-
 .../pulsar/client/api/class-use/KeySharedMode.html |   2 +-
 .../KeySharedPolicy.KeySharedPolicyAutoSplit.html  |   2 +-
 .../KeySharedPolicy.KeySharedPolicySticky.html     |   2 +-
 .../client/api/class-use/KeySharedPolicy.html      |   2 +-
 .../client/api/class-use/KeyStoreParams.html       |   2 +-
 .../pulsar/client/api/class-use/Message.html       |   2 +-
 .../pulsar/client/api/class-use/MessageCrypto.html |   2 +-
 .../pulsar/client/api/class-use/MessageId.html     |   2 +-
 .../client/api/class-use/MessageListener.html      |   2 +-
 .../pulsar/client/api/class-use/MessageRouter.html |   2 +-
 .../client/api/class-use/MessageRoutingMode.html   |   2 +-
 .../pulsar/client/api/class-use/Messages.html      |   2 +-
 .../pulsar/client/api/class-use/Producer.html      |   2 +-
 .../client/api/class-use/ProducerAccessMode.html   |   2 +-
 .../client/api/class-use/ProducerBuilder.html      |   2 +-
 .../api/class-use/ProducerCryptoFailureAction.html |   2 +-
 .../client/api/class-use/ProducerInterceptor.html  |   2 +-
 .../pulsar/client/api/class-use/ProducerStats.html |   2 +-
 .../pulsar/client/api/class-use/ProxyProtocol.html |   2 +-
 .../pulsar/client/api/class-use/PulsarClient.html  |   2 +-
 ...lsarClientException.AlreadyClosedException.html |   2 +-
 ...sarClientException.AuthenticationException.html |   2 +-
 ...lsarClientException.AuthorizationException.html |   2 +-
 ...sarClientException.BrokerMetadataException.html |   2 +-
 ...ClientException.BrokerPersistenceException.html |   2 +-
 .../PulsarClientException.ChecksumException.html   |   2 +-
 .../PulsarClientException.ConnectException.html    |   2 +-
 ...sarClientException.ConsumerAssignException.html |   2 +-
 ...ulsarClientException.ConsumerBusyException.html |   2 +-
 .../PulsarClientException.CryptoException.html     |   2 +-
 ...ception.GettingAuthenticationDataException.html |   2 +-
 ...lientException.IncompatibleSchemaException.html |   2 +-
 ...entException.InvalidConfigurationException.html |   2 +-
 ...sarClientException.InvalidMessageException.html |   2 +-
 .../PulsarClientException.InvalidServiceURL.html   |   2 +-
 ...rClientException.InvalidTopicNameException.html |   2 +-
 .../PulsarClientException.LookupException.html     |   2 +-
 ...sarClientException.MemoryBufferIsFullError.html |   2 +-
 ...lientException.MessageAcknowledgeException.html |   2 +-
 .../PulsarClientException.NotAllowedException.html |   2 +-
 ...ulsarClientException.NotConnectedException.html |   2 +-
 .../PulsarClientException.NotFoundException.html   |   2 +-
 ...ulsarClientException.NotSupportedException.html |   2 +-
 ...xception.ProducerBlockedQuotaExceededError.html |   2 +-
 ...tion.ProducerBlockedQuotaExceededException.html |   2 +-
 ...ulsarClientException.ProducerBusyException.html |   2 +-
 ...sarClientException.ProducerFencedException.html |   2 +-
 ...arClientException.ProducerQueueIsFullError.html |   2 +-
 .../PulsarClientException.TimeoutException.html    |   2 +-
 ...arClientException.TooManyRequestsException.html |   2 +-
 ...ClientException.TopicDoesNotExistException.html |   2 +-
 ...arClientException.TopicTerminatedException.html |   2 +-
 ...ientException.TransactionConflictException.html |   2 +-
 ...ception.UnsupportedAuthenticationException.html |   2 +-
 .../api/class-use/PulsarClientException.html       |   2 +-
 .../apache/pulsar/client/api/class-use/Range.html  |   2 +-
 .../apache/pulsar/client/api/class-use/Reader.html |   2 +-
 .../pulsar/client/api/class-use/ReaderBuilder.html |   2 +-
 .../client/api/class-use/ReaderListener.html       |   2 +-
 .../api/class-use/RegexSubscriptionMode.html       |   2 +-
 .../apache/pulsar/client/api/class-use/Schema.html |   2 +-
 .../class-use/SchemaSerializationException.html    |   2 +-
 .../client/api/class-use/ServiceUrlProvider.html   |   2 +-
 .../pulsar/client/api/class-use/SizeUnit.html      |   2 +-
 .../api/class-use/SubscriptionInitialPosition.html |   2 +-
 .../client/api/class-use/SubscriptionMode.html     |   2 +-
 .../client/api/class-use/SubscriptionType.html     |   2 +-
 .../pulsar/client/api/class-use/TopicMetadata.html |   2 +-
 .../client/api/class-use/TypedMessageBuilder.html  |   2 +-
 .../api/interceptor/ProducerInterceptor.html       |   2 +-
 .../interceptor/ProducerInterceptorWrapper.html    |   2 +-
 .../interceptor/class-use/ProducerInterceptor.html |   2 +-
 .../class-use/ProducerInterceptorWrapper.html      |   2 +-
 .../client/api/interceptor/package-frame.html      |   2 +-
 .../client/api/interceptor/package-summary.html    |   2 +-
 .../client/api/interceptor/package-tree.html       |   2 +-
 .../pulsar/client/api/interceptor/package-use.html |   2 +-
 .../apache/pulsar/client/api/package-frame.html    |   2 +-
 .../apache/pulsar/client/api/package-summary.html  |   2 +-
 .../org/apache/pulsar/client/api/package-tree.html |   2 +-
 .../org/apache/pulsar/client/api/package-use.html  |   2 +-
 .../org/apache/pulsar/client/api/schema/Field.html |   2 +-
 .../client/api/schema/FieldSchemaBuilder.html      |   2 +-
 .../pulsar/client/api/schema/GenericRecord.html    |   2 +-
 .../client/api/schema/GenericRecordBuilder.html    |   2 +-
 .../pulsar/client/api/schema/GenericSchema.html    |   2 +-
 .../client/api/schema/RecordSchemaBuilder.html     |   2 +-
 .../pulsar/client/api/schema/SchemaBuilder.html    |   2 +-
 .../pulsar/client/api/schema/SchemaDefinition.html |   2 +-
 .../client/api/schema/SchemaDefinitionBuilder.html |   2 +-
 .../client/api/schema/SchemaInfoProvider.html      |   2 +-
 .../pulsar/client/api/schema/SchemaReader.html     |   2 +-
 .../pulsar/client/api/schema/SchemaWriter.html     |   2 +-
 .../pulsar/client/api/schema/class-use/Field.html  |   2 +-
 .../api/schema/class-use/FieldSchemaBuilder.html   |   2 +-
 .../client/api/schema/class-use/GenericRecord.html |   2 +-
 .../api/schema/class-use/GenericRecordBuilder.html |   2 +-
 .../client/api/schema/class-use/GenericSchema.html |   2 +-
 .../api/schema/class-use/RecordSchemaBuilder.html  |   2 +-
 .../client/api/schema/class-use/SchemaBuilder.html |   2 +-
 .../api/schema/class-use/SchemaDefinition.html     |   2 +-
 .../schema/class-use/SchemaDefinitionBuilder.html  |   2 +-
 .../api/schema/class-use/SchemaInfoProvider.html   |   2 +-
 .../client/api/schema/class-use/SchemaReader.html  |   2 +-
 .../client/api/schema/class-use/SchemaWriter.html  |   2 +-
 .../pulsar/client/api/schema/package-frame.html    |   2 +-
 .../pulsar/client/api/schema/package-summary.html  |   2 +-
 .../pulsar/client/api/schema/package-tree.html     |   2 +-
 .../pulsar/client/api/schema/package-use.html      |   2 +-
 .../pulsar/client/api/transaction/Transaction.html |   2 +-
 .../api/transaction/TransactionBufferClient.html   |   2 +-
 ...ferClientException.RequestTimeoutException.html |   2 +-
 .../TransactionBufferClientException.html          |   2 +-
 .../client/api/transaction/TransactionBuilder.html |   2 +-
 .../TransactionCoordinatorClient.State.html        |   2 +-
 .../transaction/TransactionCoordinatorClient.html  |   2 +-
 ...tException.CoordinatorClientStateException.html |   2 +-
 ...ientException.CoordinatorNotFoundException.html |   2 +-
 ...rClientException.InvalidTxnStatusException.html |   2 +-
 ...ception.MetaStoreHandlerNotExistsException.html |   2 +-
 ...xception.MetaStoreHandlerNotReadyException.html |   2 +-
 ...ientException.TransactionNotFoundException.html |   2 +-
 .../TransactionCoordinatorClientException.html     |   2 +-
 .../pulsar/client/api/transaction/TxnID.html       |   2 +-
 .../api/transaction/class-use/Transaction.html     |   2 +-
 .../class-use/TransactionBufferClient.html         |   2 +-
 ...ferClientException.RequestTimeoutException.html |   2 +-
 .../TransactionBufferClientException.html          |   2 +-
 .../transaction/class-use/TransactionBuilder.html  |   2 +-
 .../TransactionCoordinatorClient.State.html        |   2 +-
 .../class-use/TransactionCoordinatorClient.html    |   2 +-
 ...tException.CoordinatorClientStateException.html |   2 +-
 ...ientException.CoordinatorNotFoundException.html |   2 +-
 ...rClientException.InvalidTxnStatusException.html |   2 +-
 ...ception.MetaStoreHandlerNotExistsException.html |   2 +-
 ...xception.MetaStoreHandlerNotReadyException.html |   2 +-
 ...ientException.TransactionNotFoundException.html |   2 +-
 .../TransactionCoordinatorClientException.html     |   2 +-
 .../client/api/transaction/class-use/TxnID.html    |   2 +-
 .../client/api/transaction/package-frame.html      |   2 +-
 .../client/api/transaction/package-summary.html    |   2 +-
 .../client/api/transaction/package-tree.html       |   2 +-
 .../pulsar/client/api/transaction/package-use.html |   2 +-
 .../client/internal/DefaultImplementation.html     |   2 +-
 .../internal/class-use/DefaultImplementation.html  |   2 +-
 .../pulsar/client/internal/package-frame.html      |   2 +-
 .../pulsar/client/internal/package-summary.html    |   2 +-
 .../pulsar/client/internal/package-tree.html       |   2 +-
 .../apache/pulsar/client/internal/package-use.html |   2 +-
 .../org/apache/pulsar/common/api/AuthData.html     |   2 +-
 .../api/EncryptionContext.EncryptionKey.html       |   2 +-
 .../pulsar/common/api/EncryptionContext.html       |   2 +-
 .../pulsar/common/api/class-use/AuthData.html      |   2 +-
 .../class-use/EncryptionContext.EncryptionKey.html |   2 +-
 .../common/api/class-use/EncryptionContext.html    |   2 +-
 .../apache/pulsar/common/api/package-frame.html    |   2 +-
 .../apache/pulsar/common/api/package-summary.html  |   2 +-
 .../org/apache/pulsar/common/api/package-tree.html |   2 +-
 .../org/apache/pulsar/common/api/package-use.html  |   2 +-
 .../InterfaceAudience.LimitedPrivate.html          |   2 +-
 .../classification/InterfaceAudience.Private.html  |   2 +-
 .../classification/InterfaceAudience.Public.html   |   2 +-
 .../common/classification/InterfaceAudience.html   |   2 +-
 .../InterfaceStability.Evolving.html               |   2 +-
 .../classification/InterfaceStability.Stable.html  |   2 +-
 .../InterfaceStability.Unstable.html               |   2 +-
 .../common/classification/InterfaceStability.html  |   2 +-
 .../InterfaceAudience.LimitedPrivate.html          |   2 +-
 .../class-use/InterfaceAudience.Private.html       |   2 +-
 .../class-use/InterfaceAudience.Public.html        |   2 +-
 .../class-use/InterfaceAudience.html               |   2 +-
 .../class-use/InterfaceStability.Evolving.html     |   2 +-
 .../class-use/InterfaceStability.Stable.html       |   2 +-
 .../class-use/InterfaceStability.Unstable.html     |   2 +-
 .../class-use/InterfaceStability.html              |   2 +-
 .../common/classification/package-frame.html       |   2 +-
 .../common/classification/package-summary.html     |   2 +-
 .../pulsar/common/classification/package-tree.html |   2 +-
 .../pulsar/common/classification/package-use.html  |   2 +-
 .../common/schema/KeyValue.KeyValueDecoder.html    |   2 +-
 .../org/apache/pulsar/common/schema/KeyValue.html  |   2 +-
 .../pulsar/common/schema/KeyValueEncodingType.html |   2 +-
 .../apache/pulsar/common/schema/SchemaInfo.html    |   2 +-
 .../common/schema/SchemaInfoWithVersion.html       |   2 +-
 .../apache/pulsar/common/schema/SchemaType.html    |   2 +-
 .../schema/class-use/KeyValue.KeyValueDecoder.html |   2 +-
 .../pulsar/common/schema/class-use/KeyValue.html   |   2 +-
 .../schema/class-use/KeyValueEncodingType.html     |   2 +-
 .../pulsar/common/schema/class-use/SchemaInfo.html |   2 +-
 .../schema/class-use/SchemaInfoWithVersion.html    |   2 +-
 .../pulsar/common/schema/class-use/SchemaType.html |   2 +-
 .../apache/pulsar/common/schema/package-frame.html |   2 +-
 .../pulsar/common/schema/package-summary.html      |   2 +-
 .../apache/pulsar/common/schema/package-tree.html  |   2 +-
 .../apache/pulsar/common/schema/package-use.html   |   2 +-
 .../api/client/2.8.0-SNAPSHOT/overview-frame.html  |   2 +-
 .../client/2.8.0-SNAPSHOT/overview-summary.html    |   2 +-
 .../api/client/2.8.0-SNAPSHOT/overview-tree.html   |   2 +-
 .../api/client/2.8.0-SNAPSHOT/serialized-form.html |   2 +-
 content/api/python/2.8.0-SNAPSHOT/index.html       |   6 +-
 content/api/python/index.html                      |   6 +-
 .../zh-CN/2.1.0-incubating/adaptors-kafka.html     |   4 +-
 .../2.1.0-incubating/adaptors-kafka/index.html     |   4 +-
 .../2.1.0-incubating/client-libraries-cpp.html     |   6 +-
 .../client-libraries-cpp/index.html                |   6 +-
 .../2.1.0-incubating/cookbooks-encryption.html     |   6 +-
 .../cookbooks-encryption/index.html                |   6 +-
 .../2.1.0-incubating/develop-binary-protocol.html  |   8 +-
 .../develop-binary-protocol/index.html             |   8 +-
 .../2.1.0-incubating/functions-deploying.html      |   2 +-
 .../functions-deploying/index.html                 |   2 +-
 .../2.1.0-incubating/reference-terminology.html    |  46 +-
 .../reference-terminology/index.html               |  46 +-
 .../2.1.0-incubating/security-encryption.html      |   6 +-
 .../security-encryption/index.html                 |   6 +-
 .../zh-CN/2.1.1-incubating/adaptors-kafka.html     |   4 +-
 .../2.1.1-incubating/adaptors-kafka/index.html     |   4 +-
 .../2.1.1-incubating/client-libraries-cpp.html     |   6 +-
 .../client-libraries-cpp/index.html                |   6 +-
 .../2.1.1-incubating/cookbooks-encryption.html     |   6 +-
 .../cookbooks-encryption/index.html                |   6 +-
 .../2.1.1-incubating/develop-binary-protocol.html  |   8 +-
 .../develop-binary-protocol/index.html             |   8 +-
 .../2.1.1-incubating/functions-deploying.html      |   2 +-
 .../functions-deploying/index.html                 |   2 +-
 .../2.1.1-incubating/reference-terminology.html    |  46 +-
 .../reference-terminology/index.html               |  46 +-
 .../2.1.1-incubating/security-encryption.html      |   6 +-
 .../security-encryption/index.html                 |   6 +-
 content/docs/zh-CN/2.2.0/adaptors-kafka.html       |   4 +-
 content/docs/zh-CN/2.2.0/adaptors-kafka/index.html |   4 +-
 content/docs/zh-CN/2.2.0/client-libraries-cpp.html |   6 +-
 .../zh-CN/2.2.0/client-libraries-cpp/index.html    |   6 +-
 content/docs/zh-CN/2.2.0/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.2.0/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.2.0/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.2.0/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.2.0/functions-deploying.html  |   2 +-
 .../zh-CN/2.2.0/functions-deploying/index.html     |   2 +-
 .../docs/zh-CN/2.2.0/reference-terminology.html    |  46 +-
 .../zh-CN/2.2.0/reference-terminology/index.html   |  46 +-
 content/docs/zh-CN/2.2.0/security-encryption.html  |   6 +-
 .../zh-CN/2.2.0/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.2.1/adaptors-kafka.html       |   4 +-
 content/docs/zh-CN/2.2.1/adaptors-kafka/index.html |   4 +-
 content/docs/zh-CN/2.2.1/client-libraries-cpp.html |   6 +-
 .../zh-CN/2.2.1/client-libraries-cpp/index.html    |   6 +-
 content/docs/zh-CN/2.2.1/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.2.1/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.2.1/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.2.1/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.2.1/functions-deploying.html  |   2 +-
 .../zh-CN/2.2.1/functions-deploying/index.html     |   2 +-
 .../docs/zh-CN/2.2.1/reference-terminology.html    |  46 +-
 .../zh-CN/2.2.1/reference-terminology/index.html   |  46 +-
 content/docs/zh-CN/2.2.1/security-encryption.html  |   6 +-
 .../zh-CN/2.2.1/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.3.0/adaptors-kafka.html       |   4 +-
 content/docs/zh-CN/2.3.0/adaptors-kafka/index.html |   4 +-
 content/docs/zh-CN/2.3.0/client-libraries-cpp.html |   6 +-
 .../zh-CN/2.3.0/client-libraries-cpp/index.html    |   6 +-
 .../zh-CN/2.3.0/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.3.0/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.3.0/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.3.0/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.3.0/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.3.0/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.3.0/functions-deploying.html  |   2 +-
 .../zh-CN/2.3.0/functions-deploying/index.html     |   2 +-
 .../docs/zh-CN/2.3.0/reference-terminology.html    |  44 +-
 .../zh-CN/2.3.0/reference-terminology/index.html   |  44 +-
 content/docs/zh-CN/2.3.0/security-encryption.html  |   6 +-
 .../zh-CN/2.3.0/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.3.1/adaptors-kafka.html       |   4 +-
 content/docs/zh-CN/2.3.1/adaptors-kafka/index.html |   4 +-
 content/docs/zh-CN/2.3.1/client-libraries-cpp.html |   6 +-
 .../zh-CN/2.3.1/client-libraries-cpp/index.html    |   6 +-
 .../zh-CN/2.3.1/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.3.1/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.3.1/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.3.1/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.3.1/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.3.1/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.3.1/functions-deploying.html  |   2 +-
 .../zh-CN/2.3.1/functions-deploying/index.html     |   2 +-
 .../docs/zh-CN/2.3.1/reference-terminology.html    |  48 +-
 .../zh-CN/2.3.1/reference-terminology/index.html   |  48 +-
 content/docs/zh-CN/2.3.1/security-encryption.html  |   6 +-
 .../zh-CN/2.3.1/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.3.2/adaptors-kafka.html       |   4 +-
 content/docs/zh-CN/2.3.2/adaptors-kafka/index.html |   4 +-
 content/docs/zh-CN/2.3.2/client-libraries-cpp.html |   6 +-
 .../zh-CN/2.3.2/client-libraries-cpp/index.html    |   6 +-
 .../zh-CN/2.3.2/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.3.2/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.3.2/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.3.2/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.3.2/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.3.2/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.3.2/functions-deploying.html  |   2 +-
 .../zh-CN/2.3.2/functions-deploying/index.html     |   2 +-
 .../docs/zh-CN/2.3.2/reference-terminology.html    |  48 +-
 .../zh-CN/2.3.2/reference-terminology/index.html   |  48 +-
 content/docs/zh-CN/2.3.2/security-encryption.html  |   6 +-
 .../zh-CN/2.3.2/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.4.0/adaptors-kafka.html       |   4 +-
 content/docs/zh-CN/2.4.0/adaptors-kafka/index.html |   4 +-
 content/docs/zh-CN/2.4.0/client-libraries-cpp.html |   6 +-
 .../zh-CN/2.4.0/client-libraries-cpp/index.html    |   6 +-
 .../zh-CN/2.4.0/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.4.0/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.4.0/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.4.0/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.4.0/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.4.0/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.4.0/functions-deploying.html  |   2 +-
 .../zh-CN/2.4.0/functions-deploying/index.html     |   2 +-
 .../docs/zh-CN/2.4.0/reference-terminology.html    |  48 +-
 .../zh-CN/2.4.0/reference-terminology/index.html   |  48 +-
 content/docs/zh-CN/2.4.0/security-encryption.html  |   6 +-
 .../zh-CN/2.4.0/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.4.1/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.4.1/adaptors-kafka/index.html |   6 +-
 content/docs/zh-CN/2.4.1/admin-api-schemas.html    |   2 +-
 .../docs/zh-CN/2.4.1/admin-api-schemas/index.html  |   2 +-
 content/docs/zh-CN/2.4.1/client-libraries-cpp.html |   6 +-
 .../zh-CN/2.4.1/client-libraries-cpp/index.html    |   6 +-
 .../zh-CN/2.4.1/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.4.1/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.4.1/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.4.1/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.4.1/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.4.1/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.4.1/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.4.1/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.4.1/functions-deploying.html  |   2 +-
 .../zh-CN/2.4.1/functions-deploying/index.html     |   2 +-
 .../docs/zh-CN/2.4.1/reference-terminology.html    |  48 +-
 .../zh-CN/2.4.1/reference-terminology/index.html   |  48 +-
 content/docs/zh-CN/2.4.1/security-encryption.html  |   6 +-
 .../zh-CN/2.4.1/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.4.2/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.4.2/adaptors-kafka/index.html |   6 +-
 content/docs/zh-CN/2.4.2/admin-api-schemas.html    |   2 +-
 .../docs/zh-CN/2.4.2/admin-api-schemas/index.html  |   2 +-
 content/docs/zh-CN/2.4.2/client-libraries-cpp.html |   6 +-
 .../zh-CN/2.4.2/client-libraries-cpp/index.html    |   6 +-
 .../zh-CN/2.4.2/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.4.2/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.4.2/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.4.2/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.4.2/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.4.2/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.4.2/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.4.2/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.4.2/functions-deploying.html  |   2 +-
 .../zh-CN/2.4.2/functions-deploying/index.html     |   2 +-
 .../docs/zh-CN/2.4.2/reference-terminology.html    |  48 +-
 .../zh-CN/2.4.2/reference-terminology/index.html   |  48 +-
 content/docs/zh-CN/2.4.2/security-encryption.html  |   6 +-
 .../zh-CN/2.4.2/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.5.0/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.5.0/adaptors-kafka/index.html |   6 +-
 .../2.5.0/admin-api-non-partitioned-topics.html    |   2 +-
 .../admin-api-non-partitioned-topics/index.html    |   2 +-
 .../docs/zh-CN/2.5.0/client-libraries-java.html    |   8 +-
 .../zh-CN/2.5.0/client-libraries-java/index.html   |   8 +-
 content/docs/zh-CN/2.5.0/concepts-messaging.html   |   4 +-
 .../docs/zh-CN/2.5.0/concepts-messaging/index.html |   4 +-
 .../zh-CN/2.5.0/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.5.0/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.5.0/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.5.0/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.5.0/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.5.0/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.5.0/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.5.0/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.5.0/functions-deploying.html  |   2 +-
 .../zh-CN/2.5.0/functions-deploying/index.html     |   2 +-
 content/docs/zh-CN/2.5.0/helm-overview.html        |   4 +-
 content/docs/zh-CN/2.5.0/helm-overview/index.html  |   4 +-
 .../docs/zh-CN/2.5.0/reference-terminology.html    |  48 +-
 .../zh-CN/2.5.0/reference-terminology/index.html   |  48 +-
 .../2.5.0/schema-evolution-compatibility.html      |   6 +-
 .../schema-evolution-compatibility/index.html      |   6 +-
 content/docs/zh-CN/2.5.0/security-encryption.html  |   6 +-
 .../zh-CN/2.5.0/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.5.1/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.5.1/adaptors-kafka/index.html |   6 +-
 .../2.5.1/admin-api-non-partitioned-topics.html    |   2 +-
 .../admin-api-non-partitioned-topics/index.html    |   2 +-
 .../docs/zh-CN/2.5.1/client-libraries-java.html    |   8 +-
 .../zh-CN/2.5.1/client-libraries-java/index.html   |   8 +-
 content/docs/zh-CN/2.5.1/concepts-messaging.html   |   4 +-
 .../docs/zh-CN/2.5.1/concepts-messaging/index.html |   4 +-
 .../zh-CN/2.5.1/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.5.1/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.5.1/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.5.1/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.5.1/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.5.1/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.5.1/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.5.1/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.5.1/functions-deploying.html  |   2 +-
 .../zh-CN/2.5.1/functions-deploying/index.html     |   2 +-
 content/docs/zh-CN/2.5.1/helm-overview.html        |   4 +-
 content/docs/zh-CN/2.5.1/helm-overview/index.html  |   4 +-
 .../docs/zh-CN/2.5.1/reference-terminology.html    |  48 +-
 .../zh-CN/2.5.1/reference-terminology/index.html   |  48 +-
 .../2.5.1/schema-evolution-compatibility.html      |   6 +-
 .../schema-evolution-compatibility/index.html      |   6 +-
 content/docs/zh-CN/2.5.1/security-encryption.html  |   6 +-
 .../zh-CN/2.5.1/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.5.2/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.5.2/adaptors-kafka/index.html |   6 +-
 .../2.5.2/admin-api-non-partitioned-topics.html    |   2 +-
 .../admin-api-non-partitioned-topics/index.html    |   2 +-
 .../docs/zh-CN/2.5.2/client-libraries-java.html    |   8 +-
 .../zh-CN/2.5.2/client-libraries-java/index.html   |   8 +-
 content/docs/zh-CN/2.5.2/concepts-messaging.html   |   4 +-
 .../docs/zh-CN/2.5.2/concepts-messaging/index.html |   4 +-
 .../zh-CN/2.5.2/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.5.2/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.5.2/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.5.2/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.5.2/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.5.2/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.5.2/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.5.2/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.5.2/functions-deploying.html  |   2 +-
 .../zh-CN/2.5.2/functions-deploying/index.html     |   2 +-
 content/docs/zh-CN/2.5.2/helm-overview.html        |   4 +-
 content/docs/zh-CN/2.5.2/helm-overview/index.html  |   4 +-
 .../docs/zh-CN/2.5.2/reference-terminology.html    |  48 +-
 .../zh-CN/2.5.2/reference-terminology/index.html   |  48 +-
 .../2.5.2/schema-evolution-compatibility.html      |   6 +-
 .../schema-evolution-compatibility/index.html      |   6 +-
 content/docs/zh-CN/2.5.2/security-encryption.html  |   6 +-
 .../zh-CN/2.5.2/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.6.0/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.6.0/adaptors-kafka/index.html |   6 +-
 .../2.6.0/admin-api-non-partitioned-topics.html    |   2 +-
 .../admin-api-non-partitioned-topics/index.html    |   2 +-
 .../docs/zh-CN/2.6.0/client-libraries-dotnet.html  |   8 +-
 .../zh-CN/2.6.0/client-libraries-dotnet/index.html |   8 +-
 .../docs/zh-CN/2.6.0/client-libraries-java.html    |   8 +-
 .../zh-CN/2.6.0/client-libraries-java/index.html   |   8 +-
 content/docs/zh-CN/2.6.0/concepts-messaging.html   |   4 +-
 .../docs/zh-CN/2.6.0/concepts-messaging/index.html |   4 +-
 .../zh-CN/2.6.0/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.6.0/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.6.0/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.6.0/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.6.0/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.6.0/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.6.0/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.6.0/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.6.0/functions-deploying.html  |   2 +-
 .../zh-CN/2.6.0/functions-deploying/index.html     |   2 +-
 content/docs/zh-CN/2.6.0/helm-overview.html        |   4 +-
 content/docs/zh-CN/2.6.0/helm-overview/index.html  |   4 +-
 .../docs/zh-CN/2.6.0/reference-terminology.html    |  46 +-
 .../zh-CN/2.6.0/reference-terminology/index.html   |  46 +-
 .../2.6.0/schema-evolution-compatibility.html      |   6 +-
 .../schema-evolution-compatibility/index.html      |   6 +-
 content/docs/zh-CN/2.6.0/security-encryption.html  |   6 +-
 .../zh-CN/2.6.0/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.6.1/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.6.1/adaptors-kafka/index.html |   6 +-
 .../2.6.1/admin-api-non-partitioned-topics.html    |   2 +-
 .../admin-api-non-partitioned-topics/index.html    |   2 +-
 .../docs/zh-CN/2.6.1/client-libraries-dotnet.html  |   8 +-
 .../zh-CN/2.6.1/client-libraries-dotnet/index.html |   8 +-
 .../docs/zh-CN/2.6.1/client-libraries-java.html    |   8 +-
 .../zh-CN/2.6.1/client-libraries-java/index.html   |   8 +-
 content/docs/zh-CN/2.6.1/concepts-messaging.html   |   4 +-
 .../docs/zh-CN/2.6.1/concepts-messaging/index.html |   4 +-
 .../zh-CN/2.6.1/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.6.1/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.6.1/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.6.1/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.6.1/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.6.1/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.6.1/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.6.1/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.6.1/functions-deploying.html  |   2 +-
 .../zh-CN/2.6.1/functions-deploying/index.html     |   2 +-
 content/docs/zh-CN/2.6.1/helm-overview.html        |   4 +-
 content/docs/zh-CN/2.6.1/helm-overview/index.html  |   4 +-
 .../docs/zh-CN/2.6.1/reference-terminology.html    |  46 +-
 .../zh-CN/2.6.1/reference-terminology/index.html   |  46 +-
 .../2.6.1/schema-evolution-compatibility.html      |   6 +-
 .../schema-evolution-compatibility/index.html      |   6 +-
 content/docs/zh-CN/2.6.1/security-encryption.html  |   6 +-
 .../zh-CN/2.6.1/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.6.2/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.6.2/adaptors-kafka/index.html |   6 +-
 .../2.6.2/admin-api-non-partitioned-topics.html    |   2 +-
 .../admin-api-non-partitioned-topics/index.html    |   2 +-
 .../docs/zh-CN/2.6.2/client-libraries-dotnet.html  |   8 +-
 .../zh-CN/2.6.2/client-libraries-dotnet/index.html |   8 +-
 .../docs/zh-CN/2.6.2/client-libraries-java.html    |   8 +-
 .../zh-CN/2.6.2/client-libraries-java/index.html   |   8 +-
 content/docs/zh-CN/2.6.2/concepts-messaging.html   |   4 +-
 .../docs/zh-CN/2.6.2/concepts-messaging/index.html |   4 +-
 .../zh-CN/2.6.2/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.6.2/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.6.2/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.6.2/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.6.2/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.6.2/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.6.2/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.6.2/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.6.2/functions-deploying.html  |   2 +-
 .../zh-CN/2.6.2/functions-deploying/index.html     |   2 +-
 content/docs/zh-CN/2.6.2/helm-overview.html        |   4 +-
 content/docs/zh-CN/2.6.2/helm-overview/index.html  |   4 +-
 .../docs/zh-CN/2.6.2/reference-terminology.html    |  46 +-
 .../zh-CN/2.6.2/reference-terminology/index.html   |  46 +-
 .../2.6.2/schema-evolution-compatibility.html      |   6 +-
 .../schema-evolution-compatibility/index.html      |   6 +-
 content/docs/zh-CN/2.6.2/security-encryption.html  |   6 +-
 .../zh-CN/2.6.2/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.6.3/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.6.3/adaptors-kafka/index.html |   6 +-
 .../2.6.3/admin-api-non-partitioned-topics.html    |   2 +-
 .../admin-api-non-partitioned-topics/index.html    |   2 +-
 .../docs/zh-CN/2.6.3/client-libraries-dotnet.html  |   8 +-
 .../zh-CN/2.6.3/client-libraries-dotnet/index.html |   8 +-
 .../docs/zh-CN/2.6.3/client-libraries-java.html    |   8 +-
 .../zh-CN/2.6.3/client-libraries-java/index.html   |   8 +-
 content/docs/zh-CN/2.6.3/concepts-messaging.html   |   4 +-
 .../docs/zh-CN/2.6.3/concepts-messaging/index.html |   4 +-
 .../zh-CN/2.6.3/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.6.3/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.6.3/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.6.3/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.6.3/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.6.3/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.6.3/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.6.3/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.6.3/functions-deploying.html  |   2 +-
 .../zh-CN/2.6.3/functions-deploying/index.html     |   2 +-
 content/docs/zh-CN/2.6.3/helm-overview.html        |   4 +-
 content/docs/zh-CN/2.6.3/helm-overview/index.html  |   4 +-
 .../docs/zh-CN/2.6.3/reference-terminology.html    |  46 +-
 .../zh-CN/2.6.3/reference-terminology/index.html   |  46 +-
 .../2.6.3/schema-evolution-compatibility.html      |   6 +-
 .../schema-evolution-compatibility/index.html      |   6 +-
 content/docs/zh-CN/2.6.3/security-encryption.html  |   6 +-
 .../zh-CN/2.6.3/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/2.7.0/adaptors-kafka.html       |   6 +-
 content/docs/zh-CN/2.7.0/adaptors-kafka/index.html |   6 +-
 content/docs/zh-CN/2.7.0/admin-api-namespaces.html |  12 +-
 .../zh-CN/2.7.0/admin-api-namespaces/index.html    |  12 +-
 content/docs/zh-CN/2.7.0/admin-api-topics.html     |   2 +-
 .../docs/zh-CN/2.7.0/admin-api-topics/index.html   |   2 +-
 .../docs/zh-CN/2.7.0/client-libraries-dotnet.html  |   8 +-
 .../zh-CN/2.7.0/client-libraries-dotnet/index.html |   8 +-
 .../docs/zh-CN/2.7.0/client-libraries-java.html    |   8 +-
 .../zh-CN/2.7.0/client-libraries-java/index.html   |   8 +-
 content/docs/zh-CN/2.7.0/concepts-messaging.html   |   4 +-
 .../docs/zh-CN/2.7.0/concepts-messaging/index.html |   4 +-
 .../zh-CN/2.7.0/cookbooks-bookkeepermetadata.html  |   2 +-
 .../2.7.0/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/2.7.0/cookbooks-encryption.html |   6 +-
 .../zh-CN/2.7.0/cookbooks-encryption/index.html    |   6 +-
 .../docs/zh-CN/2.7.0/develop-binary-protocol.html  |   8 +-
 .../zh-CN/2.7.0/develop-binary-protocol/index.html |   8 +-
 content/docs/zh-CN/2.7.0/functions-deploy.html     |   2 +-
 .../docs/zh-CN/2.7.0/functions-deploy/index.html   |   2 +-
 content/docs/zh-CN/2.7.0/functions-deploying.html  |   2 +-
 .../zh-CN/2.7.0/functions-deploying/index.html     |   2 +-
 content/docs/zh-CN/2.7.0/helm-overview.html        |   4 +-
 content/docs/zh-CN/2.7.0/helm-overview/index.html  |   4 +-
 .../docs/zh-CN/2.7.0/reference-terminology.html    |  48 +-
 .../zh-CN/2.7.0/reference-terminology/index.html   |  48 +-
 .../2.7.0/schema-evolution-compatibility.html      |   6 +-
 .../schema-evolution-compatibility/index.html      |   6 +-
 content/docs/zh-CN/2.7.0/security-encryption.html  |   6 +-
 .../zh-CN/2.7.0/security-encryption/index.html     |   6 +-
 content/docs/zh-CN/adaptors-kafka.html             |   6 +-
 content/docs/zh-CN/adaptors-kafka/index.html       |   6 +-
 content/docs/zh-CN/admin-api-namespaces.html       |  26 +-
 content/docs/zh-CN/admin-api-namespaces/index.html |  26 +-
 content/docs/zh-CN/admin-api-topics.html           |   2 +-
 content/docs/zh-CN/admin-api-topics/index.html     |   2 +-
 content/docs/zh-CN/client-libraries-dotnet.html    |   8 +-
 .../docs/zh-CN/client-libraries-dotnet/index.html  |   8 +-
 content/docs/zh-CN/client-libraries-java.html      |   8 +-
 .../docs/zh-CN/client-libraries-java/index.html    |   8 +-
 content/docs/zh-CN/concepts-messaging.html         |   4 +-
 content/docs/zh-CN/concepts-messaging/index.html   |   4 +-
 .../docs/zh-CN/cookbooks-bookkeepermetadata.html   |   2 +-
 .../zh-CN/cookbooks-bookkeepermetadata/index.html  |   2 +-
 content/docs/zh-CN/cookbooks-encryption.html       |   6 +-
 content/docs/zh-CN/cookbooks-encryption/index.html |   6 +-
 content/docs/zh-CN/develop-binary-protocol.html    |   8 +-
 .../docs/zh-CN/develop-binary-protocol/index.html  |   8 +-
 content/docs/zh-CN/functions-deploy.html           |   2 +-
 content/docs/zh-CN/functions-deploy/index.html     |   2 +-
 content/docs/zh-CN/functions-deploying.html        |   2 +-
 content/docs/zh-CN/functions-deploying/index.html  |   2 +-
 content/docs/zh-CN/helm-overview.html              |   4 +-
 content/docs/zh-CN/helm-overview/index.html        |   4 +-
 content/docs/zh-CN/next/adaptors-kafka.html        |   8 +-
 content/docs/zh-CN/next/adaptors-kafka/index.html  |   8 +-
 content/docs/zh-CN/next/adaptors-spark.html        |   2 +-
 content/docs/zh-CN/next/adaptors-spark/index.html  |   2 +-
 content/docs/zh-CN/next/adaptors-storm.html        |   2 +-
 content/docs/zh-CN/next/adaptors-storm/index.html  |   2 +-
 content/docs/zh-CN/next/admin-api-brokers.html     |   2 +-
 .../docs/zh-CN/next/admin-api-brokers/index.html   |   2 +-
 content/docs/zh-CN/next/admin-api-clusters.html    |   2 +-
 .../docs/zh-CN/next/admin-api-clusters/index.html  |   2 +-
 content/docs/zh-CN/next/admin-api-functions.html   |   2 +-
 .../docs/zh-CN/next/admin-api-functions/index.html |   2 +-
 content/docs/zh-CN/next/admin-api-namespaces.html  |  30 +-
 .../zh-CN/next/admin-api-namespaces/index.html     |  30 +-
 content/docs/zh-CN/next/admin-api-overview.html    |   2 +-
 .../docs/zh-CN/next/admin-api-overview/index.html  |   2 +-
 content/docs/zh-CN/next/admin-api-packages.html    |   4 +-
 .../docs/zh-CN/next/admin-api-packages/index.html  |   4 +-
 content/docs/zh-CN/next/admin-api-permissions.html |   2 +-
 .../zh-CN/next/admin-api-permissions/index.html    |   2 +-
 content/docs/zh-CN/next/admin-api-tenants.html     |   2 +-
 .../docs/zh-CN/next/admin-api-tenants/index.html   |   2 +-
 content/docs/zh-CN/next/admin-api-topics.html      |   4 +-
 .../docs/zh-CN/next/admin-api-topics/index.html    |   4 +-
 content/docs/zh-CN/next/administration-geo.html    |   2 +-
 .../docs/zh-CN/next/administration-geo/index.html  |   2 +-
 .../docs/zh-CN/next/administration-isolation.html  |   2 +-
 .../zh-CN/next/administration-isolation/index.html |   2 +-
 .../zh-CN/next/administration-load-balance.html    |   2 +-
 .../next/administration-load-balance/index.html    |   2 +-
 content/docs/zh-CN/next/administration-proxy.html  |   2 +-
 .../zh-CN/next/administration-proxy/index.html     |   2 +-
 .../zh-CN/next/administration-pulsar-manager.html  |   2 +-
 .../next/administration-pulsar-manager/index.html  |   2 +-
 content/docs/zh-CN/next/administration-stats.html  |   2 +-
 .../zh-CN/next/administration-stats/index.html     |   2 +-
 .../docs/zh-CN/next/administration-upgrade.html    |   2 +-
 .../zh-CN/next/administration-upgrade/index.html   |   2 +-
 content/docs/zh-CN/next/administration-zk-bk.html  |   2 +-
 .../zh-CN/next/administration-zk-bk/index.html     |   2 +-
 content/docs/zh-CN/next/client-libraries-cpp.html  |   2 +-
 .../zh-CN/next/client-libraries-cpp/index.html     |   2 +-
 .../docs/zh-CN/next/client-libraries-dotnet.html   |  10 +-
 .../zh-CN/next/client-libraries-dotnet/index.html  |  10 +-
 content/docs/zh-CN/next/client-libraries-go.html   |   2 +-
 .../docs/zh-CN/next/client-libraries-go/index.html |   2 +-
 content/docs/zh-CN/next/client-libraries-java.html |  10 +-
 .../zh-CN/next/client-libraries-java/index.html    |  10 +-
 content/docs/zh-CN/next/client-libraries-node.html |   2 +-
 .../zh-CN/next/client-libraries-node/index.html    |   2 +-
 .../docs/zh-CN/next/client-libraries-python.html   |   2 +-
 .../zh-CN/next/client-libraries-python/index.html  |   2 +-
 .../zh-CN/next/client-libraries-websocket.html     |   2 +-
 .../next/client-libraries-websocket/index.html     |   2 +-
 content/docs/zh-CN/next/client-libraries.html      |   2 +-
 .../docs/zh-CN/next/client-libraries/index.html    |   2 +-
 .../zh-CN/next/concepts-architecture-overview.html |   2 +-
 .../next/concepts-architecture-overview/index.html |   2 +-
 .../docs/zh-CN/next/concepts-authentication.html   |   2 +-
 .../zh-CN/next/concepts-authentication/index.html  |   2 +-
 content/docs/zh-CN/next/concepts-clients.html      |   2 +-
 .../docs/zh-CN/next/concepts-clients/index.html    |   2 +-
 content/docs/zh-CN/next/concepts-messaging.html    |   6 +-
 .../docs/zh-CN/next/concepts-messaging/index.html  |   6 +-
 .../docs/zh-CN/next/concepts-multi-tenancy.html    |   2 +-
 .../zh-CN/next/concepts-multi-tenancy/index.html   |   2 +-
 .../concepts-multiple-advertised-listeners.html    |   2 +-
 .../index.html                                     |   2 +-
 content/docs/zh-CN/next/concepts-overview.html     |   2 +-
 .../docs/zh-CN/next/concepts-overview/index.html   |   2 +-
 .../zh-CN/next/concepts-proxy-sni-routing.html     |   2 +-
 .../next/concepts-proxy-sni-routing/index.html     |   2 +-
 content/docs/zh-CN/next/concepts-replication.html  |   2 +-
 .../zh-CN/next/concepts-replication/index.html     |   2 +-
 .../docs/zh-CN/next/concepts-topic-compaction.html |   2 +-
 .../next/concepts-topic-compaction/index.html      |   2 +-
 .../zh-CN/next/cookbooks-bookkeepermetadata.html   |   4 +-
 .../next/cookbooks-bookkeepermetadata/index.html   |   4 +-
 content/docs/zh-CN/next/cookbooks-compaction.html  |   2 +-
 .../zh-CN/next/cookbooks-compaction/index.html     |   2 +-
 .../docs/zh-CN/next/cookbooks-deduplication.html   |   2 +-
 .../zh-CN/next/cookbooks-deduplication/index.html  |   2 +-
 content/docs/zh-CN/next/cookbooks-encryption.html  |   8 +-
 .../zh-CN/next/cookbooks-encryption/index.html     |   8 +-
 .../docs/zh-CN/next/cookbooks-message-queue.html   |   2 +-
 .../zh-CN/next/cookbooks-message-queue/index.html  |   2 +-
 .../docs/zh-CN/next/cookbooks-non-persistent.html  |   2 +-
 .../zh-CN/next/cookbooks-non-persistent/index.html |   2 +-
 .../zh-CN/next/cookbooks-retention-expiry.html     |   2 +-
 .../next/cookbooks-retention-expiry/index.html     |   2 +-
 content/docs/zh-CN/next/deploy-aws.html            |   2 +-
 content/docs/zh-CN/next/deploy-aws/index.html      |   2 +-
 .../next/deploy-bare-metal-multi-cluster.html      |   2 +-
 .../deploy-bare-metal-multi-cluster/index.html     |   2 +-
 content/docs/zh-CN/next/deploy-bare-metal.html     |   2 +-
 .../docs/zh-CN/next/deploy-bare-metal/index.html   |   2 +-
 content/docs/zh-CN/next/deploy-dcos.html           |   2 +-
 content/docs/zh-CN/next/deploy-dcos/index.html     |   2 +-
 content/docs/zh-CN/next/deploy-docker.html         |   2 +-
 content/docs/zh-CN/next/deploy-docker/index.html   |   2 +-
 content/docs/zh-CN/next/deploy-kubernetes.html     |   2 +-
 .../docs/zh-CN/next/deploy-kubernetes/index.html   |   2 +-
 content/docs/zh-CN/next/deploy-monitoring.html     |   2 +-
 .../docs/zh-CN/next/deploy-monitoring/index.html   |   2 +-
 .../docs/zh-CN/next/develop-binary-protocol.html   |  10 +-
 .../zh-CN/next/develop-binary-protocol/index.html  |  10 +-
 content/docs/zh-CN/next/develop-load-manager.html  |   2 +-
 .../zh-CN/next/develop-load-manager/index.html     |   2 +-
 content/docs/zh-CN/next/develop-tools.html         |   2 +-
 content/docs/zh-CN/next/develop-tools/index.html   |   2 +-
 content/docs/zh-CN/next/functions-cli.html         |   2 +-
 content/docs/zh-CN/next/functions-cli/index.html   |   2 +-
 content/docs/zh-CN/next/functions-debug.html       |   2 +-
 content/docs/zh-CN/next/functions-debug/index.html |   2 +-
 content/docs/zh-CN/next/functions-deploy.html      |   4 +-
 .../docs/zh-CN/next/functions-deploy/index.html    |   4 +-
 content/docs/zh-CN/next/functions-develop.html     |   2 +-
 .../docs/zh-CN/next/functions-develop/index.html   |   2 +-
 content/docs/zh-CN/next/functions-overview.html    |   2 +-
 .../docs/zh-CN/next/functions-overview/index.html  |   2 +-
 content/docs/zh-CN/next/functions-package.html     |   2 +-
 .../docs/zh-CN/next/functions-package/index.html   |   2 +-
 content/docs/zh-CN/next/functions-runtime.html     |   2 +-
 .../docs/zh-CN/next/functions-runtime/index.html   |   2 +-
 content/docs/zh-CN/next/functions-worker.html      |   2 +-
 .../docs/zh-CN/next/functions-worker/index.html    |   2 +-
 content/docs/zh-CN/next/helm-deploy.html           |   2 +-
 content/docs/zh-CN/next/helm-deploy/index.html     |   2 +-
 content/docs/zh-CN/next/helm-install.html          |   2 +-
 content/docs/zh-CN/next/helm-install/index.html    |   2 +-
 content/docs/zh-CN/next/helm-overview.html         |   6 +-
 content/docs/zh-CN/next/helm-overview/index.html   |   6 +-
 content/docs/zh-CN/next/helm-prepare.html          |   2 +-
 content/docs/zh-CN/next/helm-prepare/index.html    |   2 +-
 content/docs/zh-CN/next/helm-tools.html            |   2 +-
 content/docs/zh-CN/next/helm-tools/index.html      |   2 +-
 content/docs/zh-CN/next/helm-upgrade.html          |   2 +-
 content/docs/zh-CN/next/helm-upgrade/index.html    |   2 +-
 content/docs/zh-CN/next/io-cdc.html                |   2 +-
 content/docs/zh-CN/next/io-cdc/index.html          |   2 +-
 content/docs/zh-CN/next/io-cli.html                |   2 +-
 content/docs/zh-CN/next/io-cli/index.html          |   2 +-
 content/docs/zh-CN/next/io-connectors.html         |   2 +-
 content/docs/zh-CN/next/io-connectors/index.html   |   2 +-
 content/docs/zh-CN/next/io-debug.html              |   2 +-
 content/docs/zh-CN/next/io-debug/index.html        |   2 +-
 content/docs/zh-CN/next/io-develop.html            |   2 +-
 content/docs/zh-CN/next/io-develop/index.html      |   2 +-
 content/docs/zh-CN/next/io-overview.html           |   2 +-
 content/docs/zh-CN/next/io-overview/index.html     |   2 +-
 content/docs/zh-CN/next/io-quickstart.html         |   2 +-
 content/docs/zh-CN/next/io-quickstart/index.html   |   2 +-
 content/docs/zh-CN/next/io-use.html                |   2 +-
 content/docs/zh-CN/next/io-use/index.html          |   2 +-
 content/docs/zh-CN/next/kubernetes-helm.html       |   2 +-
 content/docs/zh-CN/next/kubernetes-helm/index.html |   2 +-
 .../docs/zh-CN/next/performance-pulsar-perf.html   |   2 +-
 .../zh-CN/next/performance-pulsar-perf/index.html  |   2 +-
 content/docs/zh-CN/next/reference-cli-tools.html   |   2 +-
 .../docs/zh-CN/next/reference-cli-tools/index.html |   2 +-
 .../docs/zh-CN/next/reference-configuration.html   |   2 +-
 .../zh-CN/next/reference-configuration/index.html  |   2 +-
 content/docs/zh-CN/next/reference-metrics.html     |   2 +-
 .../docs/zh-CN/next/reference-metrics/index.html   |   2 +-
 content/docs/zh-CN/next/reference-terminology.html |  58 +-
 .../zh-CN/next/reference-terminology/index.html    |  58 +-
 .../zh-CN/next/schema-evolution-compatibility.html |   2 +-
 .../next/schema-evolution-compatibility/index.html |   2 +-
 content/docs/zh-CN/next/schema-get-started.html    |   2 +-
 .../docs/zh-CN/next/schema-get-started/index.html  |   2 +-
 content/docs/zh-CN/next/schema-manage.html         |   2 +-
 content/docs/zh-CN/next/schema-manage/index.html   |   2 +-
 content/docs/zh-CN/next/schema-understand.html     |   2 +-
 .../docs/zh-CN/next/schema-understand/index.html   |   2 +-
 content/docs/zh-CN/next/security-athenz.html       |   2 +-
 content/docs/zh-CN/next/security-athenz/index.html |   2 +-
 .../docs/zh-CN/next/security-authorization.html    |   2 +-
 .../zh-CN/next/security-authorization/index.html   |   2 +-
 .../docs/zh-CN/next/security-bouncy-castle.html    |   2 +-
 .../zh-CN/next/security-bouncy-castle/index.html   |   2 +-
 content/docs/zh-CN/next/security-encryption.html   |   8 +-
 .../docs/zh-CN/next/security-encryption/index.html |   8 +-
 content/docs/zh-CN/next/security-extending.html    |   2 +-
 .../docs/zh-CN/next/security-extending/index.html  |   2 +-
 content/docs/zh-CN/next/security-jwt.html          |   2 +-
 content/docs/zh-CN/next/security-jwt/index.html    |   2 +-
 content/docs/zh-CN/next/security-kerberos.html     |   2 +-
 .../docs/zh-CN/next/security-kerberos/index.html   |   2 +-
 content/docs/zh-CN/next/security-oauth2.html       |   2 +-
 content/docs/zh-CN/next/security-oauth2/index.html |   2 +-
 content/docs/zh-CN/next/security-overview.html     |   2 +-
 .../docs/zh-CN/next/security-overview/index.html   |   2 +-
 .../zh-CN/next/security-tls-authentication.html    |   2 +-
 .../next/security-tls-authentication/index.html    |   2 +-
 content/docs/zh-CN/next/security-tls-keystore.html |   2 +-
 .../zh-CN/next/security-tls-keystore/index.html    |   2 +-
 .../docs/zh-CN/next/security-tls-transport.html    |   2 +-
 .../zh-CN/next/security-tls-transport/index.html   |   2 +-
 .../zh-CN/next/sql-deployment-configurations.html  |   2 +-
 .../next/sql-deployment-configurations/index.html  |   2 +-
 content/docs/zh-CN/next/sql-getting-started.html   |   2 +-
 .../docs/zh-CN/next/sql-getting-started/index.html |   2 +-
 content/docs/zh-CN/next/sql-overview.html          |   2 +-
 content/docs/zh-CN/next/sql-overview/index.html    |   2 +-
 content/docs/zh-CN/next/sql-rest-api.html          |   2 +-
 content/docs/zh-CN/next/sql-rest-api/index.html    |   2 +-
 content/docs/zh-CN/next/standalone-docker.html     |   2 +-
 .../docs/zh-CN/next/standalone-docker/index.html   |   2 +-
 content/docs/zh-CN/next/standalone.html            |   2 +-
 content/docs/zh-CN/next/standalone/index.html      |   2 +-
 content/docs/zh-CN/next/tiered-storage-aws.html    |   2 +-
 .../docs/zh-CN/next/tiered-storage-aws/index.html  |   2 +-
 content/docs/zh-CN/next/tiered-storage-azure.html  |   2 +-
 .../zh-CN/next/tiered-storage-azure/index.html     |   2 +-
 .../docs/zh-CN/next/tiered-storage-filesystem.html |   2 +-
 .../next/tiered-storage-filesystem/index.html      |   2 +-
 content/docs/zh-CN/next/tiered-storage-gcs.html    |   2 +-
 .../docs/zh-CN/next/tiered-storage-gcs/index.html  |   2 +-
 .../docs/zh-CN/next/tiered-storage-overview.html   |   2 +-
 .../zh-CN/next/tiered-storage-overview/index.html  |   2 +-
 content/docs/zh-CN/next/transactions-api.html      |   2 +-
 .../docs/zh-CN/next/transactions-api/index.html    |   2 +-
 .../docs/zh-CN/next/transactions-guarantee.html    |   2 +-
 .../zh-CN/next/transactions-guarantee/index.html   |   2 +-
 content/docs/zh-CN/next/transactions.html          |   2 +-
 content/docs/zh-CN/next/transactions/index.html    |   2 +-
 .../docs/zh-CN/next/window-functions-context.html  |   2 +-
 .../zh-CN/next/window-functions-context/index.html |   2 +-
 content/docs/zh-CN/reference-terminology.html      |  48 +-
 .../docs/zh-CN/reference-terminology/index.html    |  48 +-
 .../docs/zh-CN/schema-evolution-compatibility.html |   6 +-
 .../schema-evolution-compatibility/index.html      |   6 +-
 content/docs/zh-CN/security-encryption.html        |   6 +-
 content/docs/zh-CN/security-encryption/index.html  |   6 +-
 content/swagger/2.8.0-SNAPSHOT/swagger.json        | 729 +++++++++------------
 .../swagger/2.8.0-SNAPSHOT/swaggerfunctions.json   | 713 +++++++++-----------
 .../swagger/2.8.0-SNAPSHOT/swaggerpackages.json    | 615 +++++++----------
 content/swagger/2.8.0-SNAPSHOT/swaggersink.json    | 615 +++++++----------
 content/swagger/2.8.0-SNAPSHOT/swaggersource.json  | 615 +++++++----------
 content/swagger/2.8.0-SNAPSHOT/v2/swagger.json     | 729 +++++++++------------
 .../2.8.0-SNAPSHOT/v3/swaggerfunctions.json        | 713 +++++++++-----------
 .../swagger/2.8.0-SNAPSHOT/v3/swaggerpackages.json | 615 +++++++----------
 content/swagger/2.8.0-SNAPSHOT/v3/swaggersink.json | 615 +++++++----------
 .../swagger/2.8.0-SNAPSHOT/v3/swaggersource.json   | 615 +++++++----------
 content/swagger/master/swagger.json                | 729 +++++++++------------
 content/swagger/master/swaggerfunctions.json       | 713 +++++++++-----------
 content/swagger/master/swaggerpackages.json        | 615 +++++++----------
 content/swagger/master/swaggersink.json            | 615 +++++++----------
 content/swagger/master/swaggersource.json          | 615 +++++++----------
 content/swagger/master/v2/swagger.json             | 729 +++++++++------------
 content/swagger/master/v3/swaggerfunctions.json    | 713 +++++++++-----------
 content/swagger/master/v3/swaggerpackages.json     | 615 +++++++----------
 content/swagger/master/v3/swaggersink.json         | 615 +++++++----------
 content/swagger/master/v3/swaggersource.json       | 615 +++++++----------
 975 files changed, 7941 insertions(+), 10241 deletions(-)

diff --git a/content/api/client/2.8.0-SNAPSHOT/allclasses-frame.html b/content/api/client/2.8.0-SNAPSHOT/allclasses-frame.html
index 2969b3c..dbfc21d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/allclasses-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/allclasses-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>All Classes (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/allclasses-noframe.html b/content/api/client/2.8.0-SNAPSHOT/allclasses-noframe.html
index 824c6c2..1d05536 100644
--- a/content/api/client/2.8.0-SNAPSHOT/allclasses-noframe.html
+++ b/content/api/client/2.8.0-SNAPSHOT/allclasses-noframe.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>All Classes (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/constant-values.html b/content/api/client/2.8.0-SNAPSHOT/constant-values.html
index 4314eee..1664bba 100644
--- a/content/api/client/2.8.0-SNAPSHOT/constant-values.html
+++ b/content/api/client/2.8.0-SNAPSHOT/constant-values.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Constant Field Values (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/deprecated-list.html b/content/api/client/2.8.0-SNAPSHOT/deprecated-list.html
index 4c7f305..06395ff 100644
--- a/content/api/client/2.8.0-SNAPSHOT/deprecated-list.html
+++ b/content/api/client/2.8.0-SNAPSHOT/deprecated-list.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Deprecated List (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/help-doc.html b/content/api/client/2.8.0-SNAPSHOT/help-doc.html
index 428ce73..fd68c6b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/help-doc.html
+++ b/content/api/client/2.8.0-SNAPSHOT/help-doc.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>API Help (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/index-all.html b/content/api/client/2.8.0-SNAPSHOT/index-all.html
index 0901b37..b94bb62 100644
--- a/content/api/client/2.8.0-SNAPSHOT/index-all.html
+++ b/content/api/client/2.8.0-SNAPSHOT/index-all.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Index (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/index.html b/content/api/client/2.8.0-SNAPSHOT/index.html
index 09284f9..ddd8813 100644
--- a/content/api/client/2.8.0-SNAPSHOT/index.html
+++ b/content/api/client/2.8.0-SNAPSHOT/index.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Pulsar Client :: API 2.8.0-SNAPSHOT API</title>
 <script type="text/javascript">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Authentication.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Authentication.html
index 65c50ac..0fee4c9 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Authentication.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Authentication.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Authentication (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/AuthenticationDataProvider.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/AuthenticationDataProvider.html
index abedc35..830a631 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/AuthenticationDataProvider.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/AuthenticationDataProvider.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>AuthenticationDataProvider (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/AuthenticationFactory.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/AuthenticationFactory.html
index e4bc28e..f39a71f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/AuthenticationFactory.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/AuthenticationFactory.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>AuthenticationFactory (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchMessageContainer.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchMessageContainer.html
index 88c4a36..1278339 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchMessageContainer.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchMessageContainer.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>BatchMessageContainer (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchReceivePolicy.Builder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchReceivePolicy.Builder.html
index f196d4f..c23a339 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchReceivePolicy.Builder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchReceivePolicy.Builder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>BatchReceivePolicy.Builder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchReceivePolicy.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchReceivePolicy.html
index c3ccee9..4cf614c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchReceivePolicy.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatchReceivePolicy.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>BatchReceivePolicy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatcherBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatcherBuilder.html
index 31517e6..dc2b01d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatcherBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/BatcherBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>BatcherBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ClientBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ClientBuilder.html
index f3723d0..5e248c8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ClientBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ClientBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ClientBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/CompressionType.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/CompressionType.html
index 1e3e285..4ee03a8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/CompressionType.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/CompressionType.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>CompressionType (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Consumer.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Consumer.html
index 7927034..335e8b0 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Consumer.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Consumer.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Consumer (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerBuilder.html
index 5406bd8..2d22b10 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ConsumerBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerCryptoFailureAction.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerCryptoFailureAction.html
index 37d2c54..efb2d18 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerCryptoFailureAction.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerCryptoFailureAction.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ConsumerCryptoFailureAction (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerEventListener.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerEventListener.html
index f4510a7..70306c5 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerEventListener.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerEventListener.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ConsumerEventListener (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerInterceptor.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerInterceptor.html
index 13f166b..2a3d066 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerInterceptor.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerInterceptor.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ConsumerInterceptor (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerStats.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerStats.html
index 39c41b8..18bd0e3 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerStats.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerStats.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ConsumerStats (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/CryptoKeyReader.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/CryptoKeyReader.html
index 89c59bb..1890284 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/CryptoKeyReader.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/CryptoKeyReader.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>CryptoKeyReader (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/DeadLetterPolicy.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/DeadLetterPolicy.html
index e86b244..f4e3095 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/DeadLetterPolicy.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/DeadLetterPolicy.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>DeadLetterPolicy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/EncodedAuthenticationParameterSupport.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/EncodedAuthenticationParameterSupport.html
index 5a33d88..56c241b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/EncodedAuthenticationParameterSupport.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/EncodedAuthenticationParameterSupport.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>EncodedAuthenticationParameterSupport (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/EncryptionKeyInfo.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/EncryptionKeyInfo.html
index 544c749..9deeb63 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/EncryptionKeyInfo.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/EncryptionKeyInfo.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>EncryptionKeyInfo (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/HashingScheme.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/HashingScheme.html
index d61bb93..3645170 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/HashingScheme.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/HashingScheme.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>HashingScheme (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedMode.html
index f0ffa05..888f8e2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>KeySharedMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.KeySharedPolicyAutoSplit.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.KeySharedPolicyAutoSplit.html
index 8fec9f8..87ca206 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.KeySharedPolicyAutoSplit.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.KeySharedPolicyAutoSplit.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>KeySharedPolicy.KeySharedPolicyAutoSplit (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.KeySharedPolicySticky.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.KeySharedPolicySticky.html
index 159683f..66a6b11 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.KeySharedPolicySticky.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.KeySharedPolicySticky.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>KeySharedPolicy.KeySharedPolicySticky (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.html
index 80b3083..92da757 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeySharedPolicy.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>KeySharedPolicy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeyStoreParams.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeyStoreParams.html
index 886e67d..6eb28a8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeyStoreParams.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/KeyStoreParams.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>KeyStoreParams (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Message.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Message.html
index 58145f8..ac320e6 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Message.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Message.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Message (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageCrypto.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageCrypto.html
index 1636338..066fd1b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageCrypto.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageCrypto.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>MessageCrypto (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageId.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageId.html
index 45f042e..687ded0 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageId.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageId.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>MessageId (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageListener.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageListener.html
index b45ea2e..240e32c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageListener.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageListener.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>MessageListener (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRouter.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRouter.html
index 3bded4a..73b5b9b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRouter.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRouter.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>MessageRouter (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRoutingMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRoutingMode.html
index d18c622..6339e33 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRoutingMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/MessageRoutingMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>MessageRoutingMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Messages.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Messages.html
index 710b1b0..5bc68c8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Messages.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Messages.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Messages (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Producer.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Producer.html
index f74b5ba..39b9f0d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Producer.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Producer.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Producer (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerAccessMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerAccessMode.html
index 6a2e6fa..fea1766 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerAccessMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerAccessMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ProducerAccessMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerBuilder.html
index 22f73c9..9ab1880 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ProducerBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerCryptoFailureAction.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerCryptoFailureAction.html
index 3cec96a..ef79bb6 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerCryptoFailureAction.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerCryptoFailureAction.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ProducerCryptoFailureAction (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerInterceptor.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerInterceptor.html
index f61354d..f98db3e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerInterceptor.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerInterceptor.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ProducerInterceptor (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerStats.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerStats.html
index eb76d64..1ae2447 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerStats.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProducerStats.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ProducerStats (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProxyProtocol.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProxyProtocol.html
index 59ba787..e66b56f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProxyProtocol.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ProxyProtocol.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ProxyProtocol (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClient.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClient.html
index 710d107..e1ce8cd 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClient.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClient.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClient (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AlreadyClosedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AlreadyClosedException.html
index bc95e78..b667e51 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AlreadyClosedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AlreadyClosedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.AlreadyClosedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AuthenticationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AuthenticationException.html
index 2cd2ad9..606192c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AuthenticationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AuthenticationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.AuthenticationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AuthorizationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AuthorizationException.html
index da971c3..7a35537 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AuthorizationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.AuthorizationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.AuthorizationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.BrokerMetadataException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.BrokerMetadataException.html
index a9efdec..e65868e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.BrokerMetadataException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.BrokerMetadataException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.BrokerMetadataException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.BrokerPersistenceException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.BrokerPersistenceException.html
index 7bf390a..b0d2d61 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.BrokerPersistenceException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.BrokerPersistenceException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.BrokerPersistenceException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ChecksumException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ChecksumException.html
index 981ca75..a49f09e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ChecksumException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ChecksumException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.ChecksumException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConnectException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConnectException.html
index b15a255..9f4defb 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConnectException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConnectException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.ConnectException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConsumerAssignException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConsumerAssignException.html
index d20962c..e6dcc73 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConsumerAssignException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConsumerAssignException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.ConsumerAssignException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConsumerBusyException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConsumerBusyException.html
index b6b1023..7d3ae39 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConsumerBusyException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ConsumerBusyException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.ConsumerBusyException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.CryptoException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.CryptoException.html
index 92bc91b..0c275bc 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.CryptoException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.CryptoException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.CryptoException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.GettingAuthenticationDataException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.GettingAuthenticationDataException.html
index d5275df..6fb909a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.GettingAuthenticationDataException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.GettingAuthenticationDataException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.GettingAuthenticationDataException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.IncompatibleSchemaException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.IncompatibleSchemaException.html
index bc286b3..619960a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.IncompatibleSchemaException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.IncompatibleSchemaException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.IncompatibleSchemaException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidConfigurationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidConfigurationException.html
index bcaa1f6..a0f6109 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidConfigurationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidConfigurationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.InvalidConfigurationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidMessageException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidMessageException.html
index 1a5af9a..00c76b1 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidMessageException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidMessageException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.InvalidMessageException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidServiceURL.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidServiceURL.html
index c5dc065..4572b28 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidServiceURL.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidServiceURL.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.InvalidServiceURL (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidTopicNameException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidTopicNameException.html
index d042794..a486f31 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidTopicNameException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.InvalidTopicNameException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.InvalidTopicNameException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.LookupException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.LookupException.html
index 5e6640c..6536cff 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.LookupException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.LookupException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.LookupException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.MemoryBufferIsFullError.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.MemoryBufferIsFullError.html
index abeae08..2ac7fb0 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.MemoryBufferIsFullError.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.MemoryBufferIsFullError.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.MemoryBufferIsFullError (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.MessageAcknowledgeException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.MessageAcknowledgeException.html
index dd6727f..065b55e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.MessageAcknowledgeException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.MessageAcknowledgeException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.MessageAcknowledgeException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotAllowedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotAllowedException.html
index fcfae6a..bb1ac7e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotAllowedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotAllowedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.NotAllowedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotConnectedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotConnectedException.html
index 6e0bde2..2326242 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotConnectedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotConnectedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.NotConnectedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotFoundException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotFoundException.html
index 9cea4b4..db0f916 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotFoundException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotFoundException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.NotFoundException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotSupportedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotSupportedException.html
index 2b53790..339befc 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotSupportedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.NotSupportedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.NotSupportedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBlockedQuotaExceededError.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBlockedQuotaExceededError.html
index feacb87..b913ae0 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBlockedQuotaExceededError.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBlockedQuotaExceededError.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.ProducerBlockedQuotaExceededError (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBlockedQuotaExceededException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBlockedQuotaExceededException.html
index a621043..dd84d44 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBlockedQuotaExceededException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBlockedQuotaExceededException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.ProducerBlockedQuotaExceededException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBusyException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBusyException.html
index 966ea4e..478cc2d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBusyException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerBusyException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.ProducerBusyException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerFencedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerFencedException.html
index e343eee..3025e41 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerFencedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerFencedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.ProducerFencedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerQueueIsFullError.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerQueueIsFullError.html
index 3cb180c..c54c88b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerQueueIsFullError.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.ProducerQueueIsFullError.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.ProducerQueueIsFullError (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TimeoutException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TimeoutException.html
index d8a55c0..70c35df 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TimeoutException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TimeoutException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.TimeoutException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TooManyRequestsException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TooManyRequestsException.html
index 1fdf34e..0c588e4 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TooManyRequestsException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TooManyRequestsException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.TooManyRequestsException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TopicDoesNotExistException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TopicDoesNotExistException.html
index 9295b3c..8be5a26 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TopicDoesNotExistException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TopicDoesNotExistException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.TopicDoesNotExistException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TopicTerminatedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TopicTerminatedException.html
index ee8739b..09931cb 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TopicTerminatedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TopicTerminatedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.TopicTerminatedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TransactionConflictException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TransactionConflictException.html
index 5c79bc0..9727912 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TransactionConflictException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.TransactionConflictException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.TransactionConflictException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.UnsupportedAuthenticationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.UnsupportedAuthenticationException.html
index 0b6b8e2..3d1b024 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.UnsupportedAuthenticationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.UnsupportedAuthenticationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException.UnsupportedAuthenticationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.html
index 925475e..d3a3d2f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/PulsarClientException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>PulsarClientException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Range.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Range.html
index 668eaf3..bdddb22 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Range.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Range.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Range (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Reader.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Reader.html
index 673b092..34dc816 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Reader.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Reader.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Reader (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ReaderBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ReaderBuilder.html
index 6858dc6..7b5d81d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ReaderBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ReaderBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ReaderBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ReaderListener.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ReaderListener.html
index 37883e2..f49224a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ReaderListener.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ReaderListener.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ReaderListener (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/RegexSubscriptionMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/RegexSubscriptionMode.html
index ecc2c0a..df97418 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/RegexSubscriptionMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/RegexSubscriptionMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>RegexSubscriptionMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Schema.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Schema.html
index a079761..9d74495 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Schema.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/Schema.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Schema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SchemaSerializationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SchemaSerializationException.html
index 446be40..317acc3 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SchemaSerializationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SchemaSerializationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaSerializationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ServiceUrlProvider.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ServiceUrlProvider.html
index d59ad53..1fa1ede 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ServiceUrlProvider.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/ServiceUrlProvider.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ServiceUrlProvider (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SizeUnit.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SizeUnit.html
index c3e5590..a189c09 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SizeUnit.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SizeUnit.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SizeUnit (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionInitialPosition.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionInitialPosition.html
index 95b9caf..2ebdb17 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionInitialPosition.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionInitialPosition.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SubscriptionInitialPosition (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionMode.html
index 3b7adb4..aa0c547 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SubscriptionMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionType.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionType.html
index e2ad2c1..f0ffbf2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionType.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/SubscriptionType.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SubscriptionType (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/TopicMetadata.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/TopicMetadata.html
index b64f72e..ac53713 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/TopicMetadata.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/TopicMetadata.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TopicMetadata (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/TypedMessageBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/TypedMessageBuilder.html
index a8ccc8d..f2cc457 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/TypedMessageBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/TypedMessageBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TypedMessageBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Authentication.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Authentication.html
index caeb219..4dc7e5c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Authentication.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Authentication.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.Authentication (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/AuthenticationDataProvider.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/AuthenticationDataProvider.html
index 0b63159..1ac05b4 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/AuthenticationDataProvider.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/AuthenticationDataProvider.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.AuthenticationDataProvider (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/AuthenticationFactory.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/AuthenticationFactory.html
index 7fcdfea..97b24ff 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/AuthenticationFactory.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/AuthenticationFactory.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.AuthenticationFactory (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchMessageContainer.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchMessageContainer.html
index 6e65278..bc18319 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchMessageContainer.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchMessageContainer.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.BatchMessageContainer (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchReceivePolicy.Builder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchReceivePolicy.Builder.html
index d63711b..d24bc72 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchReceivePolicy.Builder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchReceivePolicy.Builder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.BatchReceivePolicy.Builder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchReceivePolicy.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchReceivePolicy.html
index d360279..70861f1 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchReceivePolicy.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatchReceivePolicy.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.BatchReceivePolicy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatcherBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatcherBuilder.html
index 6f8019a..f0d3ed5 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatcherBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/BatcherBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.BatcherBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ClientBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ClientBuilder.html
index 32adf92..cddca9e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ClientBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ClientBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ClientBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/CompressionType.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/CompressionType.html
index f15725b..40b0113 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/CompressionType.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/CompressionType.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.CompressionType (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Consumer.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Consumer.html
index a3118c5..04c0612 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Consumer.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Consumer.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.Consumer (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerBuilder.html
index 09385e1..3f1a12e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ConsumerBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerCryptoFailureAction.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerCryptoFailureAction.html
index 32372ca..f8d1e9b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerCryptoFailureAction.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerCryptoFailureAction.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.ConsumerCryptoFailureAction (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerEventListener.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerEventListener.html
index 8432a16..ace4e9d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerEventListener.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerEventListener.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ConsumerEventListener (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerInterceptor.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerInterceptor.html
index ad834d5..c6e02ad 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerInterceptor.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerInterceptor.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ConsumerInterceptor (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerStats.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerStats.html
index bbb2ff2..865973d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerStats.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ConsumerStats.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ConsumerStats (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/CryptoKeyReader.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/CryptoKeyReader.html
index 2fb2d20..a363b42 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/CryptoKeyReader.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/CryptoKeyReader.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.CryptoKeyReader (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/DeadLetterPolicy.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/DeadLetterPolicy.html
index bb82e6b..dffa656 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/DeadLetterPolicy.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/DeadLetterPolicy.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.DeadLetterPolicy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/EncodedAuthenticationParameterSupport.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/EncodedAuthenticationParameterSupport.html
index 175863a..dfafc2e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/EncodedAuthenticationParameterSupport.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/EncodedAuthenticationParameterSupport.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.EncodedAuthenticationParameterSupport (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/EncryptionKeyInfo.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/EncryptionKeyInfo.html
index f4a5057a..88dd889 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/EncryptionKeyInfo.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/EncryptionKeyInfo.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.EncryptionKeyInfo (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/HashingScheme.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/HashingScheme.html
index 9852995..17a8119 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/HashingScheme.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/HashingScheme.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.HashingScheme (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedMode.html
index 1718333..b3cc6f9 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.KeySharedMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.KeySharedPolicyAutoSplit.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.KeySharedPolicyAutoSplit.html
index 46e564a..1b8d278 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.KeySharedPolicyAutoSplit.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.KeySharedPolicyAutoSplit.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.KeySharedPolicy.KeySharedPolicyAutoSplit (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.KeySharedPolicySticky.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.KeySharedPolicySticky.html
index 17060b2..bd5a4be 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.KeySharedPolicySticky.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.KeySharedPolicySticky.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.KeySharedPolicy.KeySharedPolicySticky (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.html
index 1cd5c1b..7cdca88 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeySharedPolicy.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.KeySharedPolicy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeyStoreParams.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeyStoreParams.html
index 0e7a045..af8d41f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeyStoreParams.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/KeyStoreParams.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.KeyStoreParams (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Message.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Message.html
index ed0a6a3..3edbe59 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Message.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Message.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.Message (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageCrypto.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageCrypto.html
index 953b4b7..5b20c47 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageCrypto.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageCrypto.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.MessageCrypto (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageId.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageId.html
index f18cf3d..ffe48b9 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageId.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageId.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.MessageId (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageListener.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageListener.html
index 03732a7..06d6941 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageListener.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageListener.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.MessageListener (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageRouter.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageRouter.html
index fc10646..69deffe 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageRouter.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageRouter.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.MessageRouter (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageRoutingMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageRoutingMode.html
index 19458a0..d54d63a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageRoutingMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/MessageRoutingMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.MessageRoutingMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Messages.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Messages.html
index 9133927..87e2e3b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Messages.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Messages.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.Messages (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Producer.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Producer.html
index 770623f..55ebcb2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Producer.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Producer.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.Producer (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerAccessMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerAccessMode.html
index 11bedd4..9062ea6 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerAccessMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerAccessMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.ProducerAccessMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerBuilder.html
index 7c44691..c237fec 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ProducerBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerCryptoFailureAction.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerCryptoFailureAction.html
index d05ae71..7983840 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerCryptoFailureAction.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerCryptoFailureAction.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.ProducerCryptoFailureAction (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerInterceptor.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerInterceptor.html
index 850e5f2..a07c1c0 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerInterceptor.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerInterceptor.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ProducerInterceptor (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerStats.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerStats.html
index 384a865..18f09ea 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerStats.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProducerStats.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ProducerStats (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProxyProtocol.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProxyProtocol.html
index 3ce2003..a916ebb 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProxyProtocol.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ProxyProtocol.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.ProxyProtocol (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClient.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClient.html
index b926b98..8c2e6cf 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClient.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClient.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.PulsarClient (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AlreadyClosedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AlreadyClosedException.html
index 5250186..c320f4b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AlreadyClosedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AlreadyClosedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.AlreadyClosedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AuthenticationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AuthenticationException.html
index 90bf92a..b753f4a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AuthenticationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AuthenticationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.AuthenticationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AuthorizationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AuthorizationException.html
index 575cd56..316995d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AuthorizationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.AuthorizationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.AuthorizationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.BrokerMetadataException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.BrokerMetadataException.html
index 876611b..cd75902 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.BrokerMetadataException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.BrokerMetadataException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.BrokerMetadataException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.BrokerPersistenceException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.BrokerPersistenceException.html
index 98f9eb5..1064724 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.BrokerPersistenceException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.BrokerPersistenceException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.BrokerPersistenceException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ChecksumException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ChecksumException.html
index ad510e4..7755b17 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ChecksumException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ChecksumException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.ChecksumException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConnectException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConnectException.html
index d5689c9..139b3e2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConnectException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConnectException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.ConnectException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConsumerAssignException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConsumerAssignException.html
index 5e64a90..f226271 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConsumerAssignException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConsumerAssignException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.ConsumerAssignException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConsumerBusyException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConsumerBusyException.html
index cfdb4fc..d59351e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConsumerBusyException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ConsumerBusyException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.ConsumerBusyException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.CryptoException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.CryptoException.html
index 2651ef6..f15b4a9 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.CryptoException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.CryptoException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.CryptoException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.GettingAuthenticationDataException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.GettingAuthenticationDataException.html
index 1fcba0e..01e49a8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.GettingAuthenticationDataException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.GettingAuthenticationDataException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.GettingAuthenticationDataException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.IncompatibleSchemaException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.IncompatibleSchemaException.html
index ba831f0..75350ad 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.IncompatibleSchemaException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.IncompatibleSchemaException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.IncompatibleSchemaException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidConfigurationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidConfigurationException.html
index 264d68d..56d881e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidConfigurationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidConfigurationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.InvalidConfigurationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidMessageException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidMessageException.html
index 67312c2..e877cc1 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidMessageException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidMessageException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.InvalidMessageException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidServiceURL.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidServiceURL.html
index d879cda..63ac951 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidServiceURL.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidServiceURL.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.InvalidServiceURL (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidTopicNameException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidTopicNameException.html
index 25945c9..8ca1e4f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidTopicNameException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.InvalidTopicNameException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.InvalidTopicNameException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.LookupException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.LookupException.html
index 9388677..0a8fb9f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.LookupException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.LookupException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.LookupException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.MemoryBufferIsFullError.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.MemoryBufferIsFullError.html
index 109fae5..a07c40c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.MemoryBufferIsFullError.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.MemoryBufferIsFullError.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.MemoryBufferIsFullError (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.MessageAcknowledgeException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.MessageAcknowledgeException.html
index dc9d303..9839a89 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.MessageAcknowledgeException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.MessageAcknowledgeException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.MessageAcknowledgeException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotAllowedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotAllowedException.html
index 48e9bf0..f7182e2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotAllowedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotAllowedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.NotAllowedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotConnectedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotConnectedException.html
index 4f7bfd9..1d7e683 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotConnectedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotConnectedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.NotConnectedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotFoundException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotFoundException.html
index 1fdfd2f..f93125a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotFoundException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotFoundException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.NotFoundException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotSupportedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotSupportedException.html
index 00adb58..42e526b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotSupportedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.NotSupportedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.NotSupportedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBlockedQuotaExceededError.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBlockedQuotaExceededError.html
index 0c33527..88d6991 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBlockedQuotaExceededError.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBlockedQuotaExceededError.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.ProducerBlockedQuotaExceededError (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBlockedQuotaExceededException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBlockedQuotaExceededException.html
index 811ff96..02730e4 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBlockedQuotaExceededException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBlockedQuotaExceededException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.ProducerBlockedQuotaExceededException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBusyException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBusyException.html
index 727094a..0bc62f8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBusyException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerBusyException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.ProducerBusyException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerFencedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerFencedException.html
index c32326b..52cce39 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerFencedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerFencedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.ProducerFencedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerQueueIsFullError.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerQueueIsFullError.html
index 56738d8..316f88b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerQueueIsFullError.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.ProducerQueueIsFullError.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.ProducerQueueIsFullError (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TimeoutException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TimeoutException.html
index b1c3886..28273fe 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TimeoutException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TimeoutException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.TimeoutException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TooManyRequestsException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TooManyRequestsException.html
index bafcf49..b07d730 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TooManyRequestsException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TooManyRequestsException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.TooManyRequestsException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TopicDoesNotExistException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TopicDoesNotExistException.html
index be079d0..93054a8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TopicDoesNotExistException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TopicDoesNotExistException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.TopicDoesNotExistException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TopicTerminatedException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TopicTerminatedException.html
index 5c7af15..fe9c75f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TopicTerminatedException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TopicTerminatedException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.TopicTerminatedException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TransactionConflictException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TransactionConflictException.html
index b26205c..1355a3a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TransactionConflictException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.TransactionConflictException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.TransactionConflictException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.UnsupportedAuthenticationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.UnsupportedAuthenticationException.html
index f7caa11..2dd283a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.UnsupportedAuthenticationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.UnsupportedAuthenticationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException.UnsupportedAuthenticationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.html
index 44a39dc..237de82 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/PulsarClientException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.PulsarClientException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Range.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Range.html
index 211a0ca..840bfee 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Range.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Range.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.Range (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Reader.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Reader.html
index bd7f8f4..a80f2da 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Reader.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Reader.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.Reader (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ReaderBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ReaderBuilder.html
index 30626ba..98dd85d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ReaderBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ReaderBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ReaderBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ReaderListener.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ReaderListener.html
index 4464869..b2fffee 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ReaderListener.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ReaderListener.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ReaderListener (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/RegexSubscriptionMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/RegexSubscriptionMode.html
index ba2235f..ba272bb 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/RegexSubscriptionMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/RegexSubscriptionMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.RegexSubscriptionMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Schema.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Schema.html
index faf9e4b..e51c1e6 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Schema.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/Schema.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.Schema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SchemaSerializationException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SchemaSerializationException.html
index f405821..23a9bea 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SchemaSerializationException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SchemaSerializationException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.SchemaSerializationException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ServiceUrlProvider.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ServiceUrlProvider.html
index 24a2769..ad73d60 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ServiceUrlProvider.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/ServiceUrlProvider.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.ServiceUrlProvider (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SizeUnit.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SizeUnit.html
index b19cc51..bfb0fd5 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SizeUnit.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SizeUnit.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.SizeUnit (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionInitialPosition.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionInitialPosition.html
index efece9e..bb67802 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionInitialPosition.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionInitialPosition.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.SubscriptionInitialPosition (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionMode.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionMode.html
index 790876e..dc505ed 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionMode.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionMode.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.SubscriptionMode (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionType.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionType.html
index 2f8391c..8ce458b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionType.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/SubscriptionType.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.SubscriptionType (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/TopicMetadata.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/TopicMetadata.html
index 70aa8c7..72e98ca 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/TopicMetadata.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/TopicMetadata.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.TopicMetadata (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/TypedMessageBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/TypedMessageBuilder.html
index e1cd3ae..a14ae8d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/TypedMessageBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/class-use/TypedMessageBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.TypedMessageBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/ProducerInterceptor.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/ProducerInterceptor.html
index 01f0ddc..e228ee4 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/ProducerInterceptor.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/ProducerInterceptor.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ProducerInterceptor (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/ProducerInterceptorWrapper.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/ProducerInterceptorWrapper.html
index 6154e74..0ceed1c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/ProducerInterceptorWrapper.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/ProducerInterceptorWrapper.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ProducerInterceptorWrapper (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/class-use/ProducerInterceptor.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/class-use/ProducerInterceptor.html
index 7bd6a62..1029f8e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/class-use/ProducerInterceptor.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/class-use/ProducerInterceptor.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.interceptor.ProducerInterceptor (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/class-use/ProducerInterceptorWrapper.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/class-use/ProducerInterceptorWrapper.html
index 98e6b54..d0f1224 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/class-use/ProducerInterceptorWrapper.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/class-use/ProducerInterceptorWrapper.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.interceptor.ProducerInterceptorWrapper (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-frame.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-frame.html
index e8c71b3..a2b2688 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api.interceptor (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-summary.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-summary.html
index 6c55d37..d663c6a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-summary.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api.interceptor (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-tree.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-tree.html
index 039bd55..4ca4483 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-tree.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-tree.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api.interceptor Class Hierarchy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-use.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-use.html
index df7f3d0..fc05c6e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-use.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/interceptor/package-use.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Package org.apache.pulsar.client.api.interceptor (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-frame.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-frame.html
index 1965092..0e03846 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-summary.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-summary.html
index 734de45..30546e6 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-summary.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-tree.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-tree.html
index 73abc73..4e9ad3d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-tree.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-tree.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api Class Hierarchy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-use.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-use.html
index 4a261a8..eece544 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-use.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/package-use.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Package org.apache.pulsar.client.api (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/Field.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/Field.html
index 7008820..6cdae33 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/Field.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/Field.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Field (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/FieldSchemaBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/FieldSchemaBuilder.html
index 92f19f2..df865b4 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/FieldSchemaBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/FieldSchemaBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>FieldSchemaBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericRecord.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericRecord.html
index 15562af..91a11e7 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericRecord.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericRecord.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GenericRecord (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericRecordBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericRecordBuilder.html
index b8c0cc2..d9916ab 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericRecordBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericRecordBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GenericRecordBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericSchema.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericSchema.html
index fd2cacd..188199b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericSchema.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/GenericSchema.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GenericSchema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/RecordSchemaBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/RecordSchemaBuilder.html
index b26d0eb..c260c2b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/RecordSchemaBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/RecordSchemaBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>RecordSchemaBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaBuilder.html
index 856536f..3e2942d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaDefinition.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaDefinition.html
index 429e51d..9910399 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaDefinition.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaDefinition.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaDefinition (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaDefinitionBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaDefinitionBuilder.html
index f2052f5..09b0009 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaDefinitionBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaDefinitionBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaDefinitionBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaInfoProvider.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaInfoProvider.html
index bfa1897..53be723 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaInfoProvider.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaInfoProvider.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaInfoProvider (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaReader.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaReader.html
index dee69ce..09f3748 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaReader.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaReader.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaReader (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaWriter.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaWriter.html
index e5c1d14..58bc4fa 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaWriter.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/SchemaWriter.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaWriter (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/Field.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/Field.html
index 857efd2..2199fee 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/Field.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/Field.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.schema.Field (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/FieldSchemaBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/FieldSchemaBuilder.html
index f192adf..4a39a3b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/FieldSchemaBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/FieldSchemaBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.FieldSchemaBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericRecord.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericRecord.html
index 1698bc8..1228cc4 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericRecord.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericRecord.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.GenericRecord (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericRecordBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericRecordBuilder.html
index 3b2b38e..1a92504 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericRecordBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericRecordBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.GenericRecordBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericSchema.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericSchema.html
index eb74cd3..5ce1a3f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericSchema.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/GenericSchema.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.GenericSchema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/RecordSchemaBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/RecordSchemaBuilder.html
index 2f732de..ec186d1 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/RecordSchemaBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/RecordSchemaBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.RecordSchemaBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaBuilder.html
index 380b8d9..de72495 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.SchemaBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaDefinition.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaDefinition.html
index 267b4e8..73542af 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaDefinition.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaDefinition.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.SchemaDefinition (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaDefinitionBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaDefinitionBuilder.html
index 2bc8db0..729f18c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaDefinitionBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaDefinitionBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.SchemaDefinitionBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaInfoProvider.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaInfoProvider.html
index 40a1e81..0008408 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaInfoProvider.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaInfoProvider.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.SchemaInfoProvider (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaReader.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaReader.html
index b2ef468..b30b796 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaReader.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaReader.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.SchemaReader (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaWriter.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaWriter.html
index c85db82..e58dd5d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaWriter.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/class-use/SchemaWriter.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.schema.SchemaWriter (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-frame.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-frame.html
index b806c69..dedb7c2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api.schema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-summary.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-summary.html
index 7346a55..dcc1e0d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-summary.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api.schema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-tree.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-tree.html
index 4737feb..c3bc446 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-tree.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-tree.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api.schema Class Hierarchy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-use.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-use.html
index 5ae1aa4..f8d2eff 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-use.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/schema/package-use.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Package org.apache.pulsar.client.api.schema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/Transaction.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/Transaction.html
index aee1175..c61655d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/Transaction.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/Transaction.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Transaction (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClient.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClient.html
index 2c558ee..3a3fb2c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClient.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClient.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionBufferClient (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClientException.RequestTimeoutException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClientException.RequestTimeoutException.html
index e87cf82..40308b2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClientException.RequestTimeoutException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClientException.RequestTimeoutException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionBufferClientException.RequestTimeoutException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClientException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClientException.html
index bb1bb1d..5a03e46 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClientException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBufferClientException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionBufferClientException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBuilder.html
index d9b9d17..54a1f70 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClient.State.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClient.State.html
index 32949f3..625bff4 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClient.State.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClient.State.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionCoordinatorClient.State (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClient.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClient.html
index bbd9ae7..a43a838 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClient.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClient.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionCoordinatorClient (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.CoordinatorClientStateException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.CoordinatorClientStateException.html
index 8b0eae9..2821523 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.CoordinatorClientStateException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.CoordinatorClientStateException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionCoordinatorClientException.CoordinatorClientStateException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.CoordinatorNotFoundException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.CoordinatorNotFoundException.html
index c91631d..fcdbabe 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.CoordinatorNotFoundException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.CoordinatorNotFoundException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionCoordinatorClientException.CoordinatorNotFoundException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.InvalidTxnStatusException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.InvalidTxnStatusException.html
index 1baf551..e7dd642 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.InvalidTxnStatusException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.InvalidTxnStatusException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionCoordinatorClientException.InvalidTxnStatusException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException.html
index cca1514..066c12c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException.html
index 969739d..695dc6d 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.TransactionNotFoundException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.TransactionNotFoundException.html
index ea3d2c6..c192f65 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.TransactionNotFoundException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.TransactionNotFoundException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionCoordinatorClientException.TransactionNotFoundException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.html
index 8edc303..cb8d540 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TransactionCoordinatorClientException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TransactionCoordinatorClientException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TxnID.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TxnID.html
index 959344d..dbf7c52 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TxnID.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/TxnID.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>TxnID (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/Transaction.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/Transaction.html
index d2ea989..bf1aa10 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/Transaction.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/Transaction.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.transaction.Transaction (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClient.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClient.html
index e82dba8..11fea17 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClient.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClient.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.transaction.TransactionBufferClient (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClientException.RequestTimeoutException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClientException.RequestTimeoutException.html
index a6d2613..8d3c4a2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClientException.RequestTimeoutException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClientException.RequestTimeoutException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionBufferClientException.RequestTimeoutException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClientException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClientException.html
index 6829847..21cb95f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClientException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBufferClientException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionBufferClientException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBuilder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBuilder.html
index 9876b89..399c5a0 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBuilder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionBuilder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.transaction.TransactionBuilder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClient.State.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClient.State.html
index c3740f6..61c61a8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClient.State.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClient.State.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionCoordinatorClient.State (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClient.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClient.html
index 7e05837..d024047 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClient.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClient.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.client.api.transaction.TransactionCoordinatorClient (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.CoordinatorClientStateException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.CoordinatorClientStateException.html
index 5edbde1..785bdd2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.CoordinatorClientStateException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.CoordinatorClientStateException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionCoordinatorClientException.CoordinatorClientStateException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.CoordinatorNotFoundException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.CoordinatorNotFoundException.html
index caf415d..208a116 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.CoordinatorNotFoundException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.CoordinatorNotFoundException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionCoordinatorClientException.CoordinatorNotFoundException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.InvalidTxnStatusException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.InvalidTxnStatusException.html
index efd9576..3e56a7a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.InvalidTxnStatusException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.InvalidTxnStatusException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionCoordinatorClientException.InvalidTxnStatusException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException.html
index 20a0bbb..476d8d7 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionCoordinatorClientException.MetaStoreHandlerNotExistsException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException.html
index 048072f..6b1c20c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionCoordinatorClientException.MetaStoreHandlerNotReadyException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.TransactionNotFoundException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.TransactionNotFoundException.html
index 6ac8217..a51a9ba 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.TransactionNotFoundException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.TransactionNotFoundException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionCoordinatorClientException.TransactionNotFoundException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.html
index 7acb4c2..608e1dc 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TransactionCoordinatorClientException.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TransactionCoordinatorClientException (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TxnID.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TxnID.html
index 250c4af..32ec432 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TxnID.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/class-use/TxnID.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.api.transaction.TxnID (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-frame.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-frame.html
index 9197f45..e169285 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api.transaction (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-summary.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-summary.html
index aa7e625..0c59ed9 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-summary.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api.transaction (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-tree.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-tree.html
index 434f3f8..6b7f10b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-tree.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-tree.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.api.transaction Class Hierarchy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-use.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-use.html
index 64d76a0..86c81ff 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-use.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/api/transaction/package-use.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Package org.apache.pulsar.client.api.transaction (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/DefaultImplementation.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/DefaultImplementation.html
index c119a82..87e15cd 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/DefaultImplementation.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/DefaultImplementation.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>DefaultImplementation (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/class-use/DefaultImplementation.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/class-use/DefaultImplementation.html
index 161823e..12364f3 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/class-use/DefaultImplementation.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/class-use/DefaultImplementation.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.client.internal.DefaultImplementation (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-frame.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-frame.html
index ea0eb0a..f2c7bcc 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.internal (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-summary.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-summary.html
index 769da0d..9af93fd 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-summary.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.internal (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-tree.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-tree.html
index 973002a..6099ce9 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-tree.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-tree.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.client.internal Class Hierarchy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-use.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-use.html
index c490972..e491d46 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-use.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/client/internal/package-use.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Package org.apache.pulsar.client.internal (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/AuthData.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/AuthData.html
index 328db2c..398eec3 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/AuthData.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/AuthData.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>AuthData (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/EncryptionContext.EncryptionKey.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/EncryptionContext.EncryptionKey.html
index 6ba84e6..96c5f6b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/EncryptionContext.EncryptionKey.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/EncryptionContext.EncryptionKey.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>EncryptionContext.EncryptionKey (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/EncryptionContext.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/EncryptionContext.html
index 1d9f4cf..409cada 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/EncryptionContext.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/EncryptionContext.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>EncryptionContext (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/AuthData.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/AuthData.html
index b763ef0..cf99761 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/AuthData.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/AuthData.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.api.AuthData (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/EncryptionContext.EncryptionKey.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/EncryptionContext.EncryptionKey.html
index 5e3b84c..fbaf5ba 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/EncryptionContext.EncryptionKey.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/EncryptionContext.EncryptionKey.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.api.EncryptionContext.EncryptionKey (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/EncryptionContext.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/EncryptionContext.html
index 280ae54..62b259f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/EncryptionContext.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/class-use/EncryptionContext.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.api.EncryptionContext (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-frame.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-frame.html
index 86c93c5..ee13f37 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.common.api (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-summary.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-summary.html
index 5d3a3d6..3e3905c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-summary.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.common.api (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-tree.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-tree.html
index c661d73..d0d780a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-tree.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-tree.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.common.api Class Hierarchy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-use.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-use.html
index c61b01e..19f214a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-use.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/api/package-use.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Package org.apache.pulsar.common.api (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.LimitedPrivate.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.LimitedPrivate.html
index e20ae23..6118687 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.LimitedPrivate.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.LimitedPrivate.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>InterfaceAudience.LimitedPrivate (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.Private.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.Private.html
index cca5cde..d52f1ff 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.Private.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.Private.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>InterfaceAudience.Private (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.Public.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.Public.html
index 68b2f9a..300d6cd 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.Public.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.Public.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>InterfaceAudience.Public (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.html
index 20e70d8..649f1d8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceAudience.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>InterfaceAudience (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Evolving.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Evolving.html
index 1b697c3..53425fe 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Evolving.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Evolving.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>InterfaceStability.Evolving (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Stable.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Stable.html
index a5be5d8..a8163d4 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Stable.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Stable.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>InterfaceStability.Stable (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Unstable.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Unstable.html
index 8164973..fcce521 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Unstable.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.Unstable.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>InterfaceStability.Unstable (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.html
index 1f6a737..4a2f428 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/InterfaceStability.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>InterfaceStability (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.LimitedPrivate.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.LimitedPrivate.html
index 4cee293..dfe23ad 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.LimitedPrivate.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.LimitedPrivate.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.classification.InterfaceAudience.LimitedPrivate (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.Private.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.Private.html
index f74d5bc..3046ee5 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.Private.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.Private.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.classification.InterfaceAudience.Private (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.Public.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.Public.html
index bf757b6..b531086 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.Public.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.Public.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.classification.InterfaceAudience.Public (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.html
index f0bf6d8..65a7d89 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceAudience.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.classification.InterfaceAudience (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Evolving.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Evolving.html
index 5187a73..da6611a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Evolving.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Evolving.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.classification.InterfaceStability.Evolving (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Stable.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Stable.html
index cd6a0f2..2b4b215 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Stable.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Stable.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.classification.InterfaceStability.Stable (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Unstable.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Unstable.html
index 30c1463..a915ce3 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Unstable.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.Unstable.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.classification.InterfaceStability.Unstable (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.html
index 827a325..c2e0ab8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/class-use/InterfaceStability.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.classification.InterfaceStability (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-frame.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-frame.html
index 65127b0..dac1974 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.common.classification (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-summary.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-summary.html
index 447a74f..db17729 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-summary.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.common.classification (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-tree.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-tree.html
index 0845f6f..3e720a2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-tree.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-tree.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.common.classification Class Hierarchy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-use.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-use.html
index 9d58e0a..910a9a7 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-use.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/classification/package-use.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Package org.apache.pulsar.common.classification (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValue.KeyValueDecoder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValue.KeyValueDecoder.html
index 500e722..dd5ae9f 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValue.KeyValueDecoder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValue.KeyValueDecoder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>KeyValue.KeyValueDecoder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValue.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValue.html
index 56d123d..2f6a82c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValue.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValue.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>KeyValue (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValueEncodingType.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValueEncodingType.html
index 1f4d773..a8c7c85 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValueEncodingType.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/KeyValueEncodingType.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>KeyValueEncodingType (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaInfo.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaInfo.html
index a516bb8..fdb2762 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaInfo.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaInfo.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaInfo (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaInfoWithVersion.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaInfoWithVersion.html
index 51e84d4..f8217d2 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaInfoWithVersion.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaInfoWithVersion.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaInfoWithVersion (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaType.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaType.html
index 940dd21..446655a 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaType.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/SchemaType.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:09 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:51 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>SchemaType (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValue.KeyValueDecoder.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValue.KeyValueDecoder.html
index 1325dc6..fa55da8 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValue.KeyValueDecoder.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValue.KeyValueDecoder.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Interface org.apache.pulsar.common.schema.KeyValue.KeyValueDecoder (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValue.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValue.html
index 466a54f..8fca348 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValue.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValue.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.schema.KeyValue (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValueEncodingType.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValueEncodingType.html
index ee4cb4e..7df262e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValueEncodingType.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/KeyValueEncodingType.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.schema.KeyValueEncodingType (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaInfo.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaInfo.html
index 6492bde..682b891 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaInfo.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaInfo.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.schema.SchemaInfo (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaInfoWithVersion.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaInfoWithVersion.html
index 18704a8..bc55a93 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaInfoWithVersion.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaInfoWithVersion.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.schema.SchemaInfoWithVersion (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaType.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaType.html
index 1eb9845..fa83b68 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaType.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/class-use/SchemaType.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Class org.apache.pulsar.common.schema.SchemaType (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-frame.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-frame.html
index 180e5f6..dd026ab 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.common.schema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-summary.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-summary.html
index 4d238b9..24b605c 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-summary.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.common.schema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-tree.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-tree.html
index af53e2f..203d0fe 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-tree.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-tree.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>org.apache.pulsar.common.schema Class Hierarchy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-use.html b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-use.html
index 4b52977..8283e7b 100644
--- a/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-use.html
+++ b/content/api/client/2.8.0-SNAPSHOT/org/apache/pulsar/common/schema/package-use.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Uses of Package org.apache.pulsar.common.schema (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/overview-frame.html b/content/api/client/2.8.0-SNAPSHOT/overview-frame.html
index 2b693ee..4e8325e 100644
--- a/content/api/client/2.8.0-SNAPSHOT/overview-frame.html
+++ b/content/api/client/2.8.0-SNAPSHOT/overview-frame.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:10 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Overview List (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/overview-summary.html b/content/api/client/2.8.0-SNAPSHOT/overview-summary.html
index cae0b7f..d8b3035 100644
--- a/content/api/client/2.8.0-SNAPSHOT/overview-summary.html
+++ b/content/api/client/2.8.0-SNAPSHOT/overview-summary.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Overview (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/overview-tree.html b/content/api/client/2.8.0-SNAPSHOT/overview-tree.html
index 112f108f..e383ea9 100644
--- a/content/api/client/2.8.0-SNAPSHOT/overview-tree.html
+++ b/content/api/client/2.8.0-SNAPSHOT/overview-tree.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:53 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Class Hierarchy (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/client/2.8.0-SNAPSHOT/serialized-form.html b/content/api/client/2.8.0-SNAPSHOT/serialized-form.html
index 95bee7d..58445ca 100644
--- a/content/api/client/2.8.0-SNAPSHOT/serialized-form.html
+++ b/content/api/client/2.8.0-SNAPSHOT/serialized-form.html
@@ -2,7 +2,7 @@
 <!-- NewPage -->
 <html lang="en">
 <head>
-<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 06:25:11 UTC 2021 -->
+<!-- Generated by javadoc (1.8.0_282) on Thu Mar 25 14:40:52 UTC 2021 -->
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Serialized Form (Pulsar Client :: API 2.8.0-SNAPSHOT API)</title>
 <meta name="date" content="2021-03-25">
diff --git a/content/api/python/2.8.0-SNAPSHOT/index.html b/content/api/python/2.8.0-SNAPSHOT/index.html
index 1c19796..f217d51 100644
--- a/content/api/python/2.8.0-SNAPSHOT/index.html
+++ b/content/api/python/2.8.0-SNAPSHOT/index.html
@@ -3648,7 +3648,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fd9469a0810&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7febd1329810&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -3876,7 +3876,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fd9469b0ed0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7febd1339ed0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False)</p>
     </div>
     
 
@@ -4055,7 +4055,7 @@ instances directly on a particular partition.
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fd9469b0e50&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7febd1339e50&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/api/python/index.html b/content/api/python/index.html
index 1c19796..f217d51 100644
--- a/content/api/python/index.html
+++ b/content/api/python/index.html
@@ -3648,7 +3648,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fd9469a0810&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7febd1329810&gt;, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, max_pending_messages_across_partitions=50000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms [...]
     </div>
     
 
@@ -3876,7 +3876,7 @@ batched into single batch message:
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_reader">
-    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fd9469b0ed0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False)</p>
+    <p>def <span class="ident">create_reader</span>(</p><p>self, topic, start_message_id, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7febd1339ed0&gt;, reader_listener=None, receiver_queue_size=1000, reader_name=None, subscription_role_prefix=None, is_read_compacted=False)</p>
     </div>
     
 
@@ -4055,7 +4055,7 @@ instances directly on a particular partition.
             
   <div class="item">
     <div class="name def" id="pulsar.Client.subscribe">
-    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7fd9469b0e50&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
+    <p>def <span class="ident">subscribe</span>(</p><p>self, topic, subscription_name, consumer_type=_pulsar.ConsumerType.Exclusive, schema=&lt;pulsar.schema.schema.BytesSchema object at 0x7febd1339e50&gt;, message_listener=None, receiver_queue_size=1000, max_total_receiver_queue_size_across_partitions=50000, consumer_name=None, unacked_messages_timeout_ms=None, broker_consumer_stats_cache_time_ms=30000, negative_ack_redelivery_delay_ms=60000, is_read_compacted=False, properties=None, pa [...]
     </div>
     
 
diff --git a/content/docs/zh-CN/2.1.0-incubating/adaptors-kafka.html b/content/docs/zh-CN/2.1.0-incubating/adaptors-kafka.html
index b31f25e..bfb5b92 100644
--- a/content/docs/zh-CN/2.1.0-incubating/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.1.0-incubating/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p>你可以在<a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">这</a>发现完整的生产者消费者的例子</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.1.0-incubating/adaptors-kafka/index.html b/content/docs/zh-CN/2.1.0-incubating/adaptors-kafka/index.html
index b31f25e..bfb5b92 100644
--- a/content/docs/zh-CN/2.1.0-incubating/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p>你可以在<a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">这</a>发现完整的生产者消费者的例子</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.1.0-incubating/client-libraries-cpp.html b/content/docs/zh-CN/2.1.0-incubating/client-libraries-cpp.html
index 8cd0392..42462b0 100644
--- a/content/docs/zh-CN/2.1.0-incubating/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.1.0-incubating/client-libraries-cpp.html
@@ -161,7 +161,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -183,7 +183,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -211,7 +211,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supporte [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supporte [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/client-libraries-cpp/index.html b/content/docs/zh-CN/2.1.0-incubating/client-libraries-cpp/index.html
index 8cd0392..42462b0 100644
--- a/content/docs/zh-CN/2.1.0-incubating/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/client-libraries-cpp/index.html
@@ -161,7 +161,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -183,7 +183,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -211,7 +211,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supporte [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supporte [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/cookbooks-encryption.html b/content/docs/zh-CN/2.1.0-incubating/cookbooks-encryption.html
index c6d4a51..1e6d702 100644
--- a/content/docs/zh-CN/2.1.0-incubating/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.1.0-incubating/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Pr [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者( [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/cookbooks-encryption/index.html b/content/docs/zh-CN/2.1.0-incubating/cookbooks-encryption/index.html
index c6d4a51..1e6d702 100644
--- a/content/docs/zh-CN/2.1.0-incubating/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Pr [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者( [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/develop-binary-protocol.html b/content/docs/zh-CN/2.1.0-incubating/develop-binary-protocol.html
index 452b718..6d1cc26 100644
--- a/content/docs/zh-CN/2.1.0-incubating/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.1.0-incubating/develop-binary-protocol.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/develop-schema"><span>下一页</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 href="#有效载荷命令"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/develop-schema"><span>下一页</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 href="#有效载荷命令"> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/develop-binary-protocol/index.html b/content/docs/zh-CN/2.1.0-incubating/develop-binary-protocol/index.html
index 452b718..6d1cc26 100644
--- a/content/docs/zh-CN/2.1.0-incubating/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/develop-binary-protocol/index.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/develop-schema"><span>下一页</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 href="#有效载荷命令"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/develop-schema"><span>下一页</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 href="#有效载荷命令"> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/functions-deploying.html b/content/docs/zh-CN/2.1.0-incubating/functions-deploying.html
index 5de3c6d..c08cda4 100644
--- a/content/docs/zh-CN/2.1.0-incubating/functions-deploying.html
+++ b/content/docs/zh-CN/2.1.0-incubating/functions-deploying.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--className org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.1.0-incubating/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.1.0-incubating/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.1.0-incubating/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.1.0-incubating/functions-deploying/index.html b/content/docs/zh-CN/2.1.0-incubating/functions-deploying/index.html
index 5de3c6d..c08cda4 100644
--- a/content/docs/zh-CN/2.1.0-incubating/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/functions-deploying/index.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--className org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.1.0-incubating/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.1.0-incubating/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.1.0-incubating/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.1.0-incubating/reference-terminology.html b/content/docs/zh-CN/2.1.0-incubating/reference-terminology.html
index b1b96e5..b248d21 100644
--- a/content/docs/zh-CN/2.1.0-incubating/reference-terminology.html
+++ b/content/docs/zh-CN/2.1.0-incubating/reference-terminology.html
@@ -79,35 +79,35 @@
 <h4><a class="anchor" aria-hidden="true" id="pulsar"></a><a href="#pulsar" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Pulsar 是一个分布式消息系统,最初由 Yahoo 创建,现在是 Apache 软件基金会的一个孵化器项目。</p>
 <h4><a class="anchor" aria-hidden="true" id="消息(message)"></a><a href="#消息(message)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>消息是 Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
+<p>Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>由一组<a href="#consumer">消费者</a>在<a href="#topic">主题</a>上建立的消费关系,Pulsar 支持三种订阅模式(独占,共享和灾备)。</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.1.0-incubating/reference-terminology/index.html b/content/docs/zh-CN/2.1.0-incubating/reference-terminology/index.html
index b1b96e5..b248d21 100644
--- a/content/docs/zh-CN/2.1.0-incubating/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/reference-terminology/index.html
@@ -79,35 +79,35 @@
 <h4><a class="anchor" aria-hidden="true" id="pulsar"></a><a href="#pulsar" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Pulsar 是一个分布式消息系统,最初由 Yahoo 创建,现在是 Apache 软件基金会的一个孵化器项目。</p>
 <h4><a class="anchor" aria-hidden="true" id="消息(message)"></a><a href="#消息(message)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>消息是 Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
+<p>Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>由一组<a href="#consumer">消费者</a>在<a href="#topic">主题</a>上建立的消费关系,Pulsar 支持三种订阅模式(独占,共享和灾备)。</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.1.0-incubating/security-encryption.html b/content/docs/zh-CN/2.1.0-incubating/security-encryption.html
index edeab8e..276f5a0 100644
--- a/content/docs/zh-CN/2.1.0-incubating/security-encryption.html
+++ b/content/docs/zh-CN/2.1.0-incubating/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a>< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.0-incubating/security-encryption/index.html b/content/docs/zh-CN/2.1.0-incubating/security-encryption/index.html
index edeab8e..276f5a0 100644
--- a/content/docs/zh-CN/2.1.0-incubating/security-encryption/index.html
+++ b/content/docs/zh-CN/2.1.0-incubating/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a>< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.0-incubating/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.0-incubating/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/adaptors-kafka.html b/content/docs/zh-CN/2.1.1-incubating/adaptors-kafka.html
index 2f9618a..f1db6b3 100644
--- a/content/docs/zh-CN/2.1.1-incubating/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.1.1-incubating/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p>你可以在<a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">这</a>发现完整的生产者消费者的例子</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.1.1-incubating/adaptors-kafka/index.html b/content/docs/zh-CN/2.1.1-incubating/adaptors-kafka/index.html
index 2f9618a..f1db6b3 100644
--- a/content/docs/zh-CN/2.1.1-incubating/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p>你可以在<a href="https://github.com/apache/incubator-pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">这</a>发现完整的生产者消费者的例子</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.1.1-incubating/client-libraries-cpp.html b/content/docs/zh-CN/2.1.1-incubating/client-libraries-cpp.html
index fef66c2..6554bc3 100644
--- a/content/docs/zh-CN/2.1.1-incubating/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.1.1-incubating/client-libraries-cpp.html
@@ -161,7 +161,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -183,7 +183,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -211,7 +211,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supporte [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supporte [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/client-libraries-cpp/index.html b/content/docs/zh-CN/2.1.1-incubating/client-libraries-cpp/index.html
index fef66c2..6554bc3 100644
--- a/content/docs/zh-CN/2.1.1-incubating/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/client-libraries-cpp/index.html
@@ -161,7 +161,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -183,7 +183,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -211,7 +211,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supporte [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supporte [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/cookbooks-encryption.html b/content/docs/zh-CN/2.1.1-incubating/cookbooks-encryption.html
index cde4300..22ed229 100644
--- a/content/docs/zh-CN/2.1.1-incubating/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.1.1-incubating/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Pr [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者( [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/cookbooks-encryption/index.html b/content/docs/zh-CN/2.1.1-incubating/cookbooks-encryption/index.html
index cde4300..22ed229 100644
--- a/content/docs/zh-CN/2.1.1-incubating/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Pr [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者( [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/develop-binary-protocol.html b/content/docs/zh-CN/2.1.1-incubating/develop-binary-protocol.html
index d11f9fe..33fe4fe 100644
--- a/content/docs/zh-CN/2.1.1-incubating/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.1.1-incubating/develop-binary-protocol.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/develop-schema"><span>下一页</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 href="#有效载荷命令"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/develop-schema"><span>下一页</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 href="#有效载荷命令"> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/develop-binary-protocol/index.html b/content/docs/zh-CN/2.1.1-incubating/develop-binary-protocol/index.html
index d11f9fe..33fe4fe 100644
--- a/content/docs/zh-CN/2.1.1-incubating/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/develop-binary-protocol/index.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/develop-schema"><span>下一页</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 href="#有效载荷命令"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/develop-schema"><span>下一页</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 href="#有效载荷命令"> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/functions-deploying.html b/content/docs/zh-CN/2.1.1-incubating/functions-deploying.html
index 9b5bc2c..76f5e8b 100644
--- a/content/docs/zh-CN/2.1.1-incubating/functions-deploying.html
+++ b/content/docs/zh-CN/2.1.1-incubating/functions-deploying.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--className org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.1.1-incubating/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.1.1-incubating/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.1.1-incubating/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.1.1-incubating/functions-deploying/index.html b/content/docs/zh-CN/2.1.1-incubating/functions-deploying/index.html
index 9b5bc2c..76f5e8b 100644
--- a/content/docs/zh-CN/2.1.1-incubating/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/functions-deploying/index.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--className org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.1.1-incubating/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.1.1-incubating/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.1.1-incubating/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.1.1-incubating/reference-terminology.html b/content/docs/zh-CN/2.1.1-incubating/reference-terminology.html
index 17565cd..f3be9fd 100644
--- a/content/docs/zh-CN/2.1.1-incubating/reference-terminology.html
+++ b/content/docs/zh-CN/2.1.1-incubating/reference-terminology.html
@@ -79,35 +79,35 @@
 <h4><a class="anchor" aria-hidden="true" id="pulsar"></a><a href="#pulsar" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Pulsar 是一个分布式消息系统,最初由 Yahoo 创建,现在是 Apache 软件基金会的一个孵化器项目。</p>
 <h4><a class="anchor" aria-hidden="true" id="消息(message)"></a><a href="#消息(message)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>消息是 Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
+<p>Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>由一组<a href="#consumer">消费者</a>在<a href="#topic">主题</a>上建立的消费关系,Pulsar 支持三种订阅模式(独占,共享和灾备)。</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.1.1-incubating/reference-terminology/index.html b/content/docs/zh-CN/2.1.1-incubating/reference-terminology/index.html
index 17565cd..f3be9fd 100644
--- a/content/docs/zh-CN/2.1.1-incubating/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/reference-terminology/index.html
@@ -79,35 +79,35 @@
 <h4><a class="anchor" aria-hidden="true" id="pulsar"></a><a href="#pulsar" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Pulsar 是一个分布式消息系统,最初由 Yahoo 创建,现在是 Apache 软件基金会的一个孵化器项目。</p>
 <h4><a class="anchor" aria-hidden="true" id="消息(message)"></a><a href="#消息(message)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>消息是 Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
+<p>Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>由一组<a href="#consumer">消费者</a>在<a href="#topic">主题</a>上建立的消费关系,Pulsar 支持三种订阅模式(独占,共享和灾备)。</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.1.1-incubating/security-encryption.html b/content/docs/zh-CN/2.1.1-incubating/security-encryption.html
index a766f61..9b3d064 100644
--- a/content/docs/zh-CN/2.1.1-incubating/security-encryption.html
+++ b/content/docs/zh-CN/2.1.1-incubating/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a>< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.1.1-incubating/security-encryption/index.html b/content/docs/zh-CN/2.1.1-incubating/security-encryption/index.html
index a766f61..9b3d064 100644
--- a/content/docs/zh-CN/2.1.1-incubating/security-encryption/index.html
+++ b/content/docs/zh-CN/2.1.1-incubating/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a>< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.1.1-incubating/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.1.1-incubating/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/adaptors-kafka.html b/content/docs/zh-CN/2.2.0/adaptors-kafka.html
index 4aab673..78583a7 100644
--- a/content/docs/zh-CN/2.2.0/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.2.0/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.2.0/adaptors-kafka/index.html b/content/docs/zh-CN/2.2.0/adaptors-kafka/index.html
index 4aab673..78583a7 100644
--- a/content/docs/zh-CN/2.2.0/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.2.0/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.2.0/client-libraries-cpp.html b/content/docs/zh-CN/2.2.0/client-libraries-cpp.html
index 031a624..0f383d5 100644
--- a/content/docs/zh-CN/2.2.0/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.2.0/client-libraries-cpp.html
@@ -161,7 +161,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -183,7 +183,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -211,7 +211,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/client-libraries-cpp/index.html b/content/docs/zh-CN/2.2.0/client-libraries-cpp/index.html
index 031a624..0f383d5 100644
--- a/content/docs/zh-CN/2.2.0/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.2.0/client-libraries-cpp/index.html
@@ -161,7 +161,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -183,7 +183,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -211,7 +211,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/cookbooks-encryption.html b/content/docs/zh-CN/2.2.0/cookbooks-encryption.html
index a62f586..927117b 100644
--- a/content/docs/zh-CN/2.2.0/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.2.0/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/cookbooks-encryption/index.html b/content/docs/zh-CN/2.2.0/cookbooks-encryption/index.html
index a62f586..927117b 100644
--- a/content/docs/zh-CN/2.2.0/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.2.0/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/develop-binary-protocol.html b/content/docs/zh-CN/2.2.0/develop-binary-protocol.html
index 77a6b15..76e7469 100644
--- a/content/docs/zh-CN/2.2.0/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.2.0/develop-binary-protocol.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/develop-binary-protocol/index.html b/content/docs/zh-CN/2.2.0/develop-binary-protocol/index.html
index 77a6b15..76e7469 100644
--- a/content/docs/zh-CN/2.2.0/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.2.0/develop-binary-protocol/index.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/functions-deploying.html b/content/docs/zh-CN/2.2.0/functions-deploying.html
index 569fade..5b22352 100644
--- a/content/docs/zh-CN/2.2.0/functions-deploying.html
+++ b/content/docs/zh-CN/2.2.0/functions-deploying.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.2.0/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.2.0/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.2.0/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.2.0/functions-deploying/index.html b/content/docs/zh-CN/2.2.0/functions-deploying/index.html
index 569fade..5b22352 100644
--- a/content/docs/zh-CN/2.2.0/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.2.0/functions-deploying/index.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.2.0/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.2.0/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.2.0/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.2.0/reference-terminology.html b/content/docs/zh-CN/2.2.0/reference-terminology.html
index 028af3d..3cbf308 100644
--- a/content/docs/zh-CN/2.2.0/reference-terminology.html
+++ b/content/docs/zh-CN/2.2.0/reference-terminology.html
@@ -79,35 +79,35 @@
 <h4><a class="anchor" aria-hidden="true" id="pulsar"></a><a href="#pulsar" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Pulsar 是一个分布式消息系统,最初由 Yahoo 创建,现在是 Apache 软件基金会的一个孵化器项目。</p>
 <h4><a class="anchor" aria-hidden="true" id="消息(message)"></a><a href="#消息(message)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>消息是 Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
+<p>Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>由一组<a href="#consumer">消费者</a>在<a href="#topic">主题</a>上建立的消费关系,Pulsar 支持三种订阅模式(独占,共享和灾备)。</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.2.0/reference-terminology/index.html b/content/docs/zh-CN/2.2.0/reference-terminology/index.html
index 028af3d..3cbf308 100644
--- a/content/docs/zh-CN/2.2.0/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.2.0/reference-terminology/index.html
@@ -79,35 +79,35 @@
 <h4><a class="anchor" aria-hidden="true" id="pulsar"></a><a href="#pulsar" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Pulsar 是一个分布式消息系统,最初由 Yahoo 创建,现在是 Apache 软件基金会的一个孵化器项目。</p>
 <h4><a class="anchor" aria-hidden="true" id="消息(message)"></a><a href="#消息(message)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>消息是 Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
+<p>Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>由一组<a href="#consumer">消费者</a>在<a href="#topic">主题</a>上建立的消费关系,Pulsar 支持三种订阅模式(独占,共享和灾备)。</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.2.0/security-encryption.html b/content/docs/zh-CN/2.2.0/security-encryption.html
index a877adc..8a88790 100644
--- a/content/docs/zh-CN/2.2.0/security-encryption.html
+++ b/content/docs/zh-CN/2.2.0/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.0/security-encryption/index.html b/content/docs/zh-CN/2.2.0/security-encryption/index.html
index a877adc..8a88790 100644
--- a/content/docs/zh-CN/2.2.0/security-encryption/index.html
+++ b/content/docs/zh-CN/2.2.0/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/adaptors-kafka.html b/content/docs/zh-CN/2.2.1/adaptors-kafka.html
index 30006a7..165e9f6 100644
--- a/content/docs/zh-CN/2.2.1/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.2.1/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.2.1/adaptors-kafka/index.html b/content/docs/zh-CN/2.2.1/adaptors-kafka/index.html
index 30006a7..165e9f6 100644
--- a/content/docs/zh-CN/2.2.1/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.2.1/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.2.1/client-libraries-cpp.html b/content/docs/zh-CN/2.2.1/client-libraries-cpp.html
index 374ffc0..665d3f6 100644
--- a/content/docs/zh-CN/2.2.1/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.2.1/client-libraries-cpp.html
@@ -161,7 +161,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -183,7 +183,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -211,7 +211,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/client-libraries-cpp/index.html b/content/docs/zh-CN/2.2.1/client-libraries-cpp/index.html
index 374ffc0..665d3f6 100644
--- a/content/docs/zh-CN/2.2.1/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.2.1/client-libraries-cpp/index.html
@@ -161,7 +161,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -183,7 +183,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -211,7 +211,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/cookbooks-encryption.html b/content/docs/zh-CN/2.2.1/cookbooks-encryption.html
index 745bcad..94a821e 100644
--- a/content/docs/zh-CN/2.2.1/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.2.1/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/cookbooks-encryption/index.html b/content/docs/zh-CN/2.2.1/cookbooks-encryption/index.html
index 745bcad..94a821e 100644
--- a/content/docs/zh-CN/2.2.1/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.2.1/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/develop-binary-protocol.html b/content/docs/zh-CN/2.2.1/develop-binary-protocol.html
index 2af01b3..0212aaf 100644
--- a/content/docs/zh-CN/2.2.1/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.2.1/develop-binary-protocol.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/develop-binary-protocol/index.html b/content/docs/zh-CN/2.2.1/develop-binary-protocol/index.html
index 2af01b3..0212aaf 100644
--- a/content/docs/zh-CN/2.2.1/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.2.1/develop-binary-protocol/index.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/functions-deploying.html b/content/docs/zh-CN/2.2.1/functions-deploying.html
index dededd4..565db75 100644
--- a/content/docs/zh-CN/2.2.1/functions-deploying.html
+++ b/content/docs/zh-CN/2.2.1/functions-deploying.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.2.1/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.2.1/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.2.1/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.2.1/functions-deploying/index.html b/content/docs/zh-CN/2.2.1/functions-deploying/index.html
index dededd4..565db75 100644
--- a/content/docs/zh-CN/2.2.1/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.2.1/functions-deploying/index.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.2.1/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.2.1/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.2.1/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.2.1/reference-terminology.html b/content/docs/zh-CN/2.2.1/reference-terminology.html
index 5ffe538..2613ffc 100644
--- a/content/docs/zh-CN/2.2.1/reference-terminology.html
+++ b/content/docs/zh-CN/2.2.1/reference-terminology.html
@@ -79,35 +79,35 @@
 <h4><a class="anchor" aria-hidden="true" id="pulsar"></a><a href="#pulsar" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Pulsar 是一个分布式消息系统,最初由 Yahoo 创建,现在是 Apache 软件基金会的一个孵化器项目。</p>
 <h4><a class="anchor" aria-hidden="true" id="消息(message)"></a><a href="#消息(message)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>消息是 Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
+<p>Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>由一组<a href="#consumer">消费者</a>在<a href="#topic">主题</a>上建立的消费关系,Pulsar 支持三种订阅模式(独占,共享和灾备)。</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.2.1/reference-terminology/index.html b/content/docs/zh-CN/2.2.1/reference-terminology/index.html
index 5ffe538..2613ffc 100644
--- a/content/docs/zh-CN/2.2.1/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.2.1/reference-terminology/index.html
@@ -79,35 +79,35 @@
 <h4><a class="anchor" aria-hidden="true" id="pulsar"></a><a href="#pulsar" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Pulsar 是一个分布式消息系统,最初由 Yahoo 创建,现在是 Apache 软件基金会的一个孵化器项目。</p>
 <h4><a class="anchor" aria-hidden="true" id="消息(message)"></a><a href="#消息(message)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>消息是 Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
+<p>Pulsar 的基本单位,<a href="#producer">producer </a>发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 从 topic 消费信息。</p>
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>由一组<a href="#consumer">消费者</a>在<a href="#topic">主题</a>上建立的消费关系,Pulsar 支持三种订阅模式(独占,共享和灾备)。</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.2.1/security-encryption.html b/content/docs/zh-CN/2.2.1/security-encryption.html
index 0ca797b..dcca5e6 100644
--- a/content/docs/zh-CN/2.2.1/security-encryption.html
+++ b/content/docs/zh-CN/2.2.1/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.2.1/security-encryption/index.html b/content/docs/zh-CN/2.2.1/security-encryption/index.html
index 0ca797b..dcca5e6 100644
--- a/content/docs/zh-CN/2.2.1/security-encryption/index.html
+++ b/content/docs/zh-CN/2.2.1/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.2.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.2.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/adaptors-kafka.html b/content/docs/zh-CN/2.3.0/adaptors-kafka.html
index 9876d77..7f8aa2b 100644
--- a/content/docs/zh-CN/2.3.0/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.3.0/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -198,7 +198,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.3.0/adaptors-kafka/index.html b/content/docs/zh-CN/2.3.0/adaptors-kafka/index.html
index 9876d77..7f8aa2b 100644
--- a/content/docs/zh-CN/2.3.0/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.3.0/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -198,7 +198,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.3.0/client-libraries-cpp.html b/content/docs/zh-CN/2.3.0/client-libraries-cpp.html
index 8d295cb..cc22097 100644
--- a/content/docs/zh-CN/2.3.0/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.3.0/client-libraries-cpp.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/client-libraries-cpp/index.html b/content/docs/zh-CN/2.3.0/client-libraries-cpp/index.html
index 8d295cb..cc22097 100644
--- a/content/docs/zh-CN/2.3.0/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.3.0/client-libraries-cpp/index.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/cookbooks-bookkeepermetadata.html b/content/docs/zh-CN/2.3.0/cookbooks-bookkeepermetadata.html
index d22b36c..10bbaed 100644
--- a/content/docs/zh-CN/2.3.0/cookbooks-bookkeepermetadata.html
+++ b/content/docs/zh-CN/2.3.0/cookbooks-bookkeepermetadata.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.3.0/cookbooks-bookkeepermetadata/index.html b/content/docs/zh-CN/2.3.0/cookbooks-bookkeepermetadata/index.html
index d22b36c..10bbaed 100644
--- a/content/docs/zh-CN/2.3.0/cookbooks-bookkeepermetadata/index.html
+++ b/content/docs/zh-CN/2.3.0/cookbooks-bookkeepermetadata/index.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.3.0/cookbooks-encryption.html b/content/docs/zh-CN/2.3.0/cookbooks-encryption.html
index 6df3336..6a750b6 100644
--- a/content/docs/zh-CN/2.3.0/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.3.0/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/cookbooks-encryption/index.html b/content/docs/zh-CN/2.3.0/cookbooks-encryption/index.html
index 6df3336..6a750b6 100644
--- a/content/docs/zh-CN/2.3.0/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.3.0/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/develop-binary-protocol.html b/content/docs/zh-CN/2.3.0/develop-binary-protocol.html
index 74b7fe1..0f9a547 100644
--- a/content/docs/zh-CN/2.3.0/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.3.0/develop-binary-protocol.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/develop-binary-protocol/index.html b/content/docs/zh-CN/2.3.0/develop-binary-protocol/index.html
index 74b7fe1..0f9a547 100644
--- a/content/docs/zh-CN/2.3.0/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.3.0/develop-binary-protocol/index.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/functions-deploying.html b/content/docs/zh-CN/2.3.0/functions-deploying.html
index 40b655b..7ea3477 100644
--- a/content/docs/zh-CN/2.3.0/functions-deploying.html
+++ b/content/docs/zh-CN/2.3.0/functions-deploying.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.3.0/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.3.0/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.3.0/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.3.0/functions-deploying/index.html b/content/docs/zh-CN/2.3.0/functions-deploying/index.html
index 40b655b..7ea3477 100644
--- a/content/docs/zh-CN/2.3.0/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.3.0/functions-deploying/index.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.3.0/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.3.0/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.3.0/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.3.0/reference-terminology.html b/content/docs/zh-CN/2.3.0/reference-terminology.html
index fe3fff0..b5e16e7 100644
--- a/content/docs/zh-CN/2.3.0/reference-terminology.html
+++ b/content/docs/zh-CN/2.3.0/reference-terminology.html
@@ -83,31 +83,31 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.3.0/reference-terminology/index.html b/content/docs/zh-CN/2.3.0/reference-terminology/index.html
index fe3fff0..b5e16e7 100644
--- a/content/docs/zh-CN/2.3.0/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.3.0/reference-terminology/index.html
@@ -83,31 +83,31 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -133,14 +133,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.3.0/security-encryption.html b/content/docs/zh-CN/2.3.0/security-encryption.html
index 3bfa177..ebc91b3 100644
--- a/content/docs/zh-CN/2.3.0/security-encryption.html
+++ b/content/docs/zh-CN/2.3.0/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.0/security-encryption/index.html b/content/docs/zh-CN/2.3.0/security-encryption/index.html
index 3bfa177..ebc91b3 100644
--- a/content/docs/zh-CN/2.3.0/security-encryption/index.html
+++ b/content/docs/zh-CN/2.3.0/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/adaptors-kafka.html b/content/docs/zh-CN/2.3.1/adaptors-kafka.html
index 61bc739..d972176 100644
--- a/content/docs/zh-CN/2.3.1/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.3.1/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -198,7 +198,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.3.1/adaptors-kafka/index.html b/content/docs/zh-CN/2.3.1/adaptors-kafka/index.html
index 61bc739..d972176 100644
--- a/content/docs/zh-CN/2.3.1/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.3.1/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -198,7 +198,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.3.1/client-libraries-cpp.html b/content/docs/zh-CN/2.3.1/client-libraries-cpp.html
index c58a881..fee7f00 100644
--- a/content/docs/zh-CN/2.3.1/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.3.1/client-libraries-cpp.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/client-libraries-cpp/index.html b/content/docs/zh-CN/2.3.1/client-libraries-cpp/index.html
index c58a881..fee7f00 100644
--- a/content/docs/zh-CN/2.3.1/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.3.1/client-libraries-cpp/index.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/cookbooks-bookkeepermetadata.html b/content/docs/zh-CN/2.3.1/cookbooks-bookkeepermetadata.html
index ca4104a..e8268e1 100644
--- a/content/docs/zh-CN/2.3.1/cookbooks-bookkeepermetadata.html
+++ b/content/docs/zh-CN/2.3.1/cookbooks-bookkeepermetadata.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.3.1/cookbooks-bookkeepermetadata/index.html b/content/docs/zh-CN/2.3.1/cookbooks-bookkeepermetadata/index.html
index ca4104a..e8268e1 100644
--- a/content/docs/zh-CN/2.3.1/cookbooks-bookkeepermetadata/index.html
+++ b/content/docs/zh-CN/2.3.1/cookbooks-bookkeepermetadata/index.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.3.1/cookbooks-encryption.html b/content/docs/zh-CN/2.3.1/cookbooks-encryption.html
index 66ff20f..963f7bf 100644
--- a/content/docs/zh-CN/2.3.1/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.3.1/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/cookbooks-encryption/index.html b/content/docs/zh-CN/2.3.1/cookbooks-encryption/index.html
index 66ff20f..963f7bf 100644
--- a/content/docs/zh-CN/2.3.1/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.3.1/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/develop-binary-protocol.html b/content/docs/zh-CN/2.3.1/develop-binary-protocol.html
index 0597a37..1b7bc67 100644
--- a/content/docs/zh-CN/2.3.1/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.3.1/develop-binary-protocol.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/develop-binary-protocol/index.html b/content/docs/zh-CN/2.3.1/develop-binary-protocol/index.html
index 0597a37..1b7bc67 100644
--- a/content/docs/zh-CN/2.3.1/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.3.1/develop-binary-protocol/index.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/functions-deploying.html b/content/docs/zh-CN/2.3.1/functions-deploying.html
index 5ea415e..275a5b4 100644
--- a/content/docs/zh-CN/2.3.1/functions-deploying.html
+++ b/content/docs/zh-CN/2.3.1/functions-deploying.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.3.1/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.3.1/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.3.1/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.3.1/functions-deploying/index.html b/content/docs/zh-CN/2.3.1/functions-deploying/index.html
index 5ea415e..275a5b4 100644
--- a/content/docs/zh-CN/2.3.1/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.3.1/functions-deploying/index.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.3.1/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.3.1/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.3.1/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.3.1/reference-terminology.html b/content/docs/zh-CN/2.3.1/reference-terminology.html
index 4ad4771..14eda44 100644
--- a/content/docs/zh-CN/2.3.1/reference-terminology.html
+++ b/content/docs/zh-CN/2.3.1/reference-terminology.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.3.1/reference-terminology/index.html b/content/docs/zh-CN/2.3.1/reference-terminology/index.html
index 4ad4771..14eda44 100644
--- a/content/docs/zh-CN/2.3.1/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.3.1/reference-terminology/index.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.3.1/security-encryption.html b/content/docs/zh-CN/2.3.1/security-encryption.html
index 2b20c45..8b8632b 100644
--- a/content/docs/zh-CN/2.3.1/security-encryption.html
+++ b/content/docs/zh-CN/2.3.1/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.1/security-encryption/index.html b/content/docs/zh-CN/2.3.1/security-encryption/index.html
index 2b20c45..8b8632b 100644
--- a/content/docs/zh-CN/2.3.1/security-encryption/index.html
+++ b/content/docs/zh-CN/2.3.1/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/adaptors-kafka.html b/content/docs/zh-CN/2.3.2/adaptors-kafka.html
index d835f37..d58aa49 100644
--- a/content/docs/zh-CN/2.3.2/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.3.2/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -198,7 +198,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.3.2/adaptors-kafka/index.html b/content/docs/zh-CN/2.3.2/adaptors-kafka/index.html
index d835f37..d58aa49 100644
--- a/content/docs/zh-CN/2.3.2/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.3.2/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -198,7 +198,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.3.2/client-libraries-cpp.html b/content/docs/zh-CN/2.3.2/client-libraries-cpp.html
index c80504c..52852f6 100644
--- a/content/docs/zh-CN/2.3.2/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.3.2/client-libraries-cpp.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/client-libraries-cpp/index.html b/content/docs/zh-CN/2.3.2/client-libraries-cpp/index.html
index c80504c..52852f6 100644
--- a/content/docs/zh-CN/2.3.2/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.3.2/client-libraries-cpp/index.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/cookbooks-bookkeepermetadata.html b/content/docs/zh-CN/2.3.2/cookbooks-bookkeepermetadata.html
index 190b359..0a4c3ac 100644
--- a/content/docs/zh-CN/2.3.2/cookbooks-bookkeepermetadata.html
+++ b/content/docs/zh-CN/2.3.2/cookbooks-bookkeepermetadata.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.3.2/cookbooks-bookkeepermetadata/index.html b/content/docs/zh-CN/2.3.2/cookbooks-bookkeepermetadata/index.html
index 190b359..0a4c3ac 100644
--- a/content/docs/zh-CN/2.3.2/cookbooks-bookkeepermetadata/index.html
+++ b/content/docs/zh-CN/2.3.2/cookbooks-bookkeepermetadata/index.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.3.2/cookbooks-encryption.html b/content/docs/zh-CN/2.3.2/cookbooks-encryption.html
index 40d3814..d8f0ed9 100644
--- a/content/docs/zh-CN/2.3.2/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.3.2/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/cookbooks-encryption/index.html b/content/docs/zh-CN/2.3.2/cookbooks-encryption/index.html
index 40d3814..d8f0ed9 100644
--- a/content/docs/zh-CN/2.3.2/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.3.2/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/develop-binary-protocol.html b/content/docs/zh-CN/2.3.2/develop-binary-protocol.html
index 6c94b8f..74911d2 100644
--- a/content/docs/zh-CN/2.3.2/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.3.2/develop-binary-protocol.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/develop-binary-protocol/index.html b/content/docs/zh-CN/2.3.2/develop-binary-protocol/index.html
index 6c94b8f..74911d2 100644
--- a/content/docs/zh-CN/2.3.2/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.3.2/develop-binary-protocol/index.html
@@ -187,7 +187,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>为了发送消息,客户端必须创建一个生产者。创建生产者的时候,broker 将校验该客户端是否有权限发布消息到目标主题。</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -233,9 +233,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>当客户端收到<code>CloseProducer</code>时,客户端将再次通过服务发现查找并重新创建生产者。此时 TCP 连接并不受影响。</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>消费者创建以后,客户端需要<em>允许</em>代理推送消息。这是通过<code>Flow</code>命令实现的。</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -357,7 +357,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/functions-deploying.html b/content/docs/zh-CN/2.3.2/functions-deploying.html
index dd281b84..c2e265c 100644
--- a/content/docs/zh-CN/2.3.2/functions-deploying.html
+++ b/content/docs/zh-CN/2.3.2/functions-deploying.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.3.2/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.3.2/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.3.2/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.3.2/functions-deploying/index.html b/content/docs/zh-CN/2.3.2/functions-deploying/index.html
index dd281b84..c2e265c 100644
--- a/content/docs/zh-CN/2.3.2/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.3.2/functions-deploying/index.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.3.2/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.3.2/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.3.2/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.3.2/reference-terminology.html b/content/docs/zh-CN/2.3.2/reference-terminology.html
index 8762508..8b94eab 100644
--- a/content/docs/zh-CN/2.3.2/reference-terminology.html
+++ b/content/docs/zh-CN/2.3.2/reference-terminology.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.3.2/reference-terminology/index.html b/content/docs/zh-CN/2.3.2/reference-terminology/index.html
index 8762508..8b94eab 100644
--- a/content/docs/zh-CN/2.3.2/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.3.2/reference-terminology/index.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.3.2/security-encryption.html b/content/docs/zh-CN/2.3.2/security-encryption.html
index e28659f..f881837 100644
--- a/content/docs/zh-CN/2.3.2/security-encryption.html
+++ b/content/docs/zh-CN/2.3.2/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.3.2/security-encryption/index.html b/content/docs/zh-CN/2.3.2/security-encryption/index.html
index e28659f..f881837 100644
--- a/content/docs/zh-CN/2.3.2/security-encryption/index.html
+++ b/content/docs/zh-CN/2.3.2/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.3.2/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.3.2/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.0/adaptors-kafka.html b/content/docs/zh-CN/2.4.0/adaptors-kafka.html
index cb149c5..641f665 100644
--- a/content/docs/zh-CN/2.4.0/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.4.0/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.4.0/adaptors-kafka/index.html b/content/docs/zh-CN/2.4.0/adaptors-kafka/index.html
index cb149c5..641f665 100644
--- a/content/docs/zh-CN/2.4.0/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.4.0/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
diff --git a/content/docs/zh-CN/2.4.0/client-libraries-cpp.html b/content/docs/zh-CN/2.4.0/client-libraries-cpp.html
index 63a3dda..f001335 100644
--- a/content/docs/zh-CN/2.4.0/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.4.0/client-libraries-cpp.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.0/client-libraries-cpp/index.html b/content/docs/zh-CN/2.4.0/client-libraries-cpp/index.html
index 63a3dda..f001335 100644
--- a/content/docs/zh-CN/2.4.0/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.4.0/client-libraries-cpp/index.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.0/cookbooks-bookkeepermetadata.html b/content/docs/zh-CN/2.4.0/cookbooks-bookkeepermetadata.html
index e471d21..efc2879 100644
--- a/content/docs/zh-CN/2.4.0/cookbooks-bookkeepermetadata.html
+++ b/content/docs/zh-CN/2.4.0/cookbooks-bookkeepermetadata.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.4.0/cookbooks-bookkeepermetadata/index.html b/content/docs/zh-CN/2.4.0/cookbooks-bookkeepermetadata/index.html
index e471d21..efc2879 100644
--- a/content/docs/zh-CN/2.4.0/cookbooks-bookkeepermetadata/index.html
+++ b/content/docs/zh-CN/2.4.0/cookbooks-bookkeepermetadata/index.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.4.0/cookbooks-encryption.html b/content/docs/zh-CN/2.4.0/cookbooks-encryption.html
index d858772..b49edbd 100644
--- a/content/docs/zh-CN/2.4.0/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.4.0/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.0/cookbooks-encryption/index.html b/content/docs/zh-CN/2.4.0/cookbooks-encryption/index.html
index d858772..b49edbd 100644
--- a/content/docs/zh-CN/2.4.0/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.4.0/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.0/develop-binary-protocol.html b/content/docs/zh-CN/2.4.0/develop-binary-protocol.html
index a0f40ba..4780fe1 100644
--- a/content/docs/zh-CN/2.4.0/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.4.0/develop-binary-protocol.html
@@ -197,7 +197,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -263,9 +263,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>After the consumer is ready, the client needs to <em>give permission</em> to the broker to push messages. This is done with the <code>Flow</code> command.</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -422,7 +422,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.0/develop-binary-protocol/index.html b/content/docs/zh-CN/2.4.0/develop-binary-protocol/index.html
index a0f40ba..4780fe1 100644
--- a/content/docs/zh-CN/2.4.0/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.4.0/develop-binary-protocol/index.html
@@ -197,7 +197,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -263,9 +263,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>After the consumer is ready, the client needs to <em>give permission</em> to the broker to push messages. This is done with the <code>Flow</code> command.</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -422,7 +422,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.0/functions-deploying.html b/content/docs/zh-CN/2.4.0/functions-deploying.html
index 959d2bb..9350e541 100644
--- a/content/docs/zh-CN/2.4.0/functions-deploying.html
+++ b/content/docs/zh-CN/2.4.0/functions-deploying.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.4.0/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.4.0/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.4.0/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.4.0/functions-deploying/index.html b/content/docs/zh-CN/2.4.0/functions-deploying/index.html
index 959d2bb..9350e541 100644
--- a/content/docs/zh-CN/2.4.0/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.4.0/functions-deploying/index.html
@@ -111,7 +111,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.4.0/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.4.0/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.4.0/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.4.0/reference-terminology.html b/content/docs/zh-CN/2.4.0/reference-terminology.html
index 9fc1a8f..3cbbbf4 100644
--- a/content/docs/zh-CN/2.4.0/reference-terminology.html
+++ b/content/docs/zh-CN/2.4.0/reference-terminology.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.4.0/reference-terminology/index.html b/content/docs/zh-CN/2.4.0/reference-terminology/index.html
index 9fc1a8f..3cbbbf4 100644
--- a/content/docs/zh-CN/2.4.0/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.4.0/reference-terminology/index.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.4.0/security-encryption.html b/content/docs/zh-CN/2.4.0/security-encryption.html
index 5530832..54c1d4c 100644
--- a/content/docs/zh-CN/2.4.0/security-encryption.html
+++ b/content/docs/zh-CN/2.4.0/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.0/security-encryption/index.html b/content/docs/zh-CN/2.4.0/security-encryption/index.html
index 5530832..54c1d4c 100644
--- a/content/docs/zh-CN/2.4.0/security-encryption/index.html
+++ b/content/docs/zh-CN/2.4.0/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.0/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.0/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/adaptors-kafka.html b/content/docs/zh-CN/2.4.1/adaptors-kafka.html
index 1b3ff5f..5777f84 100644
--- a/content/docs/zh-CN/2.4.1/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.4.1/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
@@ -313,7 +313,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/2.7.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerBuilder.html#subscriptionTopicsMode-Mode-"><code>pulsar.consumer.subscription.topics.mode</code></a></td><td style="text-align:left">PersistentOnly</td><td style="text-align:left">Set the subscription topic mode for consumers.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/admin-api-functions"><span class="arrow-prev">← </span><span>存储过程</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/adaptors-spark"><span>Apache Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#使用-pulsar-kafka-兼容包装器">使用 Pulsar Kafka 兼容包装器</a></li><li><a href="#使用-pulsar-kafka-兼容包装器和现有-kafka [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/adaptors-spark"><span>Apache Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#使用-pulsar-kafka-兼容包装器">使用 Pulsar Kafka 兼容包装器</a></li><li><a href="#使用-pulsar-kafka-兼容包装器和现有- [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/adaptors-kafka/index.html b/content/docs/zh-CN/2.4.1/adaptors-kafka/index.html
index 1b3ff5f..5777f84 100644
--- a/content/docs/zh-CN/2.4.1/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.4.1/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
@@ -313,7 +313,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/2.7.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerBuilder.html#subscriptionTopicsMode-Mode-"><code>pulsar.consumer.subscription.topics.mode</code></a></td><td style="text-align:left">PersistentOnly</td><td style="text-align:left">Set the subscription topic mode for consumers.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/admin-api-functions"><span class="arrow-prev">← </span><span>存储过程</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/adaptors-spark"><span>Apache Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#使用-pulsar-kafka-兼容包装器">使用 Pulsar Kafka 兼容包装器</a></li><li><a href="#使用-pulsar-kafka-兼容包装器和现有-kafka [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/adaptors-spark"><span>Apache Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#使用-pulsar-kafka-兼容包装器">使用 Pulsar Kafka 兼容包装器</a></li><li><a href="#使用-pulsar-kafka-兼容包装器和现有- [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/admin-api-schemas.html b/content/docs/zh-CN/2.4.1/admin-api-schemas.html
index e5a9231..264731f 100644
--- a/content/docs/zh-CN/2.4.1/admin-api-schemas.html
+++ b/content/docs/zh-CN/2.4.1/admin-api-schemas.html
@@ -136,7 +136,7 @@
 <h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="https://pulsar.incubator.apache.org/admin-rest-api#operation/deleteSchemaversion=master&amp;apiVersion=v2"><b>DELETE</b> <i>/admin/v2/schemas/:tenant/:namespace/:topic/schema</i></a>
 </p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/admin-api-partitioned-topics"><span class="arrow-prev">← </span><span>分区 topic</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/admin-api-functions"><span>存储过程</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#schema资源">Schema资源</a><ul class="toc-headings"><li><a href="#更新schema">更新Schema</a></li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/admin-api-partitioned-topics"><span class="arrow-prev">← </span><span>分区 topic</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/admin-api-functions"><span>Functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#schema资源">Schema资源</a><ul class="toc-headings"><li><a href="#更新schema">更新Schema</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/admin-api-schemas/index.html b/content/docs/zh-CN/2.4.1/admin-api-schemas/index.html
index e5a9231..264731f 100644
--- a/content/docs/zh-CN/2.4.1/admin-api-schemas/index.html
+++ b/content/docs/zh-CN/2.4.1/admin-api-schemas/index.html
@@ -136,7 +136,7 @@
 <h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="https://pulsar.incubator.apache.org/admin-rest-api#operation/deleteSchemaversion=master&amp;apiVersion=v2"><b>DELETE</b> <i>/admin/v2/schemas/:tenant/:namespace/:topic/schema</i></a>
 </p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/admin-api-partitioned-topics"><span class="arrow-prev">← </span><span>分区 topic</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/admin-api-functions"><span>存储过程</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#schema资源">Schema资源</a><ul class="toc-headings"><li><a href="#更新schema">更新Schema</a></li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/admin-api-partitioned-topics"><span class="arrow-prev">← </span><span>分区 topic</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/admin-api-functions"><span>Functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#schema资源">Schema资源</a><ul class="toc-headings"><li><a href="#更新schema">更新Schema</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/client-libraries-cpp.html b/content/docs/zh-CN/2.4.1/client-libraries-cpp.html
index 1c96cb3..48abc6a 100644
--- a/content/docs/zh-CN/2.4.1/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.4.1/client-libraries-cpp.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/client-libraries-cpp/index.html b/content/docs/zh-CN/2.4.1/client-libraries-cpp/index.html
index 1c96cb3..48abc6a 100644
--- a/content/docs/zh-CN/2.4.1/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.4.1/client-libraries-cpp/index.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/cookbooks-bookkeepermetadata.html b/content/docs/zh-CN/2.4.1/cookbooks-bookkeepermetadata.html
index 96552db..bef417f 100644
--- a/content/docs/zh-CN/2.4.1/cookbooks-bookkeepermetadata.html
+++ b/content/docs/zh-CN/2.4.1/cookbooks-bookkeepermetadata.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.4.1/cookbooks-bookkeepermetadata/index.html b/content/docs/zh-CN/2.4.1/cookbooks-bookkeepermetadata/index.html
index 96552db..bef417f 100644
--- a/content/docs/zh-CN/2.4.1/cookbooks-bookkeepermetadata/index.html
+++ b/content/docs/zh-CN/2.4.1/cookbooks-bookkeepermetadata/index.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.4.1/cookbooks-encryption.html b/content/docs/zh-CN/2.4.1/cookbooks-encryption.html
index efc1913..0629522 100644
--- a/content/docs/zh-CN/2.4.1/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.4.1/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/cookbooks-encryption/index.html b/content/docs/zh-CN/2.4.1/cookbooks-encryption/index.html
index efc1913..0629522 100644
--- a/content/docs/zh-CN/2.4.1/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.4.1/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/develop-binary-protocol.html b/content/docs/zh-CN/2.4.1/develop-binary-protocol.html
index fbd3133..b323011 100644
--- a/content/docs/zh-CN/2.4.1/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.4.1/develop-binary-protocol.html
@@ -197,7 +197,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -263,9 +263,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>After the consumer is ready, the client needs to <em>give permission</em> to the broker to push messages. This is done with the <code>Flow</code> command.</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -422,7 +422,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/develop-binary-protocol/index.html b/content/docs/zh-CN/2.4.1/develop-binary-protocol/index.html
index fbd3133..b323011 100644
--- a/content/docs/zh-CN/2.4.1/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.4.1/develop-binary-protocol/index.html
@@ -197,7 +197,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -263,9 +263,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>After the consumer is ready, the client needs to <em>give permission</em> to the broker to push messages. This is done with the <code>Flow</code> command.</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -422,7 +422,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/functions-deploy.html b/content/docs/zh-CN/2.4.1/functions-deploy.html
index 4ab214b..a28d44a 100644
--- a/content/docs/zh-CN/2.4.1/functions-deploy.html
+++ b/content/docs/zh-CN/2.4.1/functions-deploy.html
@@ -93,7 +93,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">可以指定类名称(除了org、library 或相似的名称)。 例如,当指定标志为 <code>--classname org.example.MyFunction</code> 时,function 名称为 <code>MyFunction</code>。</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>marketing</code> 租户下,即 topic 名称形式为 <code>persistent://marketing/{namespace}/{topicName}</code>,则租户为 <code>marketing</code>。</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>marketing</code> 租户下,即 topic 名称形式为 <code>persistent://marketing/{namespace}/{topicName}</code>,则租户为 <code>marketing</code>。</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>asia</code> 命名空间中,在 <code>marketing</code> 租户下,即主题名称形式为 <code>persistent://marketing/asia/{topicName}</code>,则命名空间为 <code>asia</code>。</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. 例如,一个 function 的输入 topic 名称是 <code>incoming</code>,function 名称为 <code>exclamation</code>,则输出 topic 名称为 <code>incoming-exclamation-output</code>。</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">对于 <code>at-least-once</code> 和 <code>at-most-once</code> <a href="/docs/zh-CN/2.4.1/functions-overview#processing-guarantees">处理保证</a>,默认使用 <a href="/docs/zh-CN/2.4.1/concepts-messaging#shared"><code>SHARED</code></a> 模式;对于 <code>effectively-once</code> 保证,默认使用 <a href="/docs/zh-CN/2.4.1/concepts-messaging#failover"><code>FAILOVER</code></a> 模式。</td></tr>
diff --git a/content/docs/zh-CN/2.4.1/functions-deploy/index.html b/content/docs/zh-CN/2.4.1/functions-deploy/index.html
index 4ab214b..a28d44a 100644
--- a/content/docs/zh-CN/2.4.1/functions-deploy/index.html
+++ b/content/docs/zh-CN/2.4.1/functions-deploy/index.html
@@ -93,7 +93,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">可以指定类名称(除了org、library 或相似的名称)。 例如,当指定标志为 <code>--classname org.example.MyFunction</code> 时,function 名称为 <code>MyFunction</code>。</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>marketing</code> 租户下,即 topic 名称形式为 <code>persistent://marketing/{namespace}/{topicName}</code>,则租户为 <code>marketing</code>。</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>marketing</code> 租户下,即 topic 名称形式为 <code>persistent://marketing/{namespace}/{topicName}</code>,则租户为 <code>marketing</code>。</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>asia</code> 命名空间中,在 <code>marketing</code> 租户下,即主题名称形式为 <code>persistent://marketing/asia/{topicName}</code>,则命名空间为 <code>asia</code>。</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. 例如,一个 function 的输入 topic 名称是 <code>incoming</code>,function 名称为 <code>exclamation</code>,则输出 topic 名称为 <code>incoming-exclamation-output</code>。</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">对于 <code>at-least-once</code> 和 <code>at-most-once</code> <a href="/docs/zh-CN/2.4.1/functions-overview#processing-guarantees">处理保证</a>,默认使用 <a href="/docs/zh-CN/2.4.1/concepts-messaging#shared"><code>SHARED</code></a> 模式;对于 <code>effectively-once</code> 保证,默认使用 <a href="/docs/zh-CN/2.4.1/concepts-messaging#failover"><code>FAILOVER</code></a> 模式。</td></tr>
diff --git a/content/docs/zh-CN/2.4.1/functions-deploying.html b/content/docs/zh-CN/2.4.1/functions-deploying.html
index cdf43cb..7dace73 100644
--- a/content/docs/zh-CN/2.4.1/functions-deploying.html
+++ b/content/docs/zh-CN/2.4.1/functions-deploying.html
@@ -55,7 +55,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.4.1/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.4.1/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.4.1/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.4.1/functions-deploying/index.html b/content/docs/zh-CN/2.4.1/functions-deploying/index.html
index cdf43cb..7dace73 100644
--- a/content/docs/zh-CN/2.4.1/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.4.1/functions-deploying/index.html
@@ -55,7 +55,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.4.1/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.4.1/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.4.1/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.4.1/reference-terminology.html b/content/docs/zh-CN/2.4.1/reference-terminology.html
index 2e07546..5f25ee3 100644
--- a/content/docs/zh-CN/2.4.1/reference-terminology.html
+++ b/content/docs/zh-CN/2.4.1/reference-terminology.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.4.1/reference-terminology/index.html b/content/docs/zh-CN/2.4.1/reference-terminology/index.html
index 2e07546..5f25ee3 100644
--- a/content/docs/zh-CN/2.4.1/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.4.1/reference-terminology/index.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.4.1/security-encryption.html b/content/docs/zh-CN/2.4.1/security-encryption.html
index a927650..c11635e 100644
--- a/content/docs/zh-CN/2.4.1/security-encryption.html
+++ b/content/docs/zh-CN/2.4.1/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.1/security-encryption/index.html b/content/docs/zh-CN/2.4.1/security-encryption/index.html
index a927650..c11635e 100644
--- a/content/docs/zh-CN/2.4.1/security-encryption/index.html
+++ b/content/docs/zh-CN/2.4.1/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.1/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.1/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/adaptors-kafka.html b/content/docs/zh-CN/2.4.2/adaptors-kafka.html
index 0e9b016..a65e313 100644
--- a/content/docs/zh-CN/2.4.2/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.4.2/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
@@ -313,7 +313,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/2.7.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerBuilder.html#subscriptionTopicsMode-Mode-"><code>pulsar.consumer.subscription.topics.mode</code></a></td><td style="text-align:left">PersistentOnly</td><td style="text-align:left">Set the subscription topic mode for consumers.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/admin-api-functions"><span class="arrow-prev">← </span><span>存储过程</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/adaptors-spark"><span>Apache Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#使用-pulsar-kafka-兼容包装器">使用 Pulsar Kafka 兼容包装器</a></li><li><a href="#使用-pulsar-kafka-兼容包装器和现有-kafka [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/adaptors-spark"><span>Apache Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#使用-pulsar-kafka-兼容包装器">使用 Pulsar Kafka 兼容包装器</a></li><li><a href="#使用-pulsar-kafka-兼容包装器和现有- [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/adaptors-kafka/index.html b/content/docs/zh-CN/2.4.2/adaptors-kafka/index.html
index 0e9b016..a65e313 100644
--- a/content/docs/zh-CN/2.4.2/adaptors-kafka/index.html
+++ b/content/docs/zh-CN/2.4.2/adaptors-kafka/index.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
 <table>
 <thead>
@@ -313,7 +313,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><a href="http://pulsar.apache.org/api/client/2.7.0-SNAPSHOT/org/apache/pulsar/client/api/ConsumerBuilder.html#subscriptionTopicsMode-Mode-"><code>pulsar.consumer.subscription.topics.mode</code></a></td><td style="text-align:left">PersistentOnly</td><td style="text-align:left">Set the subscription topic mode for consumers.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/admin-api-functions"><span class="arrow-prev">← </span><span>存储过程</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/adaptors-spark"><span>Apache Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#使用-pulsar-kafka-兼容包装器">使用 Pulsar Kafka 兼容包装器</a></li><li><a href="#使用-pulsar-kafka-兼容包装器和现有-kafka [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/admin-api-functions"><span class="arrow-prev">← </span><span>Functions</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/adaptors-spark"><span>Apache Spark</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#使用-pulsar-kafka-兼容包装器">使用 Pulsar Kafka 兼容包装器</a></li><li><a href="#使用-pulsar-kafka-兼容包装器和现有- [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/admin-api-schemas.html b/content/docs/zh-CN/2.4.2/admin-api-schemas.html
index ec832fc..54edfb5 100644
--- a/content/docs/zh-CN/2.4.2/admin-api-schemas.html
+++ b/content/docs/zh-CN/2.4.2/admin-api-schemas.html
@@ -136,7 +136,7 @@
 <h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="https://pulsar.incubator.apache.org/admin-rest-api#operation/deleteSchemaversion=master&amp;apiVersion=v2"><b>DELETE</b> <i>/admin/v2/schemas/:tenant/:namespace/:topic/schema</i></a>
 </p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/admin-api-partitioned-topics"><span class="arrow-prev">← </span><span>分区 topic</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/admin-api-functions"><span>存储过程</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#schema资源">Schema资源</a><ul class="toc-headings"><li><a href="#更新schema">更新Schema</a></li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/admin-api-partitioned-topics"><span class="arrow-prev">← </span><span>分区 topic</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/admin-api-functions"><span>Functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#schema资源">Schema资源</a><ul class="toc-headings"><li><a href="#更新schema">更新Schema</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/admin-api-schemas/index.html b/content/docs/zh-CN/2.4.2/admin-api-schemas/index.html
index ec832fc..54edfb5 100644
--- a/content/docs/zh-CN/2.4.2/admin-api-schemas/index.html
+++ b/content/docs/zh-CN/2.4.2/admin-api-schemas/index.html
@@ -136,7 +136,7 @@
 <h4><a class="anchor" aria-hidden="true" id="rest-api-1"></a><a href="#rest-api-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="https://pulsar.incubator.apache.org/admin-rest-api#operation/deleteSchemaversion=master&amp;apiVersion=v2"><b>DELETE</b> <i>/admin/v2/schemas/:tenant/:namespace/:topic/schema</i></a>
 </p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/admin-api-partitioned-topics"><span class="arrow-prev">← </span><span>分区 topic</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/admin-api-functions"><span>存储过程</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#schema资源">Schema资源</a><ul class="toc-headings"><li><a href="#更新schema">更新Schema</a></li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/admin-api-partitioned-topics"><span class="arrow-prev">← </span><span>分区 topic</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/admin-api-functions"><span>Functions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#schema资源">Schema资源</a><ul class="toc-headings"><li><a href="#更新schema">更新Schema</a [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/client-libraries-cpp.html b/content/docs/zh-CN/2.4.2/client-libraries-cpp.html
index e497e55..b1b8ad3 100644
--- a/content/docs/zh-CN/2.4.2/client-libraries-cpp.html
+++ b/content/docs/zh-CN/2.4.2/client-libraries-cpp.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/client-libraries-cpp/index.html b/content/docs/zh-CN/2.4.2/client-libraries-cpp/index.html
index e497e55..b1b8ad3 100644
--- a/content/docs/zh-CN/2.4.2/client-libraries-cpp/index.html
+++ b/content/docs/zh-CN/2.4.2/client-libraries-cpp/index.html
@@ -160,7 +160,7 @@
 <p>If you’re using TLS authentication, the URL will look like something like this:</p>
 <pre><code class="hljs css language-http">pulsar+ssl://pulsar.us-west.example.com:6651
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Consumer consumer;
@@ -182,7 +182,7 @@ Message msg;
 
 client.<span class="hljs-built_in">close</span>();
 </code></pre>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <pre><code class="hljs css language-c++"><span class="hljs-function"><span class="hljs-built_in">Client</span> <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar://localhost:6650"</span>)</span></span>;
 
 Producer producer;
@@ -210,7 +210,7 @@ config.setAuth(pulsar::AuthTls::create(
 
 <span class="hljs-function">Client <span class="hljs-title">client</span><span class="hljs-params">(<span class="hljs-string">"pulsar+ssl://my-broker.com:6651"</span>, config)</span></span>;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/client-libraries-python"><span class="arrow-prev">← </span><span>Python</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/client-libraries-websocket"><span class="function-name-prevnext">WebSocket</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#supported-platforms">Supported platforms</a></li><l [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/cookbooks-bookkeepermetadata.html b/content/docs/zh-CN/2.4.2/cookbooks-bookkeepermetadata.html
index 36dabb3..0bd9db5 100644
--- a/content/docs/zh-CN/2.4.2/cookbooks-bookkeepermetadata.html
+++ b/content/docs/zh-CN/2.4.2/cookbooks-bookkeepermetadata.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.4.2/cookbooks-bookkeepermetadata/index.html b/content/docs/zh-CN/2.4.2/cookbooks-bookkeepermetadata/index.html
index 36dabb3..0bd9db5 100644
--- a/content/docs/zh-CN/2.4.2/cookbooks-bookkeepermetadata/index.html
+++ b/content/docs/zh-CN/2.4.2/cookbooks-bookkeepermetadata/index.html
@@ -84,7 +84,7 @@
 <tr><td>All ledgers</td><td>application</td><td>'pulsar'</td></tr>
 <tr><td>All ledgers</td><td>component</td><td>'managed-ledger', 'schema', 'compacted-topic'</td></tr>
 <tr><td>Managed ledgers</td><td>pulsar/managed-ledger</td><td>name of the ledger</td></tr>
-<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
+<tr><td>游标(Cursor)</td><td>pulsar/cursor</td><td>name of the cursor</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTopic</td><td>name of the original topic</td></tr>
 <tr><td>Compacted topic</td><td>pulsar/compactedTo</td><td>id of the last compacted message</td></tr>
 </tbody>
diff --git a/content/docs/zh-CN/2.4.2/cookbooks-encryption.html b/content/docs/zh-CN/2.4.2/cookbooks-encryption.html
index 05418f4..c55d6c7 100644
--- a/content/docs/zh-CN/2.4.2/cookbooks-encryption.html
+++ b/content/docs/zh-CN/2.4.2/cookbooks-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/cookbooks-encryption/index.html b/content/docs/zh-CN/2.4.2/cookbooks-encryption/index.html
index 05418f4..c55d6c7 100644
--- a/content/docs/zh-CN/2.4.2/cookbooks-encryption/index.html
+++ b/content/docs/zh-CN/2.4.2/cookbooks-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/cookbooks-retention-expiry"><span class="arrow-prev">← </span><span>消息保留和过期</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/cookbooks-message-queue"><span>消息队列</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li> [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/develop-binary-protocol.html b/content/docs/zh-CN/2.4.2/develop-binary-protocol.html
index 72e92f8..4dbf690 100644
--- a/content/docs/zh-CN/2.4.2/develop-binary-protocol.html
+++ b/content/docs/zh-CN/2.4.2/develop-binary-protocol.html
@@ -197,7 +197,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -263,9 +263,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>After the consumer is ready, the client needs to <em>give permission</em> to the broker to push messages. This is done with the <code>Flow</code> command.</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -422,7 +422,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/develop-binary-protocol/index.html b/content/docs/zh-CN/2.4.2/develop-binary-protocol/index.html
index 72e92f8..4dbf690 100644
--- a/content/docs/zh-CN/2.4.2/develop-binary-protocol/index.html
+++ b/content/docs/zh-CN/2.4.2/develop-binary-protocol/index.html
@@ -197,7 +197,7 @@
 <p>为了识别客户端和 broker 之间的网络分区情况,或者机器崩溃但是TCP连接却没有正常断开(断电,内核异常,机器重启等)。我们介绍一个探测远程对端服务的可用状态的策略。</p>
 <p>客户端和 broker 之间会定期发送 <code>Ping</code>命令。如果超时时间(默认使用 broker 的配置60s)内没有返回<code>Pong</code>消息就会断开该 Socket 连接。</p>
 <p>一个可用的 Pulsar 客户端不需要自己实现定时发送 <code>Ping</code> 探测的逻辑。但是它需要在收到 broker 的信息后立即回复,以防 broker 强制关闭 TCP 连接。</p>
-<h3><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>In order to send messages, a client needs to establish a producer. When creating a producer, the broker will first verify that this particular client is authorized to publish on the topic.</p>
 <p>一旦生产者创建成功,通过使用建立连接过程中生成的生产者 ID,它将可以发布消息到 broker。</p>
 <p><img src="/docs/assets/binary-protocol-producer.png" alt="Producer interaction"></p>
@@ -263,9 +263,9 @@
 <p>当 broker 收到<code>CloseProducer</code>命令时,broker 将停止接收这个生产者的任何消息。并会一直等待,直到所有的消息被持久化存储并给客户端返回<code>Success</code>的消息后,才关闭连接。</p>
 <p>当 broker 在演练故障转移(比如: broker重启或者正在通过负载均衡器卸载主题到其他的broker)时,Broker 也能发送<code>CloseProducer</code> 命令给客户端,通知关闭该连接。</p>
 <p>When receiving the <code>CloseProducer</code>, the client is expected to go through the service discovery lookup again and recreate the producer again. The TCP connection is not affected.</p>
-<h3><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h3><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>消费者可以添加到订阅,并消费来自该订阅的消息。 每次重新连接后,客户端必须去订阅此主题。 如果订阅不存在,将创建一个新的订阅。</p>
-<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
+<p><img src="/docs/assets/binary-protocol-consumer.png" alt="消费者(Consumer)"></p>
 <h4><a class="anchor" aria-hidden="true" id="流量控制"></a><a href="#流量控制" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <p>After the consumer is ready, the client needs to <em>give permission</em> to the broker to push messages. This is done with the <code>Flow</code> command.</p>
 <p><code>Flow</code>命令提供向消费者发送消息的附加<em>许可</em>。 典型的使用者实现将在应用程序准备使用这些消息之前使用队列来累积这些消息。</p>
@@ -422,7 +422,7 @@
 <h2><a class="anchor" aria-hidden="true" id="protobuf-接口"></a><a href="#protobuf-接口" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
 <p>All Pulsar's Protobuf definitions can be found <a href="https://github.com/apache/incubator-pulsar/tree/master//pulsar-common/src/main/proto/PulsarApi.proto">here</a>
 .</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/develop-tools"><span class="arrow-prev">← </span><span>模拟工具</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/develop-schema"><span>下一页</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 href="#有效载荷命令">有效载荷命令</a></li></ul></ [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/functions-deploy.html b/content/docs/zh-CN/2.4.2/functions-deploy.html
index c5876a0..86919c9 100644
--- a/content/docs/zh-CN/2.4.2/functions-deploy.html
+++ b/content/docs/zh-CN/2.4.2/functions-deploy.html
@@ -93,7 +93,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">可以指定类名称(除了org、library 或相似的名称)。 例如,当指定标志为 <code>--classname org.example.MyFunction</code> 时,function 名称为 <code>MyFunction</code>。</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>marketing</code> 租户下,即 topic 名称形式为 <code>persistent://marketing/{namespace}/{topicName}</code>,则租户为 <code>marketing</code>。</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>marketing</code> 租户下,即 topic 名称形式为 <code>persistent://marketing/{namespace}/{topicName}</code>,则租户为 <code>marketing</code>。</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>asia</code> 命名空间中,在 <code>marketing</code> 租户下,即主题名称形式为 <code>persistent://marketing/asia/{topicName}</code>,则命名空间为 <code>asia</code>。</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. 例如,一个 function 的输入 topic 名称是 <code>incoming</code>,function 名称为 <code>exclamation</code>,则输出 topic 名称为 <code>incoming-exclamation-output</code>。</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">对于 <code>at-least-once</code> 和 <code>at-most-once</code> <a href="/docs/zh-CN/2.4.2/functions-overview#processing-guarantees">处理保证</a>,默认使用 <a href="/docs/zh-CN/2.4.2/concepts-messaging#shared"><code>SHARED</code></a> 模式;对于 <code>effectively-once</code> 保证,默认使用 <a href="/docs/zh-CN/2.4.2/concepts-messaging#failover"><code>FAILOVER</code></a> 模式。</td></tr>
diff --git a/content/docs/zh-CN/2.4.2/functions-deploy/index.html b/content/docs/zh-CN/2.4.2/functions-deploy/index.html
index c5876a0..86919c9 100644
--- a/content/docs/zh-CN/2.4.2/functions-deploy/index.html
+++ b/content/docs/zh-CN/2.4.2/functions-deploy/index.html
@@ -93,7 +93,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">可以指定类名称(除了org、library 或相似的名称)。 例如,当指定标志为 <code>--classname org.example.MyFunction</code> 时,function 名称为 <code>MyFunction</code>。</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>marketing</code> 租户下,即 topic 名称形式为 <code>persistent://marketing/{namespace}/{topicName}</code>,则租户为 <code>marketing</code>。</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>marketing</code> 租户下,即 topic 名称形式为 <code>persistent://marketing/{namespace}/{topicName}</code>,则租户为 <code>marketing</code>。</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">来自输入 topic 的名称。 如果输入 topic 在 <code>asia</code> 命名空间中,在 <code>marketing</code> 租户下,即主题名称形式为 <code>persistent://marketing/asia/{topicName}</code>,则命名空间为 <code>asia</code>。</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. 例如,一个 function 的输入 topic 名称是 <code>incoming</code>,function 名称为 <code>exclamation</code>,则输出 topic 名称为 <code>incoming-exclamation-output</code>。</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">对于 <code>at-least-once</code> 和 <code>at-most-once</code> <a href="/docs/zh-CN/2.4.2/functions-overview#processing-guarantees">处理保证</a>,默认使用 <a href="/docs/zh-CN/2.4.2/concepts-messaging#shared"><code>SHARED</code></a> 模式;对于 <code>effectively-once</code> 保证,默认使用 <a href="/docs/zh-CN/2.4.2/concepts-messaging#failover"><code>FAILOVER</code></a> 模式。</td></tr>
diff --git a/content/docs/zh-CN/2.4.2/functions-deploying.html b/content/docs/zh-CN/2.4.2/functions-deploying.html
index bcc4687..0c7551d 100644
--- a/content/docs/zh-CN/2.4.2/functions-deploying.html
+++ b/content/docs/zh-CN/2.4.2/functions-deploying.html
@@ -55,7 +55,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.4.2/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.4.2/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.4.2/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.4.2/functions-deploying/index.html b/content/docs/zh-CN/2.4.2/functions-deploying/index.html
index bcc4687..0c7551d 100644
--- a/content/docs/zh-CN/2.4.2/functions-deploying/index.html
+++ b/content/docs/zh-CN/2.4.2/functions-deploying/index.html
@@ -55,7 +55,7 @@
 </thead>
 <tbody>
 <tr><td style="text-align:left">Function name</td><td style="text-align:left">Whichever value is specified for the class name (minus org, library, etc.). The flag <code>--classname org.example.MyFunction</code>, for example, would give the function a name of <code>MyFunction</code>.</td></tr>
-<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
+<tr><td style="text-align:left">租户(Tenant)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/{namespace}/{topicName}</code>---then the tenant will be <code>marketing</code>.</td></tr>
 <tr><td style="text-align:left">命名空间(Namespace)</td><td style="text-align:left">Derived from the input topics' names. If the input topics are under the <code>asia</code> namespace under the <code>marketing</code> tenant---i.e. the topic names have the form <code>persistent://marketing/asia/{topicName}</code>, then the namespace will be <code>asia</code>.</td></tr>
 <tr><td style="text-align:left">Output topic</td><td style="text-align:left"><code>{input topic}-{function name}-output</code>. A function with an input topic name of <code>incoming</code> and a function name of <code>exclamation</code>, for example, would have an output topic of <code>incoming-exclamation-output</code>.</td></tr>
 <tr><td style="text-align:left">Subscription type</td><td style="text-align:left">For at-least-once and at-most-once <a href="/docs/zh-CN/2.4.2/functions-guarantees">processing guarantees</a>, the <a href="/docs/zh-CN/2.4.2/concepts-messaging#shared"><code>SHARED</code></a> is applied by default; for effectively-once guarantees, <a href="/docs/zh-CN/2.4.2/concepts-messaging#failover"><code>FAILOVER</code></a> is applied</td></tr>
diff --git a/content/docs/zh-CN/2.4.2/reference-terminology.html b/content/docs/zh-CN/2.4.2/reference-terminology.html
index 3ece40d..5b86f00 100644
--- a/content/docs/zh-CN/2.4.2/reference-terminology.html
+++ b/content/docs/zh-CN/2.4.2/reference-terminology.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.4.2/reference-terminology/index.html b/content/docs/zh-CN/2.4.2/reference-terminology/index.html
index 3ece40d..5b86f00 100644
--- a/content/docs/zh-CN/2.4.2/reference-terminology/index.html
+++ b/content/docs/zh-CN/2.4.2/reference-terminology/index.html
@@ -83,33 +83,33 @@
 <h4><a class="anchor" aria-hidden="true" id="topic"></a><a href="#topic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>Topic 接收 <a href="#producer">producer</a> 发布的<a href="#message">消息</a>后,将消息传递给 <a href="#consumer">consumer</a>,由 consumer 消费这些消息。</p>
 <h4><a class="anchor" aria-hidden="true" id="分区-topic(partitioned-topic)"></a><a href="#分区-topic(partitioned-topic)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 1 [...]
-<p>分区主题在服务端会有多个<a href="#broker">Pulsar Broker</a>处理,具有更高的吞吐能力。</p>
+<p>由多个 <a href="#broker">Pulsar broker</a> 处理分区 topic,提高吞吐量。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间(namespace)"></a><a href="#命名空间(namespace)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>命名空间是相关 <a href="#topic">topic</a> 间的分组机制。</p>
+<p>相关 <a href="#topic">topic</a> 间的分组机制。</p>
 <h4><a class="anchor" aria-hidden="true" id="命名空间-bundle(namespace-bundle)"></a><a href="#命名空间-bundle(namespace-bundle)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
-<p>命名空间 Bundle 是同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 一个命名空间 Bundle 是一个32位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
-<h4><a class="anchor" aria-hidden="true" id="租户tenant"></a><a href="#租户tenant" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>租户是一个用于分配容量和执行身份验证/授权方案的管理单元。</p>
-<h4><a class="anchor" aria-hidden="true" id="订阅subscription"></a><a href="#订阅subscription" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>同一个<a href="#namespace">命名空间</a>下的虚拟 <a href="#topic">topic</a> 组。 命名空间 bundle 是 32 位的哈希值,取值范围从 0x00000000 到 0xffffffff。</p>
+<h4><a class="anchor" aria-hidden="true" id="租户(tenant)"></a><a href="#租户(tenant)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>用于分配容量和执行身份验证/授权方案的管理单元。</p>
+<h4><a class="anchor" aria-hidden="true" id="订阅(subscription)"></a><a href="#订阅(subscription)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>A lease on a <a href="#topic">topic</a> established by a group of <a href="#consumer">consumers</a>. Pulsar has three subscription modes (exclusive, shared, and failover).</p>
-<h4><a class="anchor" aria-hidden="true" id="发布---订阅pub-sub"></a><a href="#发布---订阅pub-sub" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>是一种消息传递模式,即<a href="#producer">生产者</a>进程发布消息到<a href="#topic">主题</a>,<a href="#consumer">消费者</a>进程消费处理这些消息。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指发送<a href="#message">消息</a>到 Pulsar <a href="#topic">主题</a>的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>是指订阅 Pulsar <a href="#topic">主题</a>,并处理<a href="#topic">生产者</a>发布到该主题的消息的进程。</p>
-<h4><a class="anchor" aria-hidden="true" id="读者reader"></a><a href="#读者reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>Pulsar Reader 是消息处理程序,与 Pulsar <a href="#consumer">消费者</a>非常相似,但有两个重要区别:</p>
+<h4><a class="anchor" aria-hidden="true" id="发布---订阅(pub-sub)"></a><a href="#发布---订阅(pub-sub)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>一种消息传递模式,即 <a href="#producer">producer</a> 进程发布消息到 <a href="#topic">topic</a>,<a href="#consumer">consumer</a> 进程消费(处理)这些消息。</p>
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>发送<a href="#message">消息</a>到 Pulsar <a href="#topic">topic</a> 的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
+<p>订阅 Pulsar <a href="#topic">topic</a> 并处理消息(由 <a href="#topic">producer</a> 发布到该 topic)的进程。</p>
+<h4><a class="anchor" aria-hidden="true" id="reader"></a><a href="#reader" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>消息处理程序,与 Pulsar <a href="#consumer">consumer</a> 非常相似。二者之间有两个主要区别:</p>
 <ul>
-<li>你可以指定 readers 在主题的<em>何处</em>开始处理消息(消费者总是以最新的、可用的、未确认消息开始消费);</li>
-<li>readers 不会保留数据或确认消息。</li>
+<li>可以指定 reader 在 topic 上开始处理消息的<em>位置</em>,而 consumer 总是从可用、未确认消息中的最新消息开始消费;</li>
+<li>Reader 不保留数据,也不确认消息。</li>
 </ul>
-<h4><a class="anchor" aria-hidden="true" id="游标cursor"></a><a href="#游标cursor" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p><a href="#consumer">消费者</a>订阅分区的位置。</p>
-<h4><a class="anchor" aria-hidden="true" id="消息确认ack"></a><a href="#消息确认ack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<p><a href="#consumer">消费者</a>发送给 Pulsar broker 确认消息,表明消息已成功处理。 消息确认(ack)是一种 Pulsar 知道消息可以从系统中删除消息的方式。如果没有确认,则该消息将一直保留到被处理为止。</p>
-<h4><a class="anchor" aria-hidden="true" id="取消确认nack"></a><a href="#取消确认nack" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
-<p>当应用程序无法处理特定消息时,它可以向Pulsar发送“取消确认”,以表示消息在一定时间后重新允许被消费。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
+<h4><a class="anchor" aria-hidden="true" id="游标(cursor)"></a><a href="#游标(cursor)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p><a href="#consumer">Consumer</a> 订阅分区的位置。</p>
+<h4><a class="anchor" aria-hidden="true" id="ack(acknowledgement)"></a><a href="#ack(acknowledgement)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p><a href="#consumer">Consumer</a> 发送 ack 到 Pulsar broker,表明消息处理成功。 Pulsar 通过 Ack 确认是否可以将消息从系统中删除。如果没有收到 Ack,则一直保留消息到处理完成。</p>
+<h4><a class="anchor" aria-hidden="true" id="nack(negative-acknowledgment)"></a><a href="#nack(negative-acknowledgment)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>当应用程序无法处理特定消息时,应用程序向 Pulsar 发送 Nack,表示可以在一段时间后重新消费此消息。 (默认情况下,失败的消息会在一分钟后允许被重新消费)。</p>
 <h4><a class="anchor" aria-hidden="true" id="unacknowledged"></a><a href="#unacknowledged" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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>A message that has been delivered to a consumer for processing but not yet confirmed as processed by the consumer.</p>
 <h4><a class="anchor" aria-hidden="true" id="retention-policy"></a><a href="#retention-policy" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
@@ -135,14 +135,14 @@
 <p>A stateless component of Pulsar <a href="#cluster">clusters</a> that runs two other components: an HTTP server exposing a REST interface for administration and topic lookup and a <a href="#dispatcher">dispatcher</a> that handles all message transfers. Pulsar clusters typically consist of multiple brokers.</p>
 <h4><a class="anchor" aria-hidden="true" id="dispatcher"></a><a href="#dispatcher" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p>An asynchronous TCP server used for all data transfers in-and-out a Pulsar <a href="#broker">broker</a>. The Pulsar dispatcher uses a custom binary protocol for all communications.</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 [...]
+<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.25c [...]
 <h4><a class="anchor" aria-hidden="true" id="bookkeeper"></a><a href="#bookkeeper" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <p><a href="http://bookkeeper.apache.org/">Apache BookKeeper</a> is a scalable, low-latency persistent log storage service that Pulsar uses to store data.</p>
 <h4><a class="anchor" aria-hidden="true" id="bookie"></a><a href="#bookie" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>Bookie is the name of an individual BookKeeper server. It is effectively the storage server of Pulsar.</p>
 <h4><a class="anchor" aria-hidden="true" id="ledger"></a><a href="#ledger" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>An append-only data structure in <a href="#bookkeeper">BookKeeper</a> that is used to persistently store messages in Pulsar <a href="#topic">topics</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="存储过程"></a><a href="#存储过程" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<h3><a class="anchor" aria-hidden="true" id="functions"></a><a href="#functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>Pulsar Functions are lightweight functions that can consume messages from Pulsar topics, apply custom processing logic, and, if desired, publish results to topics.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/develop-cpp"><span class="arrow-prev">← </span><span>上一页</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/reference-cli-tools"><span>Pulsar CLI tools</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 © 2021 The Apache Software Foundation. All Right [...]
       const community = document.querySelector("a[href='#community']").parentNode;
diff --git a/content/docs/zh-CN/2.4.2/security-encryption.html b/content/docs/zh-CN/2.4.2/security-encryption.html
index 82f618b..5f3e4d7 100644
--- a/content/docs/zh-CN/2.4.2/security-encryption.html
+++ b/content/docs/zh-CN/2.4.2/security-encryption.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.4.2/security-encryption/index.html b/content/docs/zh-CN/2.4.2/security-encryption/index.html
index 82f618b..5f3e4d7 100644
--- a/content/docs/zh-CN/2.4.2/security-encryption/index.html
+++ b/content/docs/zh-CN/2.4.2/security-encryption/index.html
@@ -81,9 +81,9 @@
 <p>应用程序用公钥配置生产者。 这个密钥用于加密 AES 数据密钥。 加密数据秘钥作为消息头部的一部分发送。 只有拥有私钥的实体(例子中的消费者) 才能解密用于解密消息的数据秘钥。</p>
 <p>消息能够用多个秘钥加密,使用加密消息的任何一个秘钥都可以解密该消息。</p>
 <p>Pulsar 不在服务端保存加密秘钥,如果你丢失/删除了这个秘钥,你的消息就彻底丢失了,并且是不可恢复的。</p>
-<h2><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-producer.jpg" alt="alt text" title="Pulsar Encryption Producer"></p>
-<h2><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<h2><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><img src="/docs/assets/pulsar-encryption-consumer.jpg" alt="alt text" title="Pulsar Encryption Consumer"></p>
 <h2><a class="anchor" aria-hidden="true" id="操作步骤:"></a><a href="#操作步骤:" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <ol>
@@ -225,7 +225,7 @@ conf.addEncryptionKey(<span class="hljs-string">"myapp.messagekey2"</span>);
 </ul></li>
 <li>如果解密失败,消息消费将会停止,应用程序会在客户端日志中记录解密失败的信息,并且会观察到积压的增长。 如果应用无法使用秘钥去解密消息,唯一的选项是跳过/丢弃已经积压的消息。</li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者producer">生产者(Producer)</a></li><li><a href="#消费者c [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/zh-CN/2.4.2/security-authorization"><span class="arrow-prev">← </span><span>授权和ACL</span></a><a class="docs-next button" href="/docs/zh-CN/2.4.2/security-extending"><span>扩展</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#对称加密与非对称加密">对称加密与非对称加密</a></li><li><a href="#生产者(producer)">生产者(Producer)</a></li><li><a href="#消费 [...]
       const community = document.querySelector("a[href='#community']").parentNode;
       const communityMenu =
         '<li>' +
diff --git a/content/docs/zh-CN/2.5.0/adaptors-kafka.html b/content/docs/zh-CN/2.5.0/adaptors-kafka.html
index 9aef9eb..b1047a4 100644
--- a/content/docs/zh-CN/2.5.0/adaptors-kafka.html
+++ b/content/docs/zh-CN/2.5.0/adaptors-kafka.html
@@ -148,7 +148,7 @@ consumer.subscribe(Arrays.asList(topic));
 <p><a href="https://github.com/apache/pulsar/tree/master/pulsar-client-kafka-compat/pulsar-client-kafka-tests/src/test/java/org/apache/pulsar/client/kafka/compat/examples">点击这里</a>查看完整的生产者和消费者示例</p>
 <h2><a class="anchor" aria-hidden="true" id="兼容性列表"></a><a href="#兼容性列表" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>目前,Pulsar Kafka 包装器支持 Kafka API 提供的大多数操作。</p>
-<h4><a class="anchor" aria-hidden="true" id="生产者producer"></a><a href="#生产者producer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="生产者(producer)"></a><a href="#生产者(producer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>APIs:</p>
 <table>
 <thead>
@@ -197,7 +197,7 @@ consumer.subscribe(Arrays.asList(topic));
 <tr><td style="text-align:left"><code>value.serializer</code></td><td style="text-align:left">Yes</td><td style="text-align:left"></td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="消费者consumer"></a><a href="#消费者consumer" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 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 [...]
+<h4><a class="anchor" aria-hidden="true" id="消费者(consumer)"></a><a href="#消费者(consumer)" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>下述表格列出了consumer 接口</p>
... 32932 lines suppressed ...