Vous êtes sur la page 1sur 18

Open Telephony Platform

Brique ROSE Samuel Tardieu sam@rfc1149.net


cole Nationale Suprieure des Tlcommunications

Samuel Tardieu (ENST)

Open Telephony Platform

1 / 20

Erlang et OTP

La plupart des programmes Erlang utilisent des processus La plupart des processus remplissent une fonction telle que :
Serveurs de fonctionnalit Machine tats nis Gestionnaire dvnements Supervision des autres processus Dmarrage, n et mise jour de lapplication

OTP (Open Telephony Platform) fournit ces services sous formes de comportements pour Erlang

Samuel Tardieu (ENST)

Open Telephony Platform

2 / 20

tat et enregistrement

Chaque module possde un tat Ltat est en gnral un enregistrement


% Enregistrement nomme state -record (state, {free_blocks = 300, color = red, temperature}). % Acces ^^e0 un champ f (S) -> S#state.free_blocks. % Changement dun champ inc (S) -> S#state{free_blocks = S#state.free_blocks + 1}.

Samuel Tardieu (ENST)

Open Telephony Platform

4 / 20

Comportements

Un comportement correspond un module, et est dclar en tte de fichier :


-module (disk_alloc). -behaviour (gen_server).

Ce module fournit un ensemble de fonctions qui seront appeles par le comportement (callbacks) et qui renvoient un statut, un nouvel tat et ventuellement des informations pour lappelant :
handle_call ({allocate, Blocks}, From, State) when Blocks <= State#state.free_blocks -> {reply, ok, State#state{free_blocks = State#state.free_blocks - Blocks}};

Samuel Tardieu (ENST)

Open Telephony Platform

6 / 20

Rponses

Plusieurs types de rponses peuvent tre renvoyes par un callback. Exemple de handle_call dans le comportement gen_server :
{reply, Reply, State} {reply, Reply, State, Timeout} {noreply, State} {noreply, State, Timeout} {stop, Reason, Reply, State} {stop, Reason, State}

Samuel Tardieu (ENST)

Open Telephony Platform

7 / 20

Comportement gen_server

But : faire un serveur gnrique (question/rponse) appelable distance, avec gestion des timeouts. Fonctions :
Initialisation Gestion dun appel synchrone entrant Gestion dun appel asynchrone entrant Gestion dune information entrante Gestion de la terminaison Gestion du changement de code

Samuel Tardieu (ENST)

Open Telephony Platform

8 / 20

Autres fonctions

gen_server exporte des fonctions :


Lancement (avec nom local ou nom global) Appel synchrone, sur un ou plusieurs serveurs Appel asynchrone, sur un ou plusieurs serveurs Envoi dune information Demande de terminaison Demande de changement de code

Samuel Tardieu (ENST)

Open Telephony Platform

9 / 20

Comportement gen_event

But : faire un gestionnaire dvnements gnriques Utilisations :


enregistrement des erreurs gestion dalarmes enregistrement dappels de fonctions debugging gestion dquipement

Samuel Tardieu (ENST)

Open Telephony Platform

10 / 20

Dnitions

vnement : quelque chose qui a lieu Catgorie dvnements : type ou classe dun vnement Gestionnaire dvnements : processus charg de la coordination des vnements de la mme catgorie Notication : acte dinformer un gestionnaire quun vnement sest produit Traiteur dvnements : (event handler ) module qui exporte des fonctions permettant de traiter des vnements dune certaine catgorie

Samuel Tardieu (ENST)

Open Telephony Platform

11 / 20

Principe

Un gestionnaire dvnements est lanc Un ou plusieurs traiteurs dvnments sont lancs Les vnements sont notis au gestionnaire dvnements Le gestionnaire renvoie les vnements aux traiteurs Les traiteurs peuvent prendre les actions ncessaires, modier leur tat interne, demander tre supprims ou demander tre remplac par un autre traiteur

Samuel Tardieu (ENST)

Open Telephony Platform

12 / 20

Comportement gen_fsm

But : faire un gestionnaire de machine tats nis gnrique Principe :


si la machine est dans ltat S si lvnement E a lieu la machine eectue les actions A(S, E ) la machine passe dans ltat S (S, E )

Samuel Tardieu (ENST)

Open Telephony Platform

13 / 20

Supervision
Problmes :
un programme informatique peut comporter des erreurs dans un systme rparti, des machines ou des rseaux peuvent tomber en panne

Erlang/OTP implmente un arbre de supervision

Ericsson

Samuel Tardieu (ENST)

Open Telephony Platform

14 / 20

Superviseurs

Ils supervisent des travailleurs ou des superviseurs, et ont plusieurs stratgies : Un pour tous : (one for all) si un processus supervis meure, ils sont tous tus (rcursivement) puis ventuellement relancs Chacun pour soi : (one for one) si un processus supervis meure, il est ventuellement relanc

Samuel Tardieu (ENST)

Open Telephony Platform

15 / 20

Travailleurs

Les travailleurs (ou superviseurs ls) sont de plusieurs types : permanent : il est toujours relanc sil meure (processus indispensable) phmre : (transient) il est relanc sil meure de faon anormale (processus temporaire dont le rsultat est indispensable) temporaire : (temporary ) il nest jamais relanc

Samuel Tardieu (ENST)

Open Telephony Platform

16 / 20

Avalanche

Si cause dune erreur de programmation un processus meure, il se peut que cela recommence chaque fois quil est relanc Les processus ont une frquence maximum de relance Si un processus ne peut pas tre relanc, son superviseur meure Le superviseur du superviseur prend le relai

Samuel Tardieu (ENST)

Open Telephony Platform

17 / 20

OTP et pont de supervision

Tous les comportements OTP supportent la supervision :


ils implmentent les bons callbacks pour terminer et tre redmarrs

Il nest pas toujours possible dutiliser un comportement OTP :


code Erlang existant interface avec lextrieur performances

Un pont de supervision est possible, permettant dinsrer un processus Erlang de supervision dans la chane

Samuel Tardieu (ENST)

Open Telephony Platform

18 / 20

Autres points dOTP

OTP traite aussi : les applications


Regroupement des modules en application Inclusion dapplications Dpendances entre applications

la mise jour du code pendant lexcution


Gestion des dpendances entre applications et modules Migration des donnes de lancien au nouveau format Gestion des fautes lors de la mise jour

Samuel Tardieu (ENST)

Open Telephony Platform

19 / 20

Conclusions

Il est important dutiliser OTP lorsque cest possible


factorisation du code dans les gen_xxx machines tat claires et facile comprendre insertion dans larbre de supervision

Il faut superviser ses processus lorsquils sont critiques

Samuel Tardieu (ENST)

Open Telephony Platform

20 / 20

Vous aimerez peut-être aussi