[
https://issues.apache.org/jira/browse/KAFKA-4969?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16959169#comment-16959169
]
Dallas Wrege commented on KAFKA-4969:
-------------------------------------
Bump. I would love to see this issue back in consideration.
We had exactly the same experience as [~mjsax], and a simple search of this
Jira brought me straight here.
Because of re-keying, our topology is broken up into one "heavy" task and three
"stateless" tasks. I ended up in situations where some clients are assigned
only heavy tasks and others only stateless tasks - all were unbalanced at the
least. We worked around the problem by splitting the stateless parts of the
topology into separate Stream Processors, but using a workaround is unfortunate.
The straightforward implementation that [~bbejeck] proposes above would have
worked fine for us - ensuring an even distribution based on topicGroupId.
> State-store workload-aware StreamsPartitionAssignor
> ---------------------------------------------------
>
> Key: KAFKA-4969
> URL: https://issues.apache.org/jira/browse/KAFKA-4969
> Project: Kafka
> Issue Type: Sub-task
> Components: streams
> Reporter: Matthias J. Sax
> Assignee: Bill Bejeck
> Priority: Major
> Fix For: 1.1.0
>
>
> Currently, {{StreamPartitionsAssigner}} does not distinguish different
> "types" of tasks. For example, task can be stateless of have one or multiple
> stores.
> This can lead to an suboptimal task placement: assume there are 2 stateless
> and 2 stateful tasks and the app is running with 2 instances. To share the
> "store load" it would be good to place one stateless and one stateful task
> per instance. Right now, there is no guarantee about this, and it can happen,
> that one instance processed both stateless tasks while the other processes
> both stateful tasks.
> We should improve {{StreamPartitionAssignor}} and introduce "task types"
> including a cost model for task placement. We should consider the following
> parameters:
> - number of stores
> - number of sources/sinks
> - number of processors
> - regular task vs standby task
> - in the case of standby tasks, which tasks have progressed the most with
> respect to restoration
> This improvement should be backed by a design document in the project wiki
> (no KIP required though) as it's a fairly complex change.
>
> There have been some additional discussions around task assignment on a
> related PR https://github.com/apache/kafka/pull/5390
--
This message was sent by Atlassian Jira
(v8.3.4#803005)