Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Systèmes DistribuésErlang
Louis-Claude [email protected]
Bureau 414C
Master 2 informatique – Semestre 9
Louis-Claude Canon SD – Erlang 1 / 23
Contexte et principes
Plan
Contexte et principes
Exemples
Utilisation
Bibliographie
Louis-Claude Canon SD – Erlang 3 / 23
Contexte et principes
Origine
I Conçu en 1986.I Open source depuis 1998.I Langage fonctionnel dont la syntaxe s’inspire de Prolog.I A influencé Clojure, Rust, Scala, . . .
ObjectifProgrammer des systèmes concurrents et distribués fiables (des systèmes detélécommunication au départ).
Louis-Claude Canon SD – Erlang 4 / 23
Contexte et principes
“No matter what language you work in, programming in a functionalstyle provides benefits. You should do it whenever it is convenient, andyou should think hard about the decision when it isn’t convenient.”
— John Carmack, April 30, 2012
Louis-Claude Canon SD – Erlang 5 / 23
Contexte et principes
Origine
I Conçu en 1986.I Open source depuis 1998.I Langage fonctionnel dont la syntaxe s’inspire de Prolog.I A influencé Clojure, Rust, Scala, . . .
ObjectifProgrammer des systèmes concurrents et distribués fiables (des systèmes detélécommunication au départ).
Louis-Claude Canon SD – Erlang 6 / 23
Contexte et principes
Spécificités du langage
I Le modèle acteur (green thread).I L’approche fonctionnelle et la reconnaissance de motif.I Let it crash !
Louis-Claude Canon SD – Erlang 7 / 23
Contexte et principes
Le modèle acteur
I L’élément de base du système est le processus.I On peut créer des centaines de milliers de processus légers.I Pas de mémoire partagée (échange de message uniquement).I Pas problème de synchronisation.I Distribution sur plusieurs machines triviale.
Louis-Claude Canon SD – Erlang 8 / 23
38
Code
Behavior
Erlang Behavior
Data Code
Actor
Process
● Inheritance of Behavior only.● Usually only one level deep.● Usually one of the standard OTP behaviors:
Generic Server, Event, State Machine, Supervisor.
Contexte et principes
L’approche fonctionnelle et la reconnaissance de motif
L’approche fonctionnelleI Pas de boucle.I Immutabilité des variables.I Permet de recharger du code à chaut sans interruption.
La reconnaissance de motifI Quasiment aucune condition.I Syntaxe déclarative inspirée du Prolog.
Louis-Claude Canon SD – Erlang 10 / 23
Contexte et principes
Let it crash !
I Pas de programmation défensive.I On programme pour les cas qui marchent et on laisse les processus
échouer.I Chaque processus est supervisé par un autre processus qui possède la
logique pour traiter l’erreur.
Louis-Claude Canon SD – Erlang 11 / 23
Exemples
Plan
Contexte et principes
Exemples
Utilisation
Bibliographie
Louis-Claude Canon SD – Erlang 13 / 23
Exemples
Serveur factoriel
factorial(0) -> 1;factorial(N) -> N * factorial(N-1).
factorial_server() ->receive
{From, N} ->From ! factorial(N),factorial_server()
end.
Louis-Claude Canon SD – Erlang 14 / 23
Exemples
Serveur universel
universal_server() ->receive
{F} ->F()
end.
test() ->Pid = spawn(fun universal_server/0),Pid ! {fun factorial_server/0},Pid ! {self(), 50},receive
X -> Xend.
Louis-Claude Canon SD – Erlang 15 / 23
Exemples
Traitement des données binaires
-define(IP_VERSION, 4).-define(IP_MIN_HDR_LEN, 5).
DgramSize = byte_size(Dgram),case Dgram of
<<?IP_VERSION:4, HLen:4, SrvcType:8, TotLen:16,ID:16, Flgs:3, FragOff:13,TTL:8, Proto:8, HdrChkSum:16,SrcIP:32,DestIP:32, RestDgram/binary>> when HLen>=5, 4*HLen=<DgramSize ->
OptsLen = 4*(HLen - ?IP_MIN_HDR_LEN),<<Opts:OptsLen/binary,Data/binary>> = RestDgram,
...end.
Louis-Claude Canon SD – Erlang 16 / 23
Utilisation
Plan
Contexte et principes
Exemples
Utilisation
Bibliographie
Louis-Claude Canon SD – Erlang 17 / 23
Utilisation
Logiciels populaires écrits en Erlang
NoSQL4 systèmes parmi 32 :
CouchDB Deuxième base de données orientée documents la plus utilisée.Riak Troisième base de données orientée clé-valeur la plus utilisée.
MOM1 système parmi 12 : RabbitMQ, le serveur le plus utilisé.
XMPP1 système parmi 11 : ejabberd, le serveur le plus utilisé.
Louis-Claude Canon SD – Erlang 18 / 23
Utilisation
Entreprises utilisant Erlang
I FacebookI Amazon.comI Yahoo !I EricssonI Motorola
Louis-Claude Canon SD – Erlang 19 / 23
Bibliographie
Plan
Contexte et principes
Exemples
Utilisation
Bibliographie
Louis-Claude Canon SD – Erlang 20 / 23
Bibliographie
Programming Erlang : Software for a Concurrent World,seconde édition, 2013
Écrit par le concepteur du langage.Très pédagogique et progressif.
Louis-Claude Canon SD – Erlang 21 / 23
Bibliographie
Learn You Some Erlang for Great Good ! A Beginner’sGuide, 2013
Plus détaillé et avec moins de partipris. Gratuit !
Louis-Claude Canon SD – Erlang 22 / 23
Bibliographie
Discussions sur des questions liées
I Perception d’Erlang par les développeursI Caractéristiques d’ErlangI How and Why We Switched from Erlang to PythonI Switch to C++ from FacebookI What Sucks About ErlangI In Response to "What Sucks About Erlang"I The Trouble with Erlang (or Erlang is a ghetto)I Experiences in Erlang
Louis-Claude Canon SD – Erlang 23 / 23