KAFKA est un système de mesagerie distribué conçu par linkedin en 2009,ouvert au public en 2011, qui par la suite a été repris et maintenu par apache,puis les trois principaux developpeurs qui travaillaient sur kafka ont créé confluent, qui gère et font évoluer kafka, son utilisation est en croissance exponencielle dans les entreprises qui concoivent des systèmes distribué à fort trafic et avec des gros volumes de données.
Pourquoi kafka
Kafka a fait ses preuves depuis quelques années maintenant dans le monde des échanges de messages en temps réel. En gros kafka vient un peu solutionner le problème que les entreprises rencontrent dès qu’elles sont confrontées à des quantités montrueuses de données avec des débits très élevés , avec différents integrations provenants de différents systèmes, dans ce cas kafka peut jouer le role de centralisateur de toutes ces données.
Kafka est un système de pipeline traitant des données en emps réel ou en mode miscro batch, on retrouve toujours les modes standarts avec un producteur et un consomateur de message ( publish-subscribe )
kafka est un système de file d'attente robuste qui peut gérer un volume élevé de données et vous permet de passer des messages d'un point à un autre. Les messages Kafka sont conservés sur le disque et répliqués au sein du cluster pour éviter la perte de données. Kafka est construit au-dessus du service de synchronisation de ZooKeeper. Il intègre très bien Kafka Stream qui est sorti dans la version 0.10, apache Storm ou Spark streaming en temps réel pour l'analyse des données.
Avantages de kafka
- Kafka est distribué
- Kafka est fiable
- Kafka est repliqué et a une forte tolérance aux pannes
- Kafka peut gérer de gros volumetrie et un tres grand débits et nous pouvons facilement le faire évoluer
- Kafka persite sur disque les messages, il utilise ce qu’on appelle «Distributed commit log» ,càd l'écriture dans un répertoire fileSystem
Terminologies de kafka
Topic Kafka
Dans Kafka, un topic est un bus logique sur lequel les message sont publiés. Chaque topic peut contenir un ou plusieurs consommateurs qui s'abonnent aux messages du topic et des producteurs qui emmentent des messages vers ce topic.
Partition Kafka
Un topic Kafka est regroupé en plusieurs partitions pour l'évolutivité ( Nous pouvons faire evolué notre système kafka horizontalepment en rajoutant des partitions ). Chaque partition est une séquence de messages ( Array de messages - tableau de bytes plus exactement) qui sont continuellement ajoutés. Un index unique séquentiel appelé offset est attribué à chaque message dans la partition , pour que les memes messages soient envoyés vers la même partion , un hash sur la clé du message modulo le nombre de partition pour envoyer le message.
Le producteur kafka
Un producteur Kafka est un programme qui envoie des messages à un ou plusieurs topics Kafka.
Le consomateur kafka et le groupe de consomateurs
Un consommateur kafka est un programme qui reçoit des messages d'un topic Kafka. Dans Kafka, les consommateurs se regroupent logiquement dans un groupe de consommateurs. Si le consommateur disparaît, la partition est attribuée à un autre consommateur du groupe. un groupe de consomateur distribue la lecture des partitions au sein de ses membres, certains consommateurs peuvent recevoir des messages provenant d'une partition ou plus. Dans un groupe de consommateurs, tous les consommateurs travaillent avec une répartition de charge égale, c'est-à-dire qu'un consommateur d'un groupe ne reçoit qu'un message d'une partition.