1

kafka 0.7 では、プロデューサーに zk.connect を指定できるため、プロデューサーはブローカーの追加と削除を見つけることができます。しかし、kafka 0.8 では、プロデューサーに zk.connect を指定できません。kafka 0.8 のプロデューサーはそれを見つけることができますか? そうでない場合、システムのスケーラビリティは 0.7 バージョンよりも悪くありませんか?

4

2 に答える 2

2

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

一番

PS:これを他の質問に再投稿して申し訳ありませんが、答えは両方に当てはまります;-)

于 2013-02-08T22:40:01.523 に答える
0

0.8 では、metadata.broker.listプロパティでブローカーのリストを指定する必要があります。

    Properties props = new Properties();
    props.put("metadata.broker.list", "broker1:9092,broker2:9092");

彼らが言うカフカの消費者の例から

プロパティ「metadata.broker.list」は、各トピックのリーダーを決定するために Producer が 1 つ以上の Broker を見つけることができる場所を定義します。これは、クラスター内のブローカーの完全なセットである必要はありませんが、最初のブローカーが利用できない場合に備えて、少なくとも 2 つを含める必要があります。トピック (およびパーティション) のリーダーであるブローカーを特定することを心配する必要はありません。プロデューサーは、ブローカーに接続してメタデータを要求し、正しいブローカーに接続する方法を知っています。

追加とは、クラスターに新しいノードを追加することを意味しますか?

于 2013-08-22T11:09:05.120 に答える