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

Gavin Wang updated KAFKA-20998:
-------------------------------
    Description: 
The "classic" protocol offers two built-in assignors, "sticky" and 
"ha_assignor". So far, "streams" only offers the sticky assignor.

KIP-1071 defines both "sticky" and "ha_assignor" as options, too, and we can 
now close this gap.

However, we should amend the KIP slightly, and call the second built-in 
assignor "balanced" (instead of "ha_assignor" as currently specified on the 
KIP). The reason is, that high-availability features are delivered 
independently on the assignment strategy with "streams" protocol, ie, "warmup 
tasks" are inserted by the new refiner step, not the task assignor. Thus, the 
new assignor is not a 1:1 of the classic HA-assignor, but only need to deliver 
a different ("balanced") task assignment compare to sticky assignor.

We can start with a 1:1 translation of he existing task assignment algorithm, 
but should use JMH benchmarks, and refine as needed, similar to what we did for 
the sticky assignor. Because task assignment is running inside the GC, we need 
to ensure that the task assignor performance is good, so it doesn't put too 
much load on the broker.

The classic HA-assignor also supports rack-aware standby task assignment, which 
we should exclude in this ticket. We rather want so deliver rack-aware standby 
task assignment for both "sticky" and "balanced" assignor, and are tracking 
this in it's own sub-task.

  was:
The "classic" protocol offers two built-in assignors, "sticky" and 
"ha_assignor". So far, "streams" only offers the sticky assignor.

KIP-1017 defines both "sticky" and "ha_assignor" as options, too, and we can 
now close this gap.

However, we should amend the KIP slightly, and call the second built-in 
assignor "balanced" (instead of "ha_assignor" as currently specified on the 
KIP). The reason is, that high-availability features are delivered 
independently on the assignment strategy with "streams" protocol, ie, "warmup 
tasks" are inserted by the new refiner step, not the task assignor. Thus, the 
new assignor is not a 1:1 of the classic HA-assignor, but only need to deliver 
a different ("balanced") task assignment compare to sticky assignor.

We can start with a 1:1 translation of he existing task assignment algorithm, 
but should use JMH benchmarks, and refine as needed, similar to what we did for 
the sticky assignor. Because task assignment is running inside the GC, we need 
to ensure that the task assignor performance is good, so it doesn't put too 
much load on the broker.

The classic HA-assignor also supports rack-aware standby task assignment, which 
we should exclude in this ticket. We rather want so deliver rack-aware standby 
task assignment for both "sticky" and "balanced" assignor, and are tracking 
this in it's own sub-task.


> Add HA task assignor
> --------------------
>
>                 Key: KAFKA-20998
>                 URL: https://issues.apache.org/jira/browse/KAFKA-20998
>             Project: Kafka
>          Issue Type: Sub-task
>          Components: group-coordinator, streams
>            Reporter: Matthias J. Sax
>            Assignee: Gavin Wang
>            Priority: Major
>
> The "classic" protocol offers two built-in assignors, "sticky" and 
> "ha_assignor". So far, "streams" only offers the sticky assignor.
> KIP-1071 defines both "sticky" and "ha_assignor" as options, too, and we can 
> now close this gap.
> However, we should amend the KIP slightly, and call the second built-in 
> assignor "balanced" (instead of "ha_assignor" as currently specified on the 
> KIP). The reason is, that high-availability features are delivered 
> independently on the assignment strategy with "streams" protocol, ie, "warmup 
> tasks" are inserted by the new refiner step, not the task assignor. Thus, the 
> new assignor is not a 1:1 of the classic HA-assignor, but only need to 
> deliver a different ("balanced") task assignment compare to sticky assignor.
> We can start with a 1:1 translation of he existing task assignment algorithm, 
> but should use JMH benchmarks, and refine as needed, similar to what we did 
> for the sticky assignor. Because task assignment is running inside the GC, we 
> need to ensure that the task assignor performance is good, so it doesn't put 
> too much load on the broker.
> The classic HA-assignor also supports rack-aware standby task assignment, 
> which we should exclude in this ticket. We rather want so deliver rack-aware 
> standby task assignment for both "sticky" and "balanced" assignor, and are 
> tracking this in it's own sub-task.



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

Reply via email to