23
Systèmes Distribués Erlang Louis-Claude Canon [email protected] Bureau 414C Master 2 informatique – Semestre 9 Louis-Claude Canon SD – Erlang 1 / 23

Systèmes Distribués - Erlanglccanon.free.fr › teaching › SD › Erlang.pdf · SystèmesDistribués Erlang Louis-ClaudeCanon [email protected] Bureau414C Master2informatique–Semestre9

  • 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

Plan

Contexte et principes

Exemples

Utilisation

Bibliographie

Louis-Claude Canon SD – Erlang 2 / 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

57

Erlang Processes

The Erlang way: the process is restarted.

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