Résumé de la version 2020 des questions d'entretien middleware (MQ + Kafka + ZK)

Série de questions d'entrevue RabbitMQ

1. Quels sont les scénarios d'utilisation de RabbitMQ?

Panique les activités d'achat, coupe les pics et comble les vallées pour éviter l'effondrement du système.

Retardez le traitement des informations, comme l'envoi de rappels par e-mail aux utilisateurs qui ont passé une commande et n'ont pas payé après 10 minutes. Système de découplage, vous pouvez écrire séparément les extensions de module pour les nouvelles fonctions. Par exemple, une fois que l'utilisateur a confirmé l'évaluation, la fonction de renvoi des points à l'utilisateur est ajoutée. À ce stade, il n'est pas nécessaire d'ajouter la fonction d'ajout de nouveaux points au code métier. L'interface des points peut être abonnée à la file de messages de l'évaluation de confirmation. Pour ajouter une fonction ultérieurement, il suffit de s'abonner à la file de messages correspondante.

2. Quels sont les rôles importants de RabbitMQ?

Les rôles importants dans RabbitMQ sont: producteur, consommateur et agent:

Producteur: le créateur du message, responsable de la création et de la transmission des données vers le serveur de messages;

Consommateur: le destinataire du message, utilisé pour traiter les données et confirmer le message;

Agent: RabbitMQ lui-même, utilisé pour jouer le rôle d '"express", il ne produit pas de messages, mais joue uniquement le rôle d' "express".

3. Quels sont les composants importants de RabbitMQ?

ConnectionFactory (gestionnaire de connexion): Le gestionnaire qui établit la connexion entre l'application et Rabbit, utilisé dans le code du programme.

Channel: Le canal utilisé pour l'envoi de messages.

Exchange: utilisé pour recevoir et distribuer des messages.

File d'attente: utilisée pour stocker les messages des producteurs.

RoutingKey (clé de routage): utilisé pour distribuer les données du générateur au commutateur.

BindingKey (clé de liaison): utilisé pour lier le message de l'échange à la file d'attente.

4. Quel est le rôle de vhost dans RabbitMQ?

vhost: Chaque RabbitMQ peut créer de nombreux vhosts, que nous appelons des hôtes virtuels. Chaque hôte virtuel est en fait une mini version de RabbitMQ. Il a sa propre file d'attente, commutateur et liaison, et possède son propre mécanisme d'autorité.

5. Comment les messages RabbitMQ sont-ils envoyés?

Tout d'abord, le client doit se connecter au serveur RabbitMQ pour publier et consommer des messages. Une connexion tcp sera créée entre le client et le serveur rabbit. Une fois le tcp ouvert et authentifié (l'authentification est le nom d'utilisateur et le mot de passe que vous envoyez au serveur rabbit), votre Le client et RabbitMQ créent un canal (canal) amqp, qui est une connexion virtuelle créée sur le "vrai" tcp, les commandes amqp sont envoyées via le canal et chaque canal aura un identifiant unique, qu'il soit libéré Les messages et les files d'attente d'abonnement sont tous terminés via ce canal.

6. Comment RabbitMQ garantit-il la stabilité des messages?

Fournit des fonctions de transaction.

En réglant le canal pour confirmer (confirmer) le mode.

7. Comment RabbitMQ évite-t-il la perte de messages?

Conservez les messages sur le disque pour vous assurer que les messages de redémarrage du serveur ne sont pas perdus.

Il y a au moins un disque physique dans chaque cluster pour garantir que les messages tombent sur le disque.

8. Quelles sont les conditions pour assurer le succès de la persistance des messages?

Déclarez que la file d'attente doit être définie comme persistante et durable sur true.

Le mode de livraison push de message doit être défini sur persistance et le deliveryMode est défini sur 2 (persistant).

Le message est arrivé à l'échange persistant.

Le message a atteint la file d'attente persistante.

Les quatre conditions ci-dessus sont remplies pour garantir le succès de la persistance des messages.

9. Quels sont les inconvénients de la persistance RabbitMQ?

L'inconvénient de la persistance est de réduire le débit du serveur, car l'utilisation du disque au lieu du stockage mémoire, ce qui réduit le débit. Vous pouvez essayer d'utiliser des disques durs ssd pour atténuer les problèmes de débit.

10. Combien de types de diffusion RabbitMQ possède-t-il?

direct (par défaut): le mode le plus basique et le plus simple. L'expéditeur envoie le message à l'abonné. S'il y a plusieurs abonnés, la méthode d'interrogation est utilisée pour envoyer le message par défaut.

headers: similaire à direct, mais avec des performances médiocres, ce type n'est presque jamais utilisé.

fanout: mode de distribution, qui distribue la consommation à tous les abonnés.

rubrique: Faites correspondre le mode d'abonnement, utilisez une correspondance régulière avec la file d'attente de messages et recevez tout ce qui peut être mis en correspondance.

11. Comment RabbitMQ met-il en œuvre une file d'attente de messages différés?

Il existe deux façons d'implémenter la file d'attente de retard:

Une fois le message expiré, il entre dans l'échange de lettres mortes, puis est transmis à la file d'attente de consommation retardée par l'échange pour réaliser la fonction de retard;

Utilisez le plug-in RabbitMQ-delay-message-exchange pour réaliser la fonction de retard.

12. À quoi sert le cluster RabbitMQ?

Le cluster a les deux objectifs principaux suivants:

Haute disponibilité: Si un certain serveur a un problème, le RabbitMQ entier peut toujours être utilisé;

Haute capacité: le cluster peut transporter plus de messages.

13. Quels sont les types de nœuds RabbitMQ?

Nœud de disque: le message sera stocké sur le disque.

Nœud mémoire: les messages sont stockés en mémoire et les messages sont perdus lors du redémarrage du serveur, et les performances sont supérieures à celles du type de disque.

14. À quels problèmes faut-il prêter attention lors de la configuration du cluster RabbitMQ?

Utilisez la connexion "–link" entre les nœuds, cet attribut ne peut pas être ignoré.

La valeur du cookie erlang utilisée par chaque nœud doit être la même. Cette valeur est équivalente à la fonction de la "clé secrète" et est utilisée pour l'authentification de chaque nœud. Le cluster entier doit contenir un nœud de disque.

15. Chaque nœud de RabbitMQ est-il une copie complète des autres nœuds? Pourquoi?

Non, il y a deux raisons:

Considérations relatives à l'espace de stockage: si chaque nœud a une copie complète de toutes les files d'attente, les nœuds nouvellement ajoutés n'ajouteront pas d'espace de stockage, mais augmenteront davantage de données redondantes;

Considérations sur les performances: si chaque message doit être copié sur chaque nœud de cluster dans son intégralité, le nœud nouvellement ajouté n'améliore pas la capacité à traiter les messages. Tout au plus, il conserve les mêmes performances qu'un nœud unique, voire pire.

16. Que se passe-t-il si le seul nœud de disque du cluster RabbitMQ tombe en panne?

Si le nœud de disque du seul disque tombe en panne, les opérations suivantes ne peuvent pas être effectuées:

Impossible de créer la file d'attente

Impossible de créer le commutateur

Impossible de créer la liaison

Impossible d'ajouter l'utilisateur

Impossible de modifier les autorisations

Impossible d'ajouter et de supprimer des nœuds de cluster

Le seul nœud de disque est tombé en panne, le cluster peut continuer à fonctionner, mais vous ne pouvez rien changer.

17. RabbitMQ a-t-il des exigences pour l'ordre d'arrêt des nœuds de cluster?

RabbitMQ a des exigences pour la séquence d'arrêt du cluster. Vous devez d'abord arrêter le nœud de mémoire, puis arrêter le nœud de disque. Si l'ordre est exactement le contraire, le message peut être perdu.

 

Série de questions d'entrevue Kafka

1. Kafka peut-il être utilisé séparément du gardien de zoo? Pourquoi?

Kafka ne peut pas être utilisé seul sans zookeeper, car kafka utilise zookeeper pour gérer et coordonner les serveurs de nœuds de kafka.

2. Combien de stratégies de conservation des données Kafka dispose-t-il?

Kafka a deux stratégies de stockage de données: la rétention selon le délai d'expiration et la rétention selon la taille des messages stockés.

3. Kafka a défini 7 jours et 10G pour effacer les données en même temps. Au cinquième jour, le message atteint 10G. Comment Kafka va-t-il gérer cela?

À ce stade, Kafka effectuera un travail de compensation des données, et les données seront effacées indépendamment de l'heure et de la taille qui remplissent les conditions.

4. Dans quelles conditions Kafka ralentira-t-il?

goulot d'étranglement des performances du processeur goulot d'étranglement en lecture et en écriture sur le disque

5. À quoi dois-je faire attention lors de l'utilisation du cluster Kafka?

Le nombre de clusters n'est pas aussi grand que possible et il est préférable de ne pas dépasser 7, car plus il y a de nœuds, plus la réplication des messages prend du temps et plus le débit de l'ensemble du groupe est faible.

Il est préférable que le nombre de clusters soit singulier, car plus de la moitié des clusters défaillants ne peuvent pas être utilisés et le taux de tolérance aux pannes singulier est plus élevé.

 

Série de questions d'entrevue ZooKeeper

1. Qu'est-ce que le gardien de zoo?

zookeeper est un service de coordination d'applications distribuées et open source, une implémentation open source de google chubby et un composant important de hadoop et hbase. C'est un logiciel qui fournit des services cohérents pour les applications distribuées. Les fonctions fournies comprennent: la maintenance de la configuration, les services de noms de domaine, la synchronisation distribuée, les services de groupe, etc.

2. Quelles sont les fonctions du gardien de zoo?

Gestion des clusters: surveillez l'état de survie des nœuds, les demandes d'opération, etc.

Élection du nœud principal: une fois le nœud principal raccroché, un nouveau tour de l'élection primaire peut être lancé à partir du nœud en attente. L'élection du nœud principal fait référence à ce processus d'élection et le gardien de zoo peut vous aider dans ce processus.

Verrous distribués: Zookeeper propose deux types de verrous: les verrous exclusifs et les verrous partagés. Le verrouillage exclusif signifie qu'un seul thread peut utiliser la ressource à la fois. Le verrouillage partagé signifie le partage du verrou en lecture et l'exclusion mutuelle en lecture-écriture. Autrement dit, plusieurs threads peuvent lire la même ressource en même temps. Si un verrou d'écriture doit être utilisé, un seul thread peut l'utiliser. Zookeeper peut contrôler les serrures distribuées.

Service de dénomination: dans un système distribué, à l'aide d'un service de dénomination, les applications clientes peuvent obtenir l'adresse de la ressource ou du service, le fournisseur et d'autres informations en fonction du nom spécifié.

3. Combien de modes de déploiement possède zookeeper?

Il existe trois modes de déploiement pour zookeeper:

Déploiement sur une seule machine: exécuté sur un cluster;

Déploiement de cluster: plusieurs clusters en cours d'exécution;

Déploiement de pseudo-cluster: un cluster démarre l'exécution de plusieurs instances de gardien de zoo.

4. Comment zookeeper assure-t-il la synchronisation des nœuds maître et esclave?

Le cœur de zookeeper est la diffusion atomique, ce mécanisme assure la synchronisation entre les différents serveurs. Le protocole qui implémente ce mécanisme est appelé le protocole zab.

Le protocole zab a deux modes, le mode de récupération (sélection principale) et le mode de diffusion (synchronisation). Lorsque le service est démarré ou après la panne du leader, zab entre en mode de récupération. Lorsque le leader est élu et que la plupart des serveurs sont synchronisés avec l'état du leader, le mode de récupération se termine. La synchronisation d'état garantit que le leader et le serveur ont le même état système.

5. Pourquoi y a-t-il un nœud maître dans le cluster?

Dans un environnement distribué, une partie de la logique métier ne doit être exécutée que par une machine du cluster, et d'autres machines peuvent partager ce résultat, ce qui peut réduire considérablement les calculs répétés et améliorer les performances, un nœud maître est donc nécessaire.

6. Il y a 3 serveurs dans le cluster et l'un des nœuds est en panne. Le gardien de zoo peut-il encore être utilisé à ce moment?

Il peut continuer à être utilisé et le serveur singulier peut continuer à être utilisé tant que pas plus de la moitié des serveurs ne sont en panne.

7. Parlez-moi du mécanisme de notification du gardien de zoo?

Le client créera un événement d'observation pour un znode. Lorsque le znode change, ces clients seront notifiés par zookeeper, puis le client pourra apporter des modifications commerciales en fonction des modifications du znode.

Pour résumer:

Toutes les questions d'entrevue ne sont pas statiques. Les questions d'entrevue ci-dessus sont juste une référence pour tout le monde. Le plus important est d'augmenter votre réserve de connaissances et d'être préparé.

Les réponses aux 200 dernières questions d'entrevue Java + en 2020 sont organisées en documents PDF.

Méthode d'acquisition d'informations: Sanlian + message privé [009] pour obtenir les informations ci-dessus

L'important est dit trois fois, trois consécutifs + trois consécutifs + trois consécutifs, il faut se rappeler d'avancer et d'aimer!

Je suppose que tu aimes

Origine blog.csdn.net/m0_46757769/article/details/109605284
conseillé
Classement