<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anthony DASSE</title>
    <description>The latest articles on DEV Community by Anthony DASSE (@anthonydasse).</description>
    <link>https://dev.to/anthonydasse</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F152365%2Ff036179b-2d7a-4b5c-bd27-e72f2c8c0ca5.jpeg</url>
      <title>DEV Community: Anthony DASSE</title>
      <link>https://dev.to/anthonydasse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anthonydasse"/>
    <language>en</language>
    <item>
      <title>Introduction à Apache Kafka</title>
      <dc:creator>Anthony DASSE</dc:creator>
      <pubDate>Thu, 08 Mar 2018 07:11:39 +0000</pubDate>
      <link>https://dev.to/anthonydasse/introduction-a-apache-kafka-7m8</link>
      <guid>https://dev.to/anthonydasse/introduction-a-apache-kafka-7m8</guid>
      <description>&lt;p&gt;Cet article (et ses futurs petits frères) a pour vocation de vous présenter l’utilisation de Kafka.&lt;/p&gt;

&lt;p&gt;Durant les premières parties, je vais simplifier un maximum les concepts de Apache Kafka (et cela peut choquer des gens …).&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Apache Kafka&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Apache Kafka est un système de messages distribué. Ce dernier est opensource et sous licence Apache. Il a été placé sous la bannière opensource par Linkedin qui continue à contribuer à son développement.&lt;/p&gt;

&lt;p&gt;Il est souvent comparé à d’autres systèmes de messages mais Kafka offre bien plus que ces outils.&lt;/p&gt;

&lt;p&gt;Il est certainement un des outils les plus appropriés et les plus appréciés pour gérer des messages d’un SI d’entreprise.&lt;/p&gt;

&lt;p&gt;Avec l’utilisation d’un tel outil (il en est de même pour ses concurrents), vous supprimez une des choses les plus lourdes d’un SI d’entreprise (ou dans votre application) : &lt;em&gt;*l’adhérence*&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Le fait de savoir que l’information doit être envoyé au composant &lt;code&gt;C&lt;/code&gt; et à l’application &lt;code&gt;A&lt;/code&gt; créé un réel problème lorsque l’on veut faire évoluer les applications facilement.&lt;/p&gt;

&lt;p&gt;Le concept des messages distribués est simple, je suis le composant &lt;code&gt;X&lt;/code&gt;, je fais mon travail et je notifie mon environnement via un message. Les composants ou applications intéressés par mon message le récupèrent et travaillent avec. Dans notre cas, le composant &lt;code&gt;X&lt;/code&gt; ne savait pas à qui il envoyait le message.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Rapides concepts&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Kafka permet donc de gérer des messages.&lt;/p&gt;

&lt;p&gt;Ces messages sont envoyés par des Producer (Producteur de messages).&lt;/p&gt;

&lt;p&gt;Un message donné concerne un sujet, dans Kafka on appelle cela un Topic.&lt;/p&gt;

&lt;p&gt;Le Consumer (Consommateur de messages), lui, s’intéresse à un ou plusieurs sujets, il s’abonne donc aux Topics. Il recevra donc tous les messages concernant ces fameux topics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qAI-Wznn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/726/1%2A3xMMAnMHfY5R4e4gxYTAKQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qAI-Wznn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/726/1%2A3xMMAnMHfY5R4e4gxYTAKQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kafka est un cluster constitué de Brokers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Un Broker c’est quoi ?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;C’est simplement une instance d’un serveur Kafka.&lt;/p&gt;

&lt;p&gt;On peut donc facilement se constituer un cluster Kafka en instanciant les services Kafka.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--88r_vafy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/425/1%2A3osCkvu1FNU2djmv8ov2_A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--88r_vafy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/425/1%2A3osCkvu1FNU2djmv8ov2_A.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cette gestion en cluster permet d’améliorer le partitionnement et la réplication des données.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;En quoi c’est utile ?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;La partitionnement est important lorsque le volume de données va augmenter.&lt;/p&gt;

&lt;p&gt;En utilisant un double partitionnement sur un Topic, on pourra augmenter le “débit” de lecture des messages en rajoutant un consommateur. Un consommateur s’occupera donc d’une partition d’un Topic.&lt;/p&gt;

&lt;p&gt;La réplication de données est très utilisée dans les systèmes “clusters”.&lt;/p&gt;

&lt;p&gt;Rappelez-vous, une instance Kafka garde les messages … si le serveur sur lequel est lancé le service crash … les données sont perdues. En utilisant la réplication, on s’assure que les données sont disponibles sur un ou plusieurs autres serveurs.&lt;/p&gt;

&lt;p&gt;Cela permet aussi de facilement scaler Kafka si le nombre de message augmente ou si on veut accélérer le traitement.&lt;/p&gt;

&lt;p&gt;Et là, c’est le drame. Comment Kafka fait-il pour gérer tout ce petit monde ?&lt;/p&gt;

&lt;p&gt;Il se base sur Apache Zookeeper (très utilisé dans les systèmes distribués). Pour faire simple, Zookeeper permet de savoir quel service est où … et Kafka lui demande juste : “Hey, il est où mon broker 1”. (J’ai vraiment simplifié le concept).&lt;/p&gt;

&lt;h4&gt;
  
  
  Le stockage des messages
&lt;/h4&gt;

&lt;p&gt;Gros point positif, Kafka stocke les messages.&lt;/p&gt;

&lt;p&gt;Ce stockage est basé sur un structure de données appelé : *&lt;em&gt;LOG*&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;… Non rien à voir avec les logs applicatifs ou techniques que l’on peut utiliser à coup de log4j.&lt;/p&gt;

&lt;p&gt;Il s’agit d’un tableau de messages ordonnés.&lt;/p&gt;

&lt;p&gt;L’ordonnancement est réalisé à partir de la date d’arrivé du message.&lt;/p&gt;

&lt;p&gt;Chaque message se voit donner un index, dans Kafka on appel cela un offset.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;La rétention des messages peut être gérée dans la configuration du cluster Kafka (limite de taille ou limite de temps).&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>microservices</category>
      <category>kafka</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
