Kafka est un système de messagerie distribué de publication-abonnement qui vous permet de transmettre de manière fiable des données entre producteurs et consommateurs. Il présente un débit élevé, une faible latence et une tolérance aux pannes.
Kafka se compose des composants suivants :
Lorsqu'un producteur envoie des données au cluster Kafka, les données sont écrites sur une ou plusieurs partitions. Chaque partition dispose de plusieurs copies pour garantir que les données ne soient pas perdues. Les consommateurs peuvent lire les données de n’importe quelle réplique.
Kafka utilise un mécanisme appelé « compensations » pour savoir où les consommateurs lisent les données. Le décalage est un entier qui représente la quantité de données lues dans la partition par le consommateur. Lorsqu'un consommateur lit des données, il stocke le décalage dans ZooKeeper.
Si le consommateur échoue, il peut redémarrer à partir du dernier décalage enregistré. Cela garantit que les consommateurs ne perdent aucune donnée.
L'architecture système de Kafka est un système distribué composé de plusieurs nœuds. Chaque nœud est un processus indépendant, qui peut s'exécuter sur différentes machines.
Les nœuds Kafka communiquent via le protocole TCP. Chaque nœud conserve une copie des métadonnées, qui contient des informations de métadonnées pour toutes les rubriques et partitions.
Lorsqu'un producteur envoie des données au cluster Kafka, il envoie d'abord une requête au nœud de métadonnées pour obtenir des informations sur la partition à écrire. Le producteur écrira ensuite les données directement sur cette partition.
Lorsqu'un consommateur lit les données d'un cluster Kafka, il envoie d'abord une requête au nœud de métadonnées pour obtenir des informations sur la partition à lire. Le consommateur lit ensuite les données directement à partir de cette partition.
Voici un exemple de code simple utilisant Kafka :
// 创建一个生产者 Producer producer = new KafkaProducer(properties); // 创建一个主题 String topic = "my-topic"; // 创建一个消息 ProducerRecordrecord = new ProducerRecord<>(topic, "hello, world"); // 发送消息 producer.send(record); // 创建一个消费者 Consumer consumer = new KafkaConsumer(properties); // 订阅主题 consumer.subscribe(Arrays.asList(topic)); // 轮询消息 while (true) { ConsumerRecords records = consumer.poll(100); for (ConsumerRecord record : records) { System.out.println(record.value()); } }
Cet exemple de code montre comment envoyer et recevoir des messages à l'aide de Kafka. Vous pouvez utiliser cet exemple de code comme base pour créer vos propres applications Kafka.
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!