(Photo de pexels.com)
Ce qui suit est la traduction:
Vous savez comment fonctionne un système distribué?
Cela peut être un sujet difficile à apprendre, surtout à cause de la connaissance autour d'elle est très fragmentée .....
Avant de distribuer l'auto-apprentissage informatique ce sujet, je l'ai à plusieurs reprises grimpé sur la table, mais après de nombreuses épreuves et tribulations, j'étais enfin prêt à expliquer les bases de systèmes distribués à vous.
Je voudrais discuter des implications importantes pour le domaine de la technologie de la chaîne de bloc. chaîne bloc forçant les ingénieurs et les scientifiques à réexaminer et remettre en question le paradigme de calcul profond distribué. Peut-être aucune autre technologie peut contribuer au progrès dans ce domaine de la recherche plus rapide que la chaîne de bloc.
chaîne Block est un nouveau système distribué. Elle commence par l'émergence de Bitcoin, et a depuis eu un impact durable dans le domaine de l'informatique distribuée. Donc, si vous voulez vraiment comprendre comment la chaîne de bloc, puis saisir le principe des systèmes distribués est essentiel.
Malheureusement, beaucoup de littérature sur l'informatique distribuée, soit incompréhensible, ou dispersés dans trop de papiers. Et que le problème se complique, il y a actuellement des centaines d'architecture, et toutes les architectures répondre aux différents besoins. Par conséquent, il se résume à un article compréhensible, assez pour être appelé un exploit.
Parce que ce domaine est très large, je devais choisir soigneusement le contenu à couvrir. Je dois aussi généraliser pour masquer une certaine complexité. S'il vous plaît noter que mon but est de ne pas vous faire un expert dans le domaine. Au lieu de cela, je veux juste que vous sachiez un peu, les systèmes ouverts distribués et les bases du voyage du consensus.
Après avoir lu cet article, vous comprendrez en profondeur le contenu suivant:
J'espère que vous êtes prêt pour cette étude!
Qu'est-ce qu'un système distribué?
Les systèmes distribués impliquent un ensemble de processus différents (par exemple, un ordinateur), le message est transféré entre eux et coordonné pour atteindre un objectif commun (c.-à résoudre des problèmes de calcul).
En bref, un système distribué est un groupe d'ordinateurs ensemble pour atteindre l'objectif de la réunification. Bien que ces processus sont distincts, mais le système pour les utilisateurs finaux est juste un ordinateur.
Comme je l'ai mentionné, il y a des centaines d'architecture de systèmes distribués. Par exemple, un seul ordinateur peut également être considéré comme un système réparti, une unité de commande centrale, une unité de mémoire et une entrée - canal de sortie, une cible est effectuée en collaboration processus séparé.
Ainsi, les aéronefs, leurs efforts conjoints est de vous rendre du point A au point B:
Source: https: //www.weetech.de/en/news-info/tester-abc/distributed-system-1/
Dans cet article, nous allons nous concentrer sur les systèmes distribués, ce procédé se réfère à l'ordinateur séparés dans l'espace.
Note: j'aurais « nuds », « pairs », « ordinateur » ou « composants » Ces termes sont utilisés avec le « processus » sont interchangeables. Aux fins du présent article, ils veulent dire la même chose. De même, je ne serais probablement utiliser ces deux termes de façon interchangeable « réseau » et « système ».
Propriétés des systèmes distribués
Chaque caractéristique particulière a un ensemble de systèmes distribués, ceux-ci comprennent:
A) Les processus du système simultanées exécuté simultanément, ce qui signifie que plusieurs événements se produisent simultanément. En d'autres termes, chaque ordinateur du réseau et le réseau d'autres ordinateurs, seront également effectués événement de façon indépendante.Et cela exige une coordination.
Lamport, L (1978): temps systèmes distribués, les événements d'horloge et tri
B) l'absence d'une collection d'horloge mondiale pour les systèmes informatiques fonctionnant simultanément, nous avons besoin d'un moyen de déterminer l'ordre des événements. Toutefois, dans un système informatique distribué, il est parfois impossible de dégager deux incidents au cours desquels l'incident devait se produire, parce que l'ordinateur séparé dans l'espace. Autrement dit, il n'y a pas d'horloge mondiale pour déterminer une séquence d'événements qui se produisent pour tous les ordinateurs du réseau.Dans le « temps de l'événement systèmes distribués, l'horloge et l'ordre » parmi le papier, Leslie Lamport montre comment Inférer en se rappelant les facteurs suivants si un événement a eu lieu avant un autre événement:
1) un message est envoyé avant qu'elles ne soient reçues; 2) Chaque ordinateur possède une séquence d'événements;
En déterminant quel événement est survenu avant un autre événement, nous pouvons faire partie du système de classement en cas.
Le document de Lamport décrit un algorithme qui exige que chaque ordinateur peut « entendre » chacun des autres ordinateurs.
De cette façon, l'événement peut être triée complètement en fonction de cet ordre partiel.
Cependant, si nous sommes entièrement triés en fonction de l'événement chaque ordinateur étant entendu, peut provoquer cet ordre en tant qu'utilisateur externe (en dehors du système) sera perçu différemment. Par conséquent, le document mentionné algorithme peut encore permettre à un comportement inhabituel.
Enfin, Lamport explique comment éviter cette situation anormale en utilisant la synchronisation d'horloge physique correcte.
Mais attendez, il y a un énorme avertissement: la coordination entre l'horloge indépendante, est un problème de science informatique très complexe. Même si vous définissez d'abord avec précision un tas d'horloge, l'horloge commencera à apparaître après une période de décalage horaire. Ceci est la « dérive de l'horloge » a causé le problème, ce qui est une horloge de temps de calcul à un phénomène de taux légèrement différent.
En substance, cet article démontre, Le temps et la séquence des événements, est le principal obstacle séparé système informatique réparti dans l'espace .
Fault C) indépendant comprend un élément clé d'un système distribué, système distribué reconnaît qu'il y aura défaillance d'un composant. Ceci est la raison pour laquelle il est appelé « tolérance de panne informatique distribuée ».Nous avons un système de défaut n'est impossible. Le système réel, il existe de nombreux défauts possibles ou des faiblesses, que ce soit un processus se bloque, le message est perdu, déformé ou répété, ou un retard de partition réseau ou un message défausse apparaît, il peut même être un processus complètement hors de contrôle, et transmis conformément à un certain nombre de programmes malveillants le cas du message.
Ces échecs peuvent être largement divisés en trois catégories:
Compte tenu de ces problèmes, notre objectif est de concevoir un protocole qui permet au système ont des composants défectueux, peut encore atteindre des objectifs communs et fournir des services utiles.
Compte tenu de chaque système est défectueux, les hypothèses de base que nous avons fait dans la construction d'un système distribué, même si ses composantes diffère du comportement normal, il peut continuer à survivre, que ce soit ou non en raison du comportement non malveillant (échec accident ou erreur d'omission) ou en raison de comportements malveillants (c.-à-faute byzantine).
D'une manière générale, la production d'un système distribué, doivent tenir compte de deux types de modèles:
1) la tolérance de panne simple,
Dans un système simple à tolérance de panne, nous supposons que toutes les parties du système ne soient l'une des deux choses: soit ils satisfont à l'accord ou échouent. Ce type de système doit être capable de traiter défaillance d'un nud ou hors ligne. Mais il n'a pas à nud inquiétude montrent un comportement aléatoire ou malveillant.
2) la tolérance aux pannes byzantines
Simple système à tolérance de panne dans un environnement non contrôlé, pas très utile. Parmi un système décentralisé, les nuds sont contrôlés par les participants indépendants, parmi eux à l'air libre, sans licence communiquer sur Internet, nous devons aussi être conçus pour ceux qui choisissent un nud malveillant ou d'un comportement « byzantin » . Par conséquent, parmi les systèmes à haute disponibilité byzantine, on peut supposer que l'échec de noeud ou malveillant.
2b) la tolérance de panne BAR
Bien que la plupart des systèmes réels sont conçus pour résister à la faute byzantine, mais certains experts estiment qu'il est trop général et ne prend pas en compte la faute « rationnel » (où le nud peut être hors de l'intérêt et l'émergence de comportements déviants). En d'autres termes, selon l'excitation, le nud peut être honnête, peut être malhonnête. Si l'incitation est assez élevé, même les plus nuds peuvent aussi faire quelque chose de malhonnête .
Plus formellement, cela est défini comme modèle BAR, qui considère à la fois l'échec byzantin et la rationalité. modèle BAR suppose qu'il existe trois types de membres:
Il existe deux types d'environnement de messagerie:
1) La synchronisation
Dans les systèmes synchrones, le message est supposé être passé dans un certain temps connu fixe.
concept de messagerie de synchronisation est pas si compliqué, parce qu'un utilisateur doit veiller à ce que: quand ils envoient un message, le composant récepteur recevra dans un certain délai. Cela permet à l'utilisateur de modéliser un temps limite fixe leur protocole, le délai d'arrivée des messages est nécessaire là-bas.
Cependant, dans un vrai système distribué, ce type d'environnement est pas pratique, parce que l'ordinateur peut se bloquer ou hors ligne, et peut être perdu, copié, le retard ou le trouble de recevoir des messages. 2) Asynchronous
Dans le système de messagerie asynchrone, le réseau peut prendre en charge un message de retard infini, copier un message, ou délivré des messages de commande. En d'autres termes, la durée pendant laquelle le message est reçu, il n'y a pas de limite.
Consensus dans les systèmes distribués Qu'est-ce que cela signifie?
, Nous avons appris jusqu'à présent les attributs suivants des systèmes distribués:
Ensuite, nous allons nous concentrer sur la compréhension de parvenir à un « consensus » dans un système distribué ce que cela signifie. Mais d'abord, de réitérer ce que nous avons déjà mentionné, il serait très important: Il y a des centaines d'architecture matérielle et logicielle pour calcul distribué différents.
La forme la plus commune est connue comme machine d'état répliqués.
Copier pour copier la machine d'état de machine d'état est une machine d'état déterministe, de nombreux ordinateurs sont copiés, mais il est géré comme une seule machine d'état. Tous ces ordinateurs pourraient un échec, mais la machine d'état est toujours opérationnel.Dans la machine d'état de la copie, si la transaction est valide, un ensemble d'entrée provoque l'état du système à l'état suivant. La transaction est une opération atomique dans une base de données. Cela signifie que l'opération est soit totalement achevée ou pas du tout. Entretien de la transaction de réplication de la machine d'état ensemble est appelé « journal des transactions. »
Une transition de l'état actif à un état actif, une suite logique, est appelée « logique de transition d'état ».
Copie la machine d'état est un ensemble d'ordinateurs distribués, ils commencent tous par la même valeur initiale. Pour chaque transition d'état, chaque processus de déterminer la valeur suivante. Et pour « consensus » signifie que tous les ordinateurs en commun doivent se mettre d'accord sur la valeur de la production.
À son tour, ce sur chaque ordinateur dans le système sont journal des transactions cohérente (qui est, « pour atteindre les objectifs communs »).
Copier la machine de l'Etat doit continuer à recevoir le nouveau les journaux de transactions (c.-à « fournir un service utile »). Il doit le faire, malgré la présence des facteurs suivants:
Et ce sont l'objectif fondamental de tout algorithme de consensus à remplir.
Si le problème algorithme de consensus identifié satisfait aux conditions suivantes, alors nous disons que l'algorithme a atteint un consensus:(Remarque: différents algorithmes avec différentes variations des conditions ci-dessus, par exemple, certaines personnes sera divisé en cohérence accord sur la propriété et l'intégrité de l'efficacité de certaines personnes, il y a le concept d'intégrité ou de l'efficacité, mais ce n'est pas nécessaire. articles qui explorent ces nuances.)
D'une manière générale, les algorithmes de consensus supposent généralement que le système Il existe trois types de participants:
Les partisans aussi communément connu comme un chef de file ou le coordonnateur. Le destinataire est à l'écoute des demandes de l'auteur, et le processus de réponse à la valeur. Les apprenants sont d'autres processus dans le système, ils apprennent la valeur d'une décision finale.
D'une manière générale, on peut définir un algorithme de consensus en trois étapes:
Étape 1: Élection
Étape 2: sondage
processus sans problème surveillera le chef de la valeur proposée, valider, et comme la prochaine valeur valide.
Étape 3: Décider
Il est important, chacun aura un algorithme de consensus différent:
Néanmoins, si l'on peut utiliser ce processus générique pour construire un algorithme qui peut garantir les conditions générales définies ci-dessus, que nous avons un consensus pourrait être atteint dans un système distribué.
Cela semble simple, non?
FLP impossible
... pas de. Mais bientôt appris!
Rappelons que la différence entre le système synchrone et asynchrone, nous décrivons comment le système:
Cette distinction est importante.
environnement de synchronisation de consensus est possible, parce que nous pouvons supposer que le temps maximum requis pour faire passer des messages. Par conséquent, dans ce type de système, nous pouvons permettre au système de différents noeuds raise tour nouveau sondage d'accord un vote à la majorité, si aucune proposition dans un délai maximum, passez un nud.
Cependant, comme décrit ci-dessus, supposons que nous fonctionner dans un environnement synchrone, il est peu pratique d'effectuer dans un environnement contrôlé (qui peut être prédit messages de retard), l'exemple de synchronisation d'horloge atomique, un centre de données.
En fait, la plupart supposer que l'environnement ne nous permet pas de synchroniser, donc nous devons concevoir un environnement asynchrone.
Si nous ne pouvons pas supposer que le temps maximum dans un environnement de messagerie asynchrone, vous serez beaucoup plus difficile à atteindre la fin. Gardez à l'esprit que l'une des conditions, un consensus doit être convaincu que la « cessation d'emploi », ce qui signifie que chaque nud doit déterminer que certaines valeur de sortie non-faute.
Ceci est appelé " FLP résultats impossibles . « Il est de savoir comment obtenir le nom de celui-ci? Eh bien, je suis heureux que vous ayez posé cette question!
Les chercheurs Fischer, Lynch et Paterson mentionnées dans le « processus d'erreur dans un impossible distribué à parvenir à un consensus », écrit le journal en 1985, même si seulement un mauvais processus ne peut pas parvenir à un consensus dans le processus déterministe asynchrone.
En fait, parce que le processus peut échouer au point imprévisible dans le temps, ils peuvent aussi ne pas arrêter au bon moment pour arriver à un consensus.
Le résultat pour le calcul distribué est un énorme points de maux de tête. Néanmoins, les scientifiques continuent d'essayer de trouver des moyens de contourner FLP impossible.
À un niveau élevé, il y a deux façons d'éviter FLP impossible:
Maintenant, nous allons explorer les deux méthodes.
Méthode 1: hypothèses synchrones
Eh bien, je sais ce que vous pensez: Qu'est-ce que cela signifie en fin de compte?
Laissez-nous réexaminons nos résultats impossible. Il considérant une autre façon: FLP résultats impossibles montrent essentiellement que, si nous ne pouvons pas faire des progrès dans le système, alors nous ne pouvons pas parvenir à un consensus. En d'autres termes, si la remise des messages asynchrones n'est pas garanti de mettre fin. Rappelons que la terminaison est une condition nécessaire, ce qui signifie que chaque noeud non défectueux doit finalement décider une partie de la valeur de sortie.
Cependant, si nous ne savons pas quand il passera le message réseau asynchrone, comment pouvons-nous faire en sorte que chaque processus non défaut peut déterminer une valeur?
Pour effacer que cette constatation n'indique qu'un consensus ne peut être atteint, au contraire, parce qu'ils ne se synchronisent pas, dans un délai fixe ne peut pas parvenir à un consensus. Il a dit un consensus était « impossible » signifie simplement un consensus « est pas toujours possible », ce qui est un des détails subtils mais cruciaux.
Une méthode pour éviter cela est d'utiliser un délai d'attente. Si une valeur est en cours pour déterminer la prochaine, nous attendrons une période de temps, puis la procédure de redémarrage.
Comme nous le verrons, comme Paxos et Radeau de ces algorithmes est un tel consensus.
Paxos Paxos algorithme algorithme proposé dans les années 1990, c'est le premier vrai algorithme de consensus à tolérance de pannes disponibles. Il est le premier algorithme de consensus est largement utilisé et a été Google et Amazon et autre société Internet mondiale pour construire un service distribué.Paxos fonctionne comme suit:
Etape 1: Préparation de la demande
Étape 2: accepter les demandes
Phase 3: la phase d'apprentissage