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.
Trafaille verticale et horizontale
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
Partitions de sujets
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:
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
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
Taper un message
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
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.