首页 文章

在 生产环境 者/消费者客户端中绕过Zookeeper?

提问于
浏览
1

这是earlier discussion的后续问题 . 我认为Zookeeper是Kafka经纪人实例的协调者,或"message bus" . 我理解为什么我们可能希望 生产环境 者/消费者客户通过Zookeeper进行交易 - 因为Zookeeper具有内置的容错功能,以确定与之交易的Kafka经纪人 . 但是对于新模型 - 即0.10.1 - 我们是否应该始终在 生产环境 者/消费者客户端中完全绕过Zookeeper?这样做我们是否放弃了任何优势(例如,更好的容错性)?或者Zookeeper最终还是在幕后工作?

2 回答

  • 3

    Zookeeper仍然在幕后工作,但0.9客户端不再需要担心它,因为消费者偏移现在存储在Kafka主题中,而不是存储在zookeeper中 .

  • 2

    为了增加Hans Jespersen的答案,最近的Kafka 生产环境 者/消费者客户(0.9)不再与ZooKeeper交互 .

    如今,ZooKeeper仅供Kafka经纪人(即Kafka的服务器端)使用 . 这意味着您可以例如锁定从客户端到所有ZooKeeper实例的外部访问,以提高安全性 .

    我理解为什么我们可能希望 生产环境 者/消费者客户通过Zookeeper进行交易 - 因为Zookeeper具有内置的容错功能,以确定与哪个Kafka经纪人进行交易 .

    生产环境 者/消费者客户不是通过ZooKeeper“交易”,见上文 .

    但是对于新模型 - 即0.10.1 - 我们是否应该始终在 生产环境 者/消费者客户端中完全绕过Zookeeper?

    如果您的问题的动机是因为您想要实现自己的Kafka 生产环境 者或消费者客户端,那么答案是:您的自定义客户端不应再使用ZooKeeper . 官方Kafka 生产环境 者/消费者客户(Java / Scala)或例如Confluent's C/C++, Python, or Go clients for Kafka演示了如何通过利用Kafka功能(而不是依赖于像ZooKeeper这样的单独服务)来实现可扩展性,容错性等 .

    这样做我们是否放弃了任何优势(例如,更好的容错性)?或者Zookeeper最终还是在幕后工作?

    不,我们不会放弃任何优势 . 否则,Kafka项目不会改变其 生产环境 者/消费者客户端以停止使用ZooKeeper并开始使用Kafka自己的内部工作 .

    ZooKeeper仅在Kafka经纪人的幕后工作,见上文 .

相关问题