[ 
https://issues.apache.org/jira/browse/FLINK-40331?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated FLINK-40331:
-----------------------------------
    Labels: pull-request-available  (was: )

> [FLINK CDC][fluss] Add an opt-in forward routing mode for fluss sink
> --------------------------------------------------------------------
>
>                 Key: FLINK-40331
>                 URL: https://issues.apache.org/jira/browse/FLINK-40331
>             Project: Flink
>          Issue Type: Bug
>          Components: Flink CDC
>    Affects Versions: cdc-3.5.0
>            Reporter: Hongshun Wang
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: cdc-3.6.0
>
>
> h3. Description
> When synchronizing data from Fluss source to Fluss sink, the upstream and 
> downstream tables may use the same bucket layout, but the current pipeline 
> routing still repartitions data before the sink.
> For Fluss source, splits are generated per {{TableBucket}} and assigned to 
> source readers based on the bucket identity. However, after the source emits 
> CDC events, the original bucket identity is not preserved in the event. 
> Before writing to the sink, the pipeline currently routes records through the 
> generic sink partitioning logic. For Fluss sink, this means:
>  * Primary-key tables are routed by hash.
>  * Log tables without primary keys are distributed with a random component to 
> avoid sending all records to one subtask.
> As a result, data read from one upstream bucket can be scattered across 
> multiple sink subtasks. In a mirror synchronization scenario, each sink 
> writer may need to write data for all subscribed tables and buckets, making 
> each writer-side batch much smaller and less efficient.
> For example, assume a Fluss-to-Fluss mirror job subscribes to 50 tables, each 
> with 16 buckets, and the pipeline parallelism is 8. Even when the upstream 
> and downstream bucket layouts are identical, the current repartitioning makes 
> records from each source bucket fan out to sink writers instead of keeping a 
> one-to-one source-reader-to-sink-writer path. This reduces batch aggregation 
> efficiency on the sink side.
>  
> h3. Proposal
> Introduce an explicit opt-in configuration sink to force forward routing .
>  
> In the Fluss source, each split corresponds to a Fluss {{{}TableBucket{}}}, 
> and split assignment is based on {{{}TableBucket{}}}. If the pipeline uses 
> forward routing and the source/sink parallelism is identical, one source 
> subtask can forward its bucket data directly to the corresponding sink 
> subtask.
> This avoids scattering records from the same upstream bucket to all sink 
> writers and can improve sink-side batch size and write efficiency.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to