You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by ju...@apache.org on 2023/02/20 01:43:48 UTC

[pulsar-site] branch main updated: [fix][doc] fix broken links (#406)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 09b67236d2b [fix][doc] fix broken links (#406)
09b67236d2b is described below

commit 09b67236d2b68032c137ce13b8b56ad692110b5e
Author: Jun Ma <60...@users.noreply.github.com>
AuthorDate: Mon Feb 20 09:43:43 2023 +0800

    [fix][doc] fix broken links (#406)
    
    * fix broken links
    
    * fix incorrect link display
    
    * clean up broken links that have been warned during the local build
---
 docs/admin-api-tools.md                            |   4 +-
 docs/administration-geo.md                         |   2 +-
 docs/administration-pulsar-shell.md                |   2 +-
 docs/concepts-architecture-overview.md             |   2 +-
 docs/developing-binary-protocol.md                 |   4 +-
 docs/io-develop.md                                 |   4 +-
 docs/security-tls-authentication.md                |   4 +-
 docs/security-tls-transport.md                     |   4 +-
 .../administration-metadata-store.md               | 110 +++++++++++++++++++++
 .../concepts-architecture-overview.md              |   2 +-
 .../version-2.10.x/concepts-messaging.md           |   2 +-
 versioned_docs/version-2.10.x/deploy-bare-metal.md |   2 +-
 versioned_docs/version-2.10.x/develop-schema.md    |   2 +-
 .../version-2.10.x/developing-binary-protocol.md   |   2 +-
 versioned_docs/version-2.10.x/io-develop.md        |   4 +-
 .../version-2.11.x/administration-geo.md           |   2 +-
 .../version-2.11.x/administration-pulsar-shell.md  |   2 +-
 .../concepts-architecture-overview.md              |   2 +-
 .../version-2.11.x/developing-binary-protocol.md   |   4 +-
 versioned_docs/version-2.11.x/io-develop.md        |   2 +-
 .../version-2.11.x/security-tls-authentication.md  |   4 +-
 .../version-2.11.x/security-tls-transport.md       |   4 +-
 .../concepts-architecture-overview.md              |   2 +-
 versioned_docs/version-2.8.x/deploy-bare-metal.md  |   2 +-
 versioned_docs/version-2.8.x/develop-schema.md     |   2 +-
 versioned_docs/version-2.8.x/developers-landing.md |   1 -
 versioned_docs/version-2.8.x/io-develop.md         |   4 +-
 versioned_docs/version-2.9.x/admin-api-clusters.md |   2 +-
 .../concepts-architecture-overview.md              |   2 +-
 versioned_docs/version-2.9.x/deploy-bare-metal.md  |   2 +-
 versioned_docs/version-2.9.x/develop-schema.md     |   2 +-
 versioned_docs/version-2.9.x/developers-landing.md |   1 -
 versioned_docs/version-2.9.x/io-develop.md         |   4 +-
 versioned_sidebars/version-2.10.x-sidebars.json    |   4 +
 34 files changed, 155 insertions(+), 43 deletions(-)

diff --git a/docs/admin-api-tools.md b/docs/admin-api-tools.md
index 8d4d97e36f8..6affcf58ba4 100644
--- a/docs/admin-api-tools.md
+++ b/docs/admin-api-tools.md
@@ -17,7 +17,7 @@ You can manage Pulsar entities through the Pulsar admin layer via one of the fol
 
    - [REST API](https://pulsar.apache.org/admin-rest-api/?version=master): HTTP calls, which are made against the admin APIs provided by brokers. In addition, both the Java admin API and pulsar-admin CLI use the REST API.
 
-- [pulsar-admin CLI](https://pulsar.apache.org/reference/#/next/pulsar-admin/): It’s a command-line tool and is available in the bin folder of your Pulsar installation.
+- [pulsar-admin CLI](https://pulsar.apache.org/reference/): It’s a command-line tool and is available in the bin folder of your Pulsar installation.
 
 ![Pulsar admin APIs - tools](/assets/admin-api-tools.svg)
 
@@ -27,7 +27,7 @@ Category|Tools|When to use|Considerations
 |---|---|---|---
 Pulsar admin APIs|[Java admin API](https://pulsar.apache.org/api/admin/)| - If you want to implement your own admin interface client using Java and manage clusters. <br/><br/> - If you want to manage resources programmatically rather than relying on external tools inside of unit tests.<br/><br/> - If you want to use admin APIs in Java applications.| <br/><br/> - This method is only available in Java. <br/><br/> - It needs more development work if you want to use it to build applications.
 Pulsar admin APIs | [REST API](https://pulsar.apache.org/admin-rest-api/?version=master)|- If you want to implement your own admin interface client using other languages and manage clusters using scripts.| - This method is the most complicated. <br/><br/> - It needs more development work if you want to use it to build applications.
-Pulsar admin CLI| [pulsar-admin CLI](https://pulsar.apache.org/reference/#/next/pulsar-admin/) | - If you want to get started with Pulsar admin APIs with minimal effort (e.g., no need to prepare an extra environment). <br/><br/> - If you want to perform common administrative tasks.| - This method is the most easy-to-use. <br/><br/> - It’s challenging to use this method to build applications.<br/><br/> - It takes a little more time because JVM starts slowly.
+Pulsar admin CLI| [pulsar-admin CLI](https://pulsar.apache.org/reference/) | - If you want to get started with Pulsar admin APIs with minimal effort (e.g., no need to prepare an extra environment). <br/><br/> - If you want to perform common administrative tasks.| - This method is the most easy-to-use. <br/><br/> - It’s challenging to use this method to build applications.<br/><br/> - It takes a little more time because JVM starts slowly.
 
 ### Next steps
 
diff --git a/docs/administration-geo.md b/docs/administration-geo.md
index cce2e607b3d..db903450793 100644
--- a/docs/administration-geo.md
+++ b/docs/administration-geo.md
@@ -146,7 +146,7 @@ topicLevelPoliciesEnabled=true
 
 By default, messages are replicated to all clusters configured for the namespace. You can restrict replication selectively by specifying a replication list for a message, and then that message is replicated only to the subset in the replication list.
 
-The following is an example of the [Java](client-libraries-java.md) API](client-libraries-java.md). Note the use of the `setReplicationClusters` method when you construct the {@inject: javadoc:Message:/client/org/apache/pulsar/client/api/Message} object:
+The following is an example of the [Java API](client-libraries-java.md). Note the use of the `setReplicationClusters` method when you construct the {@inject: javadoc:Message:/client/org/apache/pulsar/client/api/Message} object:
 
 ```java
 List<String> restrictReplicationTo = Arrays.asList(
diff --git a/docs/administration-pulsar-shell.md b/docs/administration-pulsar-shell.md
index cbbb548457e..13ac3485a5d 100644
--- a/docs/administration-pulsar-shell.md
+++ b/docs/administration-pulsar-shell.md
@@ -16,7 +16,7 @@ It's great for quickly switching between different clusters, and can modify clus
 
 ## Use case
 - Administration: find all the [Admin API](admin-api-overview.md) features under the `admin` command.
-- Client: find all the [pulsar-client](reference-cli-tools#pulsar-client.md) features under the `client` command.
+- Client: find all the [pulsar-client](https://pulsar.apache.org/reference/) features under the `client` command.
 
 
 ## Install Pulsar Shell
diff --git a/docs/concepts-architecture-overview.md b/docs/concepts-architecture-overview.md
index 0d4a292e8c8..238ed6ebcc8 100644
--- a/docs/concepts-architecture-overview.md
+++ b/docs/concepts-architecture-overview.md
@@ -84,7 +84,7 @@ At the moment, Pulsar supports persistent message storage. This accounts for the
 persistent://my-tenant/my-namespace/my-topic
 ```
 
-> Pulsar also supports ephemeral ([non-persistent](concepts-messaging.md#non-persistent-topics.md)) message storage.
+> Pulsar also supports ephemeral ([non-persistent](concepts-messaging.md#non-persistent-topics) message storage.
 
 
 You can see an illustration of how brokers and bookies interact in the diagram below:
diff --git a/docs/developing-binary-protocol.md b/docs/developing-binary-protocol.md
index 798015f734f..d259872b98d 100644
--- a/docs/developing-binary-protocol.md
+++ b/docs/developing-binary-protocol.md
@@ -62,13 +62,13 @@ It is created by the broker when the message arrived at the broker and passed wi
 | `broker_timestamp` | Optional             | The timestamp when a message arrived at the broker (`id est` as the number of milliseconds since January 1st, 1970 in UTC) |
 | `index`            | Optional             | The index of the message. It is assigned by the broker.                                                                    |
 
-If you want to use broker entry metadata for **brokers**, configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md#broker) parameter in the `broker.conf` file.
+If you want to use broker entry metadata for **brokers**, configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md) parameter in the `broker.conf` file.
 
 If you want to use broker entry metadata for **consumers**:
 
 1. Use the client protocol version [18 or later](https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259).
    
-2. Configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md#broker) parameter and set the [`exposingBrokerEntryMetadataToClientEnabled`](reference-configuration-broker.md#exposingbrokerentrymetadatatoclientenabled) parameter to `true` in the `broker.conf` file.
+2. Configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md) parameter and set the [`exposingBrokerEntryMetadataToClientEnabled`](reference-configuration.md) parameter to `true` in the `broker.conf` file.
 
 ## Message metadata
 
diff --git a/docs/io-develop.md b/docs/io-develop.md
index 7aabacb402a..21d8af108c2 100644
--- a/docs/io-develop.md
+++ b/docs/io-develop.md
@@ -20,8 +20,8 @@ Pulsar connectors come in two types:
 
 | Type | Description | Example
 |---|---|---
-{@inject: github:Source:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Source.java}|Import data from another system to Pulsar.|[RabbitMQ source connector](io-rabbitmq.md) imports the messages of a RabbitMQ queue to a Pulsar topic.
-{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis.md) exports the messages of a Pulsar topic to a Kinesis stream.
+{@inject: github:Source:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Source.java}|Import data from another system to Pulsar.|[RabbitMQ source connector](io-rabbitmq-source.md) imports the messages of a RabbitMQ queue to a Pulsar topic.
+{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis-sink.md) exports the messages of a Pulsar topic to a Kinesis stream.
 
 ## Develop
 
diff --git a/docs/security-tls-authentication.md b/docs/security-tls-authentication.md
index f37d5db1fb3..61d5d319a83 100644
--- a/docs/security-tls-authentication.md
+++ b/docs/security-tls-authentication.md
@@ -136,7 +136,7 @@ var client = PulsarClient.Builder()
 
 ## Configure TLS authentication in CLI tools
 
-[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](/tools/pulsar-admin/), [`pulsar-perf`](reference-cli-tools.md), and [`pulsar-client`](reference-cli-tools.md) use the `conf/client.conf` config file in a Pulsar installation.
+[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](https://pulsar.apache.org/reference/), [`pulsar-perf`](https://pulsar.apache.org/reference/), and [`pulsar-client`](https://pulsar.apache.org/reference/) use the `conf/client.conf` config file in a Pulsar installation.
 
 To use TLS authentication with the CLI tools of Pulsar, you need to add the following parameters to the `conf/client.conf` file, alongside [the configuration to enable TLS encryption](security-tls-transport.md#configure-tls-encryption-in-cli-tools):
 
@@ -191,7 +191,7 @@ Besides configuring [TLS encryption](security-tls-transport.md), you need to con
 
 For example:
 
-1. for [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client), set the `conf/client.conf` file in a Pulsar installation.
+1. for [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](https://pulsar.apache.org/reference/), [`pulsar-perf`](https://pulsar.apache.org/reference/), and [`pulsar-client`](https://pulsar.apache.org/reference/), set the `conf/client.conf` file in a Pulsar installation.
 
    ```properties
    webServiceUrl=https://broker.example.com:8443/
diff --git a/docs/security-tls-transport.md b/docs/security-tls-transport.md
index fa39d1155ad..ca7101944bb 100644
--- a/docs/security-tls-transport.md
+++ b/docs/security-tls-transport.md
@@ -377,7 +377,7 @@ asyncio.run(test())
 
 ### Configure CLI tools
 
-[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools.md), [`pulsar-perf`](reference-cli-tools.md), and [`pulsar-client`](reference-cli-tools.md) use the `conf/client.conf` config file in a Pulsar installation.
+[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](https://pulsar.apache.org/reference/), [`pulsar-perf`](https://pulsar.apache.org/reference/), and [`pulsar-client`](https://pulsar.apache.org/reference/) use the `conf/client.conf` config file in a Pulsar installation.
 
 To use TLS encryption with Pulsar CLI tools, you need to add the following parameters to the `conf/client.conf` file.
 
@@ -553,7 +553,7 @@ The following is an example.
 
 ### Configure CLI tools
 
-For [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+For [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](https://pulsar.apache.org/reference/), [`pulsar-perf`](https://pulsar.apache.org/reference/), and [`pulsar-client`](https://pulsar.apache.org/reference/), use the `conf/client.conf` config file in a Pulsar installation.
 
    ```properties
    webServiceUrl=https://broker.example.com:8443/
diff --git a/versioned_docs/version-2.10.x/administration-metadata-store.md b/versioned_docs/version-2.10.x/administration-metadata-store.md
new file mode 100644
index 00000000000..eef1603854e
--- /dev/null
+++ b/versioned_docs/version-2.10.x/administration-metadata-store.md
@@ -0,0 +1,110 @@
+---
+id: administration-metadata-store
+title: Configure metadata store
+sidebar_label: "Configure metadata store"
+---
+
+Pulsar metadata store maintains all the metadata, configuration, and coordination of a Pulsar cluster, such as topic metadata, schema, broker load data, and so on.
+
+The metadata store of each Pulsar instance should contain the following two components:
+* A local metadata store ensemble (`metadataStoreUrl`) that stores cluster-specific configuration and coordination, such as which brokers are responsible for which topics as well as ownership metadata, broker load reports, and BookKeeper ledger metadata.
+* A configuration store quorum (`configurationMetadataStoreUrl`) stores configuration for clusters, tenants, namespaces, topics, and other entities that need to be globally consistent.
+
+:::note
+
+If you are using a standalone Pulsar or a single Pulsar cluster, you only need to configure one metadata store (via `metadataStoreUrl`) and it also serves as a configuration store.
+
+:::
+
+Pulsar supports the following metadata store services:
+* [Apache ZooKeeper](https://zookeeper.apache.org/)
+* [Etcd](https://etcd.io/)
+* [RocksDB](http://rocksdb.org/)
+* Local memory
+
+:::note
+
+RocksDB and local memory are only applicable to standalone Pulsar or single-node Pulsar clusters.
+
+:::
+
+## Use ZooKeeper as metadata store
+
+Pulsar metadata store can be deployed on a separate ZooKeeper cluster or deployed on an existing ZooKeeper cluster.
+
+To use ZooKeeper as the metadata store, add the following parameters to the `conf/broker.conf` or `conf/standalone.conf` file.
+
+```conf
+metadataStoreUrl=zk:my-zk-1:2181,my-zk-2:2181,my-zk-3:2181
+configurationMetadataStoreUrl=zk:my-global-zk-1:2181,my-global-zk-2:2181,my-global-zk-3:2181
+```
+
+## Use etcd as metadata store
+
+To use etcd as the metadata store, add the following parameters to the `conf/broker.conf` or `conf/standalone.conf` file.
+
+```conf
+metadataStoreUrl=etcd:http://my-etcd-1:2379,http://my-etcd-2:2379,http://my-etcd-3:2379
+configurationMetadataStoreUrl=etcd:my-global-etcd-1:2379,my-global-etcd-2:2379,my-global-etcd-3:2379
+# metadataStoreConfigPath=/path/to/file
+```
+
+:::tip
+
+The `metadataStoreConfigPath` parameter is required when you want to use the following advanced configurations.
+
+```
+useTls=false
+tlsProvider=JDK
+tlsTrustCertsFilePath=
+tlsKeyFilePath=
+tlsCertificateFilePath=
+authority=
+```
+
+:::
+
+## Use RocksDB as metadata store
+
+To use RocksDB as the metadata store, add the following parameters to the `conf/broker.conf` or `conf/standalone.conf` file.
+
+```conf
+metadataStoreUrl=rocksdb://data/metadata
+# metadataStoreConfigPath=/path/to/file
+```
+
+:::tip
+
+The `metadataStoreConfigPath` parameter is required when you want to use advanced configurations. See [this example](https://github.com/facebook/rocksdb/blob/main/examples/rocksdb_option_file_example.ini) for more information.
+
+:::
+
+## Use local memory as metadata store
+
+To use local memory as the metadata store, add the following parameters to the `conf/broker.conf` or `conf/standalone.conf` file.
+
+```conf
+metadataStoreUrl=memory://local
+```
+
+
+## Enable batch operations on metadata store
+
+Pulsar metadata store supports batch operations and caching to meet low latency and high throughput and improve performance.
+
+To enable batch operations on the metadata store, you can configure the following parameters in the `conf/broker.conf` or `conf/standalone.conf` file.
+
+```conf
+# Whether we should enable metadata operations batching
+metadataStoreBatchingEnabled=true
+
+# Maximum delay to impose on batching grouping
+metadataStoreBatchingMaxDelayMillis=5
+
+# Maximum number of operations to include in a singular batch
+metadataStoreBatchingMaxOperations=1000
+
+# Maximum size of a batch
+metadataStoreBatchingMaxSizeKb=128
+```
+
diff --git a/versioned_docs/version-2.10.x/concepts-architecture-overview.md b/versioned_docs/version-2.10.x/concepts-architecture-overview.md
index 2c31f8042cd..758d1efe382 100644
--- a/versioned_docs/version-2.10.x/concepts-architecture-overview.md
+++ b/versioned_docs/version-2.10.x/concepts-architecture-overview.md
@@ -150,7 +150,7 @@ Some important things to know about the Pulsar proxy:
 
 ## Service discovery
 
-[Clients](getting-started-clients.md) connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL.
+[Clients](client-libraries.md) connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL.
 
 You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as `http://pulsar.us-west.example.com:8080`, the client needs to be redirected to *some* active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.
 
diff --git a/versioned_docs/version-2.10.x/concepts-messaging.md b/versioned_docs/version-2.10.x/concepts-messaging.md
index adb7687df96..7693198ed86 100644
--- a/versioned_docs/version-2.10.x/concepts-messaging.md
+++ b/versioned_docs/version-2.10.x/concepts-messaging.md
@@ -654,7 +654,7 @@ Subscription mode | Description | Note
 `Durable`|The cursor is durable, which retains messages and persists the current position. <br />If a broker restarts from a failure, it can recover the cursor from the persistent storage (BookKeeper), so that messages can continue to be consumed from the last consumed position.|`Durable` is the **default** subscription mode.
 `NonDurable`|The cursor is non-durable. <br />Once a broker stops, the cursor is lost and can never be recovered, so that messages **can not** continue to be consumed from the last consumed position.|Reader’s subscription mode is `NonDurable` in nature and it does not prevent data in a topic from being deleted. Reader’s subscription mode **can not** be changed. 
 
-A [subscription](#concepts-messaging.md/#subscriptions) can have one or more consumers. When a consumer subscribes to a topic, it must specify the subscription name. A durable subscription and a non-durable subscription can have the same name, they are independent of each other. If a consumer specifies a subscription which does not exist before, the subscription is automatically created.
+A [subscription](concepts-messaging.md#subscriptions) can have one or more consumers. When a consumer subscribes to a topic, it must specify the subscription name. A durable subscription and a non-durable subscription can have the same name, they are independent of each other. If a consumer specifies a subscription which does not exist before, the subscription is automatically created.
 
 #### When to use
 
diff --git a/versioned_docs/version-2.10.x/deploy-bare-metal.md b/versioned_docs/version-2.10.x/deploy-bare-metal.md
index 86e86d92559..4d1422a3353 100644
--- a/versioned_docs/version-2.10.x/deploy-bare-metal.md
+++ b/versioned_docs/version-2.10.x/deploy-bare-metal.md
@@ -550,7 +550,7 @@ bin/pulsar-admin functions create \
 
 ```
 
-Check whether the function runs as expected by [triggering](functions-deploying.md#triggering-pulsar-functions) the function.
+Check whether the function runs as expected by [triggering](functions-deploy.md#trigger-pulsar-functions) the function.
 
 ```bash
 
diff --git a/versioned_docs/version-2.10.x/develop-schema.md b/versioned_docs/version-2.10.x/develop-schema.md
index 2d4461a5ea2..5ae4bc0ff4e 100644
--- a/versioned_docs/version-2.10.x/develop-schema.md
+++ b/versioned_docs/version-2.10.x/develop-schema.md
@@ -5,7 +5,7 @@ sidebar_label: "Custom schema storage"
 original_id: develop-schema
 ---
 
-By default, Pulsar stores data type [schemas](concepts-schema-registry.md) in [Apache BookKeeper](https://bookkeeper.apache.org) (which is deployed alongside Pulsar). You can, however, use another storage system if you wish. This doc walks you through creating your own schema storage implementation.
+By default, Pulsar stores data type [schemas](schema-understand.md) in [Apache BookKeeper](https://bookkeeper.apache.org) (which is deployed alongside Pulsar). You can, however, use another storage system if you wish. This doc walks you through creating your own schema storage implementation.
 
 In order to use a non-default (i.e. non-BookKeeper) storage system for Pulsar schemas, you need to implement two Java interfaces: [`SchemaStorage`](#schemastorage-interface) and [`SchemaStorageFactory`](#schemastoragefactory-interface).
 
diff --git a/versioned_docs/version-2.10.x/developing-binary-protocol.md b/versioned_docs/version-2.10.x/developing-binary-protocol.md
index 11394505ac8..75427b8ce07 100644
--- a/versioned_docs/version-2.10.x/developing-binary-protocol.md
+++ b/versioned_docs/version-2.10.x/developing-binary-protocol.md
@@ -69,7 +69,7 @@ If you want to use broker entry metadata for **consumers**:
 
 1. Use the client protocol version [18 or later](https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259).
    
-2. Configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md#broker) parameter and set the [`exposingBrokerEntryMetadataToClientEnabled`](reference-configuration-broker.md#exposingbrokerentrymetadatatoclientenabled) parameter to `true` in the `broker.conf` file.
+2. Configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md#broker) parameter and set the [`exposingBrokerEntryMetadataToClientEnabled`](reference-configuration.md#broker) parameter to `true` in the `broker.conf` file.
 
 ## Message metadata
 
diff --git a/versioned_docs/version-2.10.x/io-develop.md b/versioned_docs/version-2.10.x/io-develop.md
index d6f4f8261ac..84b15b2401c 100644
--- a/versioned_docs/version-2.10.x/io-develop.md
+++ b/versioned_docs/version-2.10.x/io-develop.md
@@ -21,8 +21,8 @@ Pulsar connectors come in two types:
 
 | Type | Description | Example
 |---|---|---
-{@inject: github:Source:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Source.java}|Import data from another system to Pulsar.|[RabbitMQ source connector](io-rabbitmq.md) imports the messages of a RabbitMQ queue to a Pulsar topic.
-{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis.md) exports the messages of a Pulsar topic to a Kinesis stream.
+{@inject: github:Source:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Source.java}|Import data from another system to Pulsar.|[RabbitMQ source connector](io-rabbitmq-source.md) imports the messages of a RabbitMQ queue to a Pulsar topic.
+{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis-sink.md) exports the messages of a Pulsar topic to a Kinesis stream.
 
 ## Develop
 
diff --git a/versioned_docs/version-2.11.x/administration-geo.md b/versioned_docs/version-2.11.x/administration-geo.md
index cce2e607b3d..db903450793 100644
--- a/versioned_docs/version-2.11.x/administration-geo.md
+++ b/versioned_docs/version-2.11.x/administration-geo.md
@@ -146,7 +146,7 @@ topicLevelPoliciesEnabled=true
 
 By default, messages are replicated to all clusters configured for the namespace. You can restrict replication selectively by specifying a replication list for a message, and then that message is replicated only to the subset in the replication list.
 
-The following is an example of the [Java](client-libraries-java.md) API](client-libraries-java.md). Note the use of the `setReplicationClusters` method when you construct the {@inject: javadoc:Message:/client/org/apache/pulsar/client/api/Message} object:
+The following is an example of the [Java API](client-libraries-java.md). Note the use of the `setReplicationClusters` method when you construct the {@inject: javadoc:Message:/client/org/apache/pulsar/client/api/Message} object:
 
 ```java
 List<String> restrictReplicationTo = Arrays.asList(
diff --git a/versioned_docs/version-2.11.x/administration-pulsar-shell.md b/versioned_docs/version-2.11.x/administration-pulsar-shell.md
index cbbb548457e..13ac3485a5d 100644
--- a/versioned_docs/version-2.11.x/administration-pulsar-shell.md
+++ b/versioned_docs/version-2.11.x/administration-pulsar-shell.md
@@ -16,7 +16,7 @@ It's great for quickly switching between different clusters, and can modify clus
 
 ## Use case
 - Administration: find all the [Admin API](admin-api-overview.md) features under the `admin` command.
-- Client: find all the [pulsar-client](reference-cli-tools#pulsar-client.md) features under the `client` command.
+- Client: find all the [pulsar-client](https://pulsar.apache.org/reference/) features under the `client` command.
 
 
 ## Install Pulsar Shell
diff --git a/versioned_docs/version-2.11.x/concepts-architecture-overview.md b/versioned_docs/version-2.11.x/concepts-architecture-overview.md
index 0d4a292e8c8..238ed6ebcc8 100644
--- a/versioned_docs/version-2.11.x/concepts-architecture-overview.md
+++ b/versioned_docs/version-2.11.x/concepts-architecture-overview.md
@@ -84,7 +84,7 @@ At the moment, Pulsar supports persistent message storage. This accounts for the
 persistent://my-tenant/my-namespace/my-topic
 ```
 
-> Pulsar also supports ephemeral ([non-persistent](concepts-messaging.md#non-persistent-topics.md)) message storage.
+> Pulsar also supports ephemeral ([non-persistent](concepts-messaging.md#non-persistent-topics) message storage.
 
 
 You can see an illustration of how brokers and bookies interact in the diagram below:
diff --git a/versioned_docs/version-2.11.x/developing-binary-protocol.md b/versioned_docs/version-2.11.x/developing-binary-protocol.md
index 16459a2a1bd..2fd538ea1d4 100644
--- a/versioned_docs/version-2.11.x/developing-binary-protocol.md
+++ b/versioned_docs/version-2.11.x/developing-binary-protocol.md
@@ -62,13 +62,13 @@ It is created by the broker when the message arrived at the broker and passed wi
 | `broker_timestamp` | Optional             | The timestamp when a message arrived at the broker (`id est` as the number of milliseconds since January 1st, 1970 in UTC) |
 | `index`            | Optional             | The index of the message. It is assigned by the broker.                                                                    |
 
-If you want to use broker entry metadata for **brokers**, configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md#broker) parameter in the `broker.conf` file.
+If you want to use broker entry metadata for **brokers**, configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md) parameter in the `broker.conf` file.
 
 If you want to use broker entry metadata for **consumers**:
 
 1. Use the client protocol version [18 or later](https://github.com/apache/pulsar/blob/ca37e67211feda4f7e0984e6414e707f1c1dfd07/pulsar-common/src/main/proto/PulsarApi.proto#L259).
    
-2. Configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md#broker) parameter and set the [`exposingBrokerEntryMetadataToClientEnabled`](reference-configuration-broker.md#exposingbrokerentrymetadatatoclientenabled) parameter to `true` in the `broker.conf` file.
+2. Configure the [`brokerEntryMetadataInterceptors`](reference-configuration.md) parameter and set the [`exposingBrokerEntryMetadataToClientEnabled`](reference-configuration.md) parameter to `true` in the `broker.conf` file.
 
 ## Message metadata
 
diff --git a/versioned_docs/version-2.11.x/io-develop.md b/versioned_docs/version-2.11.x/io-develop.md
index 7aabacb402a..7ccdf7bc650 100644
--- a/versioned_docs/version-2.11.x/io-develop.md
+++ b/versioned_docs/version-2.11.x/io-develop.md
@@ -21,7 +21,7 @@ Pulsar connectors come in two types:
 | Type | Description | Example
 |---|---|---
 {@inject: github:Source:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Source.java}|Import data from another system to Pulsar.|[RabbitMQ source connector](io-rabbitmq.md) imports the messages of a RabbitMQ queue to a Pulsar topic.
-{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis.md) exports the messages of a Pulsar topic to a Kinesis stream.
+{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis-sink.md) exports the messages of a Pulsar topic to a Kinesis stream.
 
 ## Develop
 
diff --git a/versioned_docs/version-2.11.x/security-tls-authentication.md b/versioned_docs/version-2.11.x/security-tls-authentication.md
index f37d5db1fb3..61d5d319a83 100644
--- a/versioned_docs/version-2.11.x/security-tls-authentication.md
+++ b/versioned_docs/version-2.11.x/security-tls-authentication.md
@@ -136,7 +136,7 @@ var client = PulsarClient.Builder()
 
 ## Configure TLS authentication in CLI tools
 
-[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](/tools/pulsar-admin/), [`pulsar-perf`](reference-cli-tools.md), and [`pulsar-client`](reference-cli-tools.md) use the `conf/client.conf` config file in a Pulsar installation.
+[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](https://pulsar.apache.org/reference/), [`pulsar-perf`](https://pulsar.apache.org/reference/), and [`pulsar-client`](https://pulsar.apache.org/reference/) use the `conf/client.conf` config file in a Pulsar installation.
 
 To use TLS authentication with the CLI tools of Pulsar, you need to add the following parameters to the `conf/client.conf` file, alongside [the configuration to enable TLS encryption](security-tls-transport.md#configure-tls-encryption-in-cli-tools):
 
@@ -191,7 +191,7 @@ Besides configuring [TLS encryption](security-tls-transport.md), you need to con
 
 For example:
 
-1. for [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client), set the `conf/client.conf` file in a Pulsar installation.
+1. for [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](https://pulsar.apache.org/reference/), [`pulsar-perf`](https://pulsar.apache.org/reference/), and [`pulsar-client`](https://pulsar.apache.org/reference/), set the `conf/client.conf` file in a Pulsar installation.
 
    ```properties
    webServiceUrl=https://broker.example.com:8443/
diff --git a/versioned_docs/version-2.11.x/security-tls-transport.md b/versioned_docs/version-2.11.x/security-tls-transport.md
index cbe586d6f8b..d01a9e477a4 100644
--- a/versioned_docs/version-2.11.x/security-tls-transport.md
+++ b/versioned_docs/version-2.11.x/security-tls-transport.md
@@ -377,7 +377,7 @@ asyncio.run(test())
 
 ### Configure CLI tools
 
-[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools.md), [`pulsar-perf`](reference-cli-tools.md), and [`pulsar-client`](reference-cli-tools.md) use the `conf/client.conf` config file in a Pulsar installation.
+[Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](https://pulsar.apache.org/reference/), [`pulsar-perf`](https://pulsar.apache.org/reference/), and [`pulsar-client`](https://pulsar.apache.org/reference/), use the `conf/client.conf` config file in a Pulsar installation.
 
 To use TLS encryption with Pulsar CLI tools, you need to add the following parameters to the `conf/client.conf` file.
 
@@ -553,7 +553,7 @@ The following is an example.
 
 ### Configure CLI tools
 
-For [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](reference-cli-tools#pulsar-admin), [`pulsar-perf`](reference-cli-tools#pulsar-perf), and [`pulsar-client`](reference-cli-tools#pulsar-client) use the `conf/client.conf` config file in a Pulsar installation.
+For [Command-line tools](reference-cli-tools.md) like [`pulsar-admin`](https://pulsar.apache.org/reference/), [`pulsar-perf`](https://pulsar.apache.org/reference/), and [`pulsar-client`](https://pulsar.apache.org/reference/), use the `conf/client.conf` config file in a Pulsar installation.
 
    ```properties
    webServiceUrl=https://broker.example.com:8443/
diff --git a/versioned_docs/version-2.8.x/concepts-architecture-overview.md b/versioned_docs/version-2.8.x/concepts-architecture-overview.md
index 0af8c575991..e7e8a6f99a1 100644
--- a/versioned_docs/version-2.8.x/concepts-architecture-overview.md
+++ b/versioned_docs/version-2.8.x/concepts-architecture-overview.md
@@ -146,7 +146,7 @@ Some important things to know about the Pulsar proxy:
 
 ## Service discovery
 
-[Clients](getting-started-clients.md) connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the [Deploying a Pulsar instance](deploy-bare-metal.md#service-discovery-setup) guide.
+[Clients](client-libraries.md) connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL. Pulsar provides a built-in service discovery mechanism that you can set up using the instructions in the [Deploying a Pulsar instance](deploy-bare-metal.md#service-discovery-setup) guide.
 
 You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as `http://pulsar.us-west.example.com:8080`, the client needs to be redirected to *some* active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.
 
diff --git a/versioned_docs/version-2.8.x/deploy-bare-metal.md b/versioned_docs/version-2.8.x/deploy-bare-metal.md
index bdd05f24f25..0cd3218147a 100644
--- a/versioned_docs/version-2.8.x/deploy-bare-metal.md
+++ b/versioned_docs/version-2.8.x/deploy-bare-metal.md
@@ -523,7 +523,7 @@ bin/pulsar-admin functions create \
 
 ```
 
-Check whether the function runs as expected by [triggering](functions-deploying.md#triggering-pulsar-functions) the function.
+Check whether the function runs as expected by [triggering](functions-deploy.md#trigger-pulsar-functions) the function.
 
 ```bash
 
diff --git a/versioned_docs/version-2.8.x/develop-schema.md b/versioned_docs/version-2.8.x/develop-schema.md
index 2d4461a5ea2..5ae4bc0ff4e 100644
--- a/versioned_docs/version-2.8.x/develop-schema.md
+++ b/versioned_docs/version-2.8.x/develop-schema.md
@@ -5,7 +5,7 @@ sidebar_label: "Custom schema storage"
 original_id: develop-schema
 ---
 
-By default, Pulsar stores data type [schemas](concepts-schema-registry.md) in [Apache BookKeeper](https://bookkeeper.apache.org) (which is deployed alongside Pulsar). You can, however, use another storage system if you wish. This doc walks you through creating your own schema storage implementation.
+By default, Pulsar stores data type [schemas](schema-understand.md) in [Apache BookKeeper](https://bookkeeper.apache.org) (which is deployed alongside Pulsar). You can, however, use another storage system if you wish. This doc walks you through creating your own schema storage implementation.
 
 In order to use a non-default (i.e. non-BookKeeper) storage system for Pulsar schemas, you need to implement two Java interfaces: [`SchemaStorage`](#schemastorage-interface) and [`SchemaStorageFactory`](#schemastoragefactory-interface).
 
diff --git a/versioned_docs/version-2.8.x/developers-landing.md b/versioned_docs/version-2.8.x/developers-landing.md
index f5c8ccee181..8a73ae16e43 100644
--- a/versioned_docs/version-2.8.x/developers-landing.md
+++ b/versioned_docs/version-2.8.x/developers-landing.md
@@ -9,4 +9,3 @@ Developing applications for Pulsar can be a fun and rewarding experience. With P
 - [Develop simulation tools](develop-tools.md)
 - [Develop binary protocol](developing-binary-protocol.md)
 - [Develop load manager](develop-load-manager.md)
-- [Develop Pulsar plugin](develop-plugin.md)
diff --git a/versioned_docs/version-2.8.x/io-develop.md b/versioned_docs/version-2.8.x/io-develop.md
index d6f4f8261ac..84b15b2401c 100644
--- a/versioned_docs/version-2.8.x/io-develop.md
+++ b/versioned_docs/version-2.8.x/io-develop.md
@@ -21,8 +21,8 @@ Pulsar connectors come in two types:
 
 | Type | Description | Example
 |---|---|---
-{@inject: github:Source:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Source.java}|Import data from another system to Pulsar.|[RabbitMQ source connector](io-rabbitmq.md) imports the messages of a RabbitMQ queue to a Pulsar topic.
-{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis.md) exports the messages of a Pulsar topic to a Kinesis stream.
+{@inject: github:Source:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Source.java}|Import data from another system to Pulsar.|[RabbitMQ source connector](io-rabbitmq-source.md) imports the messages of a RabbitMQ queue to a Pulsar topic.
+{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis-sink.md) exports the messages of a Pulsar topic to a Kinesis stream.
 
 ## Develop
 
diff --git a/versioned_docs/version-2.9.x/admin-api-clusters.md b/versioned_docs/version-2.9.x/admin-api-clusters.md
index 125358ba9c1..1d8a45a869b 100644
--- a/versioned_docs/version-2.9.x/admin-api-clusters.md
+++ b/versioned_docs/version-2.9.x/admin-api-clusters.md
@@ -26,7 +26,7 @@ servers (aka [bookies](reference-terminology.md#bookie)), and a [ZooKeeper](http
 
 Clusters can be managed via:
 
-* The `clusters` command of the [`pulsar-admin`]([reference-pulsar-admin.md](https://pulsar.apache.org/tools/pulsar-admin/)) tool
+* The `clusters` command of the [`pulsar-admin`](https://pulsar.apache.org/tools/pulsar-admin/) tool
 * The `/admin/v2/clusters` endpoint of the admin {@inject: rest:REST:/} API
 * The `clusters` method of the `PulsarAdmin` object in the [Java API](client-libraries-java.md)
 
diff --git a/versioned_docs/version-2.9.x/concepts-architecture-overview.md b/versioned_docs/version-2.9.x/concepts-architecture-overview.md
index 87e578c84f2..facfb377af3 100644
--- a/versioned_docs/version-2.9.x/concepts-architecture-overview.md
+++ b/versioned_docs/version-2.9.x/concepts-architecture-overview.md
@@ -146,7 +146,7 @@ Some important things to know about the Pulsar proxy:
 
 ## Service discovery
 
-[Clients](getting-started-clients.md) connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL.
+[Clients](client-libraries.md) connecting to Pulsar brokers need to be able to communicate with an entire Pulsar instance using a single URL.
 
 You can use your own service discovery system if you'd like. If you use your own system, there is just one requirement: when a client performs an HTTP request to an endpoint, such as `http://pulsar.us-west.example.com:8080`, the client needs to be redirected to *some* active broker in the desired cluster, whether via DNS, an HTTP or IP redirect, or some other means.
 
diff --git a/versioned_docs/version-2.9.x/deploy-bare-metal.md b/versioned_docs/version-2.9.x/deploy-bare-metal.md
index 9bb4235cece..c56b81423ec 100644
--- a/versioned_docs/version-2.9.x/deploy-bare-metal.md
+++ b/versioned_docs/version-2.9.x/deploy-bare-metal.md
@@ -541,7 +541,7 @@ bin/pulsar-admin functions create \
 
 ```
 
-Check whether the function runs as expected by [triggering](functions-deploying.md#triggering-pulsar-functions) the function.
+Check whether the function runs as expected by [triggering](functions-deploy.md#trigger-pulsar-functions) the function.
 
 ```bash
 
diff --git a/versioned_docs/version-2.9.x/develop-schema.md b/versioned_docs/version-2.9.x/develop-schema.md
index 2d4461a5ea2..5ae4bc0ff4e 100644
--- a/versioned_docs/version-2.9.x/develop-schema.md
+++ b/versioned_docs/version-2.9.x/develop-schema.md
@@ -5,7 +5,7 @@ sidebar_label: "Custom schema storage"
 original_id: develop-schema
 ---
 
-By default, Pulsar stores data type [schemas](concepts-schema-registry.md) in [Apache BookKeeper](https://bookkeeper.apache.org) (which is deployed alongside Pulsar). You can, however, use another storage system if you wish. This doc walks you through creating your own schema storage implementation.
+By default, Pulsar stores data type [schemas](schema-understand.md) in [Apache BookKeeper](https://bookkeeper.apache.org) (which is deployed alongside Pulsar). You can, however, use another storage system if you wish. This doc walks you through creating your own schema storage implementation.
 
 In order to use a non-default (i.e. non-BookKeeper) storage system for Pulsar schemas, you need to implement two Java interfaces: [`SchemaStorage`](#schemastorage-interface) and [`SchemaStorageFactory`](#schemastoragefactory-interface).
 
diff --git a/versioned_docs/version-2.9.x/developers-landing.md b/versioned_docs/version-2.9.x/developers-landing.md
index f5c8ccee181..8a73ae16e43 100644
--- a/versioned_docs/version-2.9.x/developers-landing.md
+++ b/versioned_docs/version-2.9.x/developers-landing.md
@@ -9,4 +9,3 @@ Developing applications for Pulsar can be a fun and rewarding experience. With P
 - [Develop simulation tools](develop-tools.md)
 - [Develop binary protocol](developing-binary-protocol.md)
 - [Develop load manager](develop-load-manager.md)
-- [Develop Pulsar plugin](develop-plugin.md)
diff --git a/versioned_docs/version-2.9.x/io-develop.md b/versioned_docs/version-2.9.x/io-develop.md
index 43637ac5130..77b7c3bb363 100644
--- a/versioned_docs/version-2.9.x/io-develop.md
+++ b/versioned_docs/version-2.9.x/io-develop.md
@@ -20,8 +20,8 @@ Pulsar connectors come in two types:
 
 | Type | Description | Example
 |---|---|---
-{@inject: github:Source:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Source.java}|Import data from another system to Pulsar.|[RabbitMQ source connector](io-rabbitmq.md) imports the messages of a RabbitMQ queue to a Pulsar topic.
-{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis.md) exports the messages of a Pulsar topic to a Kinesis stream.
+{@inject: github:Source:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Source.java}|Import data from another system to Pulsar.|[RabbitMQ source connector](io-rabbitmq-source.md) imports the messages of a RabbitMQ queue to a Pulsar topic.
+{@inject: github:Sink:/pulsar-io/core/src/main/java/org/apache/pulsar/io/core/Sink.java}|Export data from Pulsar to another system.|[Kinesis sink connector](io-kinesis-sink.md) exports the messages of a Pulsar topic to a Kinesis stream.
 
 ## Develop
 
diff --git a/versioned_sidebars/version-2.10.x-sidebars.json b/versioned_sidebars/version-2.10.x-sidebars.json
index 391f303100e..f1a39d0cb55 100644
--- a/versioned_sidebars/version-2.10.x-sidebars.json
+++ b/versioned_sidebars/version-2.10.x-sidebars.json
@@ -324,6 +324,10 @@
           "type": "doc",
           "id": "version-2.10.x/administration-zk-bk"
         },
+        {
+          "type": "doc",
+          "id": "version-2.10.x/administration-metadata-store"
+        },
         {
           "type": "doc",
           "id": "version-2.10.x/administration-geo"