Неравномерное распределение потребляемых сообщений на каждого потребителя внутри одной группы потребителей для KafkaC#

Место общения программистов C#
Ответить
Anonymous
 Неравномерное распределение потребляемых сообщений на каждого потребителя внутри одной группы потребителей для Kafka

Сообщение Anonymous »

Мне нужно получать сообщения из темы в кластере Kafka с 10 разделами, где сообщения равномерно распределяются по ним. У меня есть приложение ASP.NET с 10 фоновыми службами, где каждая служба запускает потребителя (Confluent.Kafka 2.6.1), чтобы я мог обрабатывать сообщения из каждого раздела параллельно. На данный момент я не выполняю никакой реальной обработки, поэтому это не влияет на время приема новых сообщений.
Проблема, с которой я сталкиваюсь, заключается в том, что некоторые из моих потребителей идут далеко вперед. с количеством сообщений, потребляемых из их раздела. Например, потребитель с наибольшим количеством сообщений израсходовал около 17 000 сообщений, а потребитель с наименьшим количеством сообщений — только 1500 за аналогичный промежуток времени в 3 минуты.
I Поигрался с различными настройками потребительской конфигурации, но без заметной разницы. Вот моя последняя попытка настройки:

Код: Выделить всё

new ConsumerConfig
{
ClientId = options.Operator,
BootstrapServers = options.GetKafkaBootstrapServers(),
GroupId = options.GetKafkaGroupId(),
SecurityProtocol = SecurityProtocol.Ssl,
SslCaLocation = options.Kafka.Ssl.CaLocation,
SslCertificateLocation = options.Kafka.Ssl.CertificateLocation,
SslKeyLocation = options.Kafka.Ssl.KeyLocation,
EnableAutoOffsetStore = false,
ConsumeResultFields = "none",
PartitionAssignmentStrategy = PartitionAssignmentStrategy.CooperativeSticky
};
который дал следующие результаты:

Код: Выделить всё

partition: average (total message count / elapsed seconds)
--------------------
0: 16 (3000 / 180)
1: 14 (2600 / 185)
2: 89 (16900 / 189)
3: 28 (5300 / 187)
4: 24 (4500 / 185)
5: 56 (10400 / 185)
6: 8 (1500 / 180)
7: 21 (4100 / 194)
8: 28 (5200 / 181)
9: 12 (2200 / 178)
Могу ли я что-нибудь сделать со стороны потребителя, чтобы сбалансировать это? Я не контролирую кластер Kafka, но могу предложить что-нибудь компании, владеющей кластером, если это поможет.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/792 ... umer-group
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»