Simulations et applications
   réparties sous LINUX


       AHMED TOUMANARI
        Université Ibn zohr


         TOUMAN...
PLAN
- Algorithme distribué
- RPC
- RMI
- CORBA
- Service web
- Clustring
     TOUMANARI- LINUX DAYS-2008
Introduction

                          Déviation :
                          synchronisation
                          ex...
NTP: Network Time Protocol




  TOUMANARI- LINUX DAYS-2008
Temps & Horloges Logiques

  1       2

                   ,2

                        3           4


                   ...
Ordonnancement
  Total des Événements
1, 0, 0      2, 0, 0

                           ,(2, 0, 0)
                        ...
Coupes
 P1


 P2

 P3

• La coupe est représentée sous forme de courbe
  pointillée
      – L’intersection avec le trait d...
Coupes
 P1


 P2

 P3


• Un message a été noté comme reçu mais non envoyé
• Cette coupe est dite non cohérente
• En cas d...
LIB,0,1 – 0                   LIB,0,1 – 0         LIB,0,1 – 0
  LIB,0,2 – 0                   LIB,0,2 – 0    1    LIB,0,2 ...
A1=φ               A2=φ                          A3=φ

 F1=φ               F2=φ                          F3=φ
        1   ...
r11           r12                                Zid = RV1[1]

RV1=(1,0)      RV1=(2,0)



               m1, (2,0), 0    ...
RPC

TOUMANARI- LINUX DAYS-2008
Principe des RPC

       Requête Service
         Identification




                                Port-Mapper
         ...
TOUMANARI- LINUX DAYS-2008
TOUMANARI- LINUX DAYS-2008
Exemple de montage
            Client                                       Serveur

                 /                   ...
Exemple de montage
       Client                                        Serveur

         /                               ...
RMI

TOUMANARI- LINUX DAYS-2008
Le rêve de tout système distribué
1) d’invoquer une méthode d’un objet se trouvant
  sur une autre machine exactement de l...
Processus de développement
       d’une application RMI
1) définir une interface Java pour un OD
2) créer et compiler une ...
CORBA

TOUMANARI- LINUX DAYS-2008
Vue du modèle O.M.A.

                            Services                    Objets de domaines

 Annuaire         Transa...
Architecture générale
                                       fichier
                                         IDL

       ...
POAManager & POA

            SERVEUR                                  Servan
                                            ...
Serveur
              service de nommage                                        Client
                                   ...
Un canal d’évènements
             Flot des évènements              Consommateur
Producteur
                              ...
Un canal d’évènements :
             notification PushConsumer
 PushSupplier                                       Consomm...
Un canal d’évènements
      demande
                                                              Consommateur
Producteur ...
Un canal d’évènements : file
       d’évènements
                                        Consommateur
Producteur          ...
Un canal d’évènements
          collecte d’évènements
                                                      Consommateur
 ...
Service Web

   TOUMANARI- LINUX DAYS-2008
Cycle de vie d’utilisation
                       2 : J’ai trouvé! Voici le serveur
                         hébergeant ce...
CLUSTRING

  TOUMANARI- LINUX DAYS-2008
NOW


                     tâche 1
Workstation = Node
                                                               tâche...
LES MOTIVATIONS D’UN CLUSTER


  Cluster scientifique (déchiffrement des clés de cryptage de plus 
 en plus longues, simu...
OPENMOSIX ?

 Cluster à répartition de charge entre processus 

 Extension et enrichissement du noyau Linux (patchs + qu...
Installation 
• Modifier les sources du noyau par le fichier de « patch » de openMosix
• le recompiler pour obtenir un nou...
• créer un fichier de conf. /etc/openMosix.map (ou lancer le démon de découverte 
 automatique)

Syntaxe :  MOSIX­node­num...
Exemple produit Matriciel
    • Calcul de produit C= A1p* A2p*… Amp*, tel que Ai est
      une matrice carrée de taille n*...
•La matrice C est partagée horizontalement
Cluster 1   1 2 3       …   X           en Y paquets de lignes et verticalement...
3                            3
    C11 C12 C13 C14         A11 A12 A13 A14              B11 B12 B13 B14
    C21 C22 C23 C2...
3                            3
    C11 C12 C13 C14         A11 A12 A13 A14              B11 B12 B13 B14
    C21 C22 C23 C2...
3                                3
                               C11 C12 C13 C14               A11 A12 A13 A14           ...
3                                3
                               C11 C12 C13 C14               A11 A12 A13 A14           ...
3                                  3
                                   C11 C12 C13 C14                  A11 A12 A13 A14  ...
3                                 3
                                 C11 C12 C13 C14                  A11 A12 A13 A14     ...
Merci de votre attention



        TOUMANARI- LINUX DAYS-2008
Prochain SlideShare
Chargement dans…5
×

Simulations et applications réparties sous LINUX

1 404 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 404
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
30
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Simulations et applications réparties sous LINUX

  1. 1. Simulations et applications réparties sous LINUX AHMED TOUMANARI Université Ibn zohr TOUMANARI- LINUX DAYS-2008
  2. 2. PLAN - Algorithme distribué - RPC - RMI - CORBA - Service web - Clustring TOUMANARI- LINUX DAYS-2008
  3. 3. Introduction Déviation : synchronisation exacte impossible Solutions :  Synchronisation approximative des horloges physiques  Utilisation d’horloges logiques TOUMANARI- LINUX DAYS-2008
  4. 4. NTP: Network Time Protocol TOUMANARI- LINUX DAYS-2008
  5. 5. Temps & Horloges Logiques 1 2 ,2 3 4 ,4 1 5 TOUMANARI- LINUX DAYS-2008
  6. 6. Ordonnancement Total des Événements 1, 0, 0 2, 0, 0 ,(2, 0, 0) 2, 1, 0 2, 2, 0 ,(2, 2, 0) 0, 0, 1 2, 2, 2 TOUMANARI- LINUX DAYS-2008
  7. 7. Coupes P1 P2 P3 • La coupe est représentée sous forme de courbe pointillée – L’intersection avec le trait d’un processus indique le point de sauvegarde de l’état local • Tout message noté comme reçu dans la coupe a aussi été noté comme envoyé • Cette coupe est dite cohérente TOUMANARI- LINUX DAYS-2008
  8. 8. Coupes P1 P2 P3 • Un message a été noté comme reçu mais non envoyé • Cette coupe est dite non cohérente • En cas de reprise après une panne, P3 considèrera avoir reçu un message de P2 mais celui-ci ne l’aura pas encore envoyé TOUMANARI- LINUX DAYS-2008
  9. 9. LIB,0,1 – 0 LIB,0,1 – 0 LIB,0,1 – 0 LIB,0,2 – 0 LIB,0,2 – 0 1 LIB,0,2 – 0 1 1 2 LIB,0,3 – 0 2 LIB,0,3 – 0 LIB,0,3 – 0 2 3 3 4 REQ,2,1 – 3 3 REQ,2,2– 2 5 5 REQ,2,1 – 2 ACK,4,3 – 5 6 REQ,2,2– 3 7 6 ACK,6,3 – 7 8 9 LIB,10,1 – 11 10 REQ,2,2– 2 10 11 ACK,4,3 – 5 12 11 13 13 LAMPORT TOUMANARI- LINUX DAYS-2008
  10. 10. A1=φ A2=φ A3=φ F1=φ F2=φ F3=φ 1 1 1 2 2 2 A1=φ 3 3 A3=φ F1=S2 F3=S2 3 A3=φ 4 4 F3=S2,S1 4 5 A1=S2 5 6 7 6 A3=S2,S1 F1=S2 8 F3=S2,S1 A1=S2,S3 10 9 F1=S2 F3= φ A2=S3 10 11 F1= φ 12 A2=S3,S1 RICART TOUMANARI- LINUX DAYS-2008
  11. 11. r11 r12 Zid = RV1[1] RV1=(1,0) RV1=(2,0) m1, (2,0), 0 m2, (2,2), 2 r21 r22 RV2=(0,1) (2,1) RV2=(2,2) Zid # RV2[2] TOUMANARI- LINUX DAYS-2008
  12. 12. RPC TOUMANARI- LINUX DAYS-2008
  13. 13. Principe des RPC Requête Service Identification Port-Mapper Version Sous-Version Serveur Protocole N° de port TOUMANARI- LINUX DAYS-2008
  14. 14. TOUMANARI- LINUX DAYS-2008
  15. 15. TOUMANARI- LINUX DAYS-2008
  16. 16. Exemple de montage Client Serveur / / users bin users bin local root equipes old new test root A B C D optim compat travail archive mount –t nfs Serveur:/users/equipes/A /users/A TOUMANARI- LINUX DAYS-2008
  17. 17. Exemple de montage Client Serveur / / users bin users bin local root equipes old new test root A A B C D optim compat travail archive TOUMANARI- LINUX DAYS-2008
  18. 18. RMI TOUMANARI- LINUX DAYS-2008
  19. 19. Le rêve de tout système distribué 1) d’invoquer une méthode d’un objet se trouvant sur une autre machine exactement de la même manière que s’il étais locale 2) d’utiliser un objet distant (OD), sans savoir où il se trouve, en demandant à un service « dédié » de renvoyer son adresse 3) de pouvoir passer un OD en paramètre d’appel à une méthode locale ou distante 4) de pouvoir récupérer le résultat d’un appel distant sous forme d’un nouvel objet qui aurait été créé sur la TOUMANARI- LINUX DAYS-2008 machine distante
  20. 20. Processus de développement d’une application RMI 1) définir une interface Java pour un OD 2) créer et compiler une classe implémentant cette interface 3) créer et compiler une application serveur RMI 4) créer les classes Stub et Skeleton (rmic) 5) démarrer rmiregister et lancer l’application serveur RMI 6) créer, compiler et lancer un programme client accédant à des OD du serveur TOUMANARI- LINUX DAYS-2008
  21. 21. CORBA TOUMANARI- LINUX DAYS-2008
  22. 22. Vue du modèle O.M.A. Services Objets de domaines Annuaire Transaction Médecine Electronique Le bus C.O.R.B.A. Client Serveur Administration Impression Applications utilisateurs Utilitaires communs TOUMANARI- LINUX DAYS-2008
  23. 23. Architecture générale fichier IDL Client Implémentation d’objet pré­compilateur SSI DSI DII SII Stub Interface Interface de  client ORB l ’adaptateur Adaptateur d’Objet noyau de l ’Object Request Broker (ORB) Référentiel Référentiel des interfaces des implémentations Rint Rimp TOUMANARI- LINUX DAYS-2008
  24. 24. POAManager & POA SERVEUR Servan Servan Requête tt s client ORB POA POAManager POA Servan (orb) POA* t Servan Servan t Servan t Servan t Servan tt *RootPOA (rootpoa) TOUMANARI- LINUX DAYS-2008
  25. 25. Serveur service de nommage Client ORB resolve_initial_references (quot;NameServicequot;) objet resolve_initial_references (quot;NameServicequot;); CosNaming:: Conversion NamingContext conversion Invocation conversion Bind() resolve() TOUMANARI- LINUX DAYS-2008
  26. 26. Un canal d’évènements Flot des évènements Consommateur Producteur Consommateur Producteur Canal Consommateur Consommateur TOUMANARI- LINUX DAYS-2008
  27. 27. Un canal d’évènements : notification PushConsumer PushSupplier Consommateur Producteur Push void push(in any data) raises(Disconnected); Consommateur Producteur Canal Push Consommateur Consommateur Producteur actif / Consommateur réactif Le canal diffuse les évènements TOUMANARI- LINUX DAYS-2008
  28. 28. Un canal d’évènements demande Consommateur Producteur Pull() Consommateur Producteur Canal Pull() Consommateur PullSupplier { demande //demande de production d’un événement any pull() raises(Disconnected); Consommateur // présence d’un événement any try_pull(out boolean has_event) raises(Disconnected); Producteur réactif / Consommateur actif TOUMANARI- LINUX DAYS-2008 Le canal procure les évènements
  29. 29. Un canal d’évènements : file d’évènements Consommateur Producteur Pull() Consommateur Producteur Canal Push() Consommateur Consommateur Producteur actif / Consommateur actif Le canal gère des files d’évènements TOUMANARI- LINUX DAYS-2008
  30. 30. Un canal d’évènements collecte d’évènements Consommateur Producteur Push() Consommateur Producteur Canal Pull() Consommateur Consommateur Producteur réactif / Consommateur réactif Le canal est une entité active voire intelligente TOUMANARI- LINUX DAYS-2008
  31. 31. Service Web TOUMANARI- LINUX DAYS-2008
  32. 32. Cycle de vie d’utilisation 2 : J’ai trouvé! Voici le serveur hébergeant ce service web Annuaire UDDI 3 : Quel est le format d’appel du service que tu proposes? 1 : Je recherche un service WEB Contrat SOAP 4 : Voici mon contrat (WSDL) XML Client Serveur XML 5 : J’ai compris comment invoquer ton service et je t’envoie un document XML représentant ma requête XML TOUMANARI- LINUX DAYS-2008 6 : J’ai exécuté ta requête et je te retourne le résultat
  33. 33. CLUSTRING TOUMANARI- LINUX DAYS-2008
  34. 34. NOW tâche 1 Workstation = Node tâche 1, tâche2 tâche(s) éléments d'interconnexion Workstation = Server Node tâche 2 Workstation = Node CLUSTER TOUMANARI- LINUX DAYS-2008
  35. 35. LES MOTIVATIONS D’UN CLUSTER  Cluster scientifique (déchiffrement des clés de cryptage de plus  en plus longues, simulation nucléaire…)  Cluster de stockage (stockage d’énormes fichiers…)  Cluster haute disponibilité (architecture firewall…)  Cluster à répartition de charge (architecture serveur web,  architecture système utilisateur…)  TOUMANARI- LINUX DAYS-2008
  36. 36. OPENMOSIX ?  Cluster à répartition de charge entre processus   Extension et enrichissement du noyau Linux (patchs + quelques  binaires) afin de supporter le clustering   Chaque Nodes est équivalent et tourne sous un noyau MOSIX   Utilisation d’un algorithme dit de « fork and forget »   Optimisation constante de la répartition (load balancing)  algorithme dissémination d’information probabiliste   algorithme de gestion mémoire         # S.E      # MPI/PVM  TOUMANARI- LINUX DAYS-2008
  37. 37. Installation  • Modifier les sources du noyau par le fichier de « patch » de openMosix • le recompiler pour obtenir un nouveau noyau intégrant les fonctionnalités openMosix TOUMANARI- LINUX DAYS-2008
  38. 38. • créer un fichier de conf. /etc/openMosix.map (ou lancer le démon de découverte  automatique) Syntaxe :  MOSIX­node­number IP­address range­size   Exemple :   #fichier /etc/mosix.map 1 192.168.0.1 6 7 192.168.0.100 1 7 192.168.1.100 1 8 192.168.1.1 6 • installer les outils d’administration openMosix­tools et l’interface graphique  openMosixview  • modifier le secteur de démarrage (grub ou lilo) et démarrer la machine sur le  nouveau noyau • Possibilité d’utiliser des assistants de distribution, comme LTSP (www.LTSP.org)  dans une architecture homogène  TOUMANARI- LINUX DAYS-2008
  39. 39. Exemple produit Matriciel • Calcul de produit C= A1p* A2p*… Amp*, tel que Ai est une matrice carrée de taille n*n, sur une Grille de X nœuds regroupés en Y clusters P P P n c = n A1 x A2 x … Am n n n n TOUMANARI- LINUX DAYS-2008
  40. 40. •La matrice C est partagée horizontalement Cluster 1 1 2 3 … X en Y paquets de lignes et verticalement en X paquets de colonnes … •Chaque cluster s’occupe de calculer un Cluster 2 1 2 3 X . . . . . . . . paquet de lignes . . . . •A l’intérieur d’un cluster, les nœuds Cluster Y 1 2 3 … X calculent le produit matriciel La matrice résultat C Réseau à haute vitesse Noeud initiateur … … … 1 2 3 X 1 2 3 X 1 2 3 X TOUMANARI- LINUX DAYS-2008 Cluster 1 Cluster 2 Cluster Y
  41. 41. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 Cluster 1 TOUMANARI- LINUX DAYS-2008 Cluster 2
  42. 42. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 Cluster 1 TOUMANARI- LINUX DAYS-2008 Cluster 2
  43. 43. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 A11 A12 A13 A14 A11 A12 A13 A14 A21 A22 A23 A24 A21 A22 A23 A24 A11 A12 A13 A14 A31 A32 A11 A12 A13 A14 A33 A34 A31 A32 A33 A34 A31 A32 A31 A32 A33 A34 A33 A34 A21 A22 A23 A24 x A41 A42 A21 A22 A23 A24 x A43 A44 A41 A42 A43 A44 x A41 A42 A41 A42 A43 A44 x A43 A44 = = = = TOUMANARI- LINUX DAYS-2008 Cluster 1 Cluster 2
  44. 44. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 A11 A12 A13 A14 A11 A12 A13 A14 A21 A22 A23 A24 A21 A22 A23 A24 A11 A12 A13 A14 A31 A32 A11 A12 A13 A14 A33 A34 A31 A32 A33 A34 A31 A32 A31 A32 A33 A34 A33 A34 A21 A22 A23 A24 x A41 A42 A21 A22 A23 A24 x A43 A44 A41 A42 A43 A44 x A41 A42 A41 A42 A43 A44 x A43 A44 = = = = C11 C12 C13 C14 C31 C32 C31 C32 TOUMANARI- LINUX DAYS-2008 C21 C22 C23 C24 C41 C42 C41 C42 Cluster 1 Cluster 2
  45. 45. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 A11 A12 A13 A14 A11 A12 A13 A14 B311B312 A311A312 B313B314 A313A314 B331B332 A331A332 B333B334 A333A333 A21 A22 A23 A24 A21 A22 A23 A24 B321B322 A321A322 B323B324 A323A324 B341B342 A341A342 B343B344 A344A344 A31 A32 C11 C12 C13 C14 A33 A34 C31 C32 C31 C32 A31 A32 C31 C32 C31 C32 A33 A34 C11 C12 C13 C14 x A41 A42 C21 C22 C23 C24 x A43 A44 C41 C42 C41 C42 x A41 A42 C41 C42 C41 C42 x A43 A44 C21 C22 C23 C24 = = = = A311A312 A313A314 A331A332 A331A332 TOUMANARI- LINUX DAYS-2008 A321A322 3 3 A 23A 24 A341A342 A341A342 Cluster 1 Cluster 2
  46. 46. 3 3 C11 C12 C13 C14 A11 A12 A13 A14 B11 B12 B13 B14 C21 C22 C23 C24 A21 A22 A23 A24 B21 B22 B23 B24 C31 C32 C33 C34 = A31 A32 A33 A34 x B31 B32 B33 B34 C41 C42 C43 C44 A41 A42 A43 A44 B41 B42 B43 B44 c A Noeud initiateur B 1 2 1 2 A311A312 A313A314 A311A312 A313A314 A321A322 A323A324 A321A322 A323A324 B311B312 B313B314 A331A332 B311B312 B313B314 A333A334 B331B332 B333B334 A331A332 B331B332 B333B334 A333A334 B321B322 B323B324 x A 41A 42 B321B322 B323B324 x A 43A 44 B341B342 B343B344 x A 41A 42 B341B342 B343B344 x A 43A 44 3 3 3 3 3 3 3 3 = = = = C11 C12 C13 C14 C31 C32 C31 C32 TOUMANARI- LINUX DAYS-2008 C21 C22 C23 C24 C41 C42 C41 C42 Cluster 1 Cluster 2
  47. 47. Merci de votre attention TOUMANARI- LINUX DAYS-2008

×