#apache-kafka #kafka-producer-api
#apache-kafka #kafka-producer-api
Вопрос:
у нас есть кластер kafka с 5 узлами и 3 хранителями зоопарка, и все темы имеют коэффициент репликации 3. В настоящее время используются клиенты Kafka и kafka (2.2.0) и версия Zookeeper (5.2.1)
Когда пара брокеров не работает, производителям не удается отправить сообщение с приведенной ниже ошибкой.
org.apache.kafka.common.errors.Исключение TimeoutException: тема testTopic отсутствует в метаданных после 120000 мс.
Клиент, похоже, пропускает обновление метаданных, сравнивая последнюю эпоху лидера
Конфигурация кластера :
--override num.network.threads=3 --override num.io.threads=8 --override default.replication.factor=3 --override auto.create.topics.enable=true --override delete.topic.enable=true --override socket.send.buffer.bytes=102400 --override socket.receive.buffer.bytes=102400 --override socket.request.max.bytes=104857600 --override num.partitions=30 --override num.recovery.threads.per.data.dir=1 --override offsets.topic.replication.factor=3 --override transaction.state.log.replication.factor=3 --override transaction.state.log.min.isr=1 --override log.retention.hours=48 --override log.segment.bytes=1073741824 --override log.retention.check.interval.ms=300000 --override zookeeper.connection.timeout.ms=6000 --override confluent.support.metrics.enable=true --override group.initial.rebalance.delay.ms=0 --override confluent.support.customer.id=anonymous
Конфигурация производителя:
acks = 1
batch.size = 8192
bootstrap.servers = []
buffer.memory = 33554432
client.dns.lookup = default
client.id = C02Z93MPLVCH
compression.type = none
connections.max.idle.ms = 540000
delivery.timeout.ms = 120000
enable.idempotence = false
interceptor.classes = []
key.serializer = class org.apache.kafka.common.serialization.StringSerializer
linger.ms = 0
max.block.ms = 120000
max.in.flight.requests.per.connection = 5
max.request.size = 1048576
metadata.max.age.ms = 300000
metric.reporters = []
metrics.num.samples = 2
metrics.recording.level = INFO
metrics.sample.window.ms = 30000
partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner
receive.buffer.bytes = 32768
reconnect.backoff.max.ms = 20000
reconnect.backoff.ms = 20000
request.timeout.ms = 300000
retries = 2
retry.backoff.ms = 500
Кто-нибудь сталкивался с такой же проблемой? — обычно мы ожидаем, что клиенты kafka будут загружать метаданные, если брокеры не работают после нескольких попыток.Нам пришлось бы перезапустить сервер, чтобы снова инициализировать соединения после ожидания в течение нескольких часов.
Это ожидаемое поведение?