Можем ли мы назначить исходный порт для Kafka Producer?

#java #apache-kafka #kafka-producer-api

#java #apache-kafka #kafka-producer-api

Вопрос:

Я заметил, что Kafka Producer использует протокол tcp.

Есть ли какой-либо способ заранее исправить исходные порты нескольких производителей Kafka? Или, по крайней мере, есть ли какой-либо способ отследить исходный порт Kafka producer? Мне нужно отслеживать пропускную способность производителей и потребителей kafka. И необходимо настроить правила управления трафиком (tc) в соответствии с этими портами.

Комментарии:

1. Я не думаю, что это возможно, просто используя простую конфигурацию, хотя это функция, о которой люди продолжают просить. Обычное предложение — добавить обратный вызов соединения ( docs.confluent.io/current/clients/librdkafka /… ), а затем вызвать setsockopt() сокет подключения. Хотя в принципе это должно работать, признаюсь, я не пробовал.

2. Есть ли какой-либо способ отследить исходный порт Kafka producer? Мне нужно отслеживать пропускную способность производителей и потребителей kafka.

3. Использовать netstat ?

4. Я имею в виду, если у меня работают десятки производителей, могу ли я отслеживать, какой производитель использует определенный порт и его пропускную способность? Я использовал iftop, который показывает, что соединения производителей потребляют очень неоднородную пропускную способность, с разницей, например, от 2 Мбит / с до 1 Кбит / с.

5. Извините, я не знаю, как справиться с этой ситуацией. На сетевом уровне все производители будут выглядеть одинаково.

Ответ №1:

Производители не открывают входящие сокеты, поэтому нет привязки к «исходному порту».

Единственная информация о сети, которую вы должны предоставить, это bootstrap.servers

Комментарии:

1. Есть ли какой-либо способ отследить исходный порт Kafka producer? Мне нужно отслеживать пропускную способность производителей и потребителей kafka.

2. @Onecricket — Это не (я думаю) о входящих сокетах. Речь идет о настройке исходного IP-адреса и порта для исходящего сокета. Это законная операция, но та, которую клиент Kafka (насколько я знаю) не предоставляет пользователям.

3. Точно. Задайте адрес сокета исходящего сокета.

4. @Ahmad Как уже упоминалось, bootstrap.servers это единственная сетевая информация, которую вы собираетесь получить. Если вы хотите проверить TCP-трафик на стороне сервера, вы можете добавить идентификатор клиента к каждому производителю, а затем выполнить дополнительную проверку пакетов, чтобы узнать, кто что отправил, в противном случае производители Kafka предоставляют метрики JMX для просмотра большого количества отправляемых данных