Это дополнительный вопрос к предыдущему обсуждению. Я думаю о Zookeeper как о координаторе экземпляров брокера Kafka или «шины сообщений». Я понимаю, почему мы можем захотеть, чтобы клиенты-производители/потребители совершали транзакции через Zookeeper, потому что Zookeeper имеет встроенную отказоустойчивость в отношении того, с каким брокером Kafka заключать сделки. Но с новой моделью — т. е. 0.10.1+ — должны ли мы всегда полностью обходить Zookeeper в наших клиентах-производителях/потребителях? Отказываемся ли мы от каких-либо преимуществ (например, от лучшей отказоустойчивости) при этом? Или Zookeeper все еще работает за кулисами?
Обойти Zookeeper в клиентах производителя/потребителя?
Ответы (2)
Zookeeper все еще работает за кулисами, но клиентам 0.9+ больше не нужно об этом беспокоиться, потому что смещения потребителей теперь хранятся в теме Kafka, а не в zookeeper.
Чтобы добавить к ответу Ханса Йесперсена, последние клиенты производителя / потребителя Kafka (0.9+) больше не взаимодействуют с ZooKeeper.
В настоящее время ZooKeeper используется только брокерами Kafka (то есть на стороне сервера Kafka). Это означает, что вы можете, например. заблокировать внешний доступ клиентов ко всем экземплярам ZooKeeper для повышения безопасности.
Я понимаю, почему мы можем захотеть, чтобы клиенты-производители/потребители совершали транзакции через Zookeeper, потому что Zookeeper имеет встроенную отказоустойчивость в отношении того, с каким брокером Kafka заключать сделки.
Клиенты-производители/потребители не «осуществляют транзакции» через ZooKeeper, см. выше.
Но с новой моделью — т. е. 0.10.1+ — должны ли мы всегда полностью обходить Zookeeper в наших клиентах-производителях/потребителях?
Если мотивация вашего вопроса заключается в том, что вы хотите реализовать свой собственный клиент-производитель или потребитель Kafka, то ответ таков: ваш собственный клиент больше не должен использовать ZooKeeper. Официальные клиенты производителя/потребителя Kafka (Java/Scala) или, например. Клиенты Confluent C/C++, Python или Go для Kafka демонстрируют, как масштабируемость, отказоустойчивость и т. д. могут быть достигнуты за счет использования функциональности Kafka (вместо того, чтобы полагаться на отдельный сервис, такой как ZooKeeper).
Отказываемся ли мы от каких-либо преимуществ (например, от лучшей отказоустойчивости) при этом? Или Zookeeper все еще работает за кулисами?
Нет, здесь мы не отказываемся от каких-либо преимуществ. В противном случае проект Kafka не изменил бы своих клиентов-производителей/потребителей, чтобы они прекратили использовать ZooKeeper и начали бы сами использовать Kafka для своей внутренней работы.
ZooKeeper все еще работает за кулисами для брокеров Kafka, см. выше.