StaticTaskAssignor is a TaskAssignor that statically/deterministically assigns tasks to Kafka Streams instances/shards Deterministic assignments has the following benefits over the dynamic default StickyTaskAssignor: * Since the same active and standby tasks are assigned to the same shards, monitoring and alerting is easier to reason about * PreRestore functionality is easier to implement because we know where the active and standby tasks live * Queryable State is easier to implement since the query client can deterministically know where the active and standby tasks are available to be queried
StaticTaskAssignor is a TaskAssignor that statically/deterministically assigns tasks to Kafka Streams instances/shards Deterministic assignments has the following benefits over the dynamic default StickyTaskAssignor: * Since the same active and standby tasks are assigned to the same shards, monitoring and alerting is easier to reason about * PreRestore functionality is easier to implement because we know where the active and standby tasks live * Queryable State is easier to implement since the query client can deterministically know where the active and standby tasks are available to be queried
TODO: Detect zombie shards (e.g. multiple hosts with the same instanceId) TODO: Spread out standby replicas so they fall across multiple instances (currently, when a single instance restarts, all it's tasks go to the same instance containing all it's standby replicas) TODO: Currently the "interleaving" code in StreamPartitionAssignor spreads out active and standby tasks across multiple threads. To speed up active threads, we may want to move all standby processing to it's own thread)...