Explication détaillée des principes de base, du processus d'exécution et des scénarios d'utilisation de Kafka

Explication détaillée des principes de base, du processus d'exécution et des scénarios d'utilisation de Kafka

1. Introduction
Apache Kafka est un système de messagerie de publication-abonnement distribué. La définition de kafka sur le site officiel de kafka est : un système de messagerie de publication-abonnement distribué. Il a été initialement développé par LinkedIn, qui a contribué à la Fondation Apache en 2010 et est devenu l'un des principaux projets open source. Kafka est de par sa conception un service de journal de validation rapide, évolutif, distribué, partitionné et répliqué.

Comparaison de plusieurs systèmes de messagerie distribués :

insérer la description de l'image ici

2. Architecture de base de Kafka
Son architecture comprend les composants suivants :

1. Sujet : Il s’agit d’un type spécifique de flux de messages. Le message est la charge utile d'octets (Payload) et le sujet est le nom de catégorie ou le nom de flux du message ;

2. Producteur : tout objet pouvant publier des messages sur des sujets ;

3. Service Broker : les messages publiés sont stockés dans un groupe de serveurs, appelés Brokers ou clusters Kafka ;

4. Consommateur : vous pouvez vous abonner à un ou plusieurs sujets et extraire des données du courtier pour consommer ces messages publiés ;
insérer la description de l'image ici

Comme le montre la figure ci-dessus, le producteur envoie des données à l'agent courtier, l'agent courtier a plusieurs sujets et le consommateur obtient des données du courtier.

3. Principes de base
Nous appelons la publication de messages (publish) en tant que producteur, l'abonnement aux messages (subscribe) en tant que consommateur et la baie de stockage intermédiaire en tant que courtier (agent), afin que nous puissions décrire grossièrement une telle scène :

insérer la description de l'image ici

Le producteur produit les données et les remet au courtier pour stockage. Lorsque le consommateur a besoin de consommer les données, il les récupère auprès du courtier et effectue une série d'opérations de traitement des données.

À première vue, cela paraît trop simple : ne dit-on pas que c’est distribué ? Est-ce que c’est considéré comme distribué si le producteur, le courtier et le consommateur sont placés sur trois machines différentes ? Regardez la photo officielle fournie par Kafka :
insérer la description de l'image ici

Plusieurs courtiers travaillent ensemble et les déploiements de producteurs et de consommateurs sont fréquemment appelés dans diverses logiques métier. Les trois coordonnent les demandes et les transferts via la gestion du gardien de zoo. Un tel système de publication et d'abonnement de messages distribués à hautes performances est terminé.

Il y a un détail à noter dans l'image. Le processus du producteur au courtier est push, c'est-à-dire que lorsque les données sont disponibles, elles sont poussées vers le courtier. Le processus du consommateur au courtier est pull, ce qui signifie que le consommateur extrait activement les données. données, plutôt que le courtier maîtrisant les données. Envoyé au côté consommateur.

4. Le rôle du gardien de zoo dans kafka
Comme mentionné ci-dessus, le gardien de zoo est mentionné, alors quel est le rôle du gardien de zoo dans kafka ?

(1) Le cluster Kafka ainsi que le producteur et le consommateur s'appuient sur zookeeper pour garantir la disponibilité du système et le cluster enregistre certaines méta-informations.

(2) Kafka utilise zookeeper comme cadre de coordination distribué, qui combine parfaitement les processus de production, de stockage et de consommation de messages.

(3) Dans le même temps, avec l'aide de zookeeper, Kafka peut établir une relation d'abonnement entre les producteurs et les consommateurs de manière apatride pour tous les composants, y compris les producteurs, les consommateurs et les courtiers, et réaliser un équilibrage de charge entre les producteurs et les consommateurs.

5. Processus d'exécution
Tout d'abord, jetez un œil au processus suivant :

insérer la description de l'image ici

Regardons l'image ci-dessus : nous réduisons le nombre de courtiers à un seul. Supposons maintenant que nous déployons comme indiqué ci-dessus :

(1) Le courtier Server-1 est en fait le serveur de Kafka, car le producteur et le consommateur doivent le restituer. Le courtier est principalement utilisé pour le stockage.

(2) Le serveur-2 est le côté serveur de zookeeper. Il maintient une table qui enregistre l'adresse IP, le port et d'autres informations de chaque nœud.

(3) Ce que les serveurs 3, 4 et 5 ont en commun, c'est qu'ils sont tous configurés avec zkClient. Pour être plus clair, l'adresse de zookeeper doit être configurée avant l'exécution. La raison est également très simple. La connexion entre eux nécessite un gardien de zoo.

(4) La relation entre le serveur-1 et le serveur-2, ils peuvent être placés sur une seule machine, ou ils peuvent être ouverts séparément, et zookeeper peut également être configuré avec un cluster. Le but est d'empêcher une certaine unité de se bloquer.

Parlons brièvement de l'ordre dans lequel l'ensemble du système fonctionne :

(1) Démarrez le serveur zookeeper

(2) Démarrez le serveur Kafka

(3) Si le producteur produit des données, il trouvera d'abord le courtier via zookeeper, puis stockera les données dans le courtier.

(4) Si le consommateur souhaite consommer des données, il trouvera d'abord le courtier correspondant via zookeeper, puis les consommera.

6. Caractéristiques de Kafka
(1) Débit élevé et faible latence : Kafka peut traiter des centaines de milliers de messages par seconde et sa latence est aussi faible que quelques millisecondes. Chaque sujet peut être divisé en plusieurs partitions et les consommateurs de groupe effectuent une consommation. opérations sur les partitions. ;

(2) Évolutivité : le cluster Kafka prend en charge l'expansion à chaud ;

(3) Persistance et fiabilité : les messages sont conservés sur le disque local et la sauvegarde des données est prise en charge pour éviter la perte de données ;

(4) Tolérance aux pannes : autoriser l'échec des nœuds du cluster (si le nombre de répliques est n, n-1 nœuds sont autorisés à échouer) ;

(5) Concurrence élevée : permet à des milliers de clients de lire et d'écrire en même temps ;

(6) Prise en charge du traitement en ligne en temps réel et du traitement hors ligne : vous pouvez utiliser un système de traitement de flux en temps réel tel que Storm pour traiter les messages en temps réel, et vous pouvez également utiliser un système de traitement par lots tel que Hadoop pour le traitement hors ligne ;

7. Scénarios d'utilisation de Kafka
(1) Collecte de journaux : une entreprise peut utiliser Kafka pour collecter les journaux de divers services et les ouvrir à divers consommateurs via Kafka en tant que service d'interface unifié, tel que Hadoop, Hbase, Solr, etc.

(2) Système de messages : découplage et producteurs et consommateurs, messages en cache, etc. ;

(3) Suivi de l'activité des utilisateurs : Kafka est souvent utilisé pour enregistrer diverses activités des utilisateurs Web ou des utilisateurs d'applications, telles que la navigation sur des pages Web, la recherche, les clics et d'autres activités. Ces informations sur l'activité sont publiées par divers serveurs sur des sujets Kafka, puis sur les abonnés. passer Abonnez-vous à ces sujets pour une surveillance et une analyse en temps réel, ou chargez-les dans Hadoop et des entrepôts de données pour une analyse et une exploration hors ligne ;

(4) Indicateurs opérationnels : Kafka est également souvent utilisé pour enregistrer des données de suivi opérationnel. Y compris la collecte de données à partir de diverses applications distribuées et la production de commentaires centralisés pour diverses opérations, telles que les alarmes et les rapports ;

(5) Traitement des flux : tels que le flux d'étincelles et la tempête ;

(6) Source de l'événement ;

Je suppose que tu aimes

Origine blog.csdn.net/linwei_hello/article/details/105119102
conseillé
Classement