Maison > Java > javaDidacticiel > Analyser les principes clés de mise en œuvre de la file d'attente de messages Kafka

Analyser les principes clés de mise en œuvre de la file d'attente de messages Kafka

PHPz
Libérer: 2024-02-01 09:37:06
original
969 Les gens l'ont consulté

Analyser les principes clés de mise en œuvre de la file dattente de messages Kafka

Analyse des principes fondamentaux d'implémentation de la file d'attente de messages Kafka

1. Sujets et partitions

Les données dans Kafka sont stockées dans des sujets, et chaque sujet peut avoir plusieurs partitions. Une partition est l'unité de stockage physique des données dans Kafka. Chaque partition est un fichier journal indépendant, ordonné et immuable. Le partitionnement est la clé du débit élevé et de la haute disponibilité de Kafka, car les données peuvent être écrites et lues en parallèle sur différentes partitions.

2. Producteur de message

Le producteur de message (producteur) est le client qui envoie des données au sujet Kafka. Un producteur peut être n'importe quelle application à condition qu'elle implémente l'API de producteur de Kafka. L'API du producteur permet aux producteurs d'envoyer des données à des sujets et des partitions spécifiques. Si le producteur ne spécifie pas de partition, Kafka en choisira automatiquement une.

3. Consommateur de messages

Un consommateur de messages (consommateur) est un client qui lit les données d'un sujet Kafka. Un consommateur peut être n'importe quelle application à condition qu'elle implémente l'API consommateur de Kafka. L'API grand public permet aux consommateurs de s'abonner à des sujets et des partitions spécifiques. Lorsqu'un consommateur s'abonne à un sujet, il commence à lire les données depuis le début du sujet. Les consommateurs peuvent lire les données en parallèle car chaque consommateur peut lire les données d'une partition différente.

4. Stockage des messages

Kafka stocke les données sur disque. Chaque partition est un fichier journal indépendant et le fichier journal est composé de plusieurs segments. La taille de chaque segment est de 1 Go. Lorsqu'un segment est plein, Kafka crée un nouveau segment. Kafka compresse périodiquement les anciens segments pour économiser de l'espace de stockage.

5. Réplication des messages

Kafka garantit la fiabilité des données grâce à la réplication. Les données de chaque partition seront copiées sur plusieurs répliques. Les répliques peuvent se trouver sur différents serveurs. Lorsqu'une réplique échoue, d'autres répliques peuvent continuer à fournir des services.

6. Soumission du message

Lorsque le consommateur lit les données de Kafka, il doit soumettre (valider) sa progression de consommation à Kafka. L'opération de validation stocke la progression de la consommation du consommateur dans les métadonnées de Kafka. Les métadonnées sont stockées dans ZooKeeper. L'opération de validation garantit que les consommateurs ne consommeront pas de données à plusieurs reprises.

7. Décalage du message

Chaque message a un décalage. Un décalage est un identifiant unique qui identifie l'emplacement d'un message dans une partition. La compensation peut être utilisée pour suivre la progression de la consommation du consommateur.

8. Groupe de consommateurs

Un groupe de consommateurs est un regroupement logique de consommateurs. Les consommateurs d'un groupe de consommateurs peuvent consommer des données du même sujet en parallèle. Lorsque les consommateurs d’un groupe de consommateurs consomment des données, les consommateurs des autres groupes de consommateurs ne consomment pas ces données.

9. Équilibrage de charge

Kafka utilise l'équilibrage de charge pour garantir que les données sont réparties uniformément sur les différentes partitions. L'équilibreur de charge est responsable de la distribution des données sur différentes partitions. Les équilibreurs de charge peuvent distribuer des données en fonction de différentes stratégies, telles que le hachage à tour de rôle, aléatoire ou cohérent.

10. Exemple de code

Ce qui suit est un exemple de code Java simple qui montre comment utiliser l'API producteur et consommateur Kafka :

// 创建生产者
Properties producerProps = new Properties();
producerProps.put("bootstrap.servers", "localhost:9092");
producerProps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
producerProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> producer = new KafkaProducer<>(producerProps);

// 创建消费者
Properties consumerProps = new Properties();
consumerProps.put("bootstrap.servers", "localhost:9092");
consumerProps.put("group.id", "my-group");
consumerProps.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
consumerProps.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(consumerProps);

// 订阅主题
consumer.subscribe(Collections.singletonList("my-topic"));

// 发送消息
producer.send(new ProducerRecord<String, String>("my-topic", "hello, world"));

// 接收消息
while (true) {
    ConsumerRecords<String, String> records = consumer.poll(100);
    for (ConsumerRecord<String, String> record : records) {
        System.out.println(record.key() + ": " + record.value());
    }
}
Copier après la connexion

Résumé

Kafka est un système de file d'attente de messages distribué et évolutif. Il peut être utilisé pour créer diverses applications, telles que la collecte de journaux, l'analyse de données, le traitement de flux en temps réel, etc. Les principes de base de mise en œuvre de Kafka incluent les sujets, les partitions, les producteurs de messages, les consommateurs de messages, le stockage des messages, la réplication des messages, la soumission des messages, les décalages de messages, les groupes de consommateurs et l'équilibrage de charge, etc.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal