The proposal looks good to me. +1

- Sijie

On Sat, Jan 6, 2018 at 4:36 AM, Matteo Merli <mme...@apache.org> wrote:

> https://github.com/apache/incubator-pulsar/wiki/PIP-11:-Short-topic-names
>
> [Copying wiki text for easier quoting]
>
> ------------------------------
>
> * **Status**: Proposal
> * **Author**: Matteo Merli
> * **Pull Request**: [ ]
> * **Mailing List discussion**:
>
>
> ## Motivation
>
> Pulsar was designed as a multi-tenant system from the very beginning. From
> this
> it originate the notions of tenants and namespaces to allow users to
> administrate
> and operate their own topics.
>
> In Pulsar, all these concepts are explicitly set in the namespace and topic
> names.
>
> The topic name is composed of all the names:
>
> ```
> persistent://my-tenant/my-cluster/my-namespace/my-topic
> ```
>
> In [PIP-10](
> https://github.com/apache/incubator-pulsar/wiki/PIP-10:-
> Remove-cluster-for-namespace-and-topic-names),
> we have already introduced the proposal to hide the cluster name from
> the topic name, resulting in a topic name such as:
>
> ```
> persistent://my-tenant/my-namespace/my-topic
> ```
>
> This proposal is dependent on PIP-10 because it needs the cluster to not
> appear
> in the topic name.
>
> In many cases, when deploying Pulsar as a single tenant, users might not
> need
> all the "tenant" and "namespace" information, but currently it would have
> to
> do the following steps after deploying a Pulsar cluster, even when
> authorization
> is not required:
>
>  * Create a "property" (or tenant)
>  * Create a namespace
>
> Additionally, it forces the multi-tenant model even when it's not needed or
> when someone wants to just "play" with the system.
>
> For such reasons, this proposal is to introduce a default namespace that is
> always pre-created and a short notation for topic names.
>
> For example:
>
>  * `my-topic` --> `persistent://public/default/my-topic`
>
> If omitted, the `persistent` or `non-persistent` schema, will be defaulted
> to
> `persistent`, even when using longer form of topic name:
>
>  * `tenant/namespace/my-topic` --> `persistent://tenant/
> namespace/my-topic`
>
> The goal is to be able to use the short form in client API and tools:
>
> ```java
> PulsarClient client = PulsarClient.create("pulsar://localhost:6650");
> Producer producer = client.createProducer("my-topic");
> producer.send(message);
> ```
>
> At the same time, all CLI tools will recognize the short notation as well,
> for example:
>
> ```shell
> $ bin/pulsar-admin persistent stats my-topic
> ```
>
> It will be equivalent to:
>
> ```shell
> $ bin/pulsar-admin persistent stats persistent://public/default/my-topic
> ```
>
>
> ## Changes
>
> The changes will be mostly on the surface:
>
>  * Introduce the concept of `public` tenant (property). This tenant will be
>    already pre-created when initializing a Pulsar cluster. When
> authorization
>    is enabled, it would be responsibility of the administrator to grant
>    permissions to use it.
>  * Introduce the concept of `public/default` namespace. This will be
> pre-created
>    at the cluster initialization. The default namespace will be a regular
>    namespace that the administrator can configure in the same way as all
> other
>    namespaces
>  * In client library and tools, translate all the short topic names by
> adding
>    the default namespace:
>     `my-topic` --> `persistent://public/default/my-topic`
>
>
>
> --
> Matteo Merli
> <mme...@apache.org>
>

Reply via email to