+1

Best,
Mattison

On Tue, 3 May 2022 at 22:38, Andras Beni
<andras.b...@streamnative.io.invalid> wrote:

> Hi Enrico,
>
> I updated the proposal with my answers:
>
> [The translation from user-visible name to actual storage path]  will
> happen by supplying the bucket number to
> TopicName.getPersistenceNamingEncoding and calculating the modified path.
> Since the bottleneck is listing topics, which happens using the managed
> ledgers' path, there is no need to modify schema storage. Furthermore the
> structure and content of data currently stored at
> /managed-ledgers/tenant/namespace/domain/topic will not be changed but will
> be available at the new path.
>
> I have a very limited POC available at
>
> https://github.com/andrasbeni/pulsar/commit/a7393d0affd4f62ea64de994380d38f6938eca81
> .
> Please note, it was not intended for a public audience and is full of
> unnecessary log messages, has a fixed number of buckets for all namespaces
> (so breaks compatibility) and has not been tested with unit tests. But I
> hope it helps get my goals across.
>
> Best regards,
> Andras
>
> On Mon, May 2, 2022 at 12:09 PM Enrico Olivelli <eolive...@gmail.com>
> wrote:
>
> > How do we deal with Schema storage, Cursors and other usages of
> > ManagedLedger?
> >
> > Can you please clarify each case I'm which we use ManagedLedger?
> >
> > Did you try to put up a proff or concept with this proposal?
> >
> > I generally agree with this approach but it looks like we are not going
> > deep enough in the design
> >
> >
> > Enrico
> >
> > Il Lun 25 Apr 2022, 04:53 Hang Chen <chenh...@apache.org> ha scritto:
> >
> > > +1
> > >
> > > Thanks,
> > > Hang
> > >
> > > PengHui Li <peng...@apache.org> 于2022年4月25日周一 09:20写道:
> > > >
> > > > +1
> > > >
> > > > Penghui
> > > >
> > > > On Thu, Apr 21, 2022 at 9:17 PM Andras Beni
> > > > <andras.b...@streamnative.io.invalid> wrote:
> > > >
> > > > > Hi everyone,
> > > > >
> > > > > I've just created a proposal that will help scaling up the number
> of
> > > topics
> > > > > per namespace.
> > > > > It's available at https://github.com/apache/pulsar/issues/15254
> and
> > is
> > > > > copied below.
> > > > > Let me know what you think.
> > > > >
> > > > > Thanks,
> > > > > Andras
> > > > >
> > > > > Motivation
> > > > >
> > > > > Pulsar is able to manage millions of topics but the number of
> topics
> > > within
> > > > > a single namespace is limited by metadata storage.
> > > > >
> > > > > For each topic within a namespace there is a ZooKeeper node.
> Listing
> > > topics
> > > > > thus requires listing children of a node, which at around 10K
> topics
> > > hits
> > > > > the limits of ZK.
> > > > > Goal
> > > > >
> > > > > This feature will allow a larger number of topics within a
> namespace
> > by
> > > > > inserting an intermediate layer (buckets) before the topic nodes
> like
> > > > > /managed-ledgers/tenant/namespace/domain/bucket/topic.
> > > > >
> > > > > By default this feature will be switched off and would only be
> > enabled
> > > on a
> > > > > per namespace basis at the creation of namespaces by setting a
> > policy.
> > > This
> > > > > eliminates the need for migrating existing installations to this
> new
> > > > > scheme.
> > > > >
> > > > > Buckets will not have correlation with bundles.
> > > > > API Changes
> > > > >
> > > > > A new policy numberOfTopicBuckets will be added. The default
> value, 1
> > > means
> > > > > no bucketing, the current behaviour will be preserved for the
> > > namespace.
> > > > > Greater values mean topics will be stored at a path including
> > buckets.
> > > > > Users will not be able to change the number of buckets after the
> > > namespace
> > > > > is created.
> > > > > Implementation
> > > > >
> > > > > The goal is to implement this feature transparently to the user.
> > > Clients
> > > > > will continue to refer to topics by domain://tenant/namespace/topic
> > but
> > > > > pulsar will internally translate to the new persistence naming
> where
> > > > > necessary.
> > > > >
> > > > > The way metadata stores work will not be affected either.
> > > > >
> > > > > Assigning topics to buckets will be based on the topic name's hash
> > > code's
> > > > > absolute value modulo the number of buckets.
> > > > >
> > > > > The bulk of the changes necessary for this feature is to make
> > namespace
> > > > > policies available wherever persistence naming is calculated. Where
> > > listing
> > > > > of topics within a namespace is necessary, the introduction of the
> > new
> > > > > layer will add some overhead in the form of multiple requests to
> the
> > > > > metadata store. These include checking if the limit on topic number
> > per
> > > > > namespace has been reached.
> > > > > Example
> > > > >
> > > > > Let's consider the following metadata hierarchy:
> > > > >
> > > > > managed-ledgers
> > > > > \-  tenant
> > > > >     \-  namespace
> > > > >         \-  persistent
> > > > >             +-  nptopic1
> > > > >             +-  nptopic2
> > > > >             +-  ptopic-partition-0
> > > > >             +-  ptopic-partition-1
> > > > >             +-  ptopic-partition-2
> > > > >             \-  ptopic-partition-3
> > > > >
> > > > > In case of 3 buckets the same topic metadata would be laid out the
> > > > > following way:
> > > > >
> > > > > managed-ledgers
> > > > > \-  tenant
> > > > >     \-  namespace
> > > > >         \-  persistent
> > > > >             +-  $0
> > > > >             |   +-  ptopic-partition-0
> > > > >             |   \-  ptopic-partition-3
> > > > >             +-  $1
> > > > >             |   +-  nptopic2
> > > > >             |   \-  ptopic-partition-1
> > > > >             \-  $2
> > > > >                 +-  nptopic1
> > > > >                 \-  ptopic-partition-2
> > > > >
> > > > > Compatibility
> > > > >
> > > > > Existing namespaces and namespaces created without explicitly
> > > activating
> > > > > this feature will not be affected.
> > > > >
> > > > > Namespaces created with this feature activated can be used just as
> > > others.
> > > > > Rejected alternatives
> > > > >
> > > > > An alternative approach would be to introduce bucketing globally
> for
> > > all
> > > > > namespaces. This would make metadata structure more homogeneous but
> > > would
> > > > > require complex update logic to atomically move topics from their
> > > current
> > > > > path to the new place once all brokers are upgraded.
> > > > > For similar reasons changing the number of buckets is not a goal of
> > > this
> > > > > proposal.
> > > > >
> > > > > Since the proposal intends to solve a problem related to ZK, it
> could
> > > be
> > > > > handled within the ZK based metadata store implementation. This
> would
> > > have
> > > > > to introduce knowledge of what paths mean thus breaking separation
> of
> > > > > concerns.
> > > > >
> > >
> >
>

Reply via email to