zookeeperからkafkaクラスタを動的に読み出す

2967 ワード

(労働成果を尊重し、転載は出典を明記してください.http://blog.csdn.net/qq_25827845/article/details/56049022冷血な心のブログ)
 Kafka is a distributed,partitioned,replicated commit logservice.JMSと同様の特性を提供するが、設計実装では全く異なり、JMS仕様の実装ではない.kafkaはメッセージ保存時にTopicに従って分類し,送信メッセージはProducer,メッセージ受信者はConsumer,またkafkaクラスタは複数のkafkaインスタンスからなり,各インスタンス(server)はbrokerとなる.kafkaクラスタでもproducerおよびconsumerでもzookeeperに依存して、システム可用性クラスタがmeta情報を保存することを保証します.
动态从zookeeper中读取kafka集群_第1张图片
动态从zookeeper中读取kafka集群_第2张图片
1.producer:
メッセージプロバイダは、kafkaクラスタの端末またはサービスにメッセージを発行する.
2.broker:
kafkaクラスタに含まれるサーバ.
3.topic:
各kafkaクラスタにパブリッシュされるメッセージが属するカテゴリ、すなわちkafkaはtopic向けである.
4.partition:
partitionは物理的な概念であり、各topicには1つ以上のpartitionが含まれている.kafkaが割り当てた単位はpartitionです.
5.consumer:
kafkaクラスタからメッセージを消費する端末またはサービス.
6.Consumer group:
high-level consumer APIでは、各consumerは1つのconsumerグループに属し、各メッセージはconsumerグループの1つのConssumerによってのみ消費されるが、複数のconsumerグループによって消費されることができる.
7.replica:
partitionのコピーは、partitionの高可用性を保障します.
8.leader:
Replicaのロールの1つで、producerとconsumerはleaderとしか対話しません.
9.follower:
Replicaのロールで、leaderからデータをコピーします.
10.controller:
kafkaクラスタの1つのサーバであり、leader electionおよび各種failoverを行うために使用されます.
12.zookeeper:
kafkaはzookeeperによってクラスタのmeta情報を格納する.
以下にzookeeperからkafkaクラスタ内のbrokersを動的に読み出す方法を示します.
public class KafkaBrokerInfoFetcher {

    public static void main(String[] args) throws Exception {
        ZooKeeper zk = new ZooKeeper("localhost:2181", 10000, null);
        List ids = zk.getChildren("/brokers/ids", false);
        for (String id : ids) {
            String brokerInfo = new String(zk.getData("/brokers/ids/" + id, false, null));
            System.out.println(id + ": " + brokerInfo);
        }
    }
}

結果は次のとおりです.
1: {"jmx_port":-1,"timestamp":"1428512949385","host":"192.168.0.11","version":1,"port":9093}
2: {"jmx_port":-1,"timestamp":"1428512955512","host":"192.168.0.11","version":1,"port":9094}
3: {"jmx_port":-1,"timestamp":"1428512961043","host":"192.168.0.11","version":1,"port":9095}

もしあなたに役に立つなら、いいねを覚えてください.私のブログに注目してください.366533258に入って一緒に交流して勉強することができます.