Comment concevoir et vérifier des systèmes distribués?

j'ai travaillé sur projet, qui est une combinaison d'un serveur d'application et d'une base de données d'objets, et qui tourne actuellement sur une seule machine. Il y a quelques temps j'ai lu papier qui décrit une base de données relationnelle distribuée, et obtenu quelques idées sur la façon d'appliquer les idées dans ce document à mon projet, de sorte que je pourrais faire une version haute-disponibilité de lui courant sur un cluster en utilisant un shared-nothing architecture.

mon problème est que je n'ai pas l'expérience de la conception de systèmes distribués et de leurs protocoles - Je n'ai pas suivi les cours avancés de CS sur les systèmes distribués à l'Université. Je suis donc inquiet de pouvoir concevoir un protocole, qui ne cause pas d'impasse, la famine, split brain et d'autres problèmes.

Question: Où puis-je trouver de bons documents sur la conception de systèmes distribués? Quelles sont les méthodes y sont pour vérifier qu'un protocole distribué fonctionne? Les recommandations de livres, articles universitaires et autres sont les bienvenus.

16
demandé sur Esko Luontola 2009-02-07 20:48:17

7 réponses

j'ai beaucoup appris en regardant ce qui est publié sur les plates-formes Web vraiment énormes, et surtout comment leurs systèmes ont évolué au fil du temps pour répondre à leur croissance.

voici quelques exemples que j'ai trouvés instructifs:

  • architecture eBay: belle histoire de leur architecture et de leurs problématiques. Évidemment, ils ne peuvent pas utiliser beaucoup de cache pour les enchères et les enchères, de sorte que leur histoire est différente à ce point de beaucoup d'autres. En 2006, ils ont déployé 100 000 nouvelles lignes de code toutes les deux semaines et sont en mesure de revenir en arrière en cas de problème.

  • papier sur Google File System: belle analyse de ce dont ils avaient besoin, comment ils l'ont mis en œuvre et comment il fonctionne dans l'utilisation de la production. Après avoir lu ceci, j'ai trouvé moins effrayant de construire des parties de l'infrastructure moi - même pour répondre exactement à mes besoins, si nécessaire, et qu'une telle solution peut et devrait probablement être assez simple et straight-forward. Il ya aussi beaucoup de choses intéressantes sur le net (y compris des vidéos YouTube) sur BigTable et MapReduce, d'autres parties importantes de L'architecture de Google.

  • À L'Intérieur De MySpace: un des rares sites vraiment énormes construits sur la pile Microsoft. Vous pouvez apprendre beaucoup de ce que pas à faire avec votre couche de données.

un bon début pour trouver beaucoup plus de ressources sur ce sujet est le La Vraie Vie Architectures section sur le site Web" haute évolutivité". Par exemple, ils un bon résumé sur Amazones l'architecture.

13
répondu realMarkusSchmidt 2018-09-13 18:43:16

apprendre l'informatique répartie n'est pas facile. C'est vraiment un domaine très vaste couvrant les domaines de la communication, de la sécurité, de la fiabilité, de la concurrence, etc., dont chacun prendrait des années à maîtriser. La compréhension finira par passer par beaucoup de lecture et d'expérience pratique. Vous semblez avoir un projet ambitieux pour commencer, si heres votre chance :)

Les deux livres les plus célèbres sur le calcul distribué sont, je crois:

1)Systèmes Distribués: Concepts et Design - George Coulouris et al.

2)Systèmes Distribués: Principes et Paradigmes - A. S. Tanenbaum et M. Van Steen

ces deux livres offrent une très bonne introduction aux approches actuelles (y compris les protocoles de communication) qui sont utilisées pour construire des systèmes distribués efficaces. Personnellement, j'ai surtout utilisé ce dernier et j'ai trouvé que c'était un excellent texte. Si vous pensez que les commentaires sur Amazon ne sont pas très bons, son parce que la plupart des lecteurs comparent ce livre à d'autres livres écrits par A. S. Tanenbaum (qui IMO est l'un des meilleurs auteurs dans le domaine de L'informatique) qui sont franchement mieux écrits.

PS: je doute vraiment de votre besoin de concevoir et de vérifier un nouveau protocole. Si vous travaillez avec des serveurs d'applications et des bases de données, ce dont vous avez besoin est probablement déjà disponible.

9
répondu Mystic 2009-02-08 06:58:08

j'ai bien aimé le livre Systèmes Distribués: Principes et Paradigmes

3
répondu starblue 2009-02-07 17:59:18

À un niveau plus abstrait et formel, systèmes communicants et Mobiles: le Pi-calcul par Robin Milner donne un calcul pour vérifier les systèmes. Il existe des variantes de pi-calculus pour vérifier les protocoles, comme SPI-calculus (la page wikipedia pour laquelle j'ai disparu depuis ma dernière recherche), et implémentations, dont certains sont aussi des outils de vérification.

2
répondu Pete Kirkham 2009-02-07 18:33:44

Où puis-je trouver de bons documents sur la conception de systèmes distribués?

Je n'ai jamais pu finir le célèbre livre de Nancy Lynch. Cependant, je trouve que le livre de Sukumar Ghosh Systèmes Distribués: Une Approche Algorithmique est beaucoup plus facile à lire, et il pointe vers les papiers originaux si nécessaire.

Il est néanmoins vrai que je n'ai pas lu les livres de Gerard Tel et Nicola Santoro. Peut-être sont-ils encore plus faciles à lire...

Quelles sont les méthodes y sont pour vérifier qu'un protocole distribué fonctionne?

afin d'examiner les possibilités (et aussi pour comprendre la question), je pense qu'il est utile d'obtenir un aperçu des outils possibles à partir du livre Spécification Logicielle Méthodes.

ma décision finale était d'apprendre le TLA+. Pourquoi? Même si l' le langage et les outils semblent meilleurs, j'ai vraiment décidé d'essayer TLA+ parce que le gars derrière c'est Leslie Lamport. C'est non seulement une figure de proue sur les systèmes distribués, mais aussi l'auteur de Latex! Vous pouvez obtenir le TLA+ book et plusieurs exemples pour gratuit.

2
répondu marcmagransdeabril 2013-03-28 20:04:45