Hi Matyas,

I also have another question.


This FLIP-515 seems based on FLIP-246 and then I read FLIP-246. It seems
that KafkaMetadataService is a key concept in the FLIP.

 In this FLIP-515 and FLIP-246, KafkaMetadataServiceImpl is mentioned ,but
I didn't found it in flink-connector-kafka repo while I just saw a
SingleClusterTopicMetadataService which does nothing different than
before.Thus, it is hard for me to understand the overall flow.


*What's the plan for KafkaMetadataServiceImpl? now this code is just a toy
which cannot be used in production?*


What more, the source is updated with MetadataUpdateEvent. How is it going
in Sink? I really hope you can draw a diagram like what FLIP-246 does.



Best

hongshun

On Thu, Apr 3, 2025 at 1:54 PM Hongshun Wang <loserwang1...@gmail.com>
wrote:

> Hi Matyas,
>
> Sorry for the late reply. Dynamic Kafka Source has been introduced for a
> long time, and it is a little confusing for developers like me
> that KafkaDynamicSource and DynamicKafkaSource have the same kafka
> connector repo for different things.
> Now DynamicKafkaSink will be introduced again. I wonder:
> 1.  Is there any plan to merge this code into one class?
> 2. Is there any plan to expose them to SQL?
>
> Best
> Hongshun
>
> On Wed, Mar 26, 2025 at 2:48 PM Arvid Heise <ahe...@confluent.io.invalid>
> wrote:
>
>> Hi Matyas,
>>
>> thanks for clarifying. The design LGTM.
>>
>> Based on your description, I'd phrase the state management a bit
>> differently:
>> * The source of truth is and always will be the MDS.
>> * The response is cached/replicated in Flink state to bridge MDS downtime.
>> * Since MDS is queried periodically, state is reconsolidated async to
>> reflect the latest changes.
>>
>> My main confusion came from the fact that there are seemingly two
>> sources of truth in the document. I take that the writer will never
>> update the MDS but the MDS will update the writer.
>>
>> Best,
>>
>> Arvid
>>
>> On Mon, Mar 24, 2025 at 9:22 PM Őrhidi Mátyás <matyas.orh...@gmail.com>
>> wrote:
>> >
>> > Hi Arvin,
>> >
>> > Thank you for taking time to look at this proposal.
>> >
>> > The concept of KafkaMetadataService is not new, it has been introduced
>> with
>> > Dynamic Kafka Source already:
>> >
>> https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/dynamic-kafka/#kafka-metadata-service
>> >
>> > This is an external component often hosted by Kafka infra teams (often
>> as a
>> > REST API). In essence, the Kafka Metadata Service (MDS) removes the
>> burden
>> > of managing Kafka connection details and infrastructure changes from the
>> > Flink developer.
>> >
>> > - *No Hardcoding:* Instead of hardcoding Kafka broker addresses, topic
>> > names, and other details directly into your Flink code, you can fetch
>> them
>> > dynamically from the MDS.
>> > - *Dynamic Changes:* If the Kafka cluster changes (e.g., a broker is
>> added
>> > or removed, a topic is moved), the MDS reflects these changes. Your
>> Flink
>> > application, using the MDS, can automatically adapt without manual
>> > intervention or redeployment.
>> > - *Environment Agnostic:* You can easily switch between development,
>> > testing, and production environments because the MDS provides the
>> correct
>> > Kafka details for each environment.  Your code doesn't need
>> > environment-specific configuration.
>> > - *Easier Topic Management:* The MDS helps you discover available topics
>> > and streams.  You can find the right topic for your data without
>> needing to
>> > know the exact Kafka cluster details.  You use a logical "stream ID,"
>> and
>> > the MDS tells you the corresponding Kafka topic(s).
>> >
>> > Flink state becomes the "source of truth" after fetching this metadata
>> from
>> > the MDS, the initial source of truth is the MDS. The planned
>> > DynamicKafkaWriter can cache and use Flink's state management to store
>> the
>> > mapping between logical streams and physical Kafka clusters/topics. The
>> > writer uses a background thread and a reconciliation process to
>> dynamically
>> > update this state based on information from the MDS. This state is
>> > checkpointed for fault tolerance and becomes the "source of truth." when
>> > recovering its internal state.
>> >
>> > I hope this clarifies. Will fix the copy paste errors soon.
>> >
>> > Cheers,
>> > Matyas
>> >
>> >
>> > On Wed, Mar 19, 2025 at 8:13 AM Arvid Heise <ar...@apache.org> wrote:
>> >
>> > > Hi Matyas,
>> > >
>> > > could you please provide more details on the KafkaMetadataService?
>> > > Where does it live? How does it work? How does "Metadata state will be
>> > > stored in Flink state as the source of truth for the Flink job" work?
>> > >
>> > > Also nit: the test plan contains copy&paste errors.
>> > >
>> > > Best,
>> > >
>> > > Arvid
>> > >
>> > > On Thu, Mar 13, 2025 at 10:04 PM Őrhidi Mátyás <
>> matyas.orh...@gmail.com>
>> > > wrote:
>> > > >
>> > > > Hi devs,
>> > > >
>> > > > I'd like to start a discussion on FLIP-515: Dynamic Kafka Sink [1].
>> This
>> > > is
>> > > > an addition to the existing Dynamic Kafka Source [2] to make the
>> > > > functionality complete.
>> > > >
>> > > > Feel free to share your thoughts and suggestions to make this
>> feature
>> > > > better.
>> > > >
>> > > > + Mason Chen
>> > > >
>> > > > Thanks,
>> > > > Matyas
>> > > >
>> > > > [1]
>> > > >
>> > >
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-515%3A+Dynamic+Kafka+Sink
>> > > >
>> > > > [2]
>> > > >
>> > >
>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=217389320
>> > >
>>
>

Reply via email to