Я прочитал кучу статей, касающихся архитектуры Кафки, но я все еще новичок в этом, и когда дело дошло до кодирования, возникла путаница, если я все понял правильно.
Насколько я понимаю, сервер, брокер и узел Kafka являются синонимами. В кластере Kafka может быть несколько брокеров. Существует топика Кафки c (T1), состоящая из нескольких разделов (P1, P2 ..). Эти разделы могут быть реплицированы между брокерами (B1, B2 ..). B1 может быть лидером для P1, B2 для P2 и так далее. Говорим ли мы, что для брокера или кластера определен topi c T1, и если мы рассматриваем topi c как набор разделов, можем ли мы сказать «topi c replicas»?
От официального Kafka документация:
bootstrap .servers: список пар хост / порт, используемых для установления начального соединения с кластером Kafka. Клиент будет использовать все серверы независимо от того, какие серверы указаны здесь для начальной загрузки - этот список влияет только на исходные хосты, используемые для обнаружения полного набора серверов. Этот список должен иметь вид host1: port1, host2: port2, .... Поскольку эти серверы просто используются для начального подключения, чтобы обнаружить полное членство в кластере (которое может изменяться динамически), этот список не должен содержать полный набор серверов (хотя вам может потребоваться более одного, если сервер не работает)
В этом случае ZooKeeper автоматически рассылает сообщение лидеру при выполнении bin/kafka-console-producer.sh --broker-list host1:port1,host2:port2 --topic test
? (Я полагаю, что где-то я читал, что производитель должен читать идентификатор брокера из ZooKeeper, но не будет ли это здесь ненужным?) Это равнозначно публикации с использованием bin/kafka-console-producer.sh --zookeeper host1:z_port1,host2:z_port2 --topic test
? Как я должен в основном понимать bin/kafka-configs.sh --zookeeper host1:z_port1,host2:z_port2
? У нас есть только один экземпляр Zookeeper?