kafka 0.7 では、プロデューサーに zk.connect を指定できるため、プロデューサーはブローカーの追加と削除を見つけることができます。しかし、kafka 0.8 では、プロデューサーに zk.connect を指定できません。kafka 0.8 のプロデューサーはそれを見つけることができますか? そうでない場合、システムのスケーラビリティは 0.7 バージョンよりも悪くありませんか?
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:これを他の質問に再投稿して申し訳ありませんが、答えは両方に当てはまります;-)
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 つを含める必要があります。トピック (およびパーティション) のリーダーであるブローカーを特定することを心配する必要はありません。プロデューサーは、ブローカーに接続してメタデータを要求し、正しいブローカーに接続する方法を知っています。
追加とは、クラスターに新しいノードを追加することを意味しますか?