Kafka メッセージ キューの実装メカニズム
Kafka は、プロデューサがトピック、コンシューマにメッセージをパブリッシュできるようにする分散パブリッシュ/サブスクライブ メッセージング システムです。これらのトピックを購読してメッセージを受信できます。 Kafka はパーティションを使用してメッセージを保存し、各パーティションにはレプリカ セットがあります。レプリカ セット内の各レプリカは、そのパーティションのデータを保存し、プロデューサーからの書き込みリクエストとコンシューマーからの読み取りリクエストを処理できます。
Kafka は、ZooKeeper を使用して、トピック、パーティション、レプリカ セットなどのクラスターのメタデータを管理します。 ZooKeeper は、生産者と消費者を調整するためにも使用されます。プロデューサは ZooKeeper を使用してトピックのパーティションを検索し、コンシューマは ZooKeeper を使用してサブスクライブされたトピックのパーティションを検索します。
Kafka メッセージ キュー実装コードの例
// 创建一个生产者 Producer<String, String> producer = new KafkaProducer<>(properties); // 创建一个主题 producer.createTopic("my-topic"); // 向主题发送消息 producer.send(new ProducerRecord<>("my-topic", "Hello, Kafka!")); // 关闭生产者 producer.close(); // 创建一个消费者 Consumer<String, String> consumer = new KafkaConsumer<>(properties); // 订阅主题 consumer.subscribe(Arrays.asList("my-topic")); // 轮询主题中的消息 while (true) { ConsumerRecords<String, String> records = consumer.poll(100); for (ConsumerRecord<String, String> record : records) { System.out.println(record.key() + ": " + record.value()); } } // 关闭消费者 consumer.close();
Kafka メッセージ キューの実装メカニズムの詳細な分析
Kafkaパーティション分割を使用してメッセージを保存するために、各パーティションにはレプリカ セットがあります。レプリカ セット内の各レプリカは、そのパーティションのデータを保存し、プロデューサーからの書き込みリクエストとコンシューマーからの読み取りリクエストを処理できます。 Kafka は、ZooKeeper を使用して、トピック、パーティション、レプリカ セットなどのクラスターのメタデータを管理します。 ZooKeeper は、生産者と消費者を調整するためにも使用されます。プロデューサは ZooKeeper を使用してトピックのパーティションを検索し、コンシューマは ZooKeeper を使用してサブスクライブされたトピックのパーティションを検索します。
Kafka は、メッセージの信頼性を確保するために「レプリケーション ファクター」と呼ばれるメカニズムを使用します。レプリケーション係数とは、レプリカ セット内のレプリカの数を指します。 1 つのレプリカに障害が発生しても、他のレプリカはサービスを提供し続けることができます。 Kafka は、メッセージの順序性を保証するために「一貫性レベル」と呼ばれるメカニズムも使用します。整合性レベルは「すべて」または「1」に設定できます。整合性レベルが「all」に設定されている場合、メッセージがコミットされたとみなされるには、すべてのレプリカによって正常に複製される必要があります。整合性レベルが「1」に設定されている場合、メッセージは、1 つのレプリカによって正常にレプリケートされている限り、コミットされたと見なされます。
Kafka は、「パーティション キー」と呼ばれるメカニズムを使用して、メッセージの均等な分散を保証します。パーティション キーは、メッセージがどのパーティションに保存されるかを決定するメッセージのフィールドです。 Kafka は、「ハッシュ関数」と呼ばれるアルゴリズムを使用してパーティション キーのハッシュ値を計算し、ハッシュ値に基づいてメッセージをさまざまなパーティションに分散します。
Kafka は、「オフセット」と呼ばれるメカニズムを使用して、コンシューマーがメッセージを読んだ場所を追跡します。オフセットは、コンシューマが読んだメッセージの数を示す数値です。コンシューマはオフセットを使用して、メッセージの読み取りをどこから開始するかを Kafka に指示します。
Kafka は、コンシューマがメッセージを繰り返し読まないようにするために、「コミット オフセット」と呼ばれるメカニズムを使用します。コンシューマはメッセージのバッチの読み取りを完了すると、オフセットを Kafka に送信します。 Kafka は、コミットされたオフセットを ZooKeeper に保存します。コンシューマが次にメッセージを読み取るときは、コミットされたオフセットから読み取りを開始します。
Kafka メッセージ キューの利点
Kafka メッセージ キューの欠点
Kafka メッセージ キューに適用可能なシナリオ
以上がKafka メッセージ キューの基礎となる動作原理を解読するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。