Kafka не рекомендуется, если вы хотите взаимодействовать из нескольких центров обработки данных. Kafka спроектирован таким образом, чтобы обеспечить высокую пропускную способность, учитывая, что вы производите и потребляете тот же центр обработки данных, где латентность сети минимальна.
Почему?
После того, как у вас есть потребители в другом центре обработки данных, возникает латентность, влияющая на всю координацию, которую Kafka делает с потребителями (групповое перебалансирование/смещение совершает/сердцебиение), а производители, находящиеся в другом центре обработки данных, задержка для получения баллов для каждого отправка сообщения будет значительной, замедляя скорость, с которой вы можете создавать сообщения.
Итак, теоретически вы можете очень хорошо настроить, если ваша сеть надежна.
Теперь Если вы думаете, что брокеров Kafka распределены между центрами обработки данных, это будет более дорогостоящим. Вся межброкерская связь будет задерживаться эффективно, создавая отставание в репликах, множество сетевых звонков (через Интернет), тайм-ауты брокера и т. Д., Снова теоретически выполнимые.
На практике для этих сценариев лучше иметь локальный кластер Kafka для каждого постоянного тока, где они производят/потребляют сообщения с локально размещенными приложениями и имеют Mirrormaker для агрегирования сообщений между центрами обработки данных.
У вас есть 2 Кафку кластеры или один кластер с одним производителем и одним потребителем? Когда я сомневаюсь, я всегда пытаюсь подключиться к Kafka с помощью инструментов командной строки, таких как kafka-console-consumer. – leshkin
У меня есть один производитель и потребитель, и я использую kafka-console-производитель/kafka-console-consumer с той же темой –