Я проводил некоторые тесты производительности с кластером kafka для моего проекта. У меня есть вопрос, касающийся отправки вызова и свойства «acks» производителя. Я заметил ниже номера с ниже вызова вызова. Это простой пожар и забыть вызов.
producer.send(record); // fire and forget call
В теме 5 разделов, и ниже я вижу результаты с разными значениями подтверждения и коэффициентом репликации. Кластер kafka имеет 5 узлов, работающих со значениями по умолчанию и использующих локальный диск
acks Replication factor=1 Replication factor=3
0 1330k msgs/sec 1260k msgs/sec
1 1220k msgs/sec 1200k msgs/sec
-1(all) 1220k msgs/sec 325k msgs/sec
Как видно, когда значение acks меняется с 0 на все, пропускная способность производителя уменьшается. Чего я не могу понять, так это того, что если отправитель вызова отправителя является порождающим и забывающим по своей природе (см. Выше) и производитель не ожидает каких-либо подтверждений, то почему пропускная способность производителя падает при переходе к более сильным гарантиям подтверждения?
Буду очень признателен за понимание того, как Acks и производитель отправляют вызовы внутри компании в Kakfa.
P.S. Я спрашивал об этом в списке рассылки пользователей kafka, но не получил ответа, поэтому спрашивал об этом на SO.