broker-listnode
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 的含義
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
參考原文連接:https://blog.csdn.net/pony_maggie/article/details/95862515