Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
SYSTÈMES PARALLÈLES et
DISTRIBUÉS
Définition
▪ High Performance Computing aussi appelé Calcul Haute Performance consiste à
combiner la puissance de plusieurs milliers de processeurs pour effectuer des calculs
complexes et des traitements de données massives en temps réel.
▪ Le traitement des données et des calculs complexes s’effectue à une très grande vitesse.
▪ Le terme HPC s'applique essentiellement aux systèmes fournissant plus d'un téraflop de
puissance, soit capables de traiter plus de 10^12 opération en virgule flottante par seconde.
▪ Le calcul haute performance consiste à utiliser le traitement parallèle pour exécuter des
applications de façon efficace, fiable et rapide.
Pourquoi HPC ??
▪ Le volume de données à disposition des entreprises a littéralement explosé au fil des
dernières années, avec l’essor des nouvelles technologies comme IoT ou AI ,3D imaging…
▪ Traiter les données en temps réel pour le streaming live d’un événement sportif, le suivi
d’une tempête en développement
HPC
SYSTÈMES PARALLÈLES DISTRIBUÉS 4 8
High Performance Computing Distributed Computing Parallel Computing
Fonctionnement
▪ Afin de former une architecture de calcul haute performance, les serveurs de calcul sont
mis en réseau sous forme de clusters ce qui permet de fonctionner au maximum de ses
performances
▪ Chaque serveur représente un nœud du cluster.
▪ Les logiciels et les algorithmes sont lancés simultanément sur les serveurs du même
cluster qui opèrent en parallèle.
▪ Le cluster est mise en réseau avec le stockage de données afin de capturer les résultats.
▪ Chaque composant doit être en rythme avec les autres. Par exemple, le composant
stockage doit être en mesure de transférer les données vers les serveurs de calcul et de les
récupérer dès qu’elles sont traitées. De même, le composant réseau doit pouvoir supporter
le transfert rapide des données entre les serveurs et le stockage. Dans le cas contraire, les
performances de l’infrastructure HPC seront amoindries.
▪ Tous les nœuds sont connectés par des connexions réseau ultrarapides
SYSTÈMES PARALLÈLES DISTRIBUÉS 9 8
High Performance Computing Distributed Computing Parallel Computing
Summary
Superordinateurs
Processeur
❑ Programmation
▪ Permet d’executer le programme
▪ i.e. un seul cœur dans un processeur multicœur
❑ Hardware
▪ Le composant embarqué sur le circuit de la carte mere
▪ i.e. Le processeur multicoeur complet
Performance
▪ Les performances (délai de résolution) sur un seul ordinateur dépendent de:
o Vitesse d’horloge: une vitesse d'horloge plus élevée signifie un CPU plus rapide
o Unite à virgule flottante: Combien d'opérandes peuvent être utilisés et quelles
opérations peuvent être effectuées
o Latence de mémoire: le délai d’accès à la memoir
o Bande passante mémoire: la vitesse maximale à laquelle les données peuvent être lues
ou stockées par le processeur
o Vitesse pour accéder aux données persistantes
▪ Pour le calcul parallèle, vous pouvez également être limité par les performances de
l'interconnexion.
Mémoire
Unité d’entrée
Unité de sortie
▪ Collecte de l’information
▪ Stockage de l’information
Unité de
contrôle
▪ Traitement de l’information
Traitement
Unité de calcul
Collecte
CPU
Calcul séquentiel
▪ Le programme est divisé en une série d’instructions de différentes tailles
▪ Les instructions sont exécutées séquentiellement une après l'autre
▪ Une instruction doit attendre que la première instruction s’exécute
▪ Un seul processeur avec de faibles performances et une charge de travail élevé
▪ Prend plus de temps car une seule instruction est exécutée à un moment donné
Problem
I9 I8 I7 I6 I5 I4 I3 I2 I1 CPU
SYSTÈMES PARALLÈLES DISTRIBUÉS 17 8
High Performance Computing Distributed Computing Parallel Computing
Introduction Fonctionnement Notions Fondamentales Taxonomie de Flynn Architectures HPC
Taxonomie de Flynn
SISD
▪ Les machines les plus simples qui
Pool d’Instruction possèdent un seul processeur
permettant de traiter une donnée à la
Pool de Donnée
fois
▪ Les systems avec un seul processeur
sont des systems SISD
▪ Un seul flot d’instruction est exécutée à
CPU un moment donné et un seul flot de
donnée (simple, non-structurée) est
traitée à un moment donné.
▪ Non paralélisme
▪ Ces systèmes sont dits « séquentiels ou
Von Neuman ».
SYSTÈMES PARALLÈLES DISTRIBUÉS 21 8
High Performance Computing Distributed Computing Parallel Computing
Introduction Fonctionnement Notions Fondamentales Taxonomie de Flynn Architectures HPC
SISD
Avantages
▪ Moin cher
▪ Faible consomation énergitique
Inconvénients
▪ Vitesse limitée à cause de l’utilisation d’un seul
processeur
Utilisations
▪ Les microcontroleurs
▪ Les anciennes unités centrales
SIMD
▪ Même instruction est appliquée
simultanément sur différents ensembles de
Pool d’Instruction données
▪ Nous avons plusieurs processeurs, chacun
Pool de Donnée
SIMD
Avantages
▪ Très éfficace lorsqu’on a besoin d’éxécuter la même instruction sur une grande
quantité de donnée
Inconvénients
▪ Limité à certaines applications(graphique, calcul scientifique)
Utilisations
▪ GPUs
▪ Traitements scientifiques
▪ travail avec de grandes matrices
MISD
▪ Plusieurs processeurs utilisent
Pool d’Instruction simultanément un seul flot de données
▪ Chaque processeur exécute une
Pool de Donnée
MISD
Avantages
▪ Utile dans les cas où la détection des pannes en temps réel est essentielle
Inconvénients
▪ Compliqué à mettre en œuvre ➔ applications très limitées
Utilisations
▪ Systèmes de vol de la navette spatiale, problèmes temps-réel
MIMD
Pool d’Instruction ▪ Plusieurs processeurs sont entrain
d’exécuter simultanément plusieurs
Pool de Donnée
MIMD
Avantages
▪ Très utile dans les cas où la multitâche est nécessaire
▪ Machine avec multiprogrammation exécutant beaucoup de tâches simultanément
Inconvénients
▪ Trop cher dans les cas des architectures plus compliqués
Utilisations
▪ Les PCs moderne; SmartPhones; Supercomputers.
Architectures
▪ On a normalement deux architectures
principales
▪ La troisième combine les deux premières
« hybride ou architecture à mémoire
partagée distribuée»
Mémoire Partagée(SMP)
Avantages
▪ La forme la plus rapide de communication interprocessus
▪ Simple et facile à apprendre
▪ Equilibrage de charge
Limitations
▪ Scalabilité limitée par le nombre de voies d'accès à la mémoire
▪ Problèmes d’accès concurrent
▪ La synchronization est difficile
▪ Difficulté de gérer les données localement
▪ Difficile à construire
MIMD
▪ Multitache
Pool d’Instruction
▪ Plusieurs processeurs +
*
Pool de Donnée
▪ Plusieurs instruction, données CPU 1 CPU 5
multiple
▪ Large problèmes CPU 2 CPU 6
▪ Gain de temps CPU 3 CPU 7
▪ SMP, Cluster, Hybride
CPU 4 CPU 8
▪ CD CP
SYSTÈMES PARALLÈLES DISTRIBUÉS 36 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Calcul distribué
▪ Un traitement réparti sur plusieurs machines P1 S1
chacune s’occupe de l’exécution d’une partie du
problème entier pour réduire le temps P2 S2
Problème
d’exécution(augmenter la performance)
▪ Le calcul distribué est souvent réalisé sur des P3 S3
clusters de calcul spécialisés, mais peut aussi être
réalisé sur des stations informatiques
individuelles(des ordinateurs) multicœurs
P4 S4
▪ Utilisé pour résoudre les large problèmes
P5 S5
SYSTÈMES PARALLÈLES DISTRIBUÉS 37 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Système distribué
▪ Ensemble d’équipements autonomes et indépendants connectés
par un réseau
▪ Ces composants communiquent et coordonnent leur actions par
le passage de message « message passing » via le réseau de
communication
▪ Ces composants sont de différents types de différents niveaux de
performance et collaborent pour réaliser une tache commune
▪ L’ensemble des composant apparait aux utilisateurs comme un seul
système cohérent
▪ Chaque élément possède sa propre copie de SE et sa propre
mémoire(pas de mémoire partagée physiquement)
▪ Equipé d'un logiciel dédié à la coordination des activités du
système ainsi qu'au partage des ressources
SYSTÈMES PARALLÈLES DISTRIBUÉS 38 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
S.Centralisé VS S.Distribué
Système Centralisé Système distribué
▪ les calculs sont effectués par une seule ▪ Les composants autonomes et indépendants
machine. collaborent et fonctionnent simultanément
▪ Une seule Unité qui coordonne tous les pour effectuer une tache commune
autres nœuds, point de contrôle unique ▪ Distribution de la charge entre les nœuds
▪ Accès locale aux ressources nécessaires ▪ Coordonnent via des messages sur un réseau
(données, code, périphériques, mémoire ...) ▪ Partage et utilisation des ressources sur
▪ Mémoire partagée plusieurs nœuds distincts
▪ Présence d’une horloge globale(du nœud ▪ Mémoire non partagée
central) ▪ Absence de l’horloge globale(diff horloges)
▪ Point de défaillance unique ▪ Défaillance indépendantes (tolérance au
panne)
SYSTÈMES PARALLÈLES DISTRIBUÉS 39 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Exemples
Confidentialité
Transparence
Evolutivité
Les
Avantages
Partage
Fiabilité d’un système
distribué
Accès distant Simultanéité
Economic
Avantages des SD
▪ Évolutivité : la capacité de calcul et de traitement peut être mise à l'échelle selon les besoins
lorsqu'elle est étendue à des machines supplémentaires.
▪ Tolérance au panne : Les membres d'un système distribué peuvent échouer à un moment
ou à un autre tandis que d'autres peuvent continuer d'exécuter, sans réel impact.
▪ Détection des erreurs : les défaillances peuvent être détectées plus facilement
▪ Partage des ressources : un système distribué peut partager du matériel, des logiciels ou
des données.
▪ Transparence : l’ensemble des composants se voit comme une unité de calcul unique, et
l’accès à tous les ressources se fait d’une façon identique et en ignorant leurs situations
géographiques
▪ Confidentialité : On a la mémoire qui n’est pas partagée physiquement d’où les données
brutes ne sont pas disponibles partout et en même temps, seules certaines vues qui sont
exportées.
SYSTÈMES PARALLÈLES DISTRIBUÉS 42 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Avantages des SD
▪ Performance : la mise en commun de plusieurs unités de calcul permet d’effectuer des
calculs parallèle en des temps plus courts.
▪ Traitement simultané(concurrence) : Chaque membre du système distribué effectue en
parallèle, un travail simultané avec les autres.
▪ La redondance : des systèmes redondants permettent de pallier une faute matérielle ou de
choisir le service équivalent avec le temps de réponse le plus court. et permet de diminuer les
pertes de données
▪ Accès distant : un même service peut être utilisé par plusieurs acteurs situés à des endroits
différents.
▪ Economique : Un bon rapport performances/prix
Transparence
Hétérogénéité
Les Défis
Concurrence
Sécurité d’un système
distribué
Evolutivité Ouverture
Imparfaite
Fiabilité
Hétérogénéité
▪ Des machines utilisées (puissance, architecture
matérielle...)
▪ Des systèmes d'exploitation tournant sur ces machines
▪ Des langages de programmation des éléments logiciels
formant le système
▪ Des types de données : structurée, semi structurée,
non structurée
▪ Des réseaux utilisés : impact sur performances, débit,
disponibilité ...
o Réseau local rapide
o Internet
Sécurité
▪ Les contrôles d’accès aux objets partagés sont plus complexes à sécuriser car les voies d’accès au
même objets sont multiples
▪ Communications à travers le réseau peuvent être interceptées
▪ Un seul maillon faible dans un système de fichiers ou un réseau plus vaste du système distribué
peut exposer l’ensemble du système à des attaques
▪ On ne connaît pas toujours bien un élément distant avec qui on communique, ce qui élargit
considérablement la surface d’attaque et expose les organisations aux menaces
▪ La sécurité dans les SD repose sur 3 point essentiels:
o Confidentialité : protection contre tout divulgation à des personnes non autorisées
o Intégrité : protection contre toute altération
o Disponibilité : protection contre les interférences empêchant le bon fonctionnement du
système et l'accès aux ressources(les attaques de déni de service)
Evolutivité
Doubler le nombre de nœuds d’un système distribué ne double pas nécessairement les
performances(conception soigneuse)
Les défis de la conception de systèmes distribués évolutifs incluent :
▪ Contrôler le coût des ressources physiques.
▪ Contrôler la perte de performance(ex: équilibrer la charge de traitement entre les divers matériels partagés,
gestion de la bande passante )
▪ Prévenir l’épuisement des ressources logiciels(Le manque d'évolutivité est illustré par les adresses IP 32
bits. La nouvelle version (IP v6) utilisera des adresses 128 bits)
Les systèmes distribués sont plus complexes à concevoir, à gérer et à comprendre que les
environnements informatiques traditionnels
Fiabilité
La défaillance dans les SD est partielle, certains éléments tombent en panne alors que d’autres
continue de fonctionner, cependant la gestion des panne peut être difficile et complexe(risque de
perdre la performance)
▪ Réseau
o Perte des données transmises si une partie du réseau est inaccessible
o Les temps de communication peuvent varier considérablement selon la charge du
réseau(retard)
o Un segment d’internet surchargé ou indisponible diminue la performance du SD
▪ Machine
o Une ou plusieurs machines peuvent planter, engendrant une paralysie partielle ou totale du
système
Fiabilité
Quelques techniques/conseils à prendre en considération à utiliser pour gérer les pannes:
▪ Détecter les pannes : utiliser des contrôles pour détecter la faille, suspécter l’existence d’une
panne dans un tel segment pour pouvoir la gérer en temps réel
▪ Cacher les pannes : certaines pannes qui ont été détectées peuvent être masquées/cachées ou
rendues moins graves(serveur indisponible, disque corrompu)
▪ Tolérer les pannes : utilisateur peuvent être conçus pour tolérer les pannes , un message
indiquant que le serveur est inaccessible et que l'utilisateur peut essayer plus tard.
▪ Récupération des données après une panne : ajouter des outils(logiciels, techniques) qui
permettent de restaurer les données perdues(serveur de BD)
▪ La redondance : ➔ avoir au minimum deux routes différentes entre deux routeurs
➔ replication des tableaux de nom dans DNS sur deux serveurs(minimum)
➔ données répliquées sur deux serveurs BD
SYSTÈMES PARALLÈLES DISTRIBUÉS 49 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Concurrence
Transparence
Transparence
▪ Transparence d'accès
o Accès à des ressources distantes aussi facilement que localement(identique)
o Accès aux données indépendamment de leurs formats de représentation
▪ Transparence de localisation
o Accès aux éléments/ressources sans connaitre de leurs emplacements
o Transparence à la migration
▪ Transparence de concurrence
o Permet à plusieurs processus de fonctionner simultanément en utilisant des ressources
partagées sans provoquer d’interférence
▪ Transparence de réplication
o Possibilité de dupliquer certains éléments/ressources pour augmenter la fiabilité et la
performance sans que les utilisateurs connaissent les répliques
SYSTÈMES PARALLÈLES DISTRIBUÉS 52 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Transparence
▪ Transparence de panne
o Permet de masquer les pannes et réincarnations aux utilisateurs
o Possibilité de terminer les traitements des tâches malgré la défaillance des composants
matériels ou logiciels
▪ Transparence de mobilité
o Permet le mouvement des utilisateurs et des ressources au sein d'un système sans affecter le
fonctionnement du SD
▪ Transparence de performance
o Possibilité de reconfigurer le système pour en augmenter les performances lorsque les
charges varient
▪ Transparence d'échelle
o Doit supporter l'augmentation de la taille du système sans modification interne des
algorithmes d’application
Un SD doit offrir au minimum la transparence d’accès de localisation et de concurrence
SYSTÈMES PARALLÈLES DISTRIBUÉS 53 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Transparence
Nested transaction
▪ Distributed Computing systems
Hotel
o Cluster computing Subtransaction 2
o Grid computing
▪ Distributed Information systems
Airline
o Systèmes de traitement de transaction
o Enterprise application integration Use 3 different independent DB
Subtransaction 3
Architecture Client/Serveur
▪ Le client déclenche la communication(établi une Demande
connexion) avant d’envoyer le message contenant la de service
demande au serveur
▪ Le serveur attend passivement les requêtes des clients. Client Serveur
▪ Le serveur exécute le service associé à la demande émise
par le client et utilise généralement la même connexion
pour retourner au client le message contenant le résultat Résultat
du service effectué
▪ Pour les applications client/serveur, le client est
responsable de la présentation de l'interface utilisateur, et
c’est à travers cette interface qu’on se connecte au serveur
via le réseau, et le serveur est responsable de la gestion
des données et de la partie de traitement métier
SYSTÈMES PARALLÈLES DISTRIBUÉS 60 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Architecture Client/Serveur
▪ Une architecture client-serveur peut facilement se
transformer en architecture centralisée si le serveur
n'est pas redondant
Client Serveur
▪ Une configuration client-serveur réellement
distribuée comportera plusieurs nœuds de serveur
pour distribuer les requêtes des clients
Serveur
▪ La plupart des architectures client-serveur Serveur
modernes sont des clients qui se connectent à un
système distribué encapsulé sur le serveur.
SYSTÈMES PARALLÈLES DISTRIBUÉS 61 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Communication
▪ Toutes les communications dans un système distribué sont basées sur la
transmission de messages(envoie et réception).
▪ Les processus s'exécutent sur différentes machines et échangent des
informations via la transmission de message
▪ Un bon modèle de communication est celui qui masque ou simplifie la
transmission des messages.
Communication
▪ Bas niveau : communication se fait directement en appelant les services des couches
TCP ou UDP
o Exemple : utilisation des sockets
▪ Haut niveau : définition des couches offrant des services plus complexe
o Couches réalisées en s’appuyant sur les couches TCP/UDP(middleware)
o Exemple appelle d’une méthode chez une entité distante
o RPC(Remote Procedure Call)
o RMI(Remote Method Invocation)
Socket
Une socket correspond à un port d'écoute sur
une machine (cliente / serveur) et sert donc à
pouvoir échanger des données entre plusieurs
ordinateurs connectés au réseau
▪ Une entité envoie des données à une
deuxième entité
▪ La deuxième entité envoie un acquittement
pour prévenir qu'elle a bien reçue les données
Middleware(intergiciel)
▪ Le middleware est une couche
intermédiaire(couche logiciel) qui s’intercale
entre l’infrastructure de communication
d’un réseau et les élément de l’application
distribuée
▪ Pour assurer la communication entre les
applications quelles que soient les
caractéristiques matérielles, logicielles(réseau, SE)
Principe de RPC
Vertical scaling
Horizontal scaling
Equilibrage de charge
▪ Le load balancing, ou répartition de charge, est une technologie(processus) conçue pour
distribuer la charge de travail(les taches) entre différents serveurs ou applications.
▪ Permet d’équilibrer la charge de travail entre les serveurs, pour maintenir leur capacité à un
niveau optimal
▪ Empêche un serveur de devenir surchargé
▪ limite les risques de pannes liés à une surcharge (prévoir une solution de secours)
▪ Optimiser la performance globale de l’infrastructure, son rendement et sa capacité.
▪ Réduire le temps de réponse d’un site suite aux requêtes des utilisateurs
SYSTÈMES PARALLÈLES DISTRIBUÉS 75 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Algorithmes
d’équilibrage de charge
Algorithmes Algorithmes
statiques dynamiques
▪ Ne prend pas en compte l’état du ▪ La charge de chacun des nœuds
système dans la répartition des tâches du système est pris en compte
▪ Envoient une quantité égale de trafic ▪ Les nœuds moins chargés vont
à chaque serveur d'un groupe avoir plus de demande
▪ Round Robin, weighted Round ▪ Least connections, weighted
Robin least connections
SYSTÈMES PARALLÈLES DISTRIBUÉS 76 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Round Robin
▪ Cette méthode crée une file d’attente pour les
demandes entrantes. Ces dernières sont ensuite
gérées par le répartiteur de charge, qui les
distribue vers une liste de serveurs en rotation en
utilisant le (DNS). Les requêtes sont assignées
de manière séquentielle, selon la disponibilité des
machines.
▪ Ne tient pas compte de l’urgence de la demande,
ni de la charge qu’elle va représenter pour le
serveur concerné
▪ Il est donc adapté aux environnements où les
serveurs disposent de ressources identiques
Least connections
▪ Il tient compte en effet des demandes déjà
existantes sur le serveur web durant la
distribution
▪ Détermine le serveur qui a moins de demande
et assigne la nouvelle demande à ce serveur
▪ Ne tient pas compte des capacités techniques
des serveurs.
▪ adapté aux environnements dont les ressources
serveur sont identiques
▪ Cela suppose que toutes les connexions
nécessitent une puissance de traitement à peu
près égale.
Types de pannes
▪ Panne franche : Le système fonctionne correctement jusqu’à se qu’il s’arrête de répondre à
toute sollicitation, c’est une panne permanente(fail stop, Crush)
▪ Panne par omission: pas de réponse aux demandes(msg perdus en émission/en réception)
▪ Omission en émission: Le serveur effectue ses traitement mais, il échoue d’une façon ou
d’autre à envoyer la réponse(le tampon d’émission est plein et le serveur n’est pas préparé
pour une telle situation)
▪ Omission en réception: Peut être que le serveur n’a pas reçu la demande pour qu’il puisse
répondre(la connexion est bien établie mais y avais pas de thread en écoute ) cette faute
n’affecte pas l’état du serveur puisqu’il n’est pas en courant qu’un msg lui est envoyé
SYSTÈMES PARALLÈLES DISTRIBUÉS 83 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Types de pannes
▪ Panne temporelle : le temps de réponse du système dépasse les exigences des spécifications
▪ Une étape du processus s'exécute en plus de temps que la borne prévue
▪ Un message émis est reçu après un délai supérieur à la borne prévue
▪ Panne Byzantine: fautes arbitraires, fautes difficilement détectable et plus complexe à gérer
▪ Le processus envoie des valeurs fausses et/ou fait n’importe quoi
▪ Le processus fait des calculs erronés ou non fait
▪ Message modifié, dupliqué lors de transmission via le canal
Réplication
❑ La réplication consiste à conserver plusieurs copies de données
à différents endroits.
❑ Base de donnée, système de fichier,…
❑ Améliorer les performances(mise à l’echelle, répartir workload)
❑ Améliore la disponibilité des données.
❑ Augmente la tolérance aux pannes
❑ Très utile si on veut faire la maintenance du système
❑ Fournir une meilleure protection contre les données
corrompues
SYSTÈMES PARALLÈLES DISTRIBUÉS 86 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Réplication des BD
Replication Master-Slave : Créer deux nouveaux
serveurs de base de donnée (esclaves) qui synchronisent
avec le principal(maître)
▪ Le maître reçoit des requêtes en lecture ou en
écriture des clients. Lorsque le maître reçoit une
requête en écriture, il valide et exécute localement
cette requête avant de la faire suivre aux esclaves
pour qu'ils exécutent localement le même
changement et obtenir le même état que maître. On peut perdre la cohérence
Réplication des BD
Multi-Master Replication : plusieurs nœuds maîtres
qui supportent les lectures et les écritures.
▪ Les mises à jour par n'importe quel membre du
groupe.
▪ Tous les membres peuvent répondre aux requêtes
des clients
▪ Possibilité de créer des conflits (par exemple,
insertion de deux enregistrements avec le même ID)
Conflits
fragmentation de BD
Fragmentation : Vous divisez votre base de donnée en
plusieurs base de données plus petites, appelés fragments.
Ces fragments contiennent tous des enregistrements
différents.
▪ la machine 1 contiendrait les noms de A à L, la machine
2 de M à R et la machine 3 de S à Z.
▪ le vrai point faible de cette approche est que si l'une des
machines plante, toute une partie des données sera
On risque de perdre la disponibilité
inaccessible
SYSTÈMES PARALLÈLES DISTRIBUÉS 90 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Théorème de CAP
Théorème de CAP
▪ Cohérence: le système renvoie les données les plus
récentes, les clients ont le même affichage quel que soit le
nœud auquel ils se connectent.
▪ Disponibilité : Le système répond toujours aux requêtes
des clients, peu importe qu’il retourne la copie la plus
récente ou non.
▪ Tolérance de partition : Le système continuera à
fonctionner lorsque des partitions réseau se
produisent(coupure de communication)
SYSTÈMES PARALLÈLES DISTRIBUÉS 92 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
CA = Consistency + Availability
CP = Consistency + Partition
▪ il est nécessaire de vérifier la cohérence
▪ La gestion de cette cohérence nécessite un protocole de synchronisation
des réplicas, introduisant des délais de latence dans les temps de réponse (L1
et L2 attendent la synchronisation pour voir v2)
▪ C’est le cas de la base de donnée NoSQL MongoDB
▪ Le client effectue une transaction(retirer une somme d’argent) dans un
guichet automatique
▪ Le guichet ne va pas accepter de retirer la somme d’argent, puisqu’il ne peut
pas partager la mise à jour avec le deuxième guichet, ce n’est pas sûr
▪ Dans ce cas on gagne la cohérence mais on perd la disponibilité
AP = Availability + Partition
▪ Lorsqu’on a une partition réseau qui empêche la communication,
les différentes parties fonctionnent indépendamment
▪ C’est le cas de la base de donnée Cassandra où les temps de
réponse sont appréciables mais avec possibilité d’incohérence
▪ Dans ce cas le guichet automatique valide la transaction du client
et lui permet de retirer la somme d’argent
▪ Dans ce cas on a le service qui est disponible, mais les deux
serveurs n’ont pas le même solde
▪ On gagne la disponibilité mais on perd la cohérence
SYSTÈMES PARALLÈLES DISTRIBUÉS 95 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Théorème de CAP
Problème de consensus
❑ Il faut garantir la cohérence des donnée dans les différentes
répliques(CP)
❑ Il faut que l’ensemble de nœuds se mettent d'accord sur une
décision de validation ou annulation d’une telle transaction
❑ Le problème de décider s'il faut valider une transaction dans
une base de données pourrait être résolu par un algorithme
de consensus entre une majorité de répliques
❑ Algortithme 2PC, 3PC
Problème de consensus
❑ La résolution du consensus est primordiale pour la coordination des systèmes distribués et
pour la consistance des systèmes répliqués malgré la défaillance d'une partie de leurs
composants
❑ Résoudre le problème de consensus entre les différents nœuds d’un système distribué est simple
dans un contexte sans défaillance mais difficile à réaliser dans un contexte avec défaillance
❑ Il existe plusieurs algorithmes qui permettent de résoudre le problème de consensus dans un
environnement synchrone
❑ C’est impossible de résoudre le problème de consensus avec ces algorithmes dans certain
environnement asynchrone
SYSTÈMES PARALLÈLES DISTRIBUÉS 98 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Principe générale
donnée sur l'ensemble des valeurs qu’il a reçu pour prendre la décision finale
▪ La décision finale est envoyée à tous les processus P4 P3
▪ Chaque processus est donc certain d'avoir récupéré la valeur commune qui P1
Conditions à valider
❑ Terminaison: La phase de décision se déroule en un temps fini : tout processus correct
décide en un temps fini
❑ Intégrité: Un processus décide au plus une fois : pas de changement de choix de valeur
❑ Accord: La valeur décidée est la même pour tous les processus corrects
❑ Validité: La valeur choisi ‘finalement’ par un processus est une des valeurs proposées par
l'ensemble des processus
Principe aller/retour
La détection d’une telle panne se fait à l’aide du principe aller – retour de message
➢ On envoie un message à un élément
➢ On attend sa réponse dans un intervalle de temps (délai de garde)
➢ Estimé à 2 fois le temps de transit d'un message (+ delta éventuel)
➢ Si on a pas reçu de réponse avant l'expiration du délai de garde
➢ Message perdu ou l'élément avec qui on communique est planté
➢ Pb dans un système asynchrone : estimation du délai de garde
P2
Le protocole fait en sorte que tous les nœuds lancent la transaction
P3
ou la quittent.
2 phase Commit(2PC)
Participant 1
décision
SYSTÈMES PARALLÈLES DISTRIBUÉS 109 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Participant 1
▪ Si la décision globale est Valider tous les
participants vont exécuter la transaction et
envoyer un acquittement au coordinateur pour lui
ACK
préciser qu’ils ont reçu la décision globale(finale) Coordinateur Participant 2
Participant 1
Participant 3
Participant 1
Participant 1
▪ Coordinateur plante avant de distribuer la
décision globale
▪ Le coordinateur doit se réveiller pour prendre la
Can commit?
Coordinateur Yes Participant 2
décision finale et l’envoyer aux participants
▪ Les participants ne savent pas quoi faire
▪ Tous les participants attendent la décision globale
prise par le coordinateur(en panne) Si aucune décision n'a été prise = Participant 3
recommencer le protocol dés le départ
➔Etat de blocage
SYSTÈMES PARALLÈLES DISTRIBUÉS 115 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Propriétés à respecter
❑ Liveness n'est pas assurée par 2PC, ce protocole est potentiellement bloquant
▪ Un nœud peut se retrouver dans un état où il ne sait pas quoi faire
▪ État de blocage jusqu’à ce que le coordinateur se réveille
❑ 3 phase Commit(3PC) est un protocol non bloquant utilisé pour surmonter ce problème
❑ 3PC est une extension de 2PC qui ajoute une nouvelle phase entre préparation et
commit pour informer les participants de la décision globale avant de leur demander
l’exécution de la transaction pour éliminer l’état de blocage
Participant 1
Participant 3
Participant 1
3PC Conclusion
❑ Si un participant reçoit un « preCommit » de la part du coordinateur, il sait alors que
quoiqu'il arrive tous les processus ont décidé de valider la requête
❑ Principe est qu'un coordinateur ou un participant n'a pas de doute sur le fait de transiter
vers annuler ou valider
▪ Pas de possibilité d'aller vers les 2 états finaux directement
▪ Comme on peut l'avoir en 2PC : pour participant, en attente de la décision
globale a une transition vers valider et une vers annuler(blocage)
❑ Dans ces cas 3PC assure Liveness pas d’état bloquant
Paxos : Phase 1
Proposeur:
Choisi un numéro de sequence np, et envoie un message prepare(np) aux accepteurs
Accepteurs:
Si np > na
na = np ← promise not to accept any new proposals n’ < n
Si aucune proposition préalable n’a été acceptée
Envoie promise(np,Ø) ← dans ce cas va = Ø
Sinon
Envoie promise(np, va) ← dans ce cas va = (n,v)
Else
envoie prepare-failed
Paxos : Phase 2
Proposeur:
Si recevoir promise de la majorité(f+1) des accepteurs,
Si majorité des promise reçus ont va= Ø
proposer une valeur vp
Sinon determiner v renvoyée avec n le plus elevé
envoie accept(np,v||vp) aux accepteurs
Accepteurs:
Dès recevoir accept(np, vp) , Si np ≥ na
Accepter la valeur propose vp et notifier les apprenants
va = (na, vp)
Paxos : Phase 3
Paxos
➔Si np > na → l’accepteur ➔Sinon(va =(n,v)) il va choisir la valeur v associée au plus grand learners
np Sinon il va annuler ➔ Le proposeur envoie Accept(np, v|| vp) reçoit f+1 notif
Paxos : Phase 1
On considère un système de 3 accepteurs et deux proposeurs P1 et P2 et qu’on vient de commencer
le protocol et qu’aucune requête n’a été acceptée na=0 et va= Ø pour tous les accepteurs
▪ P1 veut premièrement proposer une valeur : il choisi un numéro de séquence unique np1=2
▪ Le proposeur P1 envoie une requête Prepape(2) à l’ensemble des accepteurs
▪ Chaque accepteur reçevant Prepare(2) va effectuer la comparaison np1 > na ➔2>0 ➔na=2
▪ Tous les accepteurs vont envoyer promise(2, Ø)
▪ Si P2 veut proposer une valeur : et il choisi un numéro de séquence unique np2=1
▪ On a np2 <na➔1 < 2
▪ Tous les accepteurs vont répondre par prepare-failed
SYSTÈMES PARALLÈLES DISTRIBUÉS 143 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Paxos : Phase 1
P1
Prepare(2)
P2
Prepare(1)
Pomise(2,Ø)
prepare-failed
na1=2
A1
na1=0
va1= Ø Pomise(2,Ø) prepare-failed
na2=2
A2
na2=0
va2= Ø Pomise(2,Ø)
prepare-failed
na3=2
A3
na3=0
va3= Ø P1 a reçu la majorité des réponses valides ➔ P1 peut passer à la Phase 2
SYSTÈMES PARALLÈLES DISTRIBUÉS 144 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Paxos : Phase 2
Une fois qu’un Proposeur P1 a reçu la majorité des réponses valides il passe à la phase 2 :
▪ P1 propose une valeur si toutes les réponse Promise contient va= Ø sinon il va choisir la valeur
associée au plus grand numéro de sequence na
▪ Dans notre cas P1 a reçu trois promise(2, Ø) donc P1 va proposer une valeur np1
▪ Le proposeur P1 envoie une requête Accept(2, vp1) à l’ensemble des accepteurs
▪ Chaque accepteur recevant Accept(2, vp1) doit décider s’il va accepter ou refuser la requête
▪ l’accepteur va accepter la requête qui contient np≥na Sinon il va annuler
▪ Si la requête est acceptée par la majorité qui est f+1 ➔ Acceptation ; (on a 2≥2, accepter vp1)
▪ Une fois qu’un accepteur accepte une requête il mis à jour sa variable va=(2, vp1)
SYSTÈMES PARALLÈLES DISTRIBUÉS 145 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Paxos : Phase 2
P1
Prepare(2)
P2
Pomise(2,Ø) Accept(2,vp1)
na1=2
Va1=(2 ,v p1)
A1
na1=0
va1= Ø Pomise(2,Ø)
na2=2 Va2=(2,v p1)
A2
na2=0
va2= Ø Pomise(2,Ø)
na3=2 Va3=(2,v p1)
A3
na3=0 P1 à le droit de décider une valeur de son choix car va= Ø
va3= Ø La requête est acceptée par la majorité ➔ passer à la phase 3
SYSTÈMES PARALLÈLES DISTRIBUÉS 146 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Paxos : Phase 3
L1
L2
P1
Prepare(2)
P2
Pomise(2,Ø) Accept(2,vp1)
Notify(2,Vp1)
na1=2
Va1=(2 ,v p1)
A1
na1=0
va1= Ø Pomise(2,Ø)
na2=2 Va2=(2,v p1)
A2
na2=0
va2= Ø Pomise(2,Ø)
na3=2 Va3=(2,v p1)
A3
na3=0
va3= Ø Les apprenants sont les répliques qui vont exécuter la transaction contenue dans Vp1
Convergence de Paxos
Si A2 tombe en panne après recevoir prepare(3)
➔P2 envoie une requête
P1
Prepare(2) Prepare(3)
P2
Prepare(3) Accept(3,vp1) ➔A2 ne va pas traiter la
Promise(2,Ø) Accept(2,vp1)
Promise(3,(2,vp1)) requête puisqu’il est planté
na1=2 Va1=(2 ,vp1)
A1 na1=3
➔A1 et A3 envoie Promise
na1=0
va1= Ø Promise(2,Ø) ➔on a Accept(3, vp1) qui
na2=2 Va2=(2,v p1)
A2
na2=0
X est accépté par la majorité 2
va2= Ø Promise(2,Ø) Promise(3,Ø) ➔Donc vp1 est toujours
A3
na3=2 X na3=3
na3=0
considérée comme stable
va3= Ø La convergence est vérifiée même si un ou plusieurs accepteurs tombent en panne
SYSTÈMES PARALLÈLES DISTRIBUÉS 149 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Convergence de Paxos
Si A2 se réveille
P1
Prepare(2) ➔les valeurs de A2
P2
Accept(3,vp1) sont les même avant
Promise(2,Ø) Accept(2,vp1) Prepare(3)
Pomise(3,(2,vp1)) la panne na2 =2 et
na1=2 Va1=(2 ,vp1) Accept(3,vp1)
A1 na1=3
va2=(2,vp1)
na1=0
va1= Ø Promise(2,Ø) Pomise(3,(2,vp1)) ➔A2 envoie la
na2=2 Va2=(2,v p1)
na2=3
A2
na2=0
X X requête promise
va2= Ø Promise(2,Ø) Pomise(3,Ø) ➔il s’agit toujours
A3
na3=2 X na3=3
de la même valeur
na3=0
va3= Ø La convergence est vérifiée même si A2 se réveille avant que le consensus termine vp1
SYSTÈMES PARALLÈLES DISTRIBUÉS 150 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Convergence de Paxos
L1
L2
P1
Prepare(2)
P2
Accept(3,vp1) Accept(3,vp1)
Promise(2,Ø) Accept(2,vp1) Prepare(3)
Pomise(3,(2,vp1))
na1=2 Va1=(2 ,vp1)
A1 na1=3
na1=0
va1= Ø Promise(2,Ø) Notify(2,vp1) Pomise(3,(2,vp1))
na2=2 Va2=(2,v p1) na2=3
A2
na2=0
X X
va2= Ø Promise(2,Ø) Pomise(3,Ø) Notify(2,vp1)
A3
na3=2 X na3=3
na3=0 Les learners on reçu plus que f+1 notification pour le même couple (2,vp1) = exécute
va3= Ø la requête compris dans la valeur vp1
SYSTÈMES PARALLÈLES DISTRIBUÉS 151 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Convergence de Paxos
L1
L2
P1
Prepare(2)
P2
Accept(3,vp1) Accept(3,vp1)
Promise(2,Ø) Accept(2,vp1) Prepare(3)
Pomise(3,(2,vp1))
na1=2 Va1=(2 ,vp1)
A1 na1=3
na1=0 Notify(2,vp1)
Pomise(3,(2,vp1))
va1= Ø Promise(2,Ø)
na2=2 Va2=(2,v p1) na2=3
A2
na2=0
X X
va2= Ø Promise(2,Ø) Pomise(3,Ø) Notify(2,vp1)
A3
na3=2 X na3=3
na3=0 ▪ Learners se rond compte qu’il s’agit toujours de la même instance de consensus vp1 : ignorer la notif
va3= Ø ▪ S’ils n’ont pas reçu f+1 notifications : ils vont aussi ignorer la notif
SYSTÈMES PARALLÈLES DISTRIBUÉS 152 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Problème de Livelock
L1
L2
P1
Prepare(1) Prepare(3)
P2
Prepare(2) Prepare(4)
Pomise(1,Ø) Pomise(2, Ø)
na1=1
A1 na1=2
na1=0
va1= Ø Pomise(1,Ø) Pomise(2,Ø)
na2=1 na2=2
A2
na2=0
va2= Ø Pomise(1,Ø) Pomise(2,Ø)
na3=1 na3=2
A3
na3=0 Le message Prepare(2) de P2 empêche que P1 fini son consensus avec n=1, passer à n=3
va3= Ø Le message Prepare(3) de P1 empêche que P2 fini son consensus avec n=2, passer à n=4,…
SYSTÈMES PARALLÈLES DISTRIBUÉS 153 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Problème de Livelock
▪ Paxos risque d’être livelock si un autre proposeur interagie avant que le premier termine ces
deux phases
▪ Solution : Garantir la présence d’un seul proposeur dans le système et de ne pas accepter de
nouveau proposeur qu’après l’expiration du délai de garde nécessaire pour terminer les deux
phase
▪ Election du leader :
▪ Paxos assure la propriété sûreté(safety) dans le sens où seules les opérations validées seront
exécutées, et qu'au plus une opération sera apprise à la fois
▪ Dans les environnement synchrones : Paxos assure les deux propriétés sûreté(safety) et
vivacity (liveness)
▪ Dans les environnement asynchrones : dans certains cas Paxos assure uniquement la propriété
Safety
▪ Contrairement aux pannes franches, il n'est pas toujours possible d’atteindre le consensus
dans un contexte de fautes byzantines
▪ Lamport, Shostak et Pease ont montré en 1982, via le problème des généraux byzantins, que
▪ Si f est le nombre de processus fautifs, il faut avoir au minimum 3f + 1 processus (au
total) pour que le consensus soit assuré
▪ En dessous, il n'est pas assuré
Généraux byzantine
différents
▪ lieutenant 1 reçoit deux ordre contradictoires en étant
“attack” “retreat”
incapable de savoir le vrai
“retreat”
Avec 3 généraux il est impossible de détecter le traitre
Ltn 1 “attack” Ltn 2
Besoin d’un 4ième pour recevoir un message de plus et savoir le vrai ordre
SYSTÈMES PARALLÈLES DISTRIBUÉS 161 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
A
➔ P(0) : pas de traitre L1
Blockchain
Résistant à la modification de ses CP assure l’accord des pairs sur l’état
données du register (grand livre)
Blockchain
▪ Un registre, un grand livre(fichier) répliqué sur
l’ensemble des utilisateurs appartenant au réseau
blockchain(nœuds)
▪ Toutes les transactions effectuées sur un réseau
sont écrites et enregistrées sur ce livre
▪ Toutes les transactions sont anonymisés, et
visibles par tous les utilisateurs du réseau
▪ Peut être vue comme une énorme base de
donnée totalement distribuée
SYSTÈMES PARALLÈLES DISTRIBUÉS 171 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Blockchain
▪ Une technologie transparente distribuée qui se base sur le
réseau pair à pair(P2P)
▪ Permet de faire un transfert d’argent directement entre deux
personnes
▪ Sans aucune autorité de contrôle
▪ AC est remplacée par un mécanisme de consensus
▪ Les données sont infalsifiable et non supprimables
▪ Disposant d’un haut niveau de sécurité grâce aux
mécanismes liés à la cryptographie.
SYSTÈMES PARALLÈLES DISTRIBUÉS 172 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Blockchain
≠
SYSTÈMES PARALLÈLES DISTRIBUÉS
Bitcoin
173 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Types de blockchain
▪ Publique
• Les blocs sont visibles par tout le monde sur Internet.
• Tout le monde peut accéder au réseau public blockchain
• Tout le monde peut participer au mécanisme de consensus(vérifier,
valider et ajouter)
▪ Privée
• Ouvert à un groupe spécifique de participants, c’est un réseau fermé
• La blockchain est contrôlée par une seule organisation qui définie les
niveaux d'autorisation et d'accessibilité
▪ Hybride
• Contrôlée par une seule organisation, certaines transactions sont
distribuées au réseau publique pour la vérification
▪ Consortium
• Contrôlée par plusieurs organisations
Traceabilité
Security & Privacy
Immuabilité
Blockchain Transparence
Features
Décentralisation
Consensus mechanism
Caractéristiques de blockchain
▪ Traçabilité : au sein de la chaîne, aucune information ne peut être supprimée. Chaque nœud du
réseau dispose d’une copie intégrale du registre de la blockchain
▪ Immuabilité : signifie que la blockchain est un réseau permanent et inaltérable. Tout
enregistrement validé est irréversible et ne peut être modifié. Cela signifie qu’aucun utilisateur
du réseau ne pourra le modifier ou le supprimer.
▪ Décentralisation : Le réseau blockchain est décentralisé, ce qui signifie qu’il n’y a pas d’autorité
centrale qui sera responsable de toutes les décisions.
Caractéristiques de blockchain
▪ Transparence : Tous les participants au réseau disposent d’une copie du registre pour une
transparence totale
▪ Sécurité : Tous les enregistrements de la blockchain sont cryptés individuellement. L’utilisation
du cryptage ajoute une autre couche de sécurité à l’ensemble du processus sur le réseau
blockchain.
▪ Consensus : pour prise de décision par le groupe de nœuds actifs sur le réseau afin de parvenir
à un accord rapidement et pour le bon fonctionnement du système
Caractéristiques de blockchain
▪ Transparence : Tous les participants au réseau disposent d’une copie du registre pour une
transparence totale
▪ Sécurité : Tous les enregistrements de la blockchain sont cryptés individuellement. L’utilisation
du cryptage ajoute une autre couche de sécurité à l’ensemble du processus sur le réseau
blockchain.
▪ Consensus : pour prise de décision par le groupe de nœuds actifs sur le réseau afin de parvenir
à un accord rapidement et pour le bon fonctionnement du système
Composants du bloc
Chaque bloc contient :
▪ un horodatage pour déterminer le moment exact
auquel le bloc a été crée et validé par le réseau
▪ Le hash du bloc et le hash du bloc précédent
▪ Un nonce qui est un nombre aléatoire utilisé une
seule fois, dans le cas où la blockchain adopte PoW
comme algorithme de consensus.
▪ Les transactions
Architecture blockhain
▪ Blockchain est une chaîne de blocs contenant des informations. Les données stockées dans
un bloc dépendent du type de la blockchain
▪ Par exemple, un bloc Bitcoin contient des informations sur l'expéditeur, le destinataire, le
nombre de bitcoins à transférer.
Architecture blockhain
Architecture Blockchain
Bloc 1 Bloc 2 Bloc 3
▪ Previous hash ▪ Previous hash ▪ Previous hash
▪ Data ▪ Data ▪ Data
▪ Ttimestamp ▪ Ttimestamp ▪ Ttimestamp
▪ Hash ▪ Hash ▪ Hash
▪ Les données et les transactions sont enfermées dans des blocs horodatés
▪ Chaque bloc est identifié par un hash unique (son empreinte digitale)
▪ Les blocs sont ordonnés et fortement liés pour construire une chaine de blocs
▪ Blockchain est sécurisée par des techniques cryptographiques et des algorithmes de consensus
SYSTÈMES PARALLÈLES DISTRIBUÉS 183 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Sécurité de la Blockchain
▪ Distribution de la blockchain sur tous les participants du réseau(P2P)
▪ Préservation de l’anonymat : moyen d'identifier un utilisateur ou toute autre information
personnelle à partir d’une transaction
▪ Techniques cryptographique
▪ Algorithme de hachage
▪ Signature électronique
▪ Les mécanisme de consensus qui remplace l’utilisation de l’autorité centrale(décentralisation)
▪ La validation et la vérification des transaction se fait par un ensemble de
participants(mineurs, validateurs)
SYSTÈMES PARALLÈLES DISTRIBUÉS 184 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Algorithme de hachage
▪ Fonction mathématique permettant de Previous Data Timestamp
transformer un ensemble de donnée de départ en hash
La modification d'un seul bloc peut rapidement rendre invalides tous les blocs suivants.
Signature électronique
▪ Chaque demande de transaction dans la BC doit être signée par l’émetteur pour vérifier son
intégrité et valider le bloc
▪ La signature s’appuie sur la cryptographie asymétrique, en générant une pair de clé :
▪ Une clé privée : qui ne doit pas être communiquée à personne, avec laquelle on chiffre le
hash des données à signer
▪ Une clé public : partagée avec tous les participants du réseau, permet de déchiffrer le hash
des données
▪ Ces deux clés sont liées mathématiquement, chaque message chiffré par la clé privé de l’émetteur
va être déchiffré à la réception par sa clé public correspondante
SYSTÈMES PARALLÈLES DISTRIBUÉS 188 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Signature électronique
Tous les nœuds participants à la blockchain disposent de deux clés : une clé privée qui leur permet de
signer numériquement leurs transactions, et une clé publique pour la vérification de la signature
SYSTÈMES PARALLÈLES DISTRIBUÉS 189 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Fonctionnement
Fonctionnement
▪ Avec la blockchain on peut effectuer des transactions de tous type sans passer par une
autorité centrale
▪ le transfert se fait via un wallet, un portefeuille qui s’achète et qui appartient à l’utilisateur
▪ À partir de ce wallet on peut soit envoyer ou recevoir des cryptomonnaies
▪ La validation de la transaction et la création des blocs se fait par des validateurs/mineurs via
le processus de vaidation/minage qui se base sur les algorithmes de consensus
Fonctionnement
▪ User 1 veut envoyer une transaction à User 2 (transfert d’argent)
User 1 User 2
▪ La transaction signée est envoyée à tous les nœuds du réseau
blockchain
▪ Ces nœuds vérifient la transaction(signature) et vérifient que user 1
possède le montant qu’il veut transférer
▪ Si la transaction est vérifiée chaque nœud travaille à créer un
nouveau bloc contenant cette transaction et vérifiant la condition de
l’algorithme de consensus utilisé
▪ Transmission du 1er bloc crée à tous les validateurs pour le valider
SYSTÈMES PARALLÈLES DISTRIBUÉS 192 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Fonctionnement général
La transaction signée(clé privé A) est Chaque validateur vérifie la transaction en Le premier validateur qui a réussi à créer le bloc
envoyée à tous les nœuds du réseau utilisant la clé public de A, enferme la transaction (contenant la transaction, previous hash… et
valide, dans un bloc horodaté respectant la condition de l’algorithme de consensus)
doit le transmettre aux autres nœuds
B reçoit la transaction de A Le bloc validé par la majorité est ajouté à la autres noeuds vérifient que le bloc respecte la
blockchain, transmis à tous les participants du reseau condition de AC, les transaction sont valides et
pour mettre à jours leur blockchain que le bloc fait reference au bloc precedent,
Mécanisme de consensus BC
▪ Permet au réseau BC de se mettre d’accord sur une
version unique de la chaine de bloc
▪ Se mettre d’accord sur le premier bloc à ajouter à la
BC(éviter d’avoir plusieurs blocs valides)
▪ Un processus très particulier permettant la vérification
et la validation d'un bloc pour l'ajouter à la chaine
▪ Assure le bon fonctionnement du réseau en veillant à
ce que seules les transactions légitimes soient ajoutées
au bloc(l’intégrité de la blockchain)
SYSTÈMES PARALLÈLES DISTRIBUÉS 194 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Bitcoin PoW
▪ Bitcoin se base sur cet algorithme pour la validation
Previous hash
et la création de ces blocs
Timestamp
▪ Les mineurs de bitcoin doivent trouver une valeur
Transaction
nonce pour laquelle le hash du bloc commence par
un certain nombre de zéro Nonce
▪ Le mineur qui a pu trouver cette valeur crée le bloc Valid Hash block
et le transmet aux autres mineurs pour le valider
▪ Ce mineur reçoit un nombre déterminé de bitcoins
en récompense de son travail
SYSTÈMES PARALLÈLES DISTRIBUÉS 196 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Fonctionnement PoW
▪ User 1 veut transférer un nombre de bitcoin à User 2, il
transmet cette transaction(signée) à l’ensemble du réseau
▪ Les mineurs vérifient d’abord la validité de la transaction et
que User 2 possède ce nombre de bitcoin sur sont wallet
User 1 User 2
▪ Si la transaction est valide il vont commencer leurs calculs
pour trouver la valeur nonce pour créer le bloc
▪ Les mineurs vérifient que les transactions du blocs sont
valides et recalculent le hash du bloc pour s’assurer que le
mineur gagnant a trouver la valeur valide
SYSTÈMES PARALLÈLES DISTRIBUÉS 197 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
▪ Les mineurs
▪ Le premier mineur qui a pu résoudre le problème cryptographique va créer le bloc et l’envoie
au autres mineur pour le valider (rare que deux mineurs réussissent en même temps)
SYSTÈMES PARALLÈLES DISTRIBUÉS 198 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Avantages Inconvénient
▪ Avantages
▪ La participation au consensus est ouvert
▪ Réseau très robuste et permet de sélectionner le mineur qui a fourni plus d’effort
▪ Inconvénient
▪ Coût élevé pour l’achat des serveurs de très haute puissance de calcul et leur maintenance
▪ Consommation incroyable d'électricité en faisant fonctionner et chauffer les serveurs,
Bitcoin consomme plus d'énergie électrique par an que l'Argentine tout entière
▪ Vulnérabilité face aux attaque 51% : si un mineur arrive à contrôler 51% des puissance de
calcul (en théorie relativement possible, en réalité il y a énormément de diff mineurs )
SYSTÈMES PARALLÈLES DISTRIBUÉS 199 8
High Performance Computing Distributed Computing Parallel Computing
Introduction et définition Modes de communication et architecture Problème de consensus Blockchain
Avantages Inconvénient
▪ Avantages
▪ Pas besoin de matériel hyperpuissant
▪ Consommation d’énergie réduite par rapport au PoW
▪ Augmentation du nombre de transactions traitées par second(vitesse plus élevé)
▪ Inconvénient
▪ Accès plus difficile puisqu’il faut avoir des cryptomonnaies à mettre en séquestre
▪ Les validateurs ayant plus de cryptomonnaies continuent à gagner plus
Machine parallèle
▪ C’est une machine équipée de p processeurs ou d’un processeur à
p cœurs
▪ Intel i9(de 10 à 18 cœurs physique et 20 à 36 cœurs logiques
▪ Intel core i7 (jusqu'à 10 cœurs physiques), i5 (jusqu'à 6 cœurs
physiques)
▪ Classification structurelle
▪ Système à mémoire partagée (Multiprocesseurs, il faut avoir une bonne stratégie de synchronisation)
▪ Système à mémoire distribuée (Tableau de processeurs, faut avoir réseau de communic performant)
▪ Système à mémoire partagée distribuée(superordinateurs)
SYSTÈMES PARALLÈLES DISTRIBUÉS 210 8
High Performance Computing Distributed Computing Parallel Computing
Classification sructutrelle
Méthodologie de Parallélisme
▪ Etape 1 : créer l’algorithme séquentiel et s’assurer que l’algo
est logique cohérent et les résultats sont corrects
▪ Etape 2 : étudier les propriétés de l’algorithme séquentiel et
analyser le code pour définir la première tache et les taches
indépendantes qui peuvent s’exécuter en parallèle
▪ Etape 3 : Choisir le grain de parallélisme en function du
système cible
▪ Etape 4 : implementer l’algorithme parallèle
Grain de Parallélisme
▪ La taille moyenne des différentes taches que nous allons exécuter en parallèle, c’est le nombre
d’opération dans une tache
▪ Souvent on mesure le grain par :
▪ Nombre d’instruction machine
▪ Taille de la mémoire employée (quantité de données traités par le grain)
▪ durée d’exécution (temps de calcul)
le choix du grain parallélisme est fortement lié à l'architécture de la machine(au matériel)
Grain de Parallélisme
▪ On parle souvent de Gros grain(coarse grain) et grain fin (fin grain)
▪ Gros grain : on met beaucoup d’instruction dans une tache, adapté au CPU
▪ Grain fin : peu d’instruction dans une tache, plus adapté au GPU
▪ plus le nombre de taches est élevé, plus le programme passe son temps à effectuer des
verrouillages et plus il passe son temps à échanger des messages entre tâches
▪ Ralentissement parallèle ce qui provoque un Overhead
Types du Parallélisme
▪ Parallélisme de données
• lorsqu’on a plusieurs données à traiter, grand nombre de pixels dans une image (SIMD)
• Répéter une action sur un grand nombre de donnée(tableau, chèques de paye à mettre à jour)
• Répartir les données entre plusieurs processeurs pour obtenir un parallélisme des données.
▪ Parallélisme de tache
▪ Lorsqu’on a plusieurs taches à exécuter
▪ Identifier les taches indépendante(peuvent s’exécuter en parallèle)
Défis du Parallélisme
▪ Dépendance de donnée
▪ x=y+1, z=x+2 : 2ème instruction a besoin du résultat de la 1ière instruction(flow-dependency)
▪ x=y+1, y=z+2 : pas d’accès simultané à la même donnée(anti-dependency)
▪ x=y+1, x=z+1 : on peut pas effectuer une modification sur la même donnée simultanément
(output dependency)
Défis du Parallélisme
▪ Dépendance de contrôle
1. a=b+c;
2. if(a<0)
3. {d=e+f;}
4. g=d+h;
Dans cet exemple nous avons l’instruction 1 et 4 sont indépendantes cepandant la valeur de la
variable d depend de la valeur de la variable a
Défis du Parallélisme
▪ Dépendance de ressources
Le nombre de processeurs est insuffisant pour
effectuer des taches parallèles
▪ Temps de communication
La communication entre processeurs peut augmenter
le temps d’exécution
Accélération
▪ le gain du temps obtenu lors de la parallélisation du programme
séquentiel.
▪ 𝑇𝑠𝑒𝑞 le temps nécessaire à un programme pour résoudre le
problème A sur un ordinateur séquentiel ;
▪ 𝑇𝑝 le temps nécessaire à un programme pour résoudre le même
𝑇𝑠𝑒𝑞
problème A sur un ordinateur parallèle à 𝑝 processeurs 𝑆 =
𝑇𝑝
L’efficacité
▪ L’efficacité fournit une indication sur
l’utilisation effective de tous les processeurs
𝑆
E= 𝑛𝑝
Exercice
▪ On exécute le programme suivant sur un 1) En répartissant les boucles I sur les 4
monoprocesseur, puis sur quadriprocesseur. processeurs (4 itérations de 1 à 4 sur le premier
On suppose que le temps d’exécution du processeur, puis 5 à 8 sur le second, etc …),
programme est proportionnel au nombre quelle est l’accélération obtenue par rapport à
d’exécutions de l’itération de la boucle interne. l’exécution sur le monoprocesseur ?
2) Modifier la parallélisation pour obtenir une
For (i=1 ; i <= 16 ; i++) {
sum (i) = 0 ; exécution équilibrée (même temps d’exécution
for (j=1; j<=i ; j++) sur chaque processeur). Quelle est alors
sum(i) += T[i][j];
} l’accélération obtenue ?
SYSTÈMES PARALLÈLES DISTRIBUÉS 224 8
High Performance Computing Distributed Computing Parallel Computing
Processus vs Thread
▪ un programme sous forme de code
source
▪ On le compile on a le programme
sous forme de code exécutable (objet
statique)
▪ On double clique donc il s’exécute il
est en ram c’est un processus (objet
dynamique)
▪ À l’intérieur on a le main thread qui
contient des taches à exécuter
Processus
▪ Programme en cours d’exécution
▪ un processus a un espace d'adresse protégé à lui, les
autres processus ne peuvent pas modifier l'espace
d'adressage mémoire du processus
▪ Dans le processus s’exécute au moins une tache(main
thread)
▪ La durée de vie du processus est lié à la durée de vie de
son main thread
Thread
▪ Plusieurs threads partagent le même espace mémoire
▪ il n'y a pas de protections entre les threads d'un même processus
▪ Les taches sont implémentées sous forme de threads
▪ Elle permettent à plusieurs exécutions d'avoir lieu dans le même processus
▪ Le main thread peut démarrer d'autre threads à l’intérieur du processus, et démarrer d’autre
processus
▪ Les threads sont appelés processus légers
Thread
Main Thread
---------
+setName() : void
+currentThread()
+join():void
+run():void B
+strart(): void
+g()
+h()
Méthode utiles
▪ start(): Demarrer le thread en appellant la méthode run()
▪ Thread.sleep(long millis) : met le thread courant en sommeil un certain nombre de
millisecondes.
▪ Join() : attend qu'un autre thread termine son exécution. Le thread entre dans un état de bloc
▪ setPriority(int i) : modifier la priorité du thread (priorité d'accès au temps CPU (1 – 10))
▪ Thread.yield() : suspend l'exécution du thread qui est en train de s'exécuter pour donner la
main à un autre
▪ isAlive() : renvoie vrai si le thread est actif ou endormi
▪ Thread.state getState() : renvoie l’état du thread
SYSTÈMES PARALLÈLES DISTRIBUÉS 231 8
High Performance Computing Distributed Computing Parallel Computing