SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
Apache Zookeeper



"From a certain point onward, there is no longer any turning back.
         That is the point that must be reached." - Kafka




                           Michael Morello
                             @barkbay
                                                                     1
Pourquoi ?

●   Pourquoi s'intéresser au problème de consensus ?
    –   Parce que c'est le même que celui des transactions
        distribuées
    –   Parce qu'aujourd'hui les traitements sont répartis sur plusieurs
        machines
    –   Parce qu'il faut accepter que ces machines et le réseau qui
        les relie ne soient pas fiables


                                                                           2
Qu'est ce qu'un consensus ?


●   Soit un système composé de N processus et un domaine
    de valeurs D
●   Chaque processus possède une valeur initiale v0 dans D
    → Il y a consensus si l'ensemble des processus évaluent
    une même valeur finale vf


                                                              3
Fallacies of Distributed Computing
●   Pourquoi est-ce difficile ?
    1. Le réseau n'est pas fiable
    2. La latence n'est pas nulle
    3. La bande passante n'est pas infinie
    4. Le réseau n'est pas sécurisé
    5. La topologie change
    6. Il y a plusieurs administrateurs
    7. Transporter une donnée a un coût
    8. Le réseau n'est pas homogène
       Fallacies of Distributed Computing - Peter Deutsch @Sun Microsystems   4
Est-ce possible ?

●   Théorème de M. Fisher, N. Lynch et M. Paterson
    (1985)
      Dans un modèle de communication asynchrone et si l'on
      considère que les processus peuvent connaître des
      défaillances alors il n'existe pas de solution



                                                              5
Dans la pratique...
●   2 Phase Commit :
    –  Bloquant, haute vulnérabilité aux pannes, ne gère pas un "fail-stop" du
       coordinateur, utilisable seulement pour coordonner un faible nombre de
       processus
●   3 Phase Commit :
    –  Non bloquant, plus résistant que 2PC, mais gère de manière incomplète un
       "fail-recover" du coordinateur
●   Algorithme de Paxos :
    –   Algorithme de consensus basé sur un quorum de participants
    –   Pas de coordinateur, pas de "Single Point of Failure"
    –   Robuste, fonctionne tant qu'il y a une majorité de participants           6
Zookeeper Atomic Broadcast

●   Zookeeper implémente un algorithme inspiré de
    Paxos appelé ZAB : Zookeeper Atomic Broadcast
●   Paxos est efficace mais ZAB apporte quelques
    améliorations :
    – Par exemple il garantit dans quel ordre les
      transactions sont appliquées alors que Paxos
      ne le permet pas.
                                                 7
Et ça sert à quoi ?
      ●
          Leader Election : attribuer un rôle spécifique à 1 JVM1 en
          particulier parmi N
      ●   Group Membership : regrouper de manière logique des
          JVM
      ●   (Double) Barriers : synchronisation de N JVM
      ●   Sections critiques : partage de verrous ou de
          sémaphores entre plusieurs JVM

                                                                                8
1 : Il existe aussi des API pour d'autres langages comme le C, Perl et Python
Et ça sert à quoi (encore)

●   Architecture orientée service : annuaire de services
    hautement disponible et cohérent
●   Centre de configuration de processus dynamique et
    hautement disponible
●   Système de message (à la JMS) hautement disponible,
    haute performance, et avec conservation de l'ordre des
    messages (Kafka, Hedwig)

                                                             9
Qui l'utilise ?




                  Et bien d'autres.......   10
Le modèle de programmation
●   Modèle simple : Zookeeper expose une arborescence et les données
    sont stockées dans les nœuds de l'arbre :
    /parent : data1
        |­ fils1 : data2
        `­ fils2 : data3
●   Ces nœuds sont appelés ZNodes
●   La mise à jour des nœuds se fait de manière atomique grâce à ZAB
●   Les clients peuvent être immédiatement notifiés d'une mise à jour des
    données.
                                                                            11
Programmation de + haut niveau

                    Netflix Curator1 est une bibliothèque
                    développée par Netflix qui offre une API de
                    haut niveau afin de faciliter l'utilisation de
                    Zookeeper :
                     –   Gestion plus aisée de la connexion au cluster
                         Zookeeper et des problèmes
                     –   Offre des recettes de bases (leader, lock, cache...)
                     –   Extension : annuaire de service

                                                                         12
1 : https://github.com/Netflix/curator
Points d'attention
●   Zookeeper conserve les données en mémoire et la taille des données associées à
    un Znode ne peut (par défaut) dépasser 1Mo
●   Les "watches" qui notifient immédiatement les clients d'une mise à jour des
    données ne sont exécutés qu'une seule fois et dans un même "thread"
●   Corollaire du point précédent : certains événements peuvent être manqués et il
    faut faire attention aux problèmes de synchronisation.
●   Attention à l'effet de troupeau (Herd Effect) si trop de clients surveillent le même
    Znode lorsque celui-ci est modifié.
●   En Java : attention aux longues pauses du garbage collector qui peuvent faire
    croire au cluster que le client s'est déconnecté.


                                                                                           13
Question ?



                  Michael Morello
             michael.morello@gmail.com
                    @barkbay



                                         14

Mais conteúdo relacionado

Mais procurados

Apache Bigtop: a crash course in deploying a Hadoop bigdata management platform
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platformApache Bigtop: a crash course in deploying a Hadoop bigdata management platform
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platformrhatr
 
Alexei Vladishev - Zabbix - Monitoring Solution for Everyone
Alexei Vladishev - Zabbix - Monitoring Solution for EveryoneAlexei Vladishev - Zabbix - Monitoring Solution for Everyone
Alexei Vladishev - Zabbix - Monitoring Solution for EveryoneZabbix
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Using eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumUsing eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumScyllaDB
 
Cloud et Virtualisation
Cloud et VirtualisationCloud et Virtualisation
Cloud et VirtualisationMarc Jouve
 
KCD Zurich 2023 — Bridge Dev & Ops with eBPF.pdf
KCD Zurich 2023 — Bridge Dev & Ops with eBPF.pdfKCD Zurich 2023 — Bridge Dev & Ops with eBPF.pdf
KCD Zurich 2023 — Bridge Dev & Ops with eBPF.pdfRaphaël PINSON
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetesKiwi Backup
 
Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm
 
Formation libre OpenStack en Français
Formation libre OpenStack en FrançaisFormation libre OpenStack en Français
Formation libre OpenStack en FrançaisOsones
 
Docker Networking - Common Issues and Troubleshooting Techniques
Docker Networking - Common Issues and Troubleshooting TechniquesDocker Networking - Common Issues and Troubleshooting Techniques
Docker Networking - Common Issues and Troubleshooting TechniquesSreenivas Makam
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)Alphorm
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Heithem Abbes
 
APACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsAPACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsKetan Gote
 
Implémentation de la QoS au sein d'un IP/MPLS - Présentation
Implémentation de la QoS au sein d'un IP/MPLS - PrésentationImplémentation de la QoS au sein d'un IP/MPLS - Présentation
Implémentation de la QoS au sein d'un IP/MPLS - PrésentationRihab Chebbah
 
Introduction à OpenStack
Introduction à OpenStackIntroduction à OpenStack
Introduction à OpenStackAnDaolVras
 
Deep Dive into Apache Kafka
Deep Dive into Apache KafkaDeep Dive into Apache Kafka
Deep Dive into Apache Kafkaconfluent
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingSreenivas Makam
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaJiangjie Qin
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation dockerOlivier Eeckhoutte
 

Mais procurados (20)

Apache Bigtop: a crash course in deploying a Hadoop bigdata management platform
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platformApache Bigtop: a crash course in deploying a Hadoop bigdata management platform
Apache Bigtop: a crash course in deploying a Hadoop bigdata management platform
 
Alexei Vladishev - Zabbix - Monitoring Solution for Everyone
Alexei Vladishev - Zabbix - Monitoring Solution for EveryoneAlexei Vladishev - Zabbix - Monitoring Solution for Everyone
Alexei Vladishev - Zabbix - Monitoring Solution for Everyone
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Using eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumUsing eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in Cilium
 
Kafka PPT.pptx
Kafka PPT.pptxKafka PPT.pptx
Kafka PPT.pptx
 
Cloud et Virtualisation
Cloud et VirtualisationCloud et Virtualisation
Cloud et Virtualisation
 
KCD Zurich 2023 — Bridge Dev & Ops with eBPF.pdf
KCD Zurich 2023 — Bridge Dev & Ops with eBPF.pdfKCD Zurich 2023 — Bridge Dev & Ops with eBPF.pdf
KCD Zurich 2023 — Bridge Dev & Ops with eBPF.pdf
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124
 
Formation libre OpenStack en Français
Formation libre OpenStack en FrançaisFormation libre OpenStack en Français
Formation libre OpenStack en Français
 
Docker Networking - Common Issues and Troubleshooting Techniques
Docker Networking - Common Issues and Troubleshooting TechniquesDocker Networking - Common Issues and Troubleshooting Techniques
Docker Networking - Common Issues and Troubleshooting Techniques
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
APACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsAPACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka Streams
 
Implémentation de la QoS au sein d'un IP/MPLS - Présentation
Implémentation de la QoS au sein d'un IP/MPLS - PrésentationImplémentation de la QoS au sein d'un IP/MPLS - Présentation
Implémentation de la QoS au sein d'un IP/MPLS - Présentation
 
Introduction à OpenStack
Introduction à OpenStackIntroduction à OpenStack
Introduction à OpenStack
 
Deep Dive into Apache Kafka
Deep Dive into Apache KafkaDeep Dive into Apache Kafka
Deep Dive into Apache Kafka
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes Networking
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache Kafka
 
Midi technique - présentation docker
Midi technique - présentation dockerMidi technique - présentation docker
Midi technique - présentation docker
 

Destaque

Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeperSaurav Haloi
 
Comment l’architecture événementielle révolutionne la communication dans le S...
Comment l’architecture événementielle révolutionne la communication dans le S...Comment l’architecture événementielle révolutionne la communication dans le S...
Comment l’architecture événementielle révolutionne la communication dans le S...Vincent Lepot
 
Apache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignApache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignMichael Noll
 
Introduction to Kafka and Zookeeper
Introduction to Kafka and ZookeeperIntroduction to Kafka and Zookeeper
Introduction to Kafka and ZookeeperRahul Jain
 
Définir un cluster sous hadoop avec apache ambari
Définir un cluster sous hadoop avec apache ambariDéfinir un cluster sous hadoop avec apache ambari
Définir un cluster sous hadoop avec apache ambarifabricemourlin
 
Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormParis_Storm_UG
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystèmeKhanh Maudoux
 
ApacheCon Europe 2012 -Big Search 4 Big Data
ApacheCon Europe 2012 -Big Search 4 Big DataApacheCon Europe 2012 -Big Search 4 Big Data
ApacheCon Europe 2012 -Big Search 4 Big DataOpenSource Connections
 
Spark : 5 moyens simples et rapides pour exploiter vos Big Data avec Spark et...
Spark : 5 moyens simples et rapides pour exploiter vos Big Data avec Spark et...Spark : 5 moyens simples et rapides pour exploiter vos Big Data avec Spark et...
Spark : 5 moyens simples et rapides pour exploiter vos Big Data avec Spark et...Jean-Michel Franco
 
Experience with Kafka & Storm
Experience with Kafka & StormExperience with Kafka & Storm
Experience with Kafka & StormOtto Mok
 
Présentation du stockage RAID
Présentation du stockage RAIDPrésentation du stockage RAID
Présentation du stockage RAIDEmmanuel Florac
 
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...Ontico
 
HDFS HA : Stockage à haute disponibilité par Damien Hardy
HDFS HA : Stockage à haute disponibilité par Damien HardyHDFS HA : Stockage à haute disponibilité par Damien Hardy
HDFS HA : Stockage à haute disponibilité par Damien HardyOlivier DASINI
 
Apache zookeeper seminar_trinh_viet_dung_03_2016
Apache zookeeper seminar_trinh_viet_dung_03_2016Apache zookeeper seminar_trinh_viet_dung_03_2016
Apache zookeeper seminar_trinh_viet_dung_03_2016Viet-Dung TRINH
 

Destaque (20)

Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
 
Comment l’architecture événementielle révolutionne la communication dans le S...
Comment l’architecture événementielle révolutionne la communication dans le S...Comment l’architecture événementielle révolutionne la communication dans le S...
Comment l’architecture événementielle révolutionne la communication dans le S...
 
Apache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignApache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - Verisign
 
Introduction to Kafka and Zookeeper
Introduction to Kafka and ZookeeperIntroduction to Kafka and Zookeeper
Introduction to Kafka and Zookeeper
 
Ben Broeckx
Ben BroeckxBen Broeckx
Ben Broeckx
 
Définir un cluster sous hadoop avec apache ambari
Définir un cluster sous hadoop avec apache ambariDéfinir un cluster sous hadoop avec apache ambari
Définir un cluster sous hadoop avec apache ambari
 
Apache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec StormApache Storm - Introduction au traitement temps-réel avec Storm
Apache Storm - Introduction au traitement temps-réel avec Storm
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
 
Apache kafka
Apache kafkaApache kafka
Apache kafka
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
 
ApacheCon Europe 2012 -Big Search 4 Big Data
ApacheCon Europe 2012 -Big Search 4 Big DataApacheCon Europe 2012 -Big Search 4 Big Data
ApacheCon Europe 2012 -Big Search 4 Big Data
 
Spark : 5 moyens simples et rapides pour exploiter vos Big Data avec Spark et...
Spark : 5 moyens simples et rapides pour exploiter vos Big Data avec Spark et...Spark : 5 moyens simples et rapides pour exploiter vos Big Data avec Spark et...
Spark : 5 moyens simples et rapides pour exploiter vos Big Data avec Spark et...
 
Experience with Kafka & Storm
Experience with Kafka & StormExperience with Kafka & Storm
Experience with Kafka & Storm
 
Présentation du stockage RAID
Présentation du stockage RAIDPrésentation du stockage RAID
Présentation du stockage RAID
 
Curation
CurationCuration
Curation
 
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
 
HDFS HA : Stockage à haute disponibilité par Damien Hardy
HDFS HA : Stockage à haute disponibilité par Damien HardyHDFS HA : Stockage à haute disponibilité par Damien Hardy
HDFS HA : Stockage à haute disponibilité par Damien Hardy
 
Apache kafka big data track
Apache kafka   big data trackApache kafka   big data track
Apache kafka big data track
 
Apache Kafka at LinkedIn
Apache Kafka at LinkedInApache Kafka at LinkedIn
Apache Kafka at LinkedIn
 
Apache zookeeper seminar_trinh_viet_dung_03_2016
Apache zookeeper seminar_trinh_viet_dung_03_2016Apache zookeeper seminar_trinh_viet_dung_03_2016
Apache zookeeper seminar_trinh_viet_dung_03_2016
 

Semelhante a Présentation de Apache Zookeeper

Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxMarc Bojoly
 
Noyau temps réel freertos cheriet mohammed el amine
Noyau temps réel freertos cheriet mohammed el amineNoyau temps réel freertos cheriet mohammed el amine
Noyau temps réel freertos cheriet mohammed el amineCHERIET Mohammed El Amine
 
Hibernate vs le Cloud computing
Hibernate vs le Cloud computingHibernate vs le Cloud computing
Hibernate vs le Cloud computingJulien Dubois
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingNormandy JUG
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingIppon
 
Big Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foinBig Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foinPALO IT
 
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Modern Data Stack France
 
A la découverte d'abus
A la découverte d'abusA la découverte d'abus
A la découverte d'abusThierry Gayet
 
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...OCTO Technology
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en JavaFlorian Beaufumé
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08Loïc Descotte
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de donnéespprem
 
Introduction à Rmpi
Introduction à RmpiIntroduction à Rmpi
Introduction à Rmpiparisraddicts
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaOlivier BAZOUD
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Solr retour d'experience
Solr retour d'experienceSolr retour d'experience
Solr retour d'experienceCrossknowledge
 

Semelhante a Présentation de Apache Zookeeper (20)

Perfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptxPerfug BOF devoxx2017.pptx
Perfug BOF devoxx2017.pptx
 
Noyau temps réel freertos cheriet mohammed el amine
Noyau temps réel freertos cheriet mohammed el amineNoyau temps réel freertos cheriet mohammed el amine
Noyau temps réel freertos cheriet mohammed el amine
 
Hibernate vs le Cloud computing
Hibernate vs le Cloud computingHibernate vs le Cloud computing
Hibernate vs le Cloud computing
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques Exchange 2013 Bonnes pratiques
Exchange 2013 Bonnes pratiques
 
Diagnostic performances
Diagnostic performancesDiagnostic performances
Diagnostic performances
 
Big Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foinBig Data ou comment retrouver une aiguille dans une botte de foin
Big Data ou comment retrouver une aiguille dans une botte de foin
 
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
 
A la découverte d'abus
A la découverte d'abusA la découverte d'abus
A la découverte d'abus
 
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
Softshake 2013 - Yarn dans la vraie vie, retour d'expérience et bonnes pratiq...
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en Java
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
 
Cours ALGR M1.pdf
Cours ALGR M1.pdfCours ALGR M1.pdf
Cours ALGR M1.pdf
 
Introduction à Rmpi
Introduction à RmpiIntroduction à Rmpi
Introduction à Rmpi
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Formation Google App Engine
Formation Google App EngineFormation Google App Engine
Formation Google App Engine
 
Solr retour d'experience
Solr retour d'experienceSolr retour d'experience
Solr retour d'experience
 

Présentation de Apache Zookeeper

  • 1. Apache Zookeeper "From a certain point onward, there is no longer any turning back. That is the point that must be reached." - Kafka Michael Morello @barkbay 1
  • 2. Pourquoi ? ● Pourquoi s'intéresser au problème de consensus ? – Parce que c'est le même que celui des transactions distribuées – Parce qu'aujourd'hui les traitements sont répartis sur plusieurs machines – Parce qu'il faut accepter que ces machines et le réseau qui les relie ne soient pas fiables 2
  • 3. Qu'est ce qu'un consensus ? ● Soit un système composé de N processus et un domaine de valeurs D ● Chaque processus possède une valeur initiale v0 dans D → Il y a consensus si l'ensemble des processus évaluent une même valeur finale vf 3
  • 4. Fallacies of Distributed Computing ● Pourquoi est-ce difficile ? 1. Le réseau n'est pas fiable 2. La latence n'est pas nulle 3. La bande passante n'est pas infinie 4. Le réseau n'est pas sécurisé 5. La topologie change 6. Il y a plusieurs administrateurs 7. Transporter une donnée a un coût 8. Le réseau n'est pas homogène Fallacies of Distributed Computing - Peter Deutsch @Sun Microsystems 4
  • 5. Est-ce possible ? ● Théorème de M. Fisher, N. Lynch et M. Paterson (1985) Dans un modèle de communication asynchrone et si l'on considère que les processus peuvent connaître des défaillances alors il n'existe pas de solution 5
  • 6. Dans la pratique... ● 2 Phase Commit : – Bloquant, haute vulnérabilité aux pannes, ne gère pas un "fail-stop" du coordinateur, utilisable seulement pour coordonner un faible nombre de processus ● 3 Phase Commit : – Non bloquant, plus résistant que 2PC, mais gère de manière incomplète un "fail-recover" du coordinateur ● Algorithme de Paxos : – Algorithme de consensus basé sur un quorum de participants – Pas de coordinateur, pas de "Single Point of Failure" – Robuste, fonctionne tant qu'il y a une majorité de participants 6
  • 7. Zookeeper Atomic Broadcast ● Zookeeper implémente un algorithme inspiré de Paxos appelé ZAB : Zookeeper Atomic Broadcast ● Paxos est efficace mais ZAB apporte quelques améliorations : – Par exemple il garantit dans quel ordre les transactions sont appliquées alors que Paxos ne le permet pas. 7
  • 8. Et ça sert à quoi ? ● Leader Election : attribuer un rôle spécifique à 1 JVM1 en particulier parmi N ● Group Membership : regrouper de manière logique des JVM ● (Double) Barriers : synchronisation de N JVM ● Sections critiques : partage de verrous ou de sémaphores entre plusieurs JVM 8 1 : Il existe aussi des API pour d'autres langages comme le C, Perl et Python
  • 9. Et ça sert à quoi (encore) ● Architecture orientée service : annuaire de services hautement disponible et cohérent ● Centre de configuration de processus dynamique et hautement disponible ● Système de message (à la JMS) hautement disponible, haute performance, et avec conservation de l'ordre des messages (Kafka, Hedwig) 9
  • 10. Qui l'utilise ? Et bien d'autres....... 10
  • 11. Le modèle de programmation ● Modèle simple : Zookeeper expose une arborescence et les données sont stockées dans les nœuds de l'arbre : /parent : data1     |­ fils1 : data2     `­ fils2 : data3 ● Ces nœuds sont appelés ZNodes ● La mise à jour des nœuds se fait de manière atomique grâce à ZAB ● Les clients peuvent être immédiatement notifiés d'une mise à jour des données. 11
  • 12. Programmation de + haut niveau Netflix Curator1 est une bibliothèque développée par Netflix qui offre une API de haut niveau afin de faciliter l'utilisation de Zookeeper : – Gestion plus aisée de la connexion au cluster Zookeeper et des problèmes – Offre des recettes de bases (leader, lock, cache...) – Extension : annuaire de service 12 1 : https://github.com/Netflix/curator
  • 13. Points d'attention ● Zookeeper conserve les données en mémoire et la taille des données associées à un Znode ne peut (par défaut) dépasser 1Mo ● Les "watches" qui notifient immédiatement les clients d'une mise à jour des données ne sont exécutés qu'une seule fois et dans un même "thread" ● Corollaire du point précédent : certains événements peuvent être manqués et il faut faire attention aux problèmes de synchronisation. ● Attention à l'effet de troupeau (Herd Effect) si trop de clients surveillent le même Znode lorsque celui-ci est modifié. ● En Java : attention aux longues pauses du garbage collector qui peuvent faire croire au cluster que le client s'est déconnecté. 13
  • 14. Question ? Michael Morello michael.morello@gmail.com @barkbay 14