2013-01-07 110 views
2

我發現在Kafka 0.72中,我們可以指定zk.connect或broker.list。但是在Kafka 0.8中,我們只能指定broker.list,並且我們不能指定zk.connect而不指定broker.list。我認爲,在這種情況下,我們無法通過動物園管理員來平衡生產者。如果有人使用Kafka 0.8,或者對此有所瞭解?非常感謝!在kafka 0.8生產者中,我們無法指定zk.connect而沒有指定broker.list

+0

的可能重複[可製作找到卡夫卡0.8經紀人的增加和刪除?](http://stackoverflow.com/questions/14313590/can-producer-find-the-additions-and-removals-of-brokers-in-kafka-0-8) –

回答

0

在Kafka 0.8中,生產者通過新的集羣元數據API進行負載平衡,並且爲此目的使用Zookeeper已被刪除。

+0

感謝您的信息。但是,如果topic1有兩個分區,一個在kafka server1中,另一個在kafka server2中。現在,一個生產者有一個與kafka server1配合的broker.list配置。生產者是否只在kafka server1或kafka server 1和kafka server 2中存儲它的消息?(我們保持kafka server1和kafka server2都存在)。 – habren

+0

另一個問題,你說,生產者是通過新的集羣元數據API進行負載平衡。你能告訴我確切的API和它是否會平衡負載和手動配置嗎? – habren

3

,您仍然可以使用ZooKeeper的客戶端來獲取券商名單:

ZkClient zkClient = new ZkClient("localhost:2108", 4000, 6000, new BytesPushThroughSerializer()); 
List<String> brokerList = zkClient.getChildren("/brokers/ips"); 

根據這一點,你不必「硬編碼」的經紀人在客戶端列表中,您是靈活至於系統架構而言。但無論如何,這會再次添加ZooKeeper依賴關係,這對於幾個環境中的生產者來說實際上是一個缺點。

如果你想獲得所謂的「簇元數據API」解決方案的詳細視圖,看看這個鏈接:https://issues.apache.org/jira/browse/KAFKA-369

最佳

+2

這看起來像它不再被註冊在0.8中的動物園管理員。現在通過獲取json存儲在/ brokers/ids/* –

相關問題