SlideShare a Scribd company logo
1 of 103
Download to read offline
A. Sophie Blee-Goldman, Guozhang Wang
Bay Area Kafka Meetup, Dec. 5, 2019
The Silver Bullet for Endless Rebalances
Introduction to the Incremental Cooperative Protocol
Outline
• Review of the current eager rebalance algorithm
• Identify the known issues with common scenarios
• A new proposal: incremental cooperative rebalancing
2
3
A Short History of Consumer Groups
Topic 1
Topic 2
Partitions
Producers
Producers
Consumers
Consumers
Brokers
4
A Short History of Consumer Groups
Consumers
Consumers
fetch
fetch
1) assignment (who owns what)
2) offset (consumed up to where)
Kafka 0.8.2-
5
A Short History of Consumer Groups
Consumers
Consumers
fetch
fetch
1) assignment (who owns what)
2) offset (consumed up to where)
Kafka 0.9.0+
Group Coordinator
5
A Short History of Consumer Groups
Consumers
Consumers
fetch
fetch
1) assignment (who owns what)
2) offset (consumed up to where)
Kafka 0.9.0+
Group Coordinator
6
Consumer Rebalance Protocol
• A rebalance happens when:
• Membership change

• Member crash: failure of a consumer

• Scaling in: member leaves the group

• Scaling out: new member joins
• Partition resources change
• Topics are created or deleted

• More partitions added to topics
7
Member Crash: Failure Detection (heartbeat)
C1
C2
Group Coordinator (broker side)
7
Member Crash: Failure Detection (heartbeat)
C1
C2
Group Coordinator (broker side)
heartbeat
ok
7
Member Crash: Failure Detection (heartbeat)
C1
C2
Group Coordinator (broker side)
heartbeat heartbeat
ok ok
8
Member Crash: Failure Detection (heartbeat)
C1
C2
Group Coordinator (broker side)
heartbeat
ok
8
Member Crash: Failure Detection (heartbeat)
C1
C2
Group Coordinator (broker side)
heartbeat
ok
8
Member Crash: Failure Detection (heartbeat)
C1
C2
Group Coordinator (broker side)
heartbeat
ok
8
Member Crash: Failure Detection (heartbeat)
C1
C2
Group Coordinator (broker side)
heartbeat
ok
8
Member Crash: Failure Detection (heartbeat)
C1
C2
Group Coordinator (broker side)
session.timeout.ms
heartbeat
ok
9
Scaling In: Consumer Shutdown (leave-group)
C1
C2
Group Coordinator (broker side)
heartbeat
ok
9
Scaling In: Consumer Shutdown (leave-group)
C1
C2
Group Coordinator (broker side)
heartbeat leave-group
ok
9
Scaling In: Consumer Shutdown (leave-group)
C1
C2
Group Coordinator (broker side)
heartbeat leave-group
ok
10
Scaling Out: Consumer Startup (join-group)
C1
C2
Group Coordinator (broker side)
10
Scaling Out: Consumer Startup (join-group)
C1
C2
Group Coordinator (broker side)
C3
10
Scaling Out: Consumer Startup (join-group)
C1
C2
Group Coordinator (broker side)
C3
join-group
10
Scaling Out: Consumer Startup (join-group)
C1
C2
Group Coordinator (broker side)
C3
join-group
11
Resources Change: Re-Subscribe (join-group)
C1
C2
Group Coordinator (broker side)
C3
join-group
11
Resources Change: Re-Subscribe (join-group)
C1
C2
Group Coordinator (broker side)
C3
join-group
consumer resubscribe
11
Resources Change: Re-Subscribe (join-group)
C1
C2
Group Coordinator (broker side)
C3
join-group join-group
consumer resubscribe
11
Resources Change: Re-Subscribe (join-group)
C1
C2
Group Coordinator (broker side)
C3
join-group join-group
consumer resubscribe
12
Consumer Rebalance Protocol
• During the rebalance:
• Existing consumers re-join the group
• A single member is chosen as group leader
• leader determines partition assignment (user customizable)
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
1 2 3
4 5 6
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
1 2 3
4 5 6
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
join-group
1 2 3
4 5 6
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
join-group
1 2 3
4 5 6
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
1 2 3
4 5 6
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
1 2 3
4 5 6
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)1 2 3
4 5 6
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
sync. barrier
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
13
Consumers Re-join Group
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
rebalance.timeout.ms
sync. barrier
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
sync-group
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#assign(…)
sync-group
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#assign(…)
sync-group
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#assign(…)
sync-group
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#assign(…)
sync-group
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#assign(…)
sync-group
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#assign(…)
sync-group
#onPartitionsAssigned(1,2)

#onPartitionsAssigned(4,5)

#onPartitionsAssigned(3,6)
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#assign(…)
sync-group
#onPartitionsAssigned(1,2)

#onPartitionsAssigned(4,5)

#onPartitionsAssigned(3,6)
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
1 2
4 5
3 6
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
14
Partition Reassignment (sync-group)
re-join
join-group
select C1 as leader
#assign(…)
sync-group
#onPartitionsAssigned(1,2)

#onPartitionsAssigned(4,5)

#onPartitionsAssigned(3,6)
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
1 2
4 5
3 6
#onPartitionsRevoked(1,2,3)

#onPartitionsRevoked(4,5,6)
15
Summary of Rebalance Protocol
• ConsumerRebalanceListener
• #onPartitionsRevoked (before sending join-group)

• #onPartitionsAssigned (after receiving sync-group)
• ConsumerPartitionAssignor
• #assign (only triggered by the leader)
Built-in: {range, round-robin, sticky}; Custom: {streams, …}
16
Known Issue #1: Stop-the-world Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions) #assign(…)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
1 2 3
4 5 6
1 2
4 5
3 6
16
Known Issue #1: Stop-the-world Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions) #assign(…)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
revoked all
1 2 3
4 5 6
1 2
4 5
3 6
16
Known Issue #1: Stop-the-world Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions) #assign(…)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
revoked all re-assigned most
1 2 3
4 5 6
1 2
4 5
3 6
16
Known Issue #1: Stop-the-world Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions) #assign(…)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
revoked all re-assigned most
eager rebalance:
before rebalance revoked all the partitions,
after rebalance most of the partitions are reassigned back
1 2 3
4 5 6
1 2
4 5
3 6
17
Known Issue #2: Back-and-forth Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
leave-group
#assign(…) #onPartitionsRevoked(all partitions) #assign(…)
1 2
4 5
3 6
1 2
4 5
3 6
17
Known Issue #2: Back-and-forth Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
leave-group
#assign(…) #onPartitionsRevoked(all partitions) #assign(…)
1 2
4 5
3 6
1 2
4 5
3 6
17
Known Issue #2: Back-and-forth Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
leave-group
#assign(…) #onPartitionsRevoked(all partitions) #assign(…)
1 2
4 5
3 6
1 2
4 5
3 6
17
Known Issue #2: Back-and-forth Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
leave-group
#assign(…) #onPartitionsRevoked(all partitions) #assign(…)
bounce a consumer
1 2
4 5
3 6
1 2
4 5
3 6
17
Known Issue #2: Back-and-forth Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
leave-group
#assign(…) #onPartitionsRevoked(all partitions) #assign(…)
bounce a consumer
1 2
4 5
3 6
1 2
4 5
3 6
17
Known Issue #2: Back-and-forth Rebalance
join-group
re-
join-group
#onPartitionsRevoked(all partitions)
sync-
#onPartitionsAssigned(given partitions)
re-join
sync-group
C1
C2
Group Coordinator(broker side)
C3
leave-group
#assign(…) #onPartitionsRevoked(all partitions) #assign(…)
unnecessary rebalances: 



first one to move partitions from C3 to C1/C2,

second one to move them back to C3 from C1/C2
bounce a consumer
1 2
4 5
3 6
1 2
4 5
3 6
18
Let’s Revisit: 



When to trigger a rebalance, 


Who to participate in a rebalance, 


What to reassign during rebalance
19
Rebalance Protocols
When Who What
Current Protocol
(Eager)
Immediately Everyone Everything
20
When Who What
Current Protocol
(Eager)
Immediately Everyone Everything
Proposed Protocol
(Cooperative)
After determining what
needs to be reassigned
Only those whose
assignment will be
changed
Only those partitions
who change ownership
Rebalance Protocols
21
Rebalance Protocols
• [KIP-415] : incremental rebalance in Connect(2.3+)

• [KIP-345] : static membership in Consumer / Streams(2.3+)

• [KIP-429] : incremental rebalance in Consumer / Streams(2.4+)
21
Rebalance Protocols
• [KIP-415] : incremental rebalance in Connect(2.3+)

• [KIP-345] : static membership in Consumer / Streams(2.3+)

• [KIP-429] : incremental rebalance in Consumer / Streams(2.4+)
22
Incremental Assignment in the Consumer
22
Incremental Assignment in the Consumer
owned-partitions
22
Incremental Assignment in the Consumer
owned-partitions assigned-partitions
22
Incremental Assignment in the Consumer
owned-partitions assigned-partitions
unchanged-partitions
22
Incremental Assignment in the Consumer
owned-partitions assigned-partitions
partitions-to-be-revoked
unchanged-partitions
22
Incremental Assignment in the Consumer
owned-partitions assigned-partitions
partitions-to-be-revoked
unchanged-partitions
#onPartitionsRevoked
22
Incremental Assignment in the Consumer
owned-partitions assigned-partitions
partitions-to-be-revoked partitions-to-be-added
unchanged-partitions
#onPartitionsRevoked
22
Incremental Assignment in the Consumer
owned-partitions assigned-partitions
partitions-to-be-revoked partitions-to-be-added
unchanged-partitions
#onPartitionsRevoked #onPartitionsAssigned
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
1 2 3
4 5 6
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
1 2 3
4 5 6
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
1 2 3
4 5 6
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: { }
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
1 2 3
4 5 6
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: { }
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
1 2 3
4 5 6
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: { }
#assign(…)
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: {3*, 6*} -> { }
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
1 2 3
4 5 6
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: { }
sync-group
#assign(…)
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: {3*, 6*} -> { }
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
1 2 3
4 5 6
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: { }
sync-group
#assign(…)
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: {3*, 6*} -> { }
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
1 2 3
4 5 6
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: { }
sync-group
#assign(…)
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: {3*, 6*} -> { }
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
1 2
4 5
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: { }
sync-group
#assign(…)
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: {3*, 6*} -> { }
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
23
Cooperative Protocol
C1
C2
Group Coordinator (broker side)
C3
join-group
re-join
join-group
1 2
4 5
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: { }
sync-group
#assign(…)
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: {3*, 6*} -> { }
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
24
Cooperative Protocol
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
1 2
4 5
C1
C2
C3
24
Cooperative Protocol
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
1 2
4 5
C1
C2
C3
24
Cooperative Protocol
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
1 2
4 5
C1
C2
C3
24
Cooperative Protocol
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
#assign(…)
1 2
4 5
C1
C2
C3
24
Cooperative Protocol
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
#assign(…)
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}1 2
4 5
C1
C2
C3
24
Cooperative Protocol
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
sync-group
#assign(…)
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}1 2
4 5
C1
C2
C3
24
Cooperative Protocol
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
sync-group
#assign(…)
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}1 2
4 5
C1
C2
C3
24
Cooperative Protocol
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
sync-group
#assign(…)
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
#onPartitionsAssigned(3,6)
1 2
4 5
3 6
C1
C2
C3
24
Cooperative Protocol
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2}
C2: {4, 5}
C3: { }
sync-group
#assign(…)
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
#onPartitionsAssigned(3,6)
1 2
4 5
3 6
C1
C2
C3
25
Cooperative Rebalance
C1
C2
C3
join-group
re-
join-group
1 2 3
4 5 6
C1: {1, 2, 3} C2: {4, 5, 6}
sync-group
#assign(…)
C1: {1, 2, 3}
C2: {4, 5, 6}
C3: {3*, 6*} -> {}
#onPartitionsRevoked(3)

#onPartitionsRevoked(6)
join-group
C1: {1, 2} C2: {4, 5}
sync-group
#assign(…)
C1: {1, 2}
C2: {4, 5}
C3: {3, 6}
#onPartitionsAssigned(3,6)
1 2
4 5
3 6
Group Coordinator (broker side)
• Trade-off: more rebalances, but way cheaper
• Works better with a “sticky” assignor: fewer partitions to migrate
• Consumers can continue to fetch during a rebalance event (2.5+)
26
Benchmark Results
• 10 streams instances rolling bounce, measuring process rate
• …and pause time: 3522 ms v.s. 37138 ms
26
Benchmark Results
• 10 streams instances rolling bounce, measuring process rate
• …and pause time: 3522 ms v.s. 37138 ms
26
Benchmark Results
• 10 streams instances rolling bounce, measuring process rate
• …and pause time: 3522 ms v.s. 37138 ms
27
Augmented Assignor Interface
ConsumerPartitionAssignor
• #assign (subscription now includes “owned-partitions”)
• #supportedProtocols (eager and/or cooperative)
Built-in: {range, round-robin, sticky : eager};



{sticky-cooperative : cooperative}



Custom: {streams, … : eager and cooperative}
28
Augmented Listener Interface
ConsumerRebalanceListener
• #onPartitionsRevoked (will not be triggered if there is nothing to revoke)

• #onPartitionsAssigned (triggered at completion of rebalance, regardless of newly added partitions)
• # #onPartitionsLost (triggered instead of onPartitionRevoked when a member falls out of group)
29
Switch to Cooperative Rebalancing
In Consumer
• first rolling bounce: add “sticky-cooperative” / “my-cooperative” to [partition.assignment.strategy]
• second rolling bounce: remove old assignor (e.g.,“range”) from the config
In Streams
• first rolling bounce: set [upgrade.from = old version (“2.3”)]
• second rolling bounce: remove [upgrade.from] config
Take-aways
• We have extended the rebalance protocol to enable
smarter assignment (when, who, and what)
30
Take-aways
• We have extended the rebalance protocol to enable
smarter assignment (when, who, and what)
• No more stop-the-world rebalances with the incremental
cooperative protocol!
31
THANKS!
Guozhang Wang | guozhang@confluent.io | @guozhangwang
32
A. Sophie Blee-Goldman | sophie@confluent.io | @ableegoldman

More Related Content

What's hot

Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
confluent
 

What's hot (20)

Uber: Kafka Consumer Proxy
Uber: Kafka Consumer ProxyUber: Kafka Consumer Proxy
Uber: Kafka Consumer Proxy
 
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
Kafka Cluster Federation at Uber (Yupeng Fui & Xiaoman Dong, Uber) Kafka Summ...
 
Routed Provider Networks on OpenStack
Routed Provider Networks on OpenStack Routed Provider Networks on OpenStack
Routed Provider Networks on OpenStack
 
Troubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issuesTroubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issues
 
Hardening Kafka Replication
Hardening Kafka Replication Hardening Kafka Replication
Hardening Kafka Replication
 
2. Data Preprocessing.pdf
2. Data Preprocessing.pdf2. Data Preprocessing.pdf
2. Data Preprocessing.pdf
 
From neural networks to deep learning
From neural networks to deep learningFrom neural networks to deep learning
From neural networks to deep learning
 
Please Upgrade Apache Kafka. Now. (Gwen Shapira, Confluent) Kafka Summit SF 2019
Please Upgrade Apache Kafka. Now. (Gwen Shapira, Confluent) Kafka Summit SF 2019Please Upgrade Apache Kafka. Now. (Gwen Shapira, Confluent) Kafka Summit SF 2019
Please Upgrade Apache Kafka. Now. (Gwen Shapira, Confluent) Kafka Summit SF 2019
 
Know Your Topics – A Deep Dive on Topic IDs with KIP-516 with Justine Olshan ...
Know Your Topics – A Deep Dive on Topic IDs with KIP-516 with Justine Olshan ...Know Your Topics – A Deep Dive on Topic IDs with KIP-516 with Justine Olshan ...
Know Your Topics – A Deep Dive on Topic IDs with KIP-516 with Justine Olshan ...
 
How Criteo is managing one of the largest Kafka Infrastructure in Europe
How Criteo is managing one of the largest Kafka Infrastructure in EuropeHow Criteo is managing one of the largest Kafka Infrastructure in Europe
How Criteo is managing one of the largest Kafka Infrastructure in Europe
 
Intelligent Auto-scaling of Kafka Consumers with Workload Prediction | Ming S...
Intelligent Auto-scaling of Kafka Consumers with Workload Prediction | Ming S...Intelligent Auto-scaling of Kafka Consumers with Workload Prediction | Ming S...
Intelligent Auto-scaling of Kafka Consumers with Workload Prediction | Ming S...
 
9534715
95347159534715
9534715
 
Scylla on Kubernetes: Introducing the Scylla Operator
Scylla on Kubernetes: Introducing the Scylla OperatorScylla on Kubernetes: Introducing the Scylla Operator
Scylla on Kubernetes: Introducing the Scylla Operator
 
Automating the Entire PostgreSQL Lifecycle
Automating the Entire PostgreSQL Lifecycle Automating the Entire PostgreSQL Lifecycle
Automating the Entire PostgreSQL Lifecycle
 
Adding a BOLT pass
Adding a BOLT passAdding a BOLT pass
Adding a BOLT pass
 
Disaster Recovery and High Availability with Kafka, SRM and MM2
Disaster Recovery and High Availability with Kafka, SRM and MM2Disaster Recovery and High Availability with Kafka, SRM and MM2
Disaster Recovery and High Availability with Kafka, SRM and MM2
 
A Deep Dive into Kafka Controller
A Deep Dive into Kafka ControllerA Deep Dive into Kafka Controller
A Deep Dive into Kafka Controller
 
Streaming Millions of Contact Center Interactions in (Near) Real-Time with Pu...
Streaming Millions of Contact Center Interactions in (Near) Real-Time with Pu...Streaming Millions of Contact Center Interactions in (Near) Real-Time with Pu...
Streaming Millions of Contact Center Interactions in (Near) Real-Time with Pu...
 
Tips & Tricks for Apache Kafka®
Tips & Tricks for Apache Kafka®Tips & Tricks for Apache Kafka®
Tips & Tricks for Apache Kafka®
 
Reliable Event Delivery in Apache Kafka Based on Retry Policy and Dead Letter...
Reliable Event Delivery in Apache Kafka Based on Retry Policy and Dead Letter...Reliable Event Delivery in Apache Kafka Based on Retry Policy and Dead Letter...
Reliable Event Delivery in Apache Kafka Based on Retry Policy and Dead Letter...
 

Similar to The Silver Bullet for Endless Rebalancing

The Next Generation of the Consumer Rebalance Protocol with David Jacot
The Next Generation of the Consumer Rebalance Protocol with David JacotThe Next Generation of the Consumer Rebalance Protocol with David Jacot
The Next Generation of the Consumer Rebalance Protocol with David Jacot
HostedbyConfluent
 
The Next Generation of the Consumer Rebalance Protocol With David Jacot | Cur...
The Next Generation of the Consumer Rebalance Protocol With David Jacot | Cur...The Next Generation of the Consumer Rebalance Protocol With David Jacot | Cur...
The Next Generation of the Consumer Rebalance Protocol With David Jacot | Cur...
HostedbyConfluent
 
Why stop the world when you can change it? Design and implementation of Incre...
Why stop the world when you can change it? Design and implementation of Incre...Why stop the world when you can change it? Design and implementation of Incre...
Why stop the world when you can change it? Design and implementation of Incre...
confluent
 
Optimizing the Catalyst Optimizer for Complex Plans
Optimizing the Catalyst Optimizer for Complex PlansOptimizing the Catalyst Optimizer for Complex Plans
Optimizing the Catalyst Optimizer for Complex Plans
Databricks
 
Minimum viable product_to_deliver_business_value_v0.4
Minimum viable product_to_deliver_business_value_v0.4Minimum viable product_to_deliver_business_value_v0.4
Minimum viable product_to_deliver_business_value_v0.4
Archana Joshi
 
Revitalizing your boring Retrospectives_3.0final
Revitalizing your boring Retrospectives_3.0finalRevitalizing your boring Retrospectives_3.0final
Revitalizing your boring Retrospectives_3.0final
Terri Spencer
 
553216066-Engine-Life-Optimization-Final-Document-Version-00-8-9-21.pdf
553216066-Engine-Life-Optimization-Final-Document-Version-00-8-9-21.pdf553216066-Engine-Life-Optimization-Final-Document-Version-00-8-9-21.pdf
553216066-Engine-Life-Optimization-Final-Document-Version-00-8-9-21.pdf
JesusDGutierrezG
 

Similar to The Silver Bullet for Endless Rebalancing (20)

The Next Generation of the Consumer Rebalance Protocol with David Jacot
The Next Generation of the Consumer Rebalance Protocol with David JacotThe Next Generation of the Consumer Rebalance Protocol with David Jacot
The Next Generation of the Consumer Rebalance Protocol with David Jacot
 
Getting to Ready Unhiding Work with a Backlog Refinement Board
Getting to Ready Unhiding Work with a Backlog Refinement BoardGetting to Ready Unhiding Work with a Backlog Refinement Board
Getting to Ready Unhiding Work with a Backlog Refinement Board
 
The Next Generation of the Consumer Rebalance Protocol With David Jacot | Cur...
The Next Generation of the Consumer Rebalance Protocol With David Jacot | Cur...The Next Generation of the Consumer Rebalance Protocol With David Jacot | Cur...
The Next Generation of the Consumer Rebalance Protocol With David Jacot | Cur...
 
Rawsthorne scrum patterns_agiledc_v2d
Rawsthorne scrum patterns_agiledc_v2dRawsthorne scrum patterns_agiledc_v2d
Rawsthorne scrum patterns_agiledc_v2d
 
Why stop the world when you can change it? Design and implementation of Incre...
Why stop the world when you can change it? Design and implementation of Incre...Why stop the world when you can change it? Design and implementation of Incre...
Why stop the world when you can change it? Design and implementation of Incre...
 
Citi Tech Talk Disaster Recovery Solutions Deep Dive
Citi Tech Talk  Disaster Recovery Solutions Deep DiveCiti Tech Talk  Disaster Recovery Solutions Deep Dive
Citi Tech Talk Disaster Recovery Solutions Deep Dive
 
Are we there yet?
Are we there yet?Are we there yet?
Are we there yet?
 
Advanced Git: Functionality and Features
Advanced Git: Functionality and FeaturesAdvanced Git: Functionality and Features
Advanced Git: Functionality and Features
 
Restoring Restoration's Reputation in Kafka Streams with Bruno Cadonna & Luca...
Restoring Restoration's Reputation in Kafka Streams with Bruno Cadonna & Luca...Restoring Restoration's Reputation in Kafka Streams with Bruno Cadonna & Luca...
Restoring Restoration's Reputation in Kafka Streams with Bruno Cadonna & Luca...
 
Getting the Balance Right with Kafka Connect
Getting the Balance Right with Kafka ConnectGetting the Balance Right with Kafka Connect
Getting the Balance Right with Kafka Connect
 
Real World Git Workflows - EclipseCon Europe 2013
Real World Git Workflows - EclipseCon Europe 2013Real World Git Workflows - EclipseCon Europe 2013
Real World Git Workflows - EclipseCon Europe 2013
 
Source Code Management Slides
Source Code Management SlidesSource Code Management Slides
Source Code Management Slides
 
UiPath REFramework Modify the Framework -Add States, Remove States - Develope...
UiPath REFramework Modify the Framework -Add States, Remove States - Develope...UiPath REFramework Modify the Framework -Add States, Remove States - Develope...
UiPath REFramework Modify the Framework -Add States, Remove States - Develope...
 
Optimizing the Catalyst Optimizer for Complex Plans
Optimizing the Catalyst Optimizer for Complex PlansOptimizing the Catalyst Optimizer for Complex Plans
Optimizing the Catalyst Optimizer for Complex Plans
 
Minimum viable product_to_deliver_business_value_v0.4
Minimum viable product_to_deliver_business_value_v0.4Minimum viable product_to_deliver_business_value_v0.4
Minimum viable product_to_deliver_business_value_v0.4
 
Revitalizing your boring Retrospectives_3.0final
Revitalizing your boring Retrospectives_3.0finalRevitalizing your boring Retrospectives_3.0final
Revitalizing your boring Retrospectives_3.0final
 
Kafka Client-Broker Interactions – What You Don’t See With Tom Bentley | Curr...
Kafka Client-Broker Interactions – What You Don’t See With Tom Bentley | Curr...Kafka Client-Broker Interactions – What You Don’t See With Tom Bentley | Curr...
Kafka Client-Broker Interactions – What You Don’t See With Tom Bentley | Curr...
 
Design Systems + Git = Success - Clarity Conference 2018
Design Systems + Git  = Success - Clarity Conference 2018Design Systems + Git  = Success - Clarity Conference 2018
Design Systems + Git = Success - Clarity Conference 2018
 
553216066-Engine-Life-Optimization-Final-Document-Version-00-8-9-21.pdf
553216066-Engine-Life-Optimization-Final-Document-Version-00-8-9-21.pdf553216066-Engine-Life-Optimization-Final-Document-Version-00-8-9-21.pdf
553216066-Engine-Life-Optimization-Final-Document-Version-00-8-9-21.pdf
 
KEA20 - Susanne Bartel - What is "your Kanban"?
KEA20 - Susanne Bartel - What is "your Kanban"?KEA20 - Susanne Bartel - What is "your Kanban"?
KEA20 - Susanne Bartel - What is "your Kanban"?
 

More from confluent

More from confluent (20)

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flink
 
Unlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insightsUnlocking the Power of IoT: A comprehensive approach to real-time insights
Unlocking the Power of IoT: A comprehensive approach to real-time insights
 
Workshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con FlinkWorkshop híbrido: Stream Processing con Flink
Workshop híbrido: Stream Processing con Flink
 
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
Industry 4.0: Building the Unified Namespace with Confluent, HiveMQ and Spark...
 
AWS Immersion Day Mapfre - Confluent
AWS Immersion Day Mapfre   -   ConfluentAWS Immersion Day Mapfre   -   Confluent
AWS Immersion Day Mapfre - Confluent
 
Eventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalkEventos y Microservicios - Santander TechTalk
Eventos y Microservicios - Santander TechTalk
 
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent CloudQ&A with Confluent Experts: Navigating Networking in Confluent Cloud
Q&A with Confluent Experts: Navigating Networking in Confluent Cloud
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
 
Build real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with ConfluentBuild real-time streaming data pipelines to AWS with Confluent
Build real-time streaming data pipelines to AWS with Confluent
 
Q&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service MeshQ&A with Confluent Professional Services: Confluent Service Mesh
Q&A with Confluent Professional Services: Confluent Service Mesh
 
Citi Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka MicroservicesCiti Tech Talk: Event Driven Kafka Microservices
Citi Tech Talk: Event Driven Kafka Microservices
 
Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3Confluent & GSI Webinars series - Session 3
Confluent & GSI Webinars series - Session 3
 
Citi Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging ModernizationCiti Tech Talk: Messaging Modernization
Citi Tech Talk: Messaging Modernization
 
Citi Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time dataCiti Tech Talk: Data Governance for streaming and real time data
Citi Tech Talk: Data Governance for streaming and real time data
 
Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2Confluent & GSI Webinars series: Session 2
Confluent & GSI Webinars series: Session 2
 
Data In Motion Paris 2023
Data In Motion Paris 2023Data In Motion Paris 2023
Data In Motion Paris 2023
 
Confluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with SynthesisConfluent Partner Tech Talk with Synthesis
Confluent Partner Tech Talk with Synthesis
 
The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023The Future of Application Development - API Days - Melbourne 2023
The Future of Application Development - API Days - Melbourne 2023
 
The Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data StreamsThe Playful Bond Between REST And Data Streams
The Playful Bond Between REST And Data Streams
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

The Silver Bullet for Endless Rebalancing