Обойти Zookeeper в клиентах производителя/потребителя?

Это дополнительный вопрос к предыдущему обсуждению. Я думаю о Zookeeper как о координаторе экземпляров брокера Kafka или «шины сообщений». Я понимаю, почему мы можем захотеть, чтобы клиенты-производители/потребители совершали транзакции через Zookeeper, потому что Zookeeper имеет встроенную отказоустойчивость в отношении того, с каким брокером Kafka заключать сделки. Но с новой моделью — т. е. 0.10.1+ — должны ли мы всегда полностью обходить Zookeeper в наших клиентах-производителях/потребителях? Отказываемся ли мы от каких-либо преимуществ (например, от лучшей отказоустойчивости) при этом? Или Zookeeper все еще работает за кулисами?


person Kode Charlie    schedule 26.04.2017    source источник


Ответы (2)


Zookeeper все еще работает за кулисами, но клиентам 0.9+ больше не нужно об этом беспокоиться, потому что смещения потребителей теперь хранятся в теме Kafka, а не в zookeeper.

person Hans Jespersen    schedule 26.04.2017

Чтобы добавить к ответу Ханса Йесперсена, последние клиенты производителя / потребителя 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, см. выше.

person Michael G. Noll    schedule 27.04.2017