Tutoriel Apache Kafka

Tutoriel Apache Kafka
Dans cette leçon, nous verrons comment nous pouvons utiliser Apache Kafka et quelle est son utilisation. Nous examinerons à fond diverses terminologies impliquées et commencerons également à travailler avec eux.

Apache Kafka

Pour une définition de haut niveau, présentons une courte définition pour Apache Kafka:

Apache Kafka est un journal de validation distribué, tolérant à la défaut, à l'échelle horizontale, à l'échelle horizontale.

C'étaient des mots de haut niveau sur Apache Kafka. Comprenons les concepts en détail ici.

  • Distribué: Kafka divise les données qu'il contient en plusieurs serveurs et chacun de ces serveurs est capable de traiter les demandes des clients pour la part des données qu'il contient
  • Tolérance de panne: Kafka n'a pas un seul point d'échec. Dans un système SPOF, comme une base de données MySQL, si le serveur hébergeant la base de données baisse, l'application est vissée. Dans un système qui n'a pas de SPOF et se compose de nœuds multiples, même si la plupart du système tombe en panne, il est toujours le même pour un utilisateur final.
  • Horizontalement à l'échec: Ce type de crampon référence à l'ajout de machines au cluster existant. Cela signifie qu'Apache Kafka est capable d'accepter plus de nœuds dans son cluster et de ne fournir pas de temps d'arrêt pour les mises à niveau requises au système. Regardez l'image ci-dessous pour comprendre le type de concepts de luge:
  • Trafaille verticale et horizontale

  • Engager le journal: Un journal de validation est une structure de données comme une liste liée. Il ajoute que les messages y viennent et maintient toujours leur commande. Les données ne peuvent pas être supprimées de ce journal jusqu'à ce qu'un temps spécifié soit atteint pour ces données.

Un sujet dans Apache Kafka est comme une file d'attente où les messages sont stockés. Ces messages sont stockés pendant un temps configurable et le message n'est pas supprimé jusqu'à ce que ce temps soit atteint, même s'il a été consommé par tous les consommateurs connus.

Kafka est évolutif car ce sont les consommateurs qui stocke ce que le message a été récupéré par eux en dernier comme une valeur de «compensation». Regardons une silhouette pour mieux comprendre cela:

Sujet partition et décalage des consommateurs dans Apache Kafka

Début avec Apache Kafka

Pour commencer à utiliser Apache Kafka, il doit être installé sur la machine. Pour ce faire, lisez installer Apache Kafka sur Ubuntu.

Assurez-vous d'avoir une installation de Kafka active si vous souhaitez essayer des exemples que nous présentons plus tard dans la leçon.

Comment ça marche?

Avec kafka, le Producteur Publier les applications messages qui arrive à un kafka Nœud et pas directement à un consommateur. De ce nœud Kafka, les messages sont consommés par le Consommateur applications.

Producteur et consommateur de Kafka


Comme un seul sujet peut obtenir beaucoup de données en une seule fois, pour garder Kafka horizontalement évolutif, chaque sujet est divisé en partitions et chaque partition peut vivre sur n'importe quelle machine de nœud d'un cluster. Essayons de le présenter:

Partitions de sujets


Encore une fois, Kafka Broker ne garde pas les enregistrements dont le consommateur a consommé le nombre de paquets de données. C'est le La responsabilité des consommateurs de suivre les données qu'il a consommées.

Persistance au disque

Kafka persiste les enregistrements de messages qu'il tire des producteurs sur disque et ne les garde pas dans la mémoire. Une question qui pourrait se poser est de savoir comment cela rend les choses faisables et rapides? Il y avait plusieurs raisons derrière cela, ce qui en fait un moyen optimal de gérer les enregistrements de messages:

  • Kafka suit un protocole de regroupement des enregistrements de messages. Les producteurs produisent des messages qui sont persistés à disque en gros morceaux et les consommateurs consomment ces enregistrements de messages en gros morceaux linéaires également.
  • La raison pour laquelle les écritures de disque sont linéaires, c'est que cela rend les lectures rapidement en raison du temps de lecture du disque linéaire très diminué.
  • Les opérations de disque linéaire sont optimisées par Systèmes d'exploitation ainsi en utilisant des techniques de écrire et lecture.
  • Le système d'exploitation moderne utilise également le concept de Pagecatchage ce qui signifie qu'ils mettent en cache certaines données de disque dans la RAM disponible gratuite.
  • Alors que Kafka persiste les données dans des données standard uniformes dans l'ensemble du flux du producteur au consommateur, il utilise le Optimisation de copie zéro processus.

Distribution et réplication des données

Comme nous l'avons étudié ci-dessus qu'un sujet est divisé en partitions, chaque enregistrement de message est reproduit sur plusieurs nœuds du cluster pour maintenir l'ordre et les données de chaque enregistrement au cas où un nœud décède.

Même si une partition est reproduite sur plusieurs nœuds, il y a toujours un chef de partition Node par lequel les applications lisent et écrivent des données sur le sujet et le leader reproduit les données sur d'autres nœuds, qui sont appelés suiveurs de cette partition.

Si les données d'enregistrement des messages sont très importantes pour une application, la garantie de l'enregistrement du message est sûre dans l'un des nœuds peut être augmenté en augmentant le facteur de réplication du cluster.

Qu'est-ce que Zookeeper?

Zookeeper est un magasin de valeurs clés distribué hautement tolérant les défauts. Apache Kafka dépend fortement de Zookeeper pour stocker la mécanique des cluster comme le rythme cardiaque, la distribution de mises à jour / configurations, etc.).

Il permet aux courtiers de Kafka de s'abonner à lui-même et de savoir chaque fois qu'un changement concernant un leader de partition et une distribution de nœuds se sont produits.

Les applications des producteurs et des consommateurs communiquent directement avec Zookeeper Application pour savoir quel nœud est le leader de partition pour un sujet afin qu'ils puissent effectuer des lectures et des écritures à partir du chef de partition.

Streaming

Un processeur de flux est un composant principal d'un cluster Kafka qui prend un flux continu de données d'enregistrement de messages à partir de sujets d'entrée, de traiter ces données et crée un flux de données sur des sujets de sortie qui peuvent être n'importe quoi, de la poubelle à une base de données.

Il est tout à fait possible d'effectuer un traitement simple directement en utilisant les API producteur / consommateur, bien que pour un traitement complexe comme combinaison de flux, Kafka fournit une bibliothèque API de flux intégrée, mais veuillez noter que cette API est censée être utilisée dans notre propre base de code et il ne le fait pas t Run sur un courtier. Il fonctionne similaire à l'API des consommateurs et nous aide à évoluer le travail de traitement des flux sur plusieurs applications.

Quand utiliser Apache Kafka?

Comme nous l'avons étudié dans les sections ci-dessus, Apache Kafka peut être utilisée pour traiter un grand nombre de disques de messages qui peuvent appartenir à un nombre pratiquement infini de sujets dans nos systèmes.

Apache Kafka est un candidat idéal lorsqu'il s'agit d'utiliser un service qui peut nous permettre de suivre l'architecture axée sur les événements dans nos applications. Cela est dû à ses capacités de persistance de données, d'architecture tolérante aux pannes et hautement distribuée où les applications critiques peuvent s'appuyer sur ses performances.

L'architecture évolutive et distribuée de Kafka facilite l'intégration avec les microservices et permet à une application de se découpler avec beaucoup de logique commerciale.

Créer un nouveau sujet

Nous pouvons créer un sujet de test essai Sur le serveur Kafka Apache avec la commande suivante:

Créer un sujet

sudo kafka-topics.sh --create --zookeeper localhost: 2181 - Réplication-facteur 1
--Partitions 1 - Test topic

Voici ce que nous récupérons avec cette commande:

Créer un nouveau sujet Kafka


Un sujet de test sera créé que nous pourrons confirmer avec la commande mentionnée:

Confirmation de la création de sujets kafka

Écrire des messages sur un sujet

Comme nous l'avons étudié plus tôt, l'une des API présente dans Apache Kafka est le API producteur. Nous utiliserons cette API pour créer un nouveau message et publier sur le sujet que nous venons de créer:

Écrire un message sur le sujet

sudo kafka-console producteur.SH - Broker-list localhost: 9092 - Test topic

Voyons la sortie de cette commande:

Publier un message à Kafka Topic


Une fois que nous appuyons sur la touche, nous verrons un nouveau signe flèche (>), ce qui signifie que nous pouvons désormais des données:

Taper un message


Tapez simplement quelque chose et appuyez pour démarrer une nouvelle ligne. J'ai tapé 3 lignes de textes:

Lire des messages du sujet

Maintenant que nous avons publié un message sur le sujet Kafka que nous avons créé, ce message sera là pour un moment configurable. Nous pouvons le lire maintenant en utilisant le API des consommateurs:

Lire des messages du sujet

Sudo Kafka-consoleur.sh --zookeeper localhost: 2181 --
Test de sujets - de la bêtises

Voici ce que nous récupérons avec cette commande:

Commande pour lire le message de Kafka Topic


Nous serons en mesure de voir les messages ou les lignes que nous avons écrits en utilisant l'API producteur comme indiqué ci-dessous:

Si nous écrivons un autre nouveau message à l'aide de l'API du producteur, il sera également affiché instantanément du côté consommateur:

Publier et la consommation en même temps

Conclusion

Dans cette leçon, nous avons examiné comment nous commençons à utiliser Apache Kafka qui est un excellent courtier de messages et pouvons également agir comme une unité de persistance de données spéciale.