Я постараюсь ответить на ваши вопросы, поскольку они перечислены здесь.
В GlobalKTable есть все разделы, доступные в каждом экземпляре вашего приложения Kafka Streams. Но KTable разделен на все экземпляры вашего приложения. Другими словами, все экземпляры вашего приложения Kafka Streams имеют доступ ко всем записям в GlobalKTable; следовательно, он используется для большего количества данных c и больше используется для поиска записей в соединениях.
Что касается топи c с N-разделами, если у вас есть одно приложение Kafka Streams, оно будет использовать и работать со всеми записями из ввода topi c. Если бы вы раскручивали другой экземпляр вашего потокового приложения, то каждое приложение обрабатывало бы половину количества разделов, что обеспечивало бы более высокую пропускную способность из-за распараллеливания работы.
Например, если у вас есть ввод topi c A с четырьмя разделами и одним приложением Kafka Streams, затем одно приложение обрабатывает все записи. Но если вам нужно было запустить два экземпляра одного и того же приложения Kafka Streams, то каждый экземпляр будет обрабатывать записи из 2 разделов, рабочая нагрузка распределяется на все запущенные экземпляры с одинаковым идентификатором приложения.
Темы реплицируются по всем разные посредники по умолчанию в Kafka, с 3 уровнем репликации по умолчанию. Уровень репликации 3 означает, что записи для данного раздела хранятся в ведущем посреднике для этого раздела и двух других посредниках-последователях (в предположении кластера посредника с тремя узлами).
Надеюсь, это кое-что прояснит.
-Bill