Kafka broker-list,bootstrap-server以及zookeeper的区别

broker-list

broker指的是kafka的服务端,可以是一个服务器也可以是一个集群。producer和consumer都相当于这个服务端的客户端。
 
broker-list指定集群中的一个或者多个服务器,一般我们再使用console producer的时候,这个参数是必备参数,另外一个必备的参数是topic,如下示例:
 
C:\kafka\kafka_2.12-1.1.1 λ .\bin\windows\kafka-console-producer.sh --broker-list localhost:9092 --topic test >this is a test

 

 
本地主机如果要模拟多个broker,方法是复制多个server.properties,然后修改里面的端口, broker.id等配置模拟多个broker集群。
 
 
 
bootstrap-servers vs zookeeper
bootstrap-servers指的是目标集群的服务器地址,这个和broker-list功能是一样的,只不过我们在console producer要求用后者。
 
以前我们使用console consumer测试消息收发时会这样写:
 C:\kafka\kafka_2.12-1.1.1 λ .\bin\windows\kafka-console-consumer.sh --zookeeper localhost:2181 --topic test 
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].

 

 
这样可以接收到生产者控制台发送的消息。
 
现在我们也可以这样写,
 C:\kafka\kafka_2.12-1.1.1 λ .\bin\windows\kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

 

 
你可以自己测试下,也是可以收到消息的。
 
前者是老版本的用法,0.8以前的kafka,消费的进度(offset)是写在zk中的,所以consumer需要知道zk的地址。这个方案有性能问题,0.9 的时候整体大改了一次,brokers 接管了消费进度,consumer 不再需要和 zookeeper 通信了,所以就用bootstrap-server了。
新版的 Kafka 使用一个选举出来的 controller 来监听 zookeeper,其他 node 再去和 controller 通信,这么做的目的是为了减少 zookeeper 的压力。bootstrap-servers 会自动发现其他 broker,这也是 bootstrap 的含义
 
 
 
 
 
参考原文链接:https://blog.csdn.net/pony_maggie/article/details/95862515
 
 
posted @ 2020-03-25 08:53  夏天换上冬装  阅读(10359)  评论(0编辑  收藏  举报