Kafka: 詳細な説明、使用方法のチュートリアル、および例

Kafka: 詳細な紹介、チュートリアル、例

カフカとは何ですか?

Kafka は、もともと LinkedIn によって開発された分散ストリーム処理プラットフォームであり、Apache Foundation のトップレベル プロジェクトになりました。高いスループット、信頼性、拡張性で知られており、リアルタイムのデータ送信、ログ収集、イベント処理、ストリーミング分析などのシナリオで広く使用されています。Kafka は大規模なデータ ストリームを処理できるように設計されており、最新の分散アプリケーションの構築に最適です。

Kafka の中心となる概念

Kafka の使用法のチュートリアルに入る前に、まず Kafka を理解するための基礎となる、Kafka の中心的な概念をいくつか紹介します。

  • ブローカー: Kafka クラスター内の各サーバー ノードはブローカーと呼ばれ、データの保存と処理を担当します。

  • トピック:データ フローのカテゴリであるメッセージ パブリッシュのトピック。プロデューサはトピックにメッセージをパブリッシュし、コンシューマはメッセージをサブスクライブします。

  • パーティション:各トピックは複数のパーティションに分割でき、各パーティションは順序付けされたメッセージ キューです。パーティショニングにより、データを水平方向に分散して並列処理できるようになります。

  • プロデューサー: 1 つ以上のトピックにメッセージを送信するデータの発行者。

  • Consumer: 1 つ以上のトピックからのメッセージを消費するデータ サブスクライバー。

  • Consumer Group:トピック メッセージを共同で消費するコンシューマのコレクション。各パーティションは、1 つのコンシューマ グループ内の 1 つのコンシューマによってのみ使用できます。

  • Offset:パーティション内の各メッセージの一意の識別子。コンシューマは Offset を使用して、消費されたメッセージを追跡します。

カフカの使い方は?

以下は、Kafka の使い方をインストールから実践例まで完全に紹介する、Kafka の詳細な使い方チュートリアルです。

1.Kafkaをインストールして起動します

まず、Kafka をインストールする必要があります。公式 Web サイト (https://kafka.apache.org/downloads) から最新バージョンをダウンロードし、ガイドに従ってインストールできます。インストールが完了したら、Kafka サーバーと ZooKeeper を起動する必要があります。

ZooKeeper を起動します (Kafka は ZooKeeper に依存します)。

bin/zookeeper-server-start.sh config/zookeeper.properties

次に、Kafka サーバーを起動します。

bin/kafka-server-start.sh config/server.properties

2. トピックの作成

Kafka では、メッセージを保存するために 1 つ以上のトピックを作成する必要があります。my-topic次のコマンドを使用して、名前を付けたトピックを作成します。

bin/kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1

これにより、my-topic3 つのパーティションと 1 つのレプリカを含む名前のトピックが作成されます。

3. Kafkaプロデューサーの使用

Kafka プロデューサーは、指定されたトピックにメッセージをパブリッシュするために使用されます。簡単な Java プロデューサーの例を次に示します。

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;

import java.util.Properties;

public class KafkaProducerExample {
    
    

    public static void main(String[] args) {
    
    
        Properties properties = new Properties();
        properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());

        KafkaProducer<String, String> producer = new KafkaProducer<>(properties);
        String topic = "my-topic";

        for (int i = 0; i < 10; i++) {
    
    
            String message = "Message " + i;
            producer.send(new ProducerRecord<>(topic, message));
            System.out.println("Sent: " + message);
        }

        producer.close();
    }
}

4. Kafka コンシューマの使用

Kafka コンシューマーはトピックからのメッセージをサブスクライブして処理します。単純な Java コンシューマーの例を次に示します。

import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.common.serialization.StringDeserializer;

import java.time.Duration;
import java.util.Collections;
import java.util.Properties;

public class KafkaConsumerExample {
    
    

    public static void main(String[] args) {
    
    
        Properties properties = new Properties();
        properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
        properties.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group");
        properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
        properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());

        Consumer<String, String> consumer = new KafkaConsumer<>(properties);
        String topic = "my-topic";

        consumer.subscribe(Collections.singletonList(topic));

        while (true) {
    
    
            ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
            records.forEach(record -> {
    
    
                System.out.println("Received: " + record.value());
            });
        }
    }
}

5. サンプルを実行します

まず、ターミナル ウィンドウを開いて、Kafka プロデューサーのサンプルを実行します。

java KafkaProducerExample

次に、別のターミナル ウィンドウを開いて、Kafka コンシューマー サンプルを実行します。

java KafkaConsumerExample

プロデューサによって送信されたメッセージがコンシューマによって受信され、処理されることがわかります。

要約する

Kafka は、リアルタイムのデータ送信と処理のための強力な分散ストリーム処理プラットフォームです。この記事の詳細な紹介、チュートリアル、例を通じて、Kafka の中心的な概念、インストール、トピックの作成、プロデューサーとコンシューマーの使用を理解し、最新の分散アプリケーションを構築するための強固な基盤を築くことができます。リアルタイム データ ストリーミング プラットフォーム、ログ収集システム、イベント駆動型アーキテクチャのいずれを構築する場合でも、Kafka は信頼性が高く効率的なソリューションです。

おすすめ

転載: blog.csdn.net/weixin_42279822/article/details/132206109