lkokhreidze edited a comment on pull request #10851:
URL: https://github.com/apache/kafka/pull/10851#issuecomment-905514160


   The general thought on the implementation. 
   As of now, we choose concrete `StandbyTaskAssignor` implementation based on 
passed `AssignmentConfigs` value.
   Instead, an alternative approach would be to have a chained standby task 
assignment based on multiple implementations. For instance, when have required 
client tag configuration is present, we can try to assign the standby tasks 
based on `List.of(new ClientTagAwareStandbyTaskAssignor(), new 
LeastLoadedClientStandbyTaskAssignor())`. This way, 
`ClientTagAwareStandbyTaskAssignor` can try to distribute the standby tasks 
based on tags dimensions. If there are no more client tag dimensions available, 
and we still have `any(tasksToRemainingStandbys) > 0`, the next implementation 
in the chain (in this case `LeastLoadedClientStandbyTaskAssignor`) will be 
called. With this, `LeastLoadedClientStandbyTaskAssignor` can default to 
assigning the remaining standbys to the least loaded clients. The benefit of 
this approach is that, right now, `ClientTagAwareStandbyTaskAssignor` does both 
assignments based on available dimensions and fallback to the least loaded if 
there are no enough tag dimensions
 . Current implementation leads to more complex code. While with the approach 
above, we can clearly separate the implementations without duplication (there's 
no code duplication, rather "logic" duplication).
   For now, I've chosen to go with the simplest approach - having two 
independent implementations and selecting an appropriate one based on passed 
`AssignmentConfigs.` Still, I wanted to share this idea here, just in case. 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to