Hi Joe,

I agree there is a risk in adding more interdependencies between brokers. I
will point out that we have already accepted this risk with the
implementation of PIP 39, which propagates namespace policy changes to
other brokers using messages sent to a system topic. However, that doesn't
necessarily mean we should build more interdependencies between brokers.

Here is the link to PIP 39:
https://github.com/apache/pulsar/wiki/PIP-39%3A-Namespace-Change-Events.

I will look into the implementation of PIP 39 to better understand its
design, as I think it will likely influence this feature's design.

Thanks,
Michael

On Wed, Apr 21, 2021 at 5:50 PM Joe F <joefranc...@gmail.com> wrote:

> I would be very careful about implementing  such a feature, because of
> introducing  undesirable interdependencies. Broker processes only talk to
> the metadata store or data store. This keeps brokers isolated from each
> other - one broker is not dependent on the functioning of another broker.
>
> A broker publishing to a topic hosted on another broker (which for eg: is
> serving "system topic"),  sets up an undesirable dependency,  which reduces
> total system resiliency and availability for the cluster. These are better
> implemented as notifications off the metadata changes.
>
> Good feature, but needs careful thought to do it right
> Joe
>
> On Wed, Apr 21, 2021 at 4:03 PM Michael Marshall <mikemars...@gmail.com>
> wrote:
>
> > Thanks for your response, PengHui.
> >
> > I think this feature would be useful to end users for cluster management,
> > which is why I want to contribute a first class feature instead of
> writing
> > my own plugin that would add little value to the community.
> >
> > > With the broker interceptor you can intercept all the REST API request
> > and response, Pulsar commands between the broker and clients.
> >
> > Based on looking through the interceptor trait, I don't see a way to
> > trigger events based on auto created/deleted topics. For example, when a
> > producer connects to a broker for a nonexistent topic (assuming auto
> topic
> > creation is allowed), a managed ledger, and thus a topic, is created
> > without ever interacting with that interceptor trait. The same appears to
> > be true for garbage collected topics. I think we'll need more than this
> > interceptor to properly capture all cases where topics are created or
> > deleted.
> >
> > Regarding my reference to potential further work, it does appear that low
> > level auditing of connections and pulsar commands could be covered by the
> > interceptor. However, it would still be on the end user to implement such
> > functionality.
> >
> > Thanks,
> > Michael
> >
> >
> > On Wed, Apr 21, 2021 at 3:51 AM PengHui Li <codelipeng...@gmail.com>
> > wrote:
> >
> > > Hi Michael,
> > >
> > > Currently, Pulsar supports a pluginable Broker Interceptor, you can
> find
> > > it here
> > >
> >
> https://github.com/apache/pulsar/blob/6704f12104219611164aa2bb5bbdfc929613f1bf/pulsar-broker/src/main/java/org/apache/pulsar/broker/intercept/BrokerInterceptor.java
> > >
> > > With the broker interceptor you can intercept all the REST API request
> > and
> > > response, Pulsar commands between the broker and clients.
> > > This can be used to audit the system events.
> > >
> > > Thanks,
> > > Penghui
> > > On Apr 21, 2021, 5:13 AM +0800, Michael Marshall <
> mikemars...@gmail.com
> > >,
> > > wrote:
> > > > Hello all,
> > > >
> > > > I would like to propose adding a new feature to Pulsar that will
> > require
> > > a
> > > > PIP. In addition to feedback on the proposed feature, I am looking
> for
> > > > guidance on how to go about creating the PIP. Thanks for any help you
> > can
> > > > provide.
> > > >
> > > > I would like to add an optional system topic where topic creation and
> > > topic
> > > > deletion events are published. This feature will make it easier to
> > > leverage
> > > > the auto topic creation and inactive topic deletion features by
> > > providing a
> > > > way for users to reactively discover changes to topics. The largest
> > > benefit
> > > > is that users won't need to poll for these updates with an admin
> > client.
> > > > Instead, they will get them as messages.
> > > >
> > > > I looked to see if an equivalent feature already exists, but I don't
> > see
> > > > one. For reference, the `PatternMultiTopicsConsumerImpl` currently
> > polls
> > > > for all topics in a namespace and then does set operations to compute
> > the
> > > > "new" topics to which it should subscribe. This client implementation
> > > could
> > > > possibly leverage the new feature.
> > > >
> > > > There are still details I need to work out, like how it will work for
> > > > partitioned vs unpartitioned topics and what kind of guarantees we
> have
> > > > regarding messaging semantics (I think we'll want at least once
> message
> > > > delivery here). I plan to include these details in the PIP with
> > > discussions
> > > > about trade offs for different implementations.
> > > >
> > > > Does this feature sound helpful and reasonable to others? If so, is
> the
> > > > next step to formally write a proposal in a Google Doc or to put
> > > together a
> > > > doc on the Pulsar GitHub Wiki?
> > > >
> > > > Related and/or future work to consider in this design: I can see
> adding
> > > > different system topics for these types of auditable system events.
> We
> > > > currently rely on log lines as our primary way for end users to audit
> > > > system events, e.g. a producer connecting to a broker or a
> subscription
> > > > getting created, but we could instead have topics that represent
> > streams
> > > of
> > > > these different kinds of events. A persistent topic could make these
> > > audit
> > > > events more durable and more structured which should lend themselves
> to
> > > > being more easily analyzed. Further, users could choose to turn
> on/off
> > > > these audit events, perhaps at the broker or namespace level, to fit
> > > their
> > > > own needs.
> > > >
> > > > Let me know what you think and how I should proceed.
> > > >
> > > > Regards,
> > > > Michael Marshall
> > >
> >
>

Reply via email to