Кафка - разница между событиями с пакетными данными и потоками - PullRequest
0 голосов
/ 26 сентября 2019

В чем принципиальная разница между событием с прикрепленной группой данных и потоком Кафки, который иногда отправляет данные?Могут ли они быть взаимозаменяемыми?Когда я должен использовать первый и когда последний?Не могли бы вы предоставить несколько простых вариантов использования?

Примечание: в комментариях этого вопроса есть некоторая информация, но я бы попросил более округленный ответ.

1 Ответ

0 голосов
/ 26 сентября 2019

Я предполагаю, что с «разницей» между потоками и событиями с пакетными данными, о которых вы думаете:

  • Поток: Каждое интересующее событие немедленно отправляется в поток.Таким образом, эти отдельные события являются мелкозернистыми, небольшими (er) по размеру.
  • События с пакетом данных: несколько отдельных событий объединяются в больший пакет, и когда пакет достигает определенного размера, проходит определенное время или завершается бизнес-операция,пакетное событие отправляется в поток.Эти партия события, следовательно, являются более крупными и большими (r) по размеру.

Вот список характеристик, которые я могу придумать:

  • Реальное время / задержка: время сквозной обработки обычно будет меньше для отдельных событий и дольше для пакетных событий, поскольку издатель может ожидать отправки пакетных событий до тех пор, пока не накопится достаточное количество отдельных событий.

  • Пропускная способность: брокеры сообщений отличаются характеристиками производительности в отношении макс.Количество входных / выходных событий в секунду при сопоставимых входных / выходных объемах данных.Например, сравнивая Kinesis и Kafka, Kinesis имеет более низкий максимум.Число входящих / исходящих событий в секунду, которые он может обработать, чем точно настроенный кластер Kafka.Таким образом, если вы будете использовать Kinesis, пакетные события могут иметь больше смысла для достижения желаемой пропускной способности с точки зрения количества отдельных событий.Примечание. Насколько мне известно, клиентская библиотека Kinesis имеет функцию прозрачной пакетной обработки отдельных событий, если это необходимо / возможно, для увеличения пропускной способности.

  • Порядок и корреляция: Еслинесколько отдельных событий принадлежат одной бизнес-транзакции и должны обрабатываться потребителями вместе и / или, возможно, по порядку, тогда события batch могут упростить эту задачу, поскольку все связанные данные становятся доступными дляпотребители сразу.С отдельными событиями вы должны будете принять соответствующие меры, такие как выбор соответствующих ключей раздела, чтобы гарантировать, что отдельные события будут обработаны по порядку и, возможно, одним и тем же экземпляром работника-потребителя.

  • Сбой: если партия события содержат независимые отдельные события, то может случиться так, что подмножество отдельных событий впартия не обрабатывается (не имеет значения, временный или постоянный сбой).В таком случае потребители могут не иметь возможности просто повторить попытку всего события, поскольку части события batch уже вызвали изменения состояния.Явная логика (= дополнительные усилия) может потребоваться для обработки частичного сбоя обработки пакетных событий.

Чтобы ответить на ваш вопрос о том, можно ли использовать их как взаимозаменяемые, ясказал бы теоретически, что да, но в зависимости от конкретного случая использования один из двух подходов, вероятно, приведет к повышению производительности или уменьшению сложности дизайна / кода / конфигурации.

Я отредактирую свой ответ, если смогуПодумайте о более дифференцирующих характеристиках.

...