新版 kafka 消费者、生产者配置为何使用 bootstrap-servers 直接配置 broker list 而不是使用 zookeeper 服务器地址? 难道新版 kafka 消费者、生产者不需要从 zookeeper 获取信息了吗? 直接使用 bootstrap-servers 的话,假如有 kafka broker 新增的话 不是要重新配置,重启么? 不入 zookeeper 啊
1
SErHo 2018-07-30 22:45:06 +08:00 via iPhone
1. bootstrap servers 如其名,只需要配个两三个就行了,会自动发现其他 broker
2. zookeeper 本来只是 Kafka 实现所需要的依赖,暴露给 kafka 使用者我觉得没必要 3. Kafka 所有的信息可以通过 API 来获得 |
2
billlee 2018-07-30 22:59:17 +08:00
0.8 以前,消费进度是直接写到 zookeeper 的,consumer 必须知道 zookeeper 的地址。这个方案有性能问题,0.9 的时候整体大改了一次,brokers 接管了消费进度,consumer 不再需要和 zookeeper 通信了。
至于 producer, 我记得传进去的参数是 broker list, 是不会自动发现其它 brokers 的。 |
3
lzdhlsc 2018-07-31 01:45:53 +08:00
新版的 Kafka 使用一个选举出来的 controller 来监听 zookeeper,其他 node 再去和 controller 通信,这么做的目的是为了减少 zookeeper 的压力。bootstrap-servers 会自动发现其他 broker,这也是 bootstrap 的含义。
|