Dans une demi - heure, vous comprendrez comment fonctionne Kafka, le dictionnaire d'entrevue Java pdf téléchargement gratuit

Cxyyidd 2021-08-19 22:44:53 阅读数:431

dans une demi heure vous

Kafka

=========

Les raisons pour lesquelles les files d'attente de messages sont nécessaires et les deux modes de communication des files d'attente de messages sont brièvement décrits ci - dessus. , C'est le rôle principal de notre article. ——kafka C'est l'heure de l'entrée. !Kafka Un système de messagerie distribué à haut débit , Il peut traiter toutes les données de flux d'action dans un site Web à l'échelle du consommateur , Haute performance 、Persistance、 Sauvegarde Multi - répliques 、 Capacité d'échelle horizontale ……… Voici quelques introductions de base , Il y a trop d'informations sur Internet à ce sujet , Les lecteurs peuvent prendre Baidu par eux - mêmes !

Infrastructure et terminologie


Pas grand - chose à dire, Regardez d'abord l'image. , À partir de ce diagramme, nous pouvons lisser les concepts connexes et les relations entre eux. :

Si vous voyez cette image, vous êtes confus. , Le bois a quelque chose à voir avec ça. ! Commençons par analyser les concepts pertinents

Producer:Producer C'est - à - dire les producteurs , Auteur du message , Est l'entrée du message .

kafka cluster

Broker:Broker- Oui.kafkaExemple, Un ou plusieurs sur chaque serveur kafkaExemples, Nous pensons que chaque broker Correspond à un serveur .Chaquekafka Intracluster brokerIl y en a unPas de répétitionLe numéro de,Comme le montre la figurebroker-0、broker-1Attendez.……

Topic: Sujet du message , Une classification qui peut être comprise comme un message ,kafka Les données de topic.Dans chaquebroker Vous pouvez créer plusieurs topic.

Partition:Topic Partition de ,Chaquetopic Peut avoir plusieurs partitions , La partition fonctionne comme une charge ,Améliorationkafka Débit .Le mêmetopic Les données ne sont pas dupliquées dans différentes partitions ,partition Est un dossier à la fois !

Replication: Plus d'une copie par partition , La copie sert de roue de secours. . Lorsque la partition principale (Leader) Une roue de secours est sélectionnée en cas de défaillance (Follower) Supérieur ,DevenirLeader.Inkafka Le nombre maximum de copies par défaut dans est 10- Oui., Et le nombre de copies ne peut être supérieur à BrokerNombre de,followerEtleader Certainement dans une machine différente , La même machine ne peut contenir qu'une seule copie de la même partition (Y compris vous - même).

Message: Chaque corps de message envoyé .

Consumer:Consommateurs, Le consommateur du message , Est la sortie du message .

Consumer Group: Nous pouvons combiner plusieurs groupes de consommateurs en un seul groupe de consommateurs ,Inkafka Les données d'une même partition d'un dessin ou modèle ne peuvent être consommées que par un seul consommateur d'un groupe de consommateurs. . Les consommateurs d'un même groupe de consommateurs peuvent consommer le même topic Données pour différentes partitions de , C'est aussi pour améliorer kafka Débit !

Zookeeper:kafka Dépendance des grappes zookeeper Pour sauvegarder les méta - informations du cluster , Pour assurer la disponibilité du système .

Analyse du flux de travail


C'est comme ça quekafka Infrastructure et concepts de base , Je me demande si tout le monde a raison. kafka Il y a une impression générale , Ce n'est pas grave si tu es encore un peu confus. ! Ensuite, nous combinons l'analyse du diagramme de structure ci - dessus kafkaFlux de travail pour, Je suis sûr que vous serez plus productif. !

Envoyer des données

Nous regardons l'architecture ci - dessus ,producer C'est le producteur. , Est l'entrée des données . Regardez les flèches rouges dans l'image ,Producer Lors de l'écriture des données Pour toujours. leader, Les données ne sont pas écrites directement follower!C'est...leader Comment? ? Quel est le processus d'écriture? ? Regardons l'image ci - dessous. :

Le processus d'envoi est illustré dans le diagramme , Pas dans le texte. !Une chose à noter est, Écrire un message leaderAprès,follower C'est une initiative. leader Synchrone !producerAdoptionpush Mode publier les données à broker, Chaque message est ajouté à la partition , Écrire séquentiellement sur le disque , C'est promis. Même partition Les données sont ordonnées ! Le schéma d'écriture est le suivant: :

Cela dit, les données sont écrites sur différentes partitions ,C'est...kafka Pourquoi faire des partitions? ? Je suis sûr que tout le monde peut le deviner. , Le but principal du zonage est :

1、 Facilité d'expansion .Parce qu'untopicIl peut y en avoir plusieurs.partition, Nous pouvons donc facilement faire face à l'augmentation de la quantité de données en élargissant la machine .

2、 Améliorer la concurrence .Parpartition Unités de lecture et d'écriture , Les données peuvent être consommées simultanément par plusieurs consommateurs , Amélioration de l'efficacité du traitement des messages .

Les amis qui connaissent bien l'équilibrage des charges devraient savoir , Lorsque nous envoyons une demande à un serveur , Le serveur peut charger la demande , Distribuer le trafic à différents serveurs ,C'est là.kafkaMoyenne,Si untopicIl y en a plusieurs.partition,producer Comment savoir où envoyer les données partitionEt alors??kafka Quelques principes :

1、 partition Vous pouvez spécifier ce qui doit être écrit lors de l'écriture partition, Si spécifié , Écrivez le partition.

2、 Si ce n'est pas spécifiépartition, Mais avec les données key, Sera basé sur keyValeur dehashUn.partition.

3、 Si ce n'est pas spécifié partition, Pas de réglage. key, Et un vote partition.

Garantir que les messages ne sont pas perdus est la garantie de base d'un intergiciel de mise en file d'attente de messages ,C'est...producerVerskafka Lors de l'écriture d'un message , Comment s'assurer que le message n'est pas perdu? ? En fait, il est décrit dans le diagramme d'écriture ci - dessus. ,C'est par là.ACK Mécanisme de réponse ! Lorsque le producteur écrit des données à la file d'attente, vous pouvez définir des paramètres pour déterminer s'il faut confirmer kafkaDonnées reçues, La valeur de ce paramètre peut être définie comme suit: 01all.

0Représentantproducer Il n'est pas nécessaire d'attendre le retour du cluster pour envoyer des données au cluster , Ne pas s'assurer que le message a été envoyé avec succès . Sécurité minimale mais efficacité maximale .

1Représentantproducer Envoyer des données au cluster aussi longtemps que leader La réponse envoie la suivante , Assurez - vous seulement leader Envoyé avec succès .

allReprésentantproducer Tout est nécessaire pour envoyer des données au cluster follower Tout est fait à partir de leader Synchroniser pour envoyer le suivant ,Assurez - vous queleader Envoi réussi et sauvegarde complète de toutes les répliques . Sécurité maximale , Mais le moins efficace .

La dernière chose à noter est , Si ce n'est pas le cas, topicÉcrire des données, Peut - on écrire avec succès? ?kafka Sera créé automatiquement topic, Le nombre de partitions et de répliques est basé sur la configuration par défaut 1.

Enregistrer les données

Producer Écrire des données kafkaAprès, Le Cluster doit enregistrer les données !kafka Enregistrer les données sur le disque , Peut - être dans notre perception générale , Écrire sur le disque est une opération longue , Ne convient pas à ce composant hautement simultané .Kafka Au départ, il y aura un espace disque séparé , Écrire les données séquentiellement ( Plus efficace que l'écriture aléatoire ).

Partition Structure

Comme je l'ai déjà dit, chaque topic Peut être divisé en un ou plusieurs partition,Si vous penseztopicPlus abstrait,C'est...partition C'est quelque chose de plus concret. !Partition La représentation sur le serveur est un dossier unique ,Chaquepartition Il y aura plusieurs groupes sous le dossier pour segmentDocumentation,Par groupesegment Le fichier contient à nouveau .indexDocumentation、.logDocumentation、.timeindexDocumentation( Non dans les versions précédentes )Trois fichiers, log Les fichiers sont réellement stockés messageOù?,EtindexEttimeindex Le fichier est un fichier index , Pour récupérer un message .

Comme indiqué ci - dessus,C'estpartition Il y a trois groupes segmentDocumentation,Chaquelog La taille du fichier est la même , Mais stocké message La quantité n'est pas nécessairement égale ( Par article message Taille incohérente ). Le nom du fichier est segmentMinimumoffset Pour nommer ,Par exemple:000.indexStockageoffsetPour0~368795Message de,kafka Est d'utiliser des segments + Comment indexer pour résoudre le problème de l'efficacité de la recherche .

MessageStructure

Ça dit:log Les fichiers sont réellement stockés messageOù?,On est là.producerAllez.kafka C'est écrit un par un. message, C'est stocké dans logDansmessageÀ quoi ça ressemble?? Le message contient principalement le corps du message 、Taille du message、offset、Type de compression……Attendez un peu!! Ce que nous devons savoir, c'est les trois suivants: :

1、 offset:offset C'est une occupation. 8byte Ordre idNo., Il peut déterminer de façon unique que chaque message parition Emplacement intérieur !

2、 Taille du message: Utilisation de la taille du message 4byte, Taille utilisée pour décrire le message .

3、 Corps du message : Le corps du message contient les données réelles du message ( Comprimé ), L'espace utilisé varie selon le message .

Politique de stockage

Que le message soit consommé ou non ,kafka Tous les messages sont enregistrés . Quelle est la politique de suppression des anciennes données? ?

1、 Basé sur le temps , La configuration par défaut est 168Heures(7Oh, mon Dieu.).

2、 Basé sur la taille , La configuration par défaut est 1073741824.

Il est important de noter que,kafka La complexité temporelle de la lecture d'un message particulier est: O(1), Par conséquent, la suppression des fichiers expirés ici n'augmente pas kafkaPerformance!

Données sur la consommation

Message stocké dans logAprès le document, Les consommateurs peuvent consommer . Nous avons parlé du mode point à point et du mode d'abonnement à la publication lorsque nous avons parlé des deux modes de communication de la file d'attente des messages. .Kafka En mode point à point , Initiative des consommateurs kafka Cluster pull message ,AvecproducerLa même chose., Les consommateurs tirent aussi des messages Cherche.leader Va chercher. .

Plusieurs consommateurs peuvent former un groupe de consommateurs (consumer group), Chaque groupe de consommateurs a un groupe id! Les consommateurs d'un même groupe de consommateurs peuvent consommer le même topic Données pour les différentes partitions suivantes , Mais il n'y a pas plus d'un consommateur dans le groupe qui consomme des données sur la même partition !!! C'est un peu tordu? . Regardons l'image ci - dessous. :

L'illustration montre que les consommateurs du Groupe de consommateurs sont inférieurs à partition Situation quantitative , Il y aura donc plus d'un consommateur partition Situation des données , La consommation n'est pas aussi rapide qu'un seul partition Vitesse de traitement des consommateurs ! Si le Groupe de consommateurs compte plus de consommateurs partitionNombre de, Y a - t - il plus d'un consommateur qui consomme le même partition Et les données de ? Comme on l'a déjà dit, ça n'arrivera pas. ! Les consommateurs supplémentaires ne consomment rien partitionDonnées. Donc dans la pratique, ,Suggestion Groupe de consommateurs consumer Nombre de partition Le nombre de

Dans la section enregistrer les données , On en a parlé. partition Diviser en plusieurs groupes segment,Chaquesegment Encore une fois. .log、.index、.timeindexDocumentation, Chaque article stocké messageContientoffset、Taille du message、 Corps du message …… Nous l'avons mentionné à maintes reprises. segmentEtoffset, Comment utiliser les messages de recherche segment+offset Qu'est - ce qu'on cherche? ? Si vous devez en trouver un maintenant offsetPour368801Demessage Quel genre de processus? ? Regardons d'abord l'image ci - dessous. :

Résumé

Nous aimons toujours regarder les grands dieux de la grande usine,Mais en fait, les grands dieux ne sont que des mortels,Comparé aux programmeurs débutants,Ça m'a pris un peu plus de temps,Si vous n'essayez plus,L'écart ne fera qu'augmenter.

Plus ou moins de questions d'entrevue sont certainement utiles pour ce que vous allez faire ensuite,Mais j'aimerais que vous puissiez résumer vos lacunes par des questions d'entrevue,Pour améliorer sa compétitivité technologique de base.Chaque entrevue est une expérience d'alphabétisation de vos compétences,L'effet du résumé de la réponse après l'entrevue est excellent!Si vous avez besoin de cette version complèteNotes pour les questions d'entrevue,J'ai besoin de toi.SoutienMon article.

 Méthode de collecte des données:Stamp ici téléchargement gratuit

Copyright:Cet article est[Cxyyidd]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2021/08/20210819224204817z.html