VT2020-Apache Pulsar-Fiche
Introduction
Pulsar est un système de messagerie distribué que l’on peut comparer à Apache Kafka. C'est un projet né chez Yahoo! à l'issu d’un besoin de faire un système de messagerie, les systèmes fait à l’époque n'étant pas suffisants . Ce produit est utilisé actuellement pour d’autre application comme Yahoo Mail, Yahoo Finance mais aussi Yahoo! Sport. Le premier déploiement de Pulsar date de 2015, il a par la suite été mit en OpenSource en 2016 et est finalement devenu un Top Project Apache en septembre 2018.
Fonctionnement
Messagerie Distribuée
Pulsar est un système de messagerie distribué, cela veut donc dire que :
- Les données répliquées et enregistrées sur le disque. - La présence d'une réplique géographique des données - Une garantit d'ordre des messages - La fonction de Multi-Entités - Un fort débit
Concept et architecture
L'architecture est composée principalement de Producteurs de Consommateurs et de Brokers. Chaque Broker héberge Topic. Les Brokers représentent le point de contact entre les consommateurs et les producteurs, c'est là où vont être hégergés les topics. C'est là ou l'on trouve la première difference entre Apache Pulsar et Apache Kafka, contrairement à Kafka, les Brokers ne stockent pas les informations des messages. File:CA.jpg
Architecture des stockages et des gestions
On remarque donc que les Brokers s'occupent de la gestion des données et du traitement des messages, seulement, nous possedons ici de nouvelles entitées appellées Bookies qui s'occupent du stockage des données des differents messages.
Les Brokers et les Bookies sont donc organisés en Cluster :
- Gestion des messages composé des Brokers - Stockage des messages composé des Bookies et géré par Apache BookKeeper
Quant au stockage des méta données, cela se passe au niveau des Servers qui sont générés par Apache ZooKeeper.
File:ASG
L'independance des clusters
On remarque donc qu'il y a une décorellation entre la partie stockage et la partie traitement des messages. Nous pouvons donc rajouter des brokers si l'on a besoin de plus de CPU pour traiter des messages et plus de Bookies si nous avons besoin de plus de stockage. File:IDC.jpg On peut donc faire évoluer les deux entités et leurs nombres totalement indépendamment les unes des autres.
Segmentation des données
Les informations d'un Topic se divisent en un ensemble de segments et chacun de ces segments represente un ensemble de message qui seront envoyés dans les bookies.
Contrairement à Kafka, les données ne sont pas stockées de manière entière, elles sont partitionnées suivant les differents Bookies. Cette configuration présente des avantages comme par exemple les backups, si un des Bookies lache pour n'importe quelle raison, nous pourrons recopier les segments perdus dans un autre Bookie.
Comportement
Consommation des messages
Les utilisateurs possèdent 4 manières differentes de consommer des messages :
1) Exclusive Un seul consommateur peut accèder à une Subscription et si un autre consommateur essaye d'accéder à la subscription, il se verra refuser l'accès, d'où le principe d'exclusivité.
2) Fail Over Deux consommateurs sont connectés en même temps a une même subscription, de ce fait si un des consommateurs tombe, le deuxième prend le relai.
3) Shared Plusieurs consommateurs peuvent être connectés en même temps à une même Subsciption , seulement, l'ordre de reception des données sera répartit selon un ordre Round Robin, de ce fait, on pourra par exemple avoir une suite de message, la première moitié sera envoyé au consommateur 1 et l'autre au deuxieme consommateur
4) Key Linked Un mode assez similaire au précédent, à la difference pret que tous les messages qui sont associés à une même clé seront délivrés à un unique consommateur.
Notons aussi que plusieurs subscriptions peuvent avoir un même topic.
Contenu des messages
Les messages sont composés de :
- Tableau d’octets - Clé (optionnel) - Ensemble de propriétés (optionnel) - Nom du producteur - ID de séquence (numéro d’ordre dans le topic, attribué par le producteur) - Timestamps